
var inviteFriends=stdClass.extend({constructor:function(el,settings){this.base();Object.extend(this.s,{moduleName:'InviteFriends',ceid:null,json:{ver:'0.1',meta:{},data:{},requests:[]}});Object.extend(this.n,{el:el,form:null,submitButton:null,dialog:null});Object.extend(this.c,{requests:[]});this._attachEvents();},elOnClick:function(e){Event.stop(e);new FormDialog({'+zones':{heading:'Loading...',text:'Loading...'},position:{exemplarAnchor:'top right',selfAnchor:'bottom right',exemplar:this.n.el,offsetY:0,offsetX:0},groupId:'InviteDialogs',groupLimit:1,startHidden:true,moduleName:this.s.moduleName,parentThis:this,ceID:this.s.ceid});},_attachEvents:function(){this.eObserve(this.n.el,'click',this.elOnClick.bind(this));}});var shareDialog=null;EventSelectors.register({'a.invitefriends':function(el,index){new inviteFriends(el);}},true);var messageStack=stdClass.extend({constructor:function(el,settings){this.base();Object.extend(this.s,{timer:null,waitTime:10000,effectTime:5000,closeSelector:".close"});Object.extend(this.n,{el:el,childEl:[],tempContainer:document.createElement('div')});Object.extend(this.c,{messageFunctions:{success:this.successMessage.bind(this),error:this.errorMessage.bind(this)}});var eles=this.n.el.getElementsBySelector('ul');for(var x=0;x<eles.length;x++){var childEl={el:eles[x],timer:null}
this.startTimer(childEl);this._attachEvents(childEl);}},closeClicked:function(childEl){this.removeMessage(childEl);},addMessage:function(message,type){if(!this.n.el){return;}
if(typeof(this.c.messageFunctions[type])=="function"){var html=this.c.messageFunctions[type](message);}else{return;}
this.n.tempContainer.innerHTML=html;var childEl={el:this.n.tempContainer.firstChild,timer:null}
this.n.el.appendChild(childEl.el);this._attachEvents(childEl);Element.show(this.n.el);if(window.Effect){Effect.BlindDown(childEl.el,{duration:(this.s.effectTime/1000),afterFinishInternal:function(effect){effect.element.undoClipping();effect.element.style.height='';}});}else{Element.show(childEl.el);}
this.startTimer(childEl);},removeMessage:function(childEl){this.endTimer(childEl);if(window.Effect){Effect.Fade(childEl.el,{duration:(this.s.effectTime/1000)});}else{Element.hide(this.n.el);}},startTimer:function(childEl){this.endTimer(childEl);this.s.timer=setTimeout(this.removeMessage.bind(this,childEl),this.s.waitTime);},endTimer:function(childEl){if(childEl.timer!=null){clearTimeout(childEl.timer);childEl.timer=null;}},successMessage:function(message){var html='<ul class="success">';html+='<li class="title">Success</li>';html+='<li>'+message+'</li>';html+='</ul>';return html;},errorMessage:function(message){var html='<ul class="error">';html+='<li class="title">Error</li>';html+='<li>'+message+'</li>';html+='<li class="close">Close me</li>';html+='</ul>';return html;},_attachEvents:function(childEl){var eles=document.getElementsBySelector(this.s.closeSelector,(childEl.el||this.n.el));for(var x=0;x<eles.length;x++){this.eObserve(eles[x],'click',this.closeClicked.bind(this,childEl));}}});Behaviour.register({'#messagestack':function(el){new messageStack(el);}});Object.extend(Effect,{throbbers:[],Throb:function(node){var throbber={node:node,key:'throbber',throbber:document.createElement('div')}
Element.addClassName(throbber.throbber,"throbber");throbber.node.parentNode.insertBefore(throbber.throbber,throbber.node);var dims=Element.getDimensions(throbber.node);Object.extend(throbber.throbber.style,{position:"absolute",width:dims['width']+"px",height:dims['height']+"px"});if(document.all){throbber.iframe=document.createElement('iframe');Element.addClassName(throbber.iframe,"iFrame");Object.extend(throbber.iframe.style,{position:"absolute",width:dims['width']+"px",height:dims['height']+"px",filter:"alpha(opacity=0)",opacity:"0",zIndex:"2"});if(parseInt(throbber.node.style.zIndex)>1){Object.extend(throbber.iframe.style,{zIndex:parseInt(throbber.node.style.zIndex)+1});}
throbber.throbber.appendChild(throbber.iframe);}
Effect.throbbers.push(throbber);},CancelThrob:function(node){var throbber=null;for(var x=0;x<Effect.throbbers.length;x++){if(Effect.throbbers[x].node==node){throbber=Effect.throbbers.splice(x,1);break;}}
if(!throbber){return;}
throbber=throbber[0];throbber.throbber.parentNode.removeChild(throbber.throbber);}});var MasterTabModule=stdClass.extend({settings:function(settings){if(typeof(this.s)=='undefined'){this.base();this.n.tabs=[];this.n.content=null;this.activeTab=null;this.getData=[];Object.extendProperties(this.s,{container:null,tabsULContainerSelector:'ul.tabs',contentNodeSelector:'div.tab_content',activeTabClass:'selected',loadingTabClass:'loading',ajajParams:['__json=MasterTabModule'],passThroughGETVars:[new RegExp('.*')],showErrors:true,showDebugs:['kramer','anatoli'],cache:true,cachePreLoadedContent:false});Object.extendProperties(this.s,settings);}},constructor:function(settings){this.settings(settings);this.acquireNodes();this.getGetData();},acquireNodes:function(){this.n.content=document.getElementsBySelector(this.s.contentNodeSelector,this.s.container)[0];var tabsULContainer=document.getElementsBySelector(this.s.tabsULContainerSelector,this.s.container)[0];var tabs=tabsULContainer.getElementsByTagName('li');for(var x=0;x<tabs.length;x++){var ahref=tabs[x].getElementsByTagName('a')[0];if(Element.hasClassName(ahref,'anchor'))
ahref=tabs[x].getElementsByTagName('a')[1];var tab={node:tabs[x],link:ahref,event:null,cachedData:null,href:ahref.getAttribute('href'),pmid:DOM.getClassData('pmid',tabs[x])};if(Element.hasClassName(tabs[x],this.s.activeTabClass)){this.activeTab=tab;if(this.s.cachePreLoadedContent)tab.cachedData=this.n.content.innerHTML;}
this.n.tabs.push(tab);}
this.activateEvents();},activateEvents:function(){for(var x=0;x<this.n.tabs.length;x++){this.n.tabs[x].event=this.eObserve(this.n.tabs[x].node,'click',this.onTabClick.bind(this,this.n.tabs[x]));}},onTabClick:function(whichTab,e){Event.stop(e);Effect.Throb(this.n.content);if(whichTab.cachedData&&this.s.cache){this.activateTab(whichTab);}else{this.ajajOut(whichTab);}},getGetData:function(){this.getData=[];var getvars=document.location.search.substring(1).split('&');for(var x=0;x<getvars.length;x++){var getvar=getvars[x].split('=');for(var y=0;y<this.s.passThroughGETVars.length;y++){if(getvar[0].match(this.s.passThroughGETVars[y])){this.getData.push(getvars[x]);}}}},ajajOut:function(whichTab){if(whichTab.href){var ajaj=Object.toJSON({"ver":"0.1","meta":{},"data":null,"requests":[{id:0,type:"getPageModule",data:{href:whichTab.href}}]});var url=whichTab.href;var postData=[];for(var x=0;x<this.s.ajajParams.length;x++){postData.push(this.s.ajajParams[x]);}
url+='?'+this.getData.join('&');postData.push('data='+ajaj);postData=postData.join('&');this.debug('AJAJ out to:\n'+url+'\nwith post data:\n'+postData);new Ajax.Request(url,{method:'post',parameters:postData,onSuccess:this.ajajIn.bind(this,whichTab),onFailure:this.ajajFail.bind(this,whichTab)});return true;}else{this.error('This tab has no discernable href designated in the tab link.');return false;}},ajajIn:function(whichTab,ret){this.debug('AJAJ in:\n\n'+ret.responseText);if(/AppleWebKit/.test(navigator.userAgent))var object=eval('('+ret.responseText+')');else var object=ret.responseText.evalJSON();if(object.meta.success){whichTab.cachedData=object.responses[0].data;this.activateTab(whichTab);}else{this.error('Server interaction failure: "'+object.meta.error+'"');return false;}},ajajFail:function(whichTab,ret){this.error('Error fetching content for PMID#'+whichTab.pmid);},activateTab:function(whichTab){if(this.activeTab)Element.removeClassName(this.activeTab.node,this.s.activeTabClass);if(this.activeTab)Element.removeClassName(this.activeTab.link,this.s.activeTabClass);this.activeTab=whichTab;Element.addClassName(this.activeTab.node,this.s.activeTabClass);Element.addClassName(this.activeTab.link,this.s.activeTabClass);this.setContent(whichTab.cachedData);},setContent:function(html){setTimeout(function(){this.n.content.innerHTML=html;Effect.CancelThrob(this.n.content);EventSelectors.apply();}.bind(this),1);},error:function(text){this.shout('MasterTabModule Error: '+text,this.s.showErrors);},debug:function(text){this.shout('MasterTabModule Debug: '+text,this.s.showDebugs);},shout:function(text,toWhom){if(toWhom===true){window.alert(text);}else if(toWhom instanceof Array){for(var x=0;x<toWhom.length;x++){shout(text,toWhom[x]);}}}});EventSelectors.register({'div.tabbed':function(node){new MasterTabModule({container:node});}},true);