
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);var aStarRatings=stdClass.extend({constructor:function(el,settings){this.base();Object.extend(this.s,{moduleName:'AddRating',json:{ver:'0.1',meta:{},data:{requests:[]}},ulSelector:'ul.rateable',starSelector:'a',ratingTextSelector:'.rating_text',currentRatingSelector:'.current-rating',uniqueID:null,type:null});Object.extend(this.s,settings);Object.extend(this.n,{container:el,ul:null,stars:[],ratingText:null,currentRating:null,jsonNode:document.createElement('div')});Object.extend(this.c,{requests:[]});this.parseClasses(this.n.container,true);if(this.n.container.vars&&this.n.container.vars.moduleName!=""){this.s.moduleName=this.n.container.vars.moduleName;}
this._findElements();},starClicked:function(e,el){Event.stop(e);this.addRequest("changeRating",{newRating:el.vars.stars,uniqueID:this.n.ul.vars.uniqueID,type:this.n.ul.vars.type});this.JsonOut();},parseClasses:function(el,parseChildren){var classes=String(el.className).split(" ");var keepClasses=[];for(var x=0;x<classes.length;x++){if(classes[x].indexOf(':')!=-1){var matches=classes[x].match(/^(\w*):{1,2}\{(.*)\}$/);var ob={};var vars=matches[2].split(",");for(var y=0;y<vars.length;y++){vars[y]=vars[y].split(/::?/);if(!vars[y][1])vars[y][1]='';ob[vars[y][0]]=vars[y][1];}
el[matches[1]]=ob;}else{keepClasses.push(classes[x]);}}
el.className=keepClasses.join(" ");if(parseChildren){var eles=el.getElementsByTagName('*');for(var x=0;x<eles.length;x++){this.parseClasses(eles[x]);}}},addRequest:function(requestName,dataObject){this.c.requests.push({id:this.c.requests.length,type:requestName,data:dataObject});},JsonOut:function(){this.s.json.data.requests=this.c.requests;var data='__json='+this.s.moduleName+'&data='+Object.toJSON(this.s.json);this.c.requests=[];if(this.s.moduleName==''){var returnData='{"meta":{},"data":{"html":"<div class=\'rating vars:{moduleName:AdminModule__rating}\'><ul class=\'rateable floatleft vars:{uniqueID=51820}\'><li class=\'current-rating\' style=\'width: '+(this.s.json.data.requests[0].data.newRating*16)+'px;\'> </li><li><a href=\'javascript:void(0)\' title=\'1 star\' class=\'one-star vars:{stars:1}\'>1</a></li><li><a href=\'javascript:void(0)\' title=\'2 stars\' class=\'two-stars vars:{stars:2}\'>2</a></li><li><a href=\'javascript:void(0)\' title=\'3 stars\' class=\'three-stars vars:{stars:3}\'>3</a></li><li><a href=\'javascript:void(0)\' title=\'4 stars\' class=\'four-stars vars:{stars:4}\'>4</a></li><li><a href=\'javascript:void(0)\' title=\'5 stars\' class=\'five-stars vars:{stars:5}\'>5</a></li></ul><span class=\'rating_text\'>'+this.s.json.data.requests[0].data.newRating+'/5</span></div>"},"responses":[{"id":1,"type":"changeRating","data":{"success":"true"}}]}';this.JsonIn({responseText:returnData});}else{var myAjax=new Ajax.Request(window.location,{method:'post',parameters:data,onSuccess:this.JsonIn.bind(this)});}},JsonIn:function(t){var result=t.responseText.evalJSON();(result.responses.length).times(function(i){if(result.responses[i].type=='changeRating'){this.n.jsonNode.innerHTML=result.data.html;this.n.currentRating.style.width=document.getElementsBySelector(this.s.currentRatingSelector,this.n.jsonNode)[0].style.width;this._startScripts(this.n.container);var stars=document.getElementsBySelector(this.s.starSelector,this.n.ul);for(var x=0;x<stars.length;x++){stars[x].blur();}}}.bind(this));},_startScripts:function(el){},_findElements:function(){this.n.ul=document.getElementsBySelector(this.s.ulSelector,this.n.container)[0];if(!this.n.ul){return;}
this.n.currentRating=document.getElementsBySelector(this.s.currentRatingSelector,this.n.container)[0];var stars=document.getElementsBySelector(this.s.starSelector,this.n.ul);this.n.stars=[];for(var x=0;x<stars.length;x++){this.eObserve(stars[x],'click',this.starClicked.bindAsEventListener(this,stars[x]));this.n.stars.push(stars[x]);}
this.n.ratingText=document.getElementsBySelector(this.s.ratingTextSelector,this.n.container)[0];}});EventSelectors.register({'.rating':function(el,index){new aStarRatings(el,{moduleName:'AddRating'});}},true);var ConfirmDialog=kDialog2.extend({settings:function(settings){if(typeof(this.s)=='undefined'){this.base();Object.extendProperties(this.s,{'+innerTriggers':[{node:'.ok',event:'click',action:'onClickOK'},{node:'.cancel',event:'click',action:'onClickCancel'},{node:'.close',event:'click',action:'hide'}],'+innerZones':[{node:'.buttons',name:'buttons'}],'+zones':{heading:'Confirm',content:'  <p class="text">Please click OK or Cancel.</p>'+'  <form class="buttons">'+'   <input type="image" src="'+Config.templatePath+'i/button_ok.gif" alt = "OK" class="ok">'+'   <input type="image" src="'+Config.templatePath+'i/button_cancel.gif" alt = "Cancel" class="cancel">'+'  </form>'},onClickOK:function(){return true;},onClickCancel:function(){return true;}});this.s.innerZones.push({node:'.buttons',name:'buttons'});Object.extendProperties(this.s,settings);}},constructor:function(settings){this.settings(settings);this.create();},setButtons:function(html){this.setZone('buttons',html);},onClickOK:function(ele,e){Event.stop(e);if(this.s.onClickOK(this))this.hide();},onClickCancel:function(ele,e){Event.stop(e);if(this.s.onClickCancel(this))this.hide();}});