kapp.namespace("kapp.share");kapp.share.initshare=function(){$$('.share_link').each(function(s){Event.observe(s,'click',kapp.share.Popup.bind(s));if(s.getAttribute('k_used')){Event.observe(s,'mouseover',kapp.share.smallPop.bind(s))}})};kapp.share.newPopup=function(){title=encodeURIComponent('Kosmix: '+searchParams['qtitle']);url=encodeURIComponent(window.location.href);site=kapp.search.kosmixSite=='righthealth'?'RightHealth':'Kosmix';code='<div class="before">&nbsp;</div>'+'<div class="container"><div class="container">'+'<span class="share_link"><span class="link_text">Bookmark&nbsp;/&nbsp;Share</span>&nbsp;<span class="share_close">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></span>'+'<div class="content">'+'<form method="post" action="/share">'+'<label for="from_email">Enter your name:</label>'+'<input type="text" name="from_name" id="from_name"/>'+'<label for="from_email">Enter your email address:</label>'+'<input type="text" name="from_email" id="from_email"/>'+'<label for="to_email">Enter up to five email addresses:</label>'+'<input type="text" name="to_email" id="share_email_box"/>'+'<div id="share_email_container"></div>'+'<label for="message">Here\'s the note you\'re sending:</label>'+'<textarea name="message" rows="7" id="email_message">Hi,\n\nI want to share this page on '+site+' with you. It\'s about \''+searchParams['qtitle']+'\'.\n\nEnjoy!</textarea>'+'<input type="submit" class="button" value="Send" id="share_send_button"/>'+'<hr/>'+'<label class="footnote">Or, select a bookmark service:</label>'+'<ul class="services">'+'<li><a href="http://del.icio.us/post? &url='+url+'&title='+title+'"><img src="/images/icons/del.icio.us.png" class="favicon" alt="Delicious"/>Delicious</a></li>'+'<li><a href="http://www.myspace.com/Modules/PostTo/Pages/?c='+url+'&t='+title+'"><img src="/images/icons/myspace.com.png" class="favicon" alt="MySpace"/>MySpace</a></li>'+'<li><a href="http://digg.com/submit?phase=2&url='+url+'&title='+title+'&bodytext=A topic guide from Kosmix about '+searchParams['qtitle']+'" title="Digg this topic"><img src="/images/icons/digg.com.png" class="favicon" alt="Digg"/>Digg</a></li>'+'<li><a href="http://www.stumbleupon.com/submit?url='+url+'&title='+title+'"><img src="/images/icons/stumbleupon.com.png" class="favicon" alt="Stumbleupon"/>Stumbleupon</a></li>'+'<li><a href="http://www.facebook.com/share.php?u='+url+'&t='+title+'"><img src="/images/icons/facebook.com.png" class="favicon" alt="Facebook"/>Facebook</a></li>'+'<li><a href="http://twitter.com/home/?status=Check out the topic guide for '+searchParams['qtitle']+' at '+url+'."><img src="/images/icons/twitter.com.png" class="favicon" alt="Twitter"/>Twitter</a></li>'+'<li><a href="http://furl.net/storeIt.jsp?t='+title+'&u='+url+'"><img src="/images/icons/furl.net.png" class="favicon" alt="Furl"/>Furl</a></li>'+'<li><a href="http://buzz.yahoo.com/article/pub/'+url+'"><img src="/images/icons/buzz.yahoo.com.png" class="favicon" alt="Yahoo! Buzz"/>Yahoo! Buzz</a></li>'+'</ul><br class="clr">'+'</form>'+'</div>'+'</div></div>'+'<div class="after">&nbsp;</div>';popper=new Element('div',{'class':'share_popup'}).update(code);popper.hook=kapp.share.hookPopEvents.bind(popper);return popper};kapp.share.hookPopEvents=function(){Event.observe(this.down('.share_close'),'click',kapp.share.closePop.bind(this));Event.observe(this.down('#share_email_box'),'keyup',kapp.share.ku_Email.bind(this.down('#share_email_box')));Event.observe(this.down('#share_email_box'),'keypress',kapp.share.kp_Email.bind(this.down('#share_email_box')));Event.observe(this.down('#share_email_box'),'blur',kapp.share.ku_Email.bind(this.down('#share_email_box')));Event.observe(this.down('form'),'submit',kapp.share.submit.bind(this));Event.observe(this.down('#share_send_button'),'click',kapp.share.submit.bind(this))};kapp.share.newSmallPopup=function(){title=encodeURIComponent('Kosmix: '+searchParams['qtitle']);url=encodeURIComponent(window.location.href);code='<div class="before">&nbsp;</div>'+'<div class="container"><div class="container">'+'<a href="/share" class="share_link"><span class="link_text">Bookmark&nbsp;/&nbsp;Share</span>&nbsp;<span class="share_icon">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></a>'+'<div class="content">'+'<ul class="services">'+'<li><a href="http://del.icio.us/post? &url='+url+'&title='+title+'"><img src="/images/icons/del.icio.us.png" class="favicon" alt="Delicious"/>Delicious</a></li>'+'<li><a href="http://www.myspace.com/Modules/PostTo/Pages/?c='+url+'&t='+title+'"><img src="/images/icons/myspace.com.png" class="favicon" alt="MySpace"/>MySpace</a></li>'+'<li><a href="http://digg.com/submit?phase=2&url='+url+'&title='+title+'&bodytext=A topic guide from Kosmix about '+searchParams['qtitle']+'" title="Digg this topic"><img src="/images/icons/digg.com.png" class="favicon" alt="Digg"/>Digg</a></li>'+'<li><a href="http://www.stumbleupon.com/submit?url='+url+'&title='+title+'"><img src="/images/icons/stumbleupon.com.png" class="favicon" alt="Stumbleupon"/>Stumbleupon</a></li>'+'<li><a href="http://www.facebook.com/share.php?u='+url+'&t='+title+'"><img src="/images/icons/facebook.com.png" class="favicon" alt="Facebook"/>Facebook</a></li>'+'<li><a href="http://twitter.com/home/?status=Check out the topic guide for '+searchParams['qtitle']+' at '+url+'."><img src="/images/icons/twitter.com.png" class="favicon" alt="Twitter"/>Twitter</a></li>'+'<li><a href="http://furl.net/storeIt.jsp?t='+title+'&u='+url+'"><img src="/images/icons/furl.net.png" class="favicon" alt="Furl"/>Furl</a></li>'+'<li><a href="http://buzz.yahoo.com/article/pub/'+url+'"><img src="/images/icons/buzz.yahoo.com.png" class="favicon" alt="Yahoo! Buzz"/>Yahoo! Buzz</a></li>'+'</ul><br class="clr">'+'</div>'+'</div></div>'+'<div class="after">&nbsp;</div>';popper=new Element('div',{'class':'share_popup small_popup'}).update(code);Event.observe(popper,'mouseover',kapp.share.popHover.bind(popper));Event.observe(popper,'mouseout',kapp.share.smallPopOut.bind(popper));Event.observe(popper.down('.share_link'),'click',kapp.share.Popup.bind(popper.down('.share_link')));return popper};kapp.share.submit=function(ev){$$('.error_popup').each(function(e){e.hide()});elem=this;valid=true;email_list=[];$$('#share_email_container .addy').each(function(a){if(!a.hasClassName('deleted')){email_list.push(a.getAttribute('k_email'))}});elist=email_list.join(',');if(elist==''){kapp.share.raise_error($('share_email_box'),'I don\'t see any addresses...');valid=false}from_list=$A($('from_email').value.replace(/['"<>]/g," ").split(/[\s|,|;|:]/));from='';from_list.each(function(f){if(kapp.share.validate_email(f)){from=f}});if(from==''){kapp.share.raise_error($('from_email'),'Hmm. This isn\'t a properly formed email address.');valid=false}if(valid){new Ajax.Request('/share',{method:'post',parameters:{from_email:from,to_email:elist,message:$('email_message').value,query:searchParams["qtitle"],link:$('share_link')?$('share_link').value:window.location.href,name:$('from_name').value},onSuccess:kapp.share.success.bind(elem),onFailure:kapp.share.fail.bind(elem)})}Event.stop(ev)};kapp.share.success=function(){this.down('.content').setStyle({height:this.down('.content').getDimensions().height+'px'});this.down('.content').update('<br/>Ok, we sent it!<br/><br/><input type="submit" class="button" value="Thanks" id="share_thanks_button"/>');Event.observe($('share_thanks_button'),'click',kapp.share.removePop.bind(this))};kapp.share.fail=function(){kapp.share.raise_error($('share_send_button'),'Not sure why, but your message could not be sent. Please try again later.')};kapp.share.raise_error=function(elem,message){if(!elem.err_obj){elem.err_obj=new Element('div',{'class':'error_popup'});elem.err_obj.setStyle({display:'none'});document.body.appendChild(elem.err_obj)}elem.err_obj.update('<div class="top">&nbsp;</div><div class="content">'+message+'</div><div class="bottom">&nbsp;</div><div class="arrow">&nbsp;</div>');elem.err_obj.setStyle({position:'absolute',left:elem.cumulativeOffset()[0]-141+'px',top:elem.cumulativeOffset()[1]-elem.err_obj.getDimensions().height+29+'px'});if(elem.err_obj.style.display=='none')new Effect.Appear(elem.err_obj,{duration:0.3})};kapp.share.validate_email=function(addr){if(addr.match(/^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,6}$/)){return true}else{return false}};kapp.share.add_email=function(addr){exists=false;$$('#share_email_container .addy').each(function(a){if(a.getAttribute('k_email')==addr){exists=true}});if(exists)return false;em_obj=new Element('div',{'class':'addy','k_email':addr,'style':'display:none;'}).update('<span class="email_delete">[x]</span>&nbsp;'+addr);Event.observe(em_obj.down('.email_delete'),'click',kapp.share.delete_email.bind(em_obj));$('share_email_container').appendChild(em_obj);new Effect.BlindDown(em_obj,{duration:0.2})};kapp.share.delete_email=function(){var elem=this;new Effect.BlindUp(elem,{duration:0.2,afterFinish:function(){elem.addClassName('deleted')}})};kapp.share.refresh_emails=function(mail_str){var emails=$A(mail_str.replace(/['"<>]/g," ").split(/[\s|,|;|:]/));$$('#share_email_container .addy').each(function(a){if(emails.indexOf(a.getAttribute('k_email'))==-1){new Effect.BlindUp(a,{duration:0.2,afterFinish:function(){a.remove()}})}});emails.each(function(a){if(kapp.share.validate_email(a))kapp.share.add_email(a)})};kapp.share.ku_Email=function(event){kapp.share.refresh_emails(this.value);if(event.keyCode==Event.KEY_TAB||event.keyCode==Event.KEY_RETURN||(Prototype.Browser.WebKit>0&&event.keyCode==0)){Event.stop(event);this.value+=' ';return false}};kapp.share.kp_Email=function(event){if(event.keyCode==Event.KEY_RETURN){Event.stop(event);return false}};kapp.share.closePop=function(){$$('.share_popup input').each(function(e){if(e.err_obj)e.err_obj=false});$$('.error_popup').each(function(e){e.remove()});new Effect.Fade(this,{duration:0.3})};kapp.share.removePop=function(){var elem=this;$$('.share_popup input').each(function(e){if(e.err_obj)e.err_obj=false});$$('.error_popup').each(function(e){e.remove()});new Effect.Fade(elem,{duration:0.3,afterFinish:kapp.share.destroyPop.bind(elem)})};kapp.share.destroyPop=function(){$$('.share_link').each(function(s){s.popUp=false})};kapp.share.Popup=function(ev){Event.stop(ev);if(!this.popUp)this.popUp=kapp.share.newPopup();this.popUp.setStyle({position:'absolute',width:'316px',top:(this.cumulativeOffset()[1]-13)+'px',left:(this.cumulativeOffset()[0]+this.getDimensions().width-333)+'px',display:'none'});document.body.appendChild(this.popUp);this.popUp.hook();new Effect.Appear(this.popUp,{duration:0.3})};kapp.share.smallPop=function(ev){Event.stop(ev);if(this.timeout)clearTimeout(this.timeout);if(!this.smallPop)this.smallPop=kapp.share.newSmallPopup();this.smallPop.setStyle({position:'absolute',width:'116px',top:(this.cumulativeOffset()[1]-13)+'px',left:(this.cumulativeOffset()[0]+this.getDimensions().width-183)+'px',display:'none'});document.body.appendChild(this.smallPop);new Effect.Appear(this.smallPop,{duration:0.3})};kapp.share.popHover=function(ev){if(this.timeout)clearTimeout(this.timeout)};kapp.share.smallPopOut=function(ev){this.timeout=setTimeout(kapp.share.closePop.bind(this),500)};kapp.share.initshare();kapp.namespace('suggest');kapp.suggest.AutoSuggest=function(id,param){if(!document.getElementById)return 0;this.fld=$(id);if(!this.fld)return 0;this.sInp="";this.nInpC=0;this.aSug=[];this.iHigh=0;var defaults={minchars:1,meth:"get",varname:"input",className:"autosuggest",timeout:2500,delay:500,offsety:-5,shownoresults:true,noresults:"No results!",maxheight:250,cache:true,maxentries:25};this.oP=param?$H(defaults).merge(param)._object:{};var p=this;Event.observe(this.fld,'keypress',p.onKeyPress.bind(this));Event.observe(this.fld,'keyup',p.onKeyUp.bind(this));Event.observe(this.fld,'blur',p.clearSuggestions.bind(this));this.fld.setAttribute("autocomplete","off")};kapp.suggest.AutoSuggest.prototype.onKeyPress=function(ev){var key=(window.event)?window.event.keyCode:ev.keyCode;var RETURN=13;var TAB=9;var ESC=27;var bubble=1;switch(key){case RETURN:this.setHighlightedValue.bind(this).call();bubble=0;break;case ESC:this.clearSuggestions.bind(this).call();break}return bubble};kapp.suggest.AutoSuggest.prototype.onKeyUp=function(ev){var key=(window.event)?window.event.keyCode:ev.keyCode;var ARRUP=38;var ARRDN=40;var bubble=1;switch(key){case ARRUP:this.changeHighlight.bind(this,key).call();bubble=0;break;case ARRDN:this.changeHighlight.bind(this,key).call();bubble=0;break;default:this.getSuggestions.bind(this,this.fld.value).call()}return bubble};kapp.suggest.AutoSuggest.prototype.getSuggestions=function(val){if(val==this.sInp)return 0;if($(this.idAs))$(this.idAs).remove();this.sInp=val;if(val.length<this.oP.minchars){this.aSug=[];this.nInpC=val.length;return 0}var ol=this.nInpC;this.nInpC=val.length?val.length:0;var l=this.aSug.length;if(this.nInpC>ol&&l&&l<this.oP.maxentries&&this.oP.cache){var arr=[];for(var i=0;i<l;i++){if(this.aSug[i]&&this.aSug[i].value&&this.aSug[i].value.substr(0,val.length).toLowerCase()==val.toLowerCase())arr.push(this.aSug[i])};this.aSug=arr;this.createList(this.aSug);return false}else{var pointer=this;var input=this.sInp;clearTimeout(this.ajID);this.ajID=setTimeout(pointer.doAjaxRequest.bind(this,input),this.oP.delay)};return false};kapp.suggest.AutoSuggest.prototype.doAjaxRequest=function(input){if(input!=this.fld.value)return false;var pointer=this;if(typeof(this.oP.script)=="function")var url=this.oP.script(encodeURIComponent(this.sInp));else var url=this.oP.script+encodeURIComponent(this.sInp);if(!url)return false;var meth=this.oP.meth;var input=this.sInp;var onSuccessFunc=function(req){pointer.setSuggestions(req,input)};var onErrorFunc=function(status){alert("AJAX error: "+status)};new Ajax.Request(url,{'method':meth,onSuccess:onSuccessFunc,onFailure:onErrorFunc})};kapp.suggest.AutoSuggest.prototype.setSuggestions=function(req,input){if(input!=this.fld.value)return false;this.aSug=[];if(this.oP.json){var jsondata=eval('('+req.responseText+')');for(var i=0;i<jsondata.results.length;i++){this.aSug.push({'id':jsondata.results[i].id,'value':jsondata.results[i].value,'info':jsondata.results[i].info})}}else{var xml=req.responseXML;var results=xml.getElementsByTagName('results')[0].childNodes;for(var i=0;i<results.length;i++){if(results[i].hasChildNodes())this.aSug.push({'id':results[i].getAttribute('id'),'value':results[i].childNodes[0].nodeValue,'info':results[i].getAttribute('info')})}};this.idAs="as_"+this.fld.id;this.createList(this.aSug)};kapp.suggest.AutoSuggest.prototype.createList=function(arr){var pointer=this;if($(this.idAs))$(this.idAs).remove();this.killTimeout();if(arr.length==0&&!this.oP.shownoresults)return false;var div=new Element("div",{'id':this.idAs,'class':this.oP.className});this.ul=new Element("ul",{'id':"as_ul"});for(var i=0;i<arr.length;i++){var val=arr[i].value;var st=val.toLowerCase().indexOf(this.sInp.toLowerCase());var output=val.substring(0,st)+"<span>"+val.substring(st,st+this.sInp.length)+"</span>"+val.substring(st+this.sInp.length);var li=new Element("li").update(output);li.name=i+1;Event.observe(li,'click',pointer.setHighlightedValue.bind(this));Event.observe(li,'mouseover',pointer.setHighlight.bind(this,li.name));this.ul.appendChild(li)};if(arr.length==0&&this.oP.shownoresults){var li=new Element("li",{'class':"as_warning"}).update(this.oP.noresults);this.ul.appendChild(li)};div.appendChild(this.ul);var pos=$(this.fld).cumulativeOffset();div.style.left=pos.left+"px";div.style.top=(pos.top+this.fld.offsetHeight+this.oP.offsety+10)+"px";div.style.width=this.fld.offsetWidth+"px";Event.observe(div,'mouseover',function(){pointer.killTimeout.bind(this)});Event.observe(div,'mouseout',function(){pointer.resetTimeout.bind(this)});document.getElementsByTagName("body")[0].appendChild(div);this.iHigh=0;var pointer=this;this.toID=setTimeout(function(){pointer.clearSuggestions()},this.oP.timeout)};kapp.suggest.AutoSuggest.prototype.changeHighlight=function(key){var list=this.ul;if(!list)return false;var n;if(key==40)n=this.iHigh+1;else if(key==38)n=this.iHigh-1;if(n>list.childNodes.length)n=list.childNodes.length;if(n<1)n=1;this.setHighlight.bind(this,n).call()};kapp.suggest.AutoSuggest.prototype.setHighlight=function(n){var list=this.ul;if(!list)return false;if(this.iHigh>0)this.clearHighlight.bind(this).call();this.iHigh=Number(n);list.childNodes[this.iHigh-1].addClassName("highlight");this.killTimeout()};kapp.suggest.AutoSuggest.prototype.clearHighlight=function(){var list=this.ul;if(!list)return false;if(this.iHigh>0){list.childNodes[this.iHigh-1].removeClassName("highlight");this.iHigh=0}};kapp.suggest.AutoSuggest.prototype.setHighlightedValue=function(){if(this.iHigh){this.sInp=this.fld.value=this.aSug[this.iHigh-1].value;this.fld.focus();if(this.fld.selectionStart)this.fld.setSelectionRange(this.sInp.length,this.sInp.length);this.clearSuggestions();if(typeof(this.oP.callback)=="function")this.oP.callback(this.aSug[this.iHigh-1])}};kapp.suggest.AutoSuggest.prototype.killTimeout=function(){clearTimeout(this.toID)};kapp.suggest.AutoSuggest.prototype.resetTimeout=function(){clearTimeout(this.toID);this.toID=setTimeout(this.clearSuggestions.bind(this),1000)};kapp.suggest.AutoSuggest.prototype.clearSuggestions=function(){this.killTimeout();var ele=$(this.idAs);var pointer=this;if(ele){var fade=new Effect.Fade(ele,{from:1,to:0,duration:.25,onComplete:function(){$(pointer.idAs).remove()}})}};kapp.suggest.as=new kapp.suggest.AutoSuggest('searchText',{script:"/suggest/",json:true,maxresults:5,shownoresults:false,timeout:5000,cache:false});
