
(function(){Function.prototype.skribitBind=function(){var __method=this,args=$skribitA(arguments),object=args.shift();return function(){return __method.apply(object,args.concat($skribitA(arguments)));}};window.$skribitA=function(it){if(!it)return[];if(it.toArray)return it.toArray()
else{var results=[];for(var i=0,len=it.length;i<len;i++)results.push(it[i]);return results;}};var SkribbySkribbyYeah={version:'2',iAm:null,root:null,blog:null,loggedIn:false,lastAddOdd:true,voteBindings:{},needsAuth:false,readyChecker:null,loginHashPoller:null,question:'What should I write about?',lagCheckers:{suggestions:null,vote:null,suggest:null},lagTimes:{SUGGESTIONS:10000,VOTE:5000,SUGGEST:5000},lagMessage:"Skribit seems to be experiencing heavy loads. Hang on.. :)",firstCall:true,whoAmI:function(){var data=[65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121];var skribit=[];for(var i=0,l=16;i<l;i++){skribit.push(String.fromCharCode(data[Math.floor(Math.random()*51)]));}
this.iAm=skribit.join("");},init:function(){this.whoAmI();window[this.iAm]={loadData:this.loadData.skribitBind(this),voteResponse:this.voteResponse.skribitBind(this),suggestResponse:this.suggestResponse.skribitBind(this)};var config=this.getConfig();this.blog=config.blog;this.root=config.root;this.suggCount=config.cnt;if(!config.noCSS||config.noCSS==="false"){this.addCSS("/v2/skin/"+this.blog+'.css');}
if(config.renderTo&&this.$(config.renderTo)){this.buildContainer(config.renderTo);this.readyChecker=window.setInterval(this.checkForContainerReady.skribitBind(this),50);}},getConfig:function(){var skripitz=document.getElementsByTagName("script");for(var i=0,len=skripitz.length;i<len;i++){var skrippy=skripitz[i].src;if(skrippy.match(/SkribitWidget\.js(\?.*)?$/)){var root=skrippy.substring(0,skrippy.indexOf("SkribitWidget.js")).replace(/\/javascripts\//,"");var m=root.match(/^(https?:\/\/)assets\.(.*)$/);if(m)root=m[1]+m[2];return{blog:this.getURLParam(skrippy,"blog"),renderTo:this.getURLParam(skrippy,"renderTo"),noCSS:this.getURLParam(skrippy,"noCSS"),cnt:this.getURLParam(skrippy,"cnt"),root:root};}}},buildContainer:function(renderTo){var out=[];out.push("<div id='skribitWidget'>");out.push("<div id='skribitWorking' style='position:absolute;z-index:9;display:none'>Loading...</div>");out.push("<div id='skribitSplash'>");out.push(" <a href='http://www.skribit.com' title='Skribit Website'><img width='59' height='15' class='widget_logo' src='")
out.push("http://assets.skribit.com/images/widget_logo.png' alt='Skribit Website'/></a>");out.push("</div>");out.push("<div id='skribitError' style='display:none'></div>");out.push("<div id='skribitWidgetBody' style='display:none'>");out.push("<div id='skribitSuggestionWrapper'></div>");out.push("<iframe src='about:blank' id='skribitLoginContainer' style='border:0;display:none;margin:0;padding:0;z-index:9' frameborder='0' marginwidth='0' marginheight='0' scrolling='no'></iframe>");out.push("<div id='skribitAddSuggestion' class='clearfix'>");out.push(" <div id='skribitQuestion' style='display:none;'></div>")
out.push(" <textarea id='skribitNewSuggestion'>What should I write about?</textarea>");out.push(" <div id='skribitCommands' style='display:none'>");out.push("  <a id='skribitCancel' href='javascript:void(0);'>Cancel</a>")
out.push("  <input id='skribitSuggest' type='button' value='Suggest'/>");out.push(" </div>");out.push("</div>");out.push("<div id='skribitLoginInfo' style='display:none;'>");out.push(" logged in as <span id='skribitPosterName'></span><br/>");out.push(" <span id='skribitLoginSignup'>");out.push("  <a id='skribitLogin' href='javascript:void(0)'>login</a><a id='skribitCancelLogin' style='display:none' href='javascript:void(0)'>cancel login</a> | <a href='http://skribit.com/signup' target='_blank'>sign up</a>");out.push(" </span>");out.push("</div>");out.push("<div class='skribitFooter'>");out.push(" <a href='http://www.skribit.com' title='Skribit Website'><img class='widget_logo' src='http://assets.skribit.com/images/widget_logo.png' alt='Skribit Website' width='59' height='15'/></a>");out.push(" <div class='skribitMoreSuggestions'><a href='javascript:void(0)' id='skribitBlogLink' target='_blank' title='See all suggestions'>See all <span id='skribitTotalSuggestions'></span> Suggestions</a></div>");out.push("</div>");out.push("</div>");out.push("</div>");this.$(renderTo).innerHTML=out.join("");},checkForContainerReady:function(){if(this.$("skribitWidget")&&this.$("skribitSuggestionWrapper")){window.clearInterval(this.readyChecker);this.readyChecker=null;this.ready();}},ready:function(){var offset=this.cumulativeOffset(this.$('skribitWidget'));var loading=this.$('skribitWorking');loading.style.left=offset[0]+'px';loading.style.top=offset[1]+'px';this.busy();if(!this.blog){this.showError("Invalid blog given.",true);this.done();return;}
this.callSkribit(this.blog);this.setupListeners();},setupListeners:function(){this.observe("skribitNewSuggestion","click",this.showNewSuggestion.skribitBind(this));this.observe("skribitCancel","click",this.hideNewSuggestion.skribitBind(this));this.observe("skribitLogin","click",this.showLogin.skribitBind(this));this.observe("skribitCancelLogin","click",this.hideLogin.skribitBind(this));this.observe("skribitSuggest","click",this.suggest.skribitBind(this));},callSkribit:function(blog){var scriptURL="/v2/suggestions/"+blog+"/"+this.iAm;if(this.suggCount)scriptURL+="?cnt="+this.suggCount;this.addScript(scriptURL);this.lagCheckers.suggestions=window.setTimeout(function(){this.loadData({error:this.lagMessage,notDone:true});}.skribitBind(this),this.lagTimes.SUGGESTIONS);},loadData:function(data){if(!data){this.showError("An unknown error has occurred.",true);this.done();return;}
if(data.error){this.showError(data.error,true);if(data.notDone===null)this.done();return;}
if(this.firstCall){this.firstCall=false;data.words=data.words.replace(/\\/g,"");this.$('skribitBlogLink').setAttribute('href',data.url);this.show('skribitWidgetBody');var splash=this.$('skribitSplash');splash.parentNode.removeChild(splash);}
window.clearTimeout(this.lagCheckers.suggestions);this.lagCheckers.suggestions=null;this.hideError();this.data=data;this.$("skribitSuggestionWrapper").innerHTML="";for(var i=data.suggestions.length-1;i>=0;i--){var row=data.suggestions[i];this.renderSuggestion(row);}
this.loggedIn=data.loggedIn;if(this.loggedIn)this.processLoggedIn();else this.processLoggedOut();this.needsAuth=!data.anonOkay;this.setQuestion(data.words);this.$("skribitTotalSuggestions").innerHTML=data.totalSuggs;this.$("skribitPosterName").innerHTML=data.uName;this.done();},showLogin:function(){var widget=this.$('skribitWidget');var dims=this.dimensions(widget);var offset=this.cumulativeOffset(widget);var login=this.$("skribitLoginContainer");var loginH=dims[1]*(2/3);login.src=this.root+"/v2/login?r="+escape(document.location.href);login.style.left=(offset[0]+1)+'px';login.style.top=offset[1]+((dims[1]-loginH)/2)+'px';login.style.width=(dims[0]-2)+'px';login.style.height=loginH+'px';this.hide("skribitSuggestionWrapper","skribitAddSuggestion","skribitLogin");this.show("skribitLoginContainer","skribitCancelLogin");this.loginHashPoller=window.setInterval(this.hashPoll.skribitBind(this),500);},hideLogin:function(){this.hide("skribitLoginContainer","skribitCancelLogin");this.show("skribitSuggestionWrapper","skribitAddSuggestion","skribitLogin");},hashPoll:function(){var hash=window.location.hash;if(hash.indexOf("#ACK")!==-1||hash.indexOf('#cancel')!==-1){if(hash.indexOf("#ACK")!==-1){this.$("skribitPosterName").innerHTML=hash.split("|")[1];this.processLoggedIn();}
window.clearInterval(this.loginHashPoller);this.loginHashPoller=null;this.hide('skribitLoginContainer');}},setQuestion:function(q){this.question=q;this.$("skribitNewSuggestion").value=this.question;this.$("skribitQuestion").innerHTML=this.question;},setSuggCount:function(cnt){this.suggCount=cnt;this.callSkribit(this.blog);},processLoggedIn:function(){this.hide("skribitLoginSignup");this.loggedIn=true;},processLoggedOut:function(){this.show("skribitLoginSignup");this.loggedIn=false;},renderSuggestion:function(sugg){var html=[];html.push("<div class='skribitSuggestion");if(!this.lastAddOdd)html.push(" skribitSuggestionOdd");html.push(" clearfix'>");html.push("<div class=\"skribitVote")
if(sugg.voted==='true')html.push("d");html.push(" skribitButton\" id=\"skribitVote");html.push(sugg.id);html.push("\">");if(sugg.voted==='true'){html.push("<span title='You are following this suggestion.'>"+sugg.follows+"</span>")}else{html.push("<span title='Follow this suggestion and get notified of updates.'>+</span>")}
html.push("</div>");if(sugg.status){html.push("<span class='status-dot status-dot-"+sugg.indicator+"' title='Suggestion Status: "+sugg.status+"'>&#8226;</span> ")}else{switch(sugg.indicator){case'green':html.push("<span class='status-dot status-dot-"+sugg.indicator+"' title='Suggestion Status - Green: Working on it'>&#8226;</span> ")
break;case'yellow':html.push("<span class='status-dot status-dot-"+sugg.indicator+"' title='Suggestion Status - Yellow: Thinking about it'>&#8226;</span> ")
break;case'red':html.push("<span class='status-dot status-dot-"+sugg.indicator+"' title='Suggestion Status - Red: Probably not'>&#8226;</span> ")
break;}}
html.push("<a href='");html.push(sugg.link);html.push("' class='skribitSuggestionTitle'>");html.push(sugg.suggestion.replace(/&/g,'&amp;').replace(/>/g,'&gt;').replace(/</g,'&lt;').replace(/"/g,'&quot;'));html.push("</a>")
html.push("</div>");html.push(this.$("skribitSuggestionWrapper").innerHTML);this.$("skribitSuggestionWrapper").innerHTML=html.join("");this.lastAddOdd=!this.lastAddOdd;if(sugg.voted!=='true')window.setTimeout(this.bindVoter.skribitBind(this,sugg.id),500);},bindVoter:function(id){this.voteBindings[id]=this.vote.skribitBind(this,id);this.observe("skribitVote"+id,"click",this.voteBindings[id]);},vote:function(id){this.busy();this.addScript("/v2/vote/"+id+"/"+this.iAm);if(this.lagCheckers.vote)window.clearInterval(this.lagCheckers.vote);this.lagCheckers.vote=window.setTimeout(function(){this.voteResponse({success:false,error:this.lagMessage,notDone:true});}.skribitBind(this),this.lagTimes.VOTE);},voteResponse:function(data){if(!data){this.showError("An unknown error has occurred, please vote again.");this.done();return;}
if(!data.success){this.showError(data.error?data.error:"Setting could not be saved, please try again.");if(data.notDone===null)this.done();return;}
window.clearTimeout(this.lagCheckers.vote);this.lagCheckers.vote=null;this.hideError();var id=data.id;var button=this.$("skribitVote"+id);this.removeClass(button,"skribitVote");this.addClass(button,"skribitVoted");button.innerHTML=data.follows;this.unobserve(button,"click",this.voteBindings[id]);this.voteBindings[id]=null;this.done();},showNewSuggestion:function(){var el=this.$("skribitNewSuggestion");if(el.value==this.question)el.value='';el.focus();this.show("skribitQuestion",'skribitCommands','skribitLoginInfo');},hideNewSuggestion:function(){this.$("skribitNewSuggestion").value=this.question;this.hide("skribitCommands","skribitQuestion","skribitLoginInfo");},suggest:function(){if(this.needsAuth&&!this.loggedIn){this.showError("You must be logged in to post a suggestion to this blog.");return;}
var val=this.$("skribitNewSuggestion").value;if(val.length===0||val.length>100){this.showError("Your suggestion must be between 1 and 100 characters.");return;}
this.busy();this.addScript("/v2/suggest/"+this.blog+"/"+this.iAm+"?suggestion="+encodeURIComponent(val));this.lagCheckers.suggest=window.setTimeout(function(){this.suggestResponse({error:this.lagMessage,notDone:true});}.skribitBind(this),this.lagTimes.SUGGEST);},suggestResponse:function(data){if(!data){this.showError("An unknown error has occurred, please make your suggestion again.");window.clearTimeout(this.lagCheckers.suggest);this.done();return;}
if(data.error){this.showError(data.error);if(!data.notDone||data.notDone===null){this.done();window.clearTimeout(this.lagCheckers.suggest);}
return;}
window.clearTimeout(this.lagCheckers.suggest);this.lagCheckers.suggest=null;this.hideError();for(var i=0,len=this.data.suggestions.length-1;i<len;i++){this.data.suggestions[i]=this.data.suggestions[i+1];}
this.data.suggestions[this.data.suggestions.length-1]={id:data.suggestion.id,suggestion:data.suggestion.suggestion,link:data.suggestion.link,voted:'true',follows:data.suggestion.follows};this.hideNewSuggestion();this.data.totalSuggs++;this.loadData(this.data);},busy:function(){this.show("skribitWorking");},done:function(){this.hide("skribitWorking");if(typeof SkribitWidget!="undefined"){SkribitWidget.setQuestion=this.setQuestion.bind(this);SkribitWidget.setSuggCount=this.setSuggCount.bind(this);if(SkribitWidget.onDoneLoading)
SkribitWidget.onDoneLoading();}},showError:function(msg,keep){this.$("skribitError").innerHTML=msg;this.show("skribitError");if(typeof keep==="undefined")window.setTimeout(this.hideError.skribitBind(this),2000);},hideError:function(){this.$("skribitError").innerHTML="";this.hide("skribitError");},$:function(el){return(typeof el==="string")?document.getElementById(el):el;},hide:function(){for(var i=0;i<arguments.length;i++){var el=this.$(arguments[i]);el.style.display="none";}},show:function(){for(var i=0;i<arguments.length;i++){var el=this.$(arguments[i]);el.style.display="";}},removeClass:function(el,clazz){el=this.$(el);var classVal=el.getAttribute("class");if(!classVal){classVal=el.getAttribute("className");el.setAttribute("className",classVal.replace(clazz,""));}else{el.setAttribute("class",classVal.replace(clazz,""));}
return el;},addClass:function(el,clazz){el=this.$(el);var classVal=el.getAttribute("class");if(!classVal){classVal=el.getAttribute("className");el.setAttribute("className",classVal+" "+clazz);}else{el.setAttribute("class",classVal+" "+clazz);}},observe:function(el,action,func,capture){if(typeof el==="string")el=this.$(el);if(el.addEventListener){el.addEventListener(action,func,capture);}
else if(el.attachEvent){el.attachEvent("on"+action,func);}},unobserve:function(el,action,func,capture){if(typeof el==="string")el=this.$(el);if(el.removeEventListener){el.removeEventListener(action,func,capture);}
else if(el.detachEvent){try{el.detachEvent("on"+action,func);}catch(e){}}},addScript:function(url){var script=document.createElement("script");script.src=this.root+url;script.type="text/javascript";document.getElementsByTagName("HEAD")[0].appendChild(script);},addCSS:function(url){var css=document.createElement("link");css.type="text/css";css.rel="stylesheet";css.href=this.root+url;document.getElementsByTagName("HEAD")[0].appendChild(css);},getURLParam:function(url,param){var pair=url.match(new RegExp("\\?.*"+param+"=([0-9|.|a-z|A-Z,]*)"));return(pair&&pair.length===2)?pair[1]:null;},cumulativeOffset:function(element){var valueT=0,valueL=0;do{valueT+=element.offsetTop||0;valueL+=element.offsetLeft||0;element=element.offsetParent;}while(element);return[valueL,valueT];},dimensions:function(element){var display=element.style.display;if(display!='none'&&display!=null)
return[element.offsetWidth,element.offsetHeight];var els=element.style;var originalVisibility=els.visibility;var originalPosition=els.position;var originalDisplay=els.display;els.visibility='hidden';els.position='absolute';els.display='block';var originalWidth=element.clientWidth;var originalHeight=element.clientHeight;els.display=originalDisplay;els.position=originalPosition;els.visibility=originalVisibility;return[originalWidth,originalHeight];}};SkribbySkribbyYeah.observe(window,"load",SkribbySkribbyYeah.init.skribitBind(SkribbySkribbyYeah));})();