/* Copyright 2009 Wondermill Webworks Inc. */var Ask500;if(typeof Ask500=='undefined'){Ask500={}}Object.extend(Ask500,{Constants:{CookieName:'ASKTOOL',LoginURL:'/users/login',BootFrom:'boot__',Mu:{Root:'muObj',Key:'muKey',Value:'muValue',Stop:'muStop'},DOM:{GeneratedIDPrefix:'lambda__'}},Globals:{DOM:{GeneratedIDSufix:0}},$_:function(element){if(element&&typeof element.down==='function'){return true}return false},readCookie:function(name){var nameEQ=name+"=";var ca=document.cookie.split(';');for(var i=0;i<ca.length;i++){var c=ca[i];while(c.charAt(0)==' '){c=c.substring(1,c.length)}if(c.indexOf(nameEQ)==0){return c.substring(nameEQ.length,c.length)}}return null},createCookie:function(name,value,days){if(days){var date=new Date();date.setTime(date.getTime()+(days*24*60*60*1000));var expires="; expires="+date.toGMTString()}else var expires="";document.cookie=name+"="+value+expires+"; path=/"},eraseCookie:function(name){Ask500.createCookie(name,"",-1)},decodeJSON:function(json_str,supress_status_check){var eval_failed=false;var json;try{json=json_str.evalJSON()}catch(e){eval_failed=true}if(!eval_failed){if(supress_status_check||(typeof json.status!='undefined'&&typeof json.status.code!='undefined')){return json}}},decodeEmbeddedJSON:function(element,supress_status_check){var json_str=Ask500.collectCDATAFromElement(element);if(json_str.startsWith('<!--')){json_str=json_str.substr(4,json_str.length-7).strip()}return Ask500.decodeJSON(Ask500.Base64.decode(json_str),supress_status_check)},decodeEmbeddedJSONFast:function(element,supress_status_check){var json_str=Ask500.collectCDATAFromElement(element);if(json_str.startsWith('<!--')){json_str=json_str.substr(4,json_str.length-7).strip()}return Ask500.decodeJSON(json_str,supress_status_check)},getDummyNode:function(){var dummy=$("dummy_node");if(dummy){return dummy}dummy=$(document.createElement('div'));dummy.id="dummy_node";dummy.hide();document.body.appendChild(dummy);return dummy},getDummyTableNode:function(){var dummy=$("dummy_table_node");if(dummy){return dummy.down('tbody')}dummy=Ask500.getDummyNode().update('<table id="dummy_table_node"><tbody></tbody></table>').remove();document.body.appendChild(dummy);return dummy.down('tbody')},HTMLToDOM:function(html){if(typeof html=='string'&&html!=''){var dummy;var tr_regex=/^\s*(<!--\C*-->)*\s*<tr[ >]/i;if(tr_regex.exec(html)!==null){dummy=Ask500.getDummyTableNode();dummy.update(html);return dummy.down('tr').up().immediateDescendants().reduce()}else{dummy=Ask500.getDummyNode();dummy.update(html);return dummy.immediateDescendants().reduce()}}},timeAgo:function(s_ago){var rounded=s_ago;var human_ago='';if(rounded<=1){human_ago='1 sec ago';return human_ago}if(rounded<60){human_ago=rounded+' sec ago';return human_ago}var m_ago=s_ago/60;rounded=Math.round(m_ago);if(rounded<=1){human_ago='1 min ago';return human_ago}if(rounded<60){human_ago=rounded+' min ago';return human_ago}var h_ago=m_ago/60;rounded=Math.round(h_ago);if(rounded<=1){human_ago='1 hour ago';return human_ago}if(rounded<24){human_ago=rounded+' hours ago';return human_ago}var d_ago=h_ago/24;rounded=Math.round(d_ago);if(rounded<=1){human_ago='1 day ago';return human_ago}if(rounded<365){human_ago=rounded+' days ago';return human_ago}var y_ago=d_ago/365;rounded=Math.round(y_ago);if(rounded<=1){human_ago='1 year ago';return human_ago}human_ago=rounded+' years ago';return human_ago},loggedIn:function(){return false},collectCDATAFromElement:function(element,deep){if(typeof element!='undefined'){var node=element.firstChild;var content='';while(typeof node!='undefined'&&node){if(node.nodeType==3||node.nodeType==8){content+=node.data;node=node.nextSibling}else if(deep){if(node.nodeType==1){content+=Ask500.collectCDATAFromElement(node,true)}node=node.nextSibling}else{node=false}}return content}},ping:function(){new Ajax.Request('/main_page_campaigns/ping',{onComplete:Ask500.pingCallback})},pingCallback:function(){setTimeout(Ask500.ping,180000)},muFormatParse:function(root){var obj=null;if(Ask500.$_(root)){var mu=Ask500.Constants.Mu;if(root.hasClassName(mu.Stop)){return obj}var all_elements=root.getElementsBySelector('.'+mu.Value+',.'+mu.Key);var root_values=[];var root_keys=[];for(var i=0;i<all_elements.length;i++){var key=all_elements[i].up('.'+mu.Key);var value=all_elements[i].up('.'+mu.Value);if((!Ask500.$_(key)||!key.descendantOf(root))&&(!Ask500.$_(value)||!value.descendantOf(root))){if(all_elements[i].hasClassName(mu.Value)){root_values.push(all_elements[i])}else if(all_elements[i].hasClassName(mu.Key)){root_keys.push(all_elements[i])}}}if(root_keys.length>0&&root_values.length==0){obj={};for(var i=0;i<root_keys.length;i++){var key=Ask500.muReadText(root_keys[i]);if(typeof key=='string'&&key!==''){obj[key]=Ask500.muFormatParse(root_keys[i])}}}else if(root_keys.length==0&&root_values.length>0){obj=[];for(var i=0;i<root_values.length;i++){var value=Ask500.muFormatParse(root_values[i]);obj.push(value)}}else if(root_values.length==0&&root_keys.length==0){obj=Ask500.muReadText(root)}if(obj&&typeof obj=='object'&&typeof obj.push=='function'){return obj.reduce()}return obj}return obj},muReadText:function(element){var str=Ask500.collectCDATAFromElement(element).strip();if(str.substr(0,4)==='<!--'&&str.substr(-3)==='-->'){str=str.substr(4,-3)}return str},callbackBind:function(func,start_callback,finish_callback){if(typeof func=='function'){if(typeof start_callback=='function'&&typeof finish_callback=='function'){return function(){start_callback.apply(this,arguments);func.apply(this,arguments);finish_callback.apply(this,arguments)}}else if(typeof start_callback=='function'){return function(){start_callback.apply(this,arguments);func.apply(this,arguments)}}else if(typeof finish_callback=='function'){return function(){func.apply(this,arguments);finish_callback.apply(this,arguments)}}return func}},yield:function(func){window.setTimeout(func,1)},benchmark:function(callback){var date=new Date();var start_time=date.getTime();var results=callback();date=new Date();var stop_time=date.getTime();Ask500.log(stop_time-start_time);return results},log:function(msg){if(typeof console!='undefined'&&typeof console.log=='function'){console.log(msg)}else{alert(msg)}},insertAfter:function(element,neighbor){var next=neighbor.next();if(Ask500.$_(next)){neighbor.parentNode.insertBefore(element,next)}else{neighbor.parentNode.appendChild(element)}},generateDOMID:function(){var dom_id;do{dom_id=Ask500.Constants.DOM.GeneratedIDPrefix+Ask500.Globals.DOM.GeneratedIDSufix;Ask500.Globals.DOM.GeneratedIDSufix++}while(Ask500.$_($(dom_id)));return dom_id},currentFragment:function(){var location=window.location.toString();var hash_pos=location.lastIndexOf('#');if(hash_pos!=-1){return location.substr(hash_pos+1)}},currentLocation:function(exclude_fragment){var location=window.location.toString();if(exclude_fragment){var fragment=Ask500.currentFragment();if(fragment){return location.substr(0,location.length-(fragment.length+1))}}return location}});if(typeof Ask500.EventHandler=='undefined'){Ask500.EventHandler=Class.create();Ask500.EventHandler.prototype={initialize:function(element,event_type,callback){var been_registered=false;this.register=function(){if(been_registered==false){Event.observe(element,event_type,callback);been_registered=true}return this};this.clear=function(){if(been_registered==true){Event.stopObserving(element,event_type,callback);been_registered=false}return this};this.fire=function(){if(been_registered==true){return callback(null)}};this.element=function(){return element};element=$(element);if(typeof element=='undefined'){throw Ask500.EventHandler.Exceptions.BadElement}}};Object.extend(Ask500.EventHandler,{Exceptions:{BadElement:{type:"Ask500.EventHandler.Exceptions.BadElement"}}})}if(typeof Ask500.Base64=='undefined'){Object.extend(Ask500,{Base64:{_keyStr:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",encode:function(input){var output="";var chr1,chr2,chr3,enc1,enc2,enc3,enc4;var i=0;input=Ask500.Base64._utf8_encode(input);while(i<input.length){chr1=input.charCodeAt(i++);chr2=input.charCodeAt(i++);chr3=input.charCodeAt(i++);enc1=chr1>>2;enc2=((chr1&3)<<4)|(chr2>>4);enc3=((chr2&15)<<2)|(chr3>>6);enc4=chr3&63;if(isNaN(chr2)){enc3=enc4=64}else if(isNaN(chr3)){enc4=64}output=output+this._keyStr.charAt(enc1)+this._keyStr.charAt(enc2)+this._keyStr.charAt(enc3)+this._keyStr.charAt(enc4)}return output},decode:function(input){var output="";var chr1,chr2,chr3;var enc1,enc2,enc3,enc4;var i=0;input=input.replace(/[^A-Za-z0-9\+\/\=]/g,"");while(i<input.length){enc1=this._keyStr.indexOf(input.charAt(i++));enc2=this._keyStr.indexOf(input.charAt(i++));enc3=this._keyStr.indexOf(input.charAt(i++));enc4=this._keyStr.indexOf(input.charAt(i++));chr1=(enc1<<2)|(enc2>>4);chr2=((enc2&15)<<4)|(enc3>>2);chr3=((enc3&3)<<6)|enc4;output=output+String.fromCharCode(chr1);if(enc3!=64){output=output+String.fromCharCode(chr2)}if(enc4!=64){output=output+String.fromCharCode(chr3)}}output=Ask500.Base64._utf8_decode(output);return output},_utf8_encode:function(string){string=string.replace(/\r\n/g,"\n");var utftext="";for(var n=0;n<string.length;n++){var c=string.charCodeAt(n);if(c<128){utftext+=String.fromCharCode(c)}else if((c>127)&&(c<2048)){utftext+=String.fromCharCode((c>>6)|192);utftext+=String.fromCharCode((c&63)|128)}else{utftext+=String.fromCharCode((c>>12)|224);utftext+=String.fromCharCode(((c>>6)&63)|128);utftext+=String.fromCharCode((c&63)|128)}}return utftext},_utf8_decode:function(utftext){var string="";var i=0;var c=c1=c2=0;while(i<utftext.length){c=utftext.charCodeAt(i);if(c<128){string+=String.fromCharCode(c);i++}else if((c>191)&&(c<224)){c2=utftext.charCodeAt(i+1);string+=String.fromCharCode(((c&31)<<6)|(c2&63));i+=2}else{c2=utftext.charCodeAt(i+1);c3=utftext.charCodeAt(i+2);string+=String.fromCharCode(((c&15)<<12)|((c2&63)<<6)|(c3&63));i+=3}}return string}}})}Event.observe(window,'load',function(){var boot_from=$(Ask500.Constants.BootFrom);if(typeof boot_from!='undefined'&&boot_from){var json=Ask500.decodeEmbeddedJSON(boot_from);if(typeof json!='undefiend'){if(json.logged_in){Ask500.loggedIn=function(){return true}}if(json.next_ping){var now=new Date();var ping_delay=(json.next_ping*1000)-now.getTime();if(ping_delay<=0||ping_delay>180000){ping_delay=180000}window.setTimeout(Ask500.ping,ping_delay)}}}});var Ask500;if(typeof Ask500.HoverTab=='undefined'){Ask500.HoverTab=Class.create();Ask500.HoverTab.prototype={initialize:function(tab,overlay){var that=this;var enter_event;var exit_event;var mouse_is_over=false;function hoverStart(event){var element;if(typeof event!='undefined'){element=Event.element(event)}else{element=false}if(mouse_is_over==false&&enter_event.element()!=element){mouse_is_over=true;tab.addClassName("tab_hovered");tab.down().addClassName("tab_inner");overlay.show()}};function hoverStop(event){var element;if(typeof event!='undefined'){element=Event.element(event)}else{element=false}if(mouse_is_over==true&&exit_event.element()!=element){mouse_is_over=false;overlay.hide();tab.removeClassName("tab_hovered");tab.down().removeClassName("tab_inner")}};this.register=function(){if(typeof tab!='undefined'&&typeof overlay!='undefined'&&typeof enter_event=='undefined'&&typeof exit_event=='undefined'){enter_event=new Ask500.EventHandler(tab.up(),'mouseover',hoverStart);exit_event=new Ask500.EventHandler(tab.up(),'mouseout',hoverStop);enter_event.register();exit_event.register()}return that};this.unregister=function(){if(typeof tab!='undefined'&&typeof overlay!='undefined'&&typeof enter_event!='undefined'&&typeof exit_event!='undefined'){hoverStop();enter_event.clear();exit_event.clear();enter_event=undefined;exit_event=undefined}return that};tab=$(tab);overlay=$(overlay);this.register()}}}var Ask500;if(typeof Ask500.LoginOverlay=='undefined'){Ask500.LoginOverlay=Class.create();Ask500.LoginOverlay.prototype={initialize:function(){var that=this;var overlay;var action;var event_handler;function closeEvent(event){Event.stop(event);overlay.remove()};this.display=function(for_element,for_action){if(overlay.up()){overlay.remove()}action.update(for_action);var parent_span=for_element.up('span');var insert_before;if(parent_span){insert_before=parent_span.next();if(insert_before){parent_span.up().insertBefore(overlay,insert_before)}else{parent_span.up().appendChild(overlay)}}else{insert_before=for_element.next();if(insert_before){for_element.up().insertBefore(overlay,insert_before)}else{for_element.up().appendChild(overlay)}}return overlay};this.getElement=function(){return overlay};overlay=Ask500.HTMLToDOM('<div class="login_overlay_container" style="position: relative"><div class="login_overlay"><a class="close_overlay" href="#"><img src="/img/general/login_overlay_close.png" alt="Close Overlay" title="Close Overlay"></a>To <span>Add 1 to</span> questions you first need to <a href="/users/login">login</a>. Don’t have an account? <a href="/signup">Sign up now</a></div></div>');action=overlay.down('span');event_handler=new Ask500.EventHandler(overlay.down('a.close_overlay'),'click',closeEvent);event_handler.register();overlay.remove()}};Object.extend(Ask500.LoginOverlay,{GlobalInstance:null})}Event.observe(window,'load',function(){if(Ask500.LoginOverlay.GlobalInstance===null){Ask500.LoginOverlay.GlobalInstance=new Ask500.LoginOverlay()}});var Ask500;if(typeof Ask500.UpvoteManager=='undefined'){Ask500.UpvoteManager=Class.create();Ask500.UpvoteManager.prototype={initialize:function(){var that=this;var links;function isValidReply(json){try{if(typeof json!='undefined'&&json.status.code==200&&typeof json.campaign!='undefined'){return true}}catch(e){}return false};function linkToId(link){if(typeof link!='undefined'&&link.hasClassName(Ask500.UpvoteManager.Constants.DOM.UpvoteLinkClass)){return link.id.substr(link.id.lastIndexOf('_')+1)}};function showOverlay(after_element,html,campaign_id){var overlay_element;if(!Ask500.$_(after_element)){return false}overlay_element=Ask500.HTMLToDOM('<div class="login_overlay_container"><div class="login_overlay"><a class="close_overlay" href="#close"><img src="/img/general/login_overlay_close.png" alt="Close Overlay" title="Close Overlay"></a>'+html+'</div></div>');new Ask500.EventHandler(overlay_element.down('a.close_overlay'),'click',overlayClickCallback.bindAsEventListener(this,campaign_id,overlay_element)).register();overlay_element.remove();Ask500.insertAfter(overlay_element,after_element)};function overlayClickCallback(event,campaign_id,overlay){overlay.remove();links[campaign_id].overlay=false;Event.stop(event)};function upvote(link,campaign_id){if(links[campaign_id].overlay){return}var points=link.up('.'+Ask500.UpvoteManager.Constants.DOM.PointsCellClass);if(!points){points=link.up('td.'+Ask500.UpvoteManager.Constants.DOM.PointsClass)}if(!points){return}points=points.down('.'+Ask500.UpvoteManager.Constants.DOM.PointsClass);if(!points){return}points.update(parseInt(Ask500.collectCDATAFromElement(points))+1);var image=link.down('img');var old_image_src=image.src;image.src=Ask500.UpvoteManager.Constants.DOM.AddedImageUrl;image.remove();link.parentNode.insertBefore(image,link);link.remove();new Ajax.Request('/campaigns/upvote',{parameters:{id:campaign_id},onSuccess:function(response){var json=Ask500.decodeJSON(response.responseText);if(!isValidReply(json)){points.update(parseInt(Ask500.collectCDATAFromElement(points))-1);var image_parent=image.parentNode;image.src=old_image_src;image.remove();image_parent.appendChild(link);link.appendChild(image);showOverlay(link,Ask500.UpvoteManager.Constants.Errors.UpvoteFailed,campaign_id);links[campaign_id].overlay=true}else{links[campaign_id].clear();links[campaign_id]=undefined}},onFailure:function(){showOverlay(image,Ask500.UpvoteManager.Constants.Errors.ConnectionFailed)}})};function clickCallback(event){var link=Event.element(event);if(link.tagName!='A'){link=link.up('a')}var id=linkToId(link);if(typeof id!='undefined'){upvote(link,id)}Event.stop(event)};this.searchForLinks=function(){var taints=new Hash();links.each(function(pair){if(typeof pair.value!='undefined'){taints[pair.key]=true}});$$('a.'+Ask500.UpvoteManager.Constants.DOM.UpvoteLinkClass).each(function(link){var id=linkToId(link);if(typeof links[id]=='undefined'){links[id]=new Ask500.EventHandler(link,'click',clickCallback);links[id].register()}else{if(links[id].element()!==link){links[id].clear();links[id]=new Ask500.EventHandler(link,'click',clickCallback);links[id].register()}taints[id]=false}});taints.each(function(pair){if(pair.value==true){links[pair.key].clear();links[pair.key]=undefined}})};links=new Hash();this.searchForLinks()}};Object.extend(Ask500.UpvoteManager,{Constants:{DOM:{UpvoteLinkClass:'upvote_link',PointsClass:'points',PointsCellClass:'points_cell',OverlayClass:'login_overlay_container',AddedImageUrl:'/img/external/added.gif'},Errors:{UpvoteFailed:"It looks like you (or someone else at your IP address) voted on this question already.  If you log in (you may need to create an account) you'll be able to see your previous votes as you navigate the site.",ConnectionFailed:"Sorry, we couldn't reach the Ask500 servers. Maybe your intenet is down?"}}});Event.observe(window,'load',function(){Object.extend(Ask500.UpvoteManager,{GlobalInstance:new Ask500.UpvoteManager()})})}var Ask500;if(typeof Ask500.VoteManager=='undefined'){Ask500.VoteManager=Class.create();Ask500.VoteManager.prototype={initialize:function(){var that=this;var questions;var Constants=Ask500.VoteManager.Constants;var voteCallback;function isValidReply(json){try{if(typeof json!='undefined'&&json.status.code==200){return true}}catch(e){}return false};function optionToId(option){return parseInt(option.id.substr(Constants.DOM.OptionIDRoot.length))};function questionToId(question){var q=Ask500.decodeEmbeddedJSONFast(question.down('.'+Constants.DOM.JSONClass),true);return q.campaign_id};function idToQuestion(id){if(typeof questions[id]!='undefined'){return questions[id].question.element}};function clearVoteVisually(question,option_id){var question_element=idToQuestion(question.campaign_id);switch(question.type){case'yesno':case'text':question_element.getElementsBySelector('.'+Constants.DOM.OptionClass).each(function(option){if(optionToId(option)==option_id){option.removeClassName('chosen')}});break;case'image':question_element.getElementsBySelector('.'+Constants.DOM.OptionClass).each(function(option){if(optionToId(option)==option_id){option.removeClassName('chosen')}else{option.removeClassName('notchosen')}});break;case'range_good':case'range_agree':case'range_like':case'range_likely':case'range_star':question_element.getElementsBySelector('input[type=radio]').each(function(radio){if(radio.value==option_id){if(question.type!='range_star'){var label_span=question_element.down('label[for='+radio.id+'] span');label_span.up('th').removeClassName('chosen');label_span.remove()}else{var label=question_element.down('label[for='+radio.id+']');label.up('th').removeClassName('chosen')}}radio.removeAttribute("disabled");radio.checked=false});break}var action_votes=$('question_'+question.campaign_id+'_action_votecount');if(Ask500.$_(action_votes)){action_votes.update(parseInt(Ask500.collectCDATAFromElement(action_votes))-1)}var points_votes=$('question_'+question.campaign_id+'_points_votecount');if(Ask500.$_(points_votes)){points_votes.update(parseInt(Ask500.collectCDATAFromElement(points_votes))-1)}};function displayVoteVisually(question,option_id){var question_element=idToQuestion(question.campaign_id);switch(question.type){case'yesno':case'text':question_element.getElementsBySelector('.'+Constants.DOM.OptionClass).each(function(option){if(optionToId(option)==option_id){option.addClassName('chosen')}});break;case'image':question_element.getElementsBySelector('.'+Constants.DOM.OptionClass).each(function(option){if(optionToId(option)==option_id){option.addClassName('chosen')}else{option.addClassName('notchosen')}});break;case'range_good':case'range_agree':case'range_like':case'range_likely':case'range_star':question_element.getElementsBySelector('input[type=radio]').each(function(radio){if(radio.value==option_id){radio.removeAttribute("disabled");radio.checked=true;if(question.type!='range_star'){var label=question_element.down('label[for='+radio.id+']');label.innerHTML=label.innerHTML+'<span class="highlighted_option">'+label.innerHTML+'</span>';label.up('th').addClassName('chosen')}}else{radio.checked=false}});break}var action_votes=$('question_'+question.campaign_id+'_action_votecount');if(Ask500.$_(action_votes)){action_votes.update(parseInt(Ask500.collectCDATAFromElement(action_votes))+1)}var points_votes=$('question_'+question.campaign_id+'_points_votecount');if(Ask500.$_(points_votes)){points_votes.update(parseInt(Ask500.collectCDATAFromElement(points_votes))+1)}};function radioDisableCallback(question){var question_element=idToQuestion(question.campaign_id);question_element.getElementsBySelector('input[type=radio]').each(function(radio){if(!radio.checked){radio.setAttribute("disabled","disabled")}})};function showOverlay(after_element,html,binds){};function showQuestionOverlay(question,html){var q=idToQuestion(question.campaign_id);var overlay_at=q.down('a.question');if(!Ask500.$_(overlay_at)){overlay_at=q.down('span.question')}if(!Ask500.$_(overlay_at)){overlay_at=q.down('div.hint_voting')}if(question.overlay){question.overlay.clear();question.overlay.element().remove();question.overlay=false}var overlay_element;overlay_element=Ask500.HTMLToDOM('<div class="login_overlay_container"><div class="login_overlay"><a class="close_overlay" href="#close"><img src="/img/general/login_overlay_close.png" alt="Close Overlay" title="Close Overlay"></a>'+html+'</div></div>');question.overlay=new Ask500.EventHandler(overlay_element,'click',overlayClickCallback.bindAsEventListener(this,question)).register();overlay_element.remove();Ask500.insertAfter(overlay_element,overlay_at)};function overlayClickCallback(event,question){var srcElement=Event.element(event);var anchorTag;if(srcElement.tagName.toLowerCase()=='a'){anchorTag=srcElement}else{anchorTag=srcElement.up('a')}if(Ask500.$_(anchorTag)&&anchorTag.href.substr(anchorTag.href.length-6)=='#close'){anchorTag.up("."+Constants.DOM.OverlayClass).remove();question.overlay=false;Event.stop(event)}};function displayCantRecordVote(question){if(Ask500.loggedIn()){showQuestionOverlay(question,"We weren't able to record your vote because too many people have voted already from your location.")}else{showQuestionOverlay(question,'Sorry, we were unable to record your vote. This is probably because you\'ve already voted on this question. (An Ask500People account isn\'t required to vote.)')}};function clickCallback(event){var srcElement=Event.element(event);var tagName=srcElement.tagName.toLowerCase();var parentAnchor;var option_id;var question_element;var option;var question;if(tagName=='input'||(tagName=='a'&&!srcElement.hasClassName(Constants.DOM.QuestionClass))||(Ask500.$_(parentAnchor=srcElement.up('a'))&&!parentAnchor.hasClassName(Constants.DOM.QuestionClass))||(tagName=='td'&&srcElement.className==''&&Ask500.$_(parentAnchor=srcElement.down('a'))&&!parentAnchor.hasClassName(Constants.DOM.QuestionClass))){question_element=srcElement.up('.'+Constants.DOM.QuestionContainerClass);if(!question_element){question_element=srcElement.up('.'+Constants.DOM.QuestionContainerClass+'_results')}question=questions[questionToId(question_element)].question;if(tagName!='input'){if(srcElement.hasClassName(Constants.DOM.OptionClass)){option=srcElement}else{option=srcElement.up('td.'+Constants.DOM.OptionClass)}option_id=optionToId(option);Event.stop(event)}else{option_id=srcElement.getValue()}if(question.can_vote_on==0){if(question.can_change_vote==0&&!question.is_voting){if(question.voted_for!=option_id&&question.voted_for){showQuestionOverlay(question,"Sorry, its too late to change that vote.")}Event.stop(event);return}else if(question.voted_for==option_id||question.is_voting){if(question.is_voting){switch(question.type){case'range_good':case'range_agree':case'range_like':case'range_likely':case'range_star':question_element.getElementsBySelector('input[type=radio]').each(function(radio){if(radio.value==question.is_voting){radio.checked=true}else{radio.checked=false}});break}}Event.stop(event);return}else{question.is_voting=true;clearVoteVisually(question,question.voted_for);displayVoteVisually(question,option_id);new Ajax.Request(Constants.URL.ChangeVote,{parameters:{v:question.can_change_vote,o:option_id},onSuccess:function(response){question.is_voting=false;var json=Ask500.decodeJSON(response.responseText);if(!isValidReply(json)){clearVoteVisually(question,option_id);displayVoteVisually(question,question.voted_for);showQuestionOverlay(question,"We weren't able to change your vote. Votes can only be changed for a brief period after voting.")}else{question.voted_for=option_id;if(typeof voteCallback=='function'){voteCallback('change',option_id)}}},onFailure:function(){question.is_voting=false;clearVoteVisually(question,option_id);displayVoteVisually(question,question.voted_for);showQuestionOverlay(question,"We could not connect to Ask500People to change your vote. Either Ask500People is down or there is a problem with your internet connection.")}});var message_container=question_element.down('div.demographic_message_container');if(message_container){message_container.hide()}return}}displayVoteVisually(question,option_id);question.can_vote_on=0;question.is_voting=option_id;new Ajax.Request(Constants.URL.FastVote,{parameters:{i:question.campaign_id,o:option_id},onSuccess:function(response){question.is_voting=false;var json=Ask500.decodeJSON(response.responseText);if(!isValidReply(json)){clearVoteVisually(question,option_id);question.can_vote_on=1;displayCantRecordVote(question)}else{question.can_change_vote=json.visitor.id;question.voted_for=option_id;var change_disable=function(){question.can_change_vote=0;question.change_timer=false;switch(question.type){case'range_good':case'range_agree':case'range_like':case'range_likely':case'range_star':radioDisableCallback(question);break}};if(question.campaign_id==Constants.SpecialSponsor.Tolkien.question_id){change_disable();if(option_id==Constants.SpecialSponsor.Tolkien.option_id){var html=Constants.SpecialSponsor.Tolkien.html;question.element.update(html)}}else if(question.campaign_id==Constants.SpecialSponsor.Freedback.question_id){change_disable();if(option_id==Constants.SpecialSponsor.Freedback.option_id){var html=Constants.SpecialSponsor.Freedback.html;question.element.update(html)}}else{question.change_timer=setTimeout(change_disable,Constants.VoteChangeInterval)}if(json.demographic_similarity!==false){message_container=idToQuestion(question.campaign_id).down('div.demographic_message_container');if(message_container){message_container.down('span').update(json.demographic_similarity);message_container.show()}}if(typeof voteCallback=='function'){voteCallback('set',option_id)}}},onFailure:function(){question.is_voting=false;question.can_vote_on=1;clearVoteVisually(question,option_id);showQuestionOverlay(question,"We could not connect to Ask500People to record your vote. Either Ask500People is down or there is a problem with your internet connection.")}})}};this.searchForQuestions=function(){var taints=new Hash();questions.each(function(pair){if(typeof pair.value!='undefined'){taints[pair.key]=true}});$$('td.'+Constants.DOM.QuestionContainerClass+', div.'+Constants.DOM.QuestionContainerClass+'_results').each(function(question){if(question.hasClassName('yourquestions_empty')){return}if(question.hasClassName('nav_tags')){return}var json_store=question.firstDescendant();var question_object=Ask500.decodeEmbeddedJSONFast(json_store,true);question_object.element=question;var id=question_object.campaign_id;var options_table;if(question_object.type.substr(0,6)=='range_'){options_table=question.down('table.'+Constants.DOM.RangeAnswerClass)}else{options_table=question.down('table.'+Constants.DOM.AnswerClass)}if(typeof questions[id]=='undefined'){questions[id]=new Ask500.EventHandler(options_table,'click',clickCallback);questions[id].register();questions[id].question=question_object;questions[id].question.overlay=false;questions[id].question.is_voting=false;questions[id].question.change_timer=false}else{if(questions[id].question.element!==question){var old_question=questions[i].question;questions[id].clear();questions[id]=new Ask500.EventHandler(options_table,'click',clickCallback);questions[id].register();questions[id].question=old_question}taints[id]=false}});taints.each(function(pair){if(pair.value==true){questions[pair.key].clear();questions[pair.key]=undefined}})};this.setCallback=function(callback){voteCallback=callback};questions=new Hash();this.searchForQuestions()}};Object.extend(Ask500.VoteManager,{Constants:{DOM:{QuestionClass:'question',QuestionContainerClass:'question_container',OptionClass:'optionRoot',JSONClass:'jsonData',OptionIDRoot:'qlist_option_',OverlayClass:'login_overlay_container',RangeAnswerClass:'range_answers',AnswerClass:'answers_grid'},URL:{FastVote:'/campaigns/fastvote',ChangeVote:'/campaigns/change_vote'},CookieName:'vote_count',AnonymousVoteWarnThreshold:2,VoteChangeInterval:180000,SpecialSponsor:{Tolkien:{question_id:34088,option_id:129947,html:'<span style="color: #000;" class="question">Did you know J.R.R. Tolkien released a new book in 2007?</span><div style="text-align: center; margin-top: 13px;"><a style="color: #3366BB;" href="http://www.amazon.com/gp/product/0547086059?ie=UTF8&amp;tag=ask500-20&amp;linkCode=as2&amp;camp=1789&amp;creative=9325&amp;creativeASIN=0547086059"><img src="http://ecx.images-amazon.com/images/I/51R-A5DRbWL._SL160_AA115_.jpg" /></a><div style="margin-top: 13px; font-size: 120%; line-height: 1.5em;">Check out <a style="color: #3366BB;" href="http://www.amazon.com/gp/product/0547086059?ie=UTF8&amp;tag=ask500-20&amp;linkCode=as2&amp;camp=1789&amp;creative=9325&amp;creativeASIN=0547086059">The Children of Húrin</a><img src="http://www.assoc-amazon.com/e/ir?t=ask500-20&amp;l=as2&amp;o=1&amp;a=0547086059" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" /> available now on Amazon.com.</div></div><div class="demographic_message_container"></div>'},Freedback:{question_id:34089,option_id:129945,html:'<span class="question" style="color: #000;">Did you know you\'ll get less spam with a professional contact form than by posting your email address on your site?</span><a style="color: #3366BB; font-weight: bold; font-family: \'Lucida Grande\'; font-size: 130%; margin-top: 15px; margin-bottom: 15px; display: block;" href="http://www.freedback.com/ask">Get a free contact form now</a><span style="color: #888888; margin-bottom: 25px; font-size: 110%;">(No HTML knowledge required)</span><div class="demographic_message_container"></div>'}}}});Event.observe(window,'load',function(){Object.extend(Ask500.VoteManager,{GlobalInstance:new Ask500.VoteManager()})})}var Ask500;if(typeof Ask500.QuestionOptionManager=='undefined'){Ask500.QuestionOptionManager=Class.create();Ask500.QuestionOptionManager.prototype={initialize:function(){var that=this;var overlay;var Constants=Ask500.QuestionOptionManager.Constants;var abuse_checkbox;var email_commented_on_checkbox;var options;var loading=true;var loading_overlay;var options_overlay;var options_dom;var last_id=0;function isValidReply(json){try{if(typeof json!='undefined'&&json.status.code==200){return true}}catch(e){}return false};function elementToId(element){if(typeof element!='undefined'&&typeof element.hasClassName=='function'){if(element.hasClassName(Constants.DOM.OptionsLinkClass)){return Ask500.muFormatParse(element)}else{return Ask500.muFormatParse(element.up('.'+Constants.DOM.OptionsLinkClass))}}};function loadingStart(id){loading=id;loading_overlay.show();options_overlay.hide()};function loadingFinished(){loading=false;loading_overlay.hide();options_overlay.show()};function getOptions(id){new Ajax.Request('/campaigns/get_options',{parameters:{'id':id},onSuccess:function(response){var json=Ask500.decodeJSON(response.responseText);if(isValidReply(json)&&loading==this.id){last_id=this.id;options=json;delete options.status;var has_options=false;if(typeof options.show_on_profile=='undefined'){options_dom.show_on_profile.li.hide()}else{if(options.show_on_profile!==true){options_dom.show_on_profile.checkbox.checked=false}else{options_dom.show_on_profile.checkbox.checked=true}has_options=true;options_dom.show_on_profile.li.show()}if(typeof options.abuse_report=='undefined'){options_dom.inappropriate.li.hide()}else{if(options.abuse_report!==true){options_dom.inappropriate.checkbox.checked=false}else{options_dom.inappropriate.checkbox.checked=true}has_options=true;options_dom.inappropriate.li.show()}if(typeof options.notifications=='undefined'){options_dom.notifications.container.hide()}else{var has_notifications=false;if(typeof options.notifications.commented_on=='undefined'){options_dom.notifications.commented_on.li.hide()}else{if(options.notifications.commented_on!==true){options_dom.notifications.commented_on.checkbox.checked=false}else{options_dom.notifications.commented_on.checkbox.checked=true}has_options=true;has_notifications=true;options_dom.notifications.commented_on.li.show()}if(has_notifications){options_dom.notifications.container.show()}else{options_dom.notifications.container.hide()}}if(!has_options){options_dom.no_options.show()}else{options_dom.no_options.hide()}loadingFinished()}}.bind({'id':id})})};function setOptions(id){var params={'id':id};var should_send=false;if(typeof options.abuse_report!='undefined'){if(options_dom.inappropriate.checkbox.checked!=options.abuse_report){if(options_dom.inappropriate.checkbox.checked){params['abuse']='report'}else{params['abuse']='undo'}should_send=true}}if(typeof options.show_on_profile!='undefined'){if(options_dom.show_on_profile.checkbox.checked!=options.show_on_profile){if(options_dom.show_on_profile.checkbox.checked){params['profile']='true'}else{params['profile']='false'}should_send=true}}if(typeof options.notifications!='undefined'){if(typeof options.notifications.commented_on!='undefined'){if(options_dom.notifications.commented_on.checkbox.checked!=options.notifications.commented_on){if(options_dom.notifications.commented_on.checkbox.checked){params['notifications[commented_on]']='true'}else{params['notifications[commented_on]']='false'}should_send=true}}}if(should_send){new Ajax.Request('/campaigns/update_options',{parameters:params})}delete options};function clickHandler(event){var srcElement=Event.element(event);if(srcElement.hasClassName(Constants.DOM.OptionsLinkClass)){if(!Ask500.loggedIn()){Ask500.LoginOverlay.GlobalInstance.display(srcElement,'modify options for');Event.stop(event);return}var id=elementToId(srcElement);if(overlay.up()!==null){if(!loading){setOptions(last_id)}overlay.remove()}loadingStart(id);if(srcElement.nextSibling){srcElement.parentNode.insertBefore(overlay,srcElement.nextSibling)}else{srcElement.parentNode.appendChild(overlay)}getOptions(id);Event.stop(event)}else if(srcElement.hasClassName(Constants.DOM.DoneLinkClass)){if(!loading){setOptions(last_id)}overlay.remove();Event.stop(event)}};overlay=$(Ask500.HTMLToDOM(Ask500.QuestionOptionManager.Templates.overlay.evaluate()));options_dom={inappropriate:{li:$('inappropriate_li'),checkbox:$('inappropriate')},show_on_profile:{li:$('showonprofile_li'),checkbox:$('showonprofile')},notifications:{container:$('notification_options'),commented_on:{li:$('email_commented_on_li'),checkbox:$('email_commented_on')}},no_options:$('no_options')};loading_overlay=overlay.down('.'+Constants.DOM.OverlayLoadingClass);options_overlay=overlay.down('.'+Constants.DOM.OverlayOptionsClass);overlay.remove();Event.observe(document.body,'click',clickHandler)}};Object.extend(Ask500.QuestionOptionManager,{Constants:{DOM:{OptionsLinkClass:'moreoptions',OverlayClass:'moreoptions_overlay_container',DoneLinkClass:'moreoptions_done',OverlayLoadingClass:'moreoptions_overlay_loading',OverlayOptionsClass:'moreoptions_overlay_options'}},Templates:{},GlobalInstance:false});Event.observe(window,'load',function(){Ask500.QuestionOptionManager.GlobalInstance=new Ask500.QuestionOptionManager()})}var Ask500;if(typeof Ask500.FavoriteManager=='undefined'){Ask500.FavoriteManager=Class.create();Ask500.FavoriteManager.prototype={initialize:function(){var that=this;var links;var constants=Ask500.FavoriteManager.Constants;function isValidReply(json){try{if(typeof json!='undefined'&&json.status.code==200){return true}}catch(e){}return false};function linkToId(link){if(typeof link!='undefined'&&link.hasClassName(constants.DOM.FavoriteLinkClass)){return link.id.substr(link.id.lastIndexOf('_')+1)}};function showOverlay(after_element,html,campaign_id){var overlay_element;if(!Ask500.$_(after_element)){return false}if(Ask500.$_(links[campaign_id].overlay)){links[campaign_id].overlay.remove();links[campaign_id].overlay=false;links[campaign_id].overlay_event.clear()}overlay_element=Ask500.HTMLToDOM('<div class="login_overlay_container"><div class="login_overlay"><a class="close_overlay" href="#close"><img src="/img/general/login_overlay_close.png" alt="Close Overlay" title="Close Overlay"></a>'+html+'</div></div>');links[campaign_id].overlay=overlay_element;links[campaign_id].overlay_event=new Ask500.EventHandler(overlay_element.down('a.close_overlay'),'click',overlayClickCallback.bindAsEventListener(this,campaign_id)).register();overlay_element.remove();Ask500.insertAfter(overlay_element,after_element)};function overlayClickCallback(event,campaign_id){links[campaign_id].overlay.remove();links[campaign_id].overlay=false;links[campaign_id].overlay_event.clear();Event.stop(event)};function clickCallback(event){var link=Event.element(event);if(link.tagName.toLowerCase()!='a'){link=link.up('a')}var id=linkToId(link);Event.stop(event);if(!Ask500.loggedIn()){Ask500.LoginOverlay.GlobalInstance.display(links[id].link.element(),'mark a question as a favorite');return}var favored=false;if(typeof links[id]!='undefined'){if(links[id].star_image.src.substr(links[id].star_image.src.length-constants.DOM.ActiveStarSrc.length)==constants.DOM.ActiveStarSrc){favored=true}}var url='/campaigns/mark_favorite';if(favored){url='/campaigns/clear_favorite';links[id].star_image.src=constants.DOM.InactiveStarSrc}else{links[id].star_image.src=constants.DOM.ActiveStarSrc}var failureCallback=function(err){if(favored){links[id].star_image.src=constants.DOM.ActiveStarSrc}else{links[id].star_image.src=constants.DOM.InactiveStarSrc}showOverlay(links[id].link.element(),err,id)};new Ajax.Request(url,{parameters:{i:id},onSuccess:function(xhr){var json=Ask500.decodeJSON(xhr.responseText);if(!isValidReply(json)){failureCallback("An unknown error prevented us from marking this question as a favorite. Please try again.")}},onFailure:failureCallback.bind(that,"Sorry, we couldn't reach the Ask500 servers. Maybe your intenet is down?")})};this.searchForLinks=function(){var taints=new Hash();links.each(function(pair){if(typeof pair.value!='undefined'){taints[pair.key]=true}});$$('a.'+constants.DOM.FavoriteStarClass).each(function(link){var id=linkToId(link);if(typeof links[id]=='undefined'){links[id]={star:new Ask500.EventHandler(link,'click',clickCallback),link:new Ask500.EventHandler(constants.DOM.FavoritePrefix+'_'+id,'click',clickCallback),star_image:link.down('img'),overlay:false,overlay_event:false};links[id].star.register();links[id].link.register()}else{if(links[id].star.element()!==link){links[id].star.clear();links[id].link.clear();links[id]={star:new Ask500.EventHandler(link,'click',clickCallback),link:new Ask500.EventHandler(constants.DOM.FavoritePrefix+'_'+id,'click',clickCallback),star_image:link.down('img'),overlay:false,overlay_event:false};links[id].star.register();links[id].link.register()}taints[id]=false}});taints.each(function(pair){if(pair.value==true){links[pair.key].star.clear();links[pair.key].link.clear();links[pair.key]=undefined;if(Ask500.$_(links[pair.key].overlay)){links[pair.key].overlay.remove();links[pair.key].overlay=false;links[pair.key].overlay_event.clear()}}})};links=new Hash();this.searchForLinks()}};Object.extend(Ask500.FavoriteManager,{Constants:{DOM:{FavoriteLinkClass:'favorite_toggle',FavoriteStarClass:'favorite_star',FavoritePrefix:'favorite',InactiveStarSrc:'/img/general/star_inactive.gif',ActiveStarSrc:'/img/general/star.gif'},Errors:{}}});Event.observe(window,'load',function(){Object.extend(Ask500.FavoriteManager,{GlobalInstance:new Ask500.FavoriteManager()})})}/* Copyright 2009 Wondermill Webworks Inc. */
Ask500.QuestionOptionManager.Templates.overlay = new Template('<span class=\"moreoptions_overlay_container\">&nbsp;\n\t<span class=\"moreoptions_overlay\">\n\t\t<span class=\"moreoptions_overlay_loading\" id=\"more_options_loading\" style=\"display: none;\">\n\t\t\t<img src=\"/img/general/loader_big.gif\" />\n\t\t\t<span>Loading...</span>\n\t\t</span>\n\t\t<span class=\"moreoptions_overlay_options\">\n\t\t\t<span id=\"question_options\">\n\t\t\t\t<ul>\n\t\t\t\t\t<li id=\"inappropriate_li\"><input id=\"inappropriate\" type=\"checkbox\" name=\"inappropriate\" value=\"inappropriate\" /> <label for=\"inappropriate\">Mark as inappropriate</label></li>\n\t\t\t\t\t<li id=\"showonprofile_li\"><input id=\"showonprofile\" type=\"checkbox\" name=\"showonprofile\" value=\"showonprofile\" /> <label for=\"showonprofile\">Show on Profile</label></li>\n\t\t\t\t</ul>\n\t\t\t</span>\n\t\t\t<span id=\"no_options\">\n\t\t\t\t<ul>\n\t\t\t\t\t<li>No options are available for this question.</li>\n\t\t\t\t</ul>\n\t\t\t</span>\n\t\t\t<span id=\"notification_options\">\n\t\t\t\t<ul>\n\t\t\t\t\t<li id=\"email_commented_on_li\"><input id=\"email_commented_on\" type=\"checkbox\" name=\"email_commented_on\" value=\"email_commented_on\" /> <label for=\"email_commented_on\">Email me comments</label></li>\n\t\t\t\t</ul>\n\t\t\t</span>\n\t\t\t<a href=\"#\" class=\"moreoptions_done\">Done</a>\n\t\t</span>\n\t</span>\n</span>');
