
var SanegoOnDomLoaded={tasks:Array(),didRun:false,add:function(functionObject){this.tasks.push(functionObject);return this;},run:function(){if(this.didRun){alert('This should be run only once!');}
if(this.tasks.length){for(var i=0;i<this.tasks.length;i++){this.tasks[i]();}}
this.didRun=true;}};var SingleParent=Class.create({parent:null,setParent:function(parent)
{this.parent=parent;}});var UserEventDefinition=Class.create({name:new String(),xPath:new String(),domElement:new Object(),delay:null,delayId:null,handlerCallBack:new Function(),initialize:function(initializationObject){this.name=initializationObject.name;this.xPath=initializationObject.xPath;this.domElement=initializationObject.domElement;this.handlerCallBack=initializationObject.handlerCallBack;this.delay=initializationObject.delay;this.validateMembers();},validateMembers:function(){if(Object.isUndefined(this.name)||Object.isUndefined(this.handlerCallBack)||this.name.empty()){throw"UserEventDefinition not valid, it doesnt have the mandatory attributes";}
if((Object.isUndefined(this.xPath)||this.xPath.empty())&&!Object.isElement(this.domElement)){throw"UserEventDefinition not valid, you have to set one "+"of the quasi optional attributes";}
if
(!Object.isUndefined(this.delay)&&!Object.isNumber(this.delay))
{throw"UserEventDefinition not valid, delay must be a Number";}}});var DelayedExecuter=Class.create
({});DelayedExecuter.execute=function(userEventDefinition,observedEvent)
{observedEvent.stop();var event;if(Prototype.Browser.IE)
{event=Object.clone(observedEvent);}
else
{event=observedEvent;}
if(userEventDefinition.delayId!=null)
{window.clearTimeout(userEventDefinition.delayId);userEventDefinition.delayId=null;}
userEventDefinition.delayId=DelayedExecuter.executeHandlerCallBackDelayed.delay
(userEventDefinition.delay,event,userEventDefinition);};DelayedExecuter.executeHandlerCallBackDelayed=function(event,userEventDefinition)
{window.clearTimeout(userEventDefinition.delayId);userEventDefinition.delayId=null;userEventDefinition.handlerCallBack(event);};var UserInterface=Class.create(SingleParent,{modules:Object,registerEventWasSuccessful:false,observeredElements:Array(),initialize:function()
{},registerEvent:function(userEventDefinition)
{this.registerEventWasSuccessful=false;if(Object.isElement(userEventDefinition.domElement)&&!Object.isUndefined(userEventDefinition.name)&&!userEventDefinition.name.empty()&&!Object.isUndefined(userEventDefinition.xPath)&&!userEventDefinition.xPath.empty()&&userEventDefinition.handlerCallBack!=undefined)
{userEventDefinition.domElement.select(userEventDefinition.xPath).each(function(object){this.registerObserver(object,userEventDefinition);}.bind(this));}
else if(Object.isElement(userEventDefinition.domElement)&&!Object.isUndefined(userEventDefinition.name)&&!userEventDefinition.name.empty()&&Object.isUndefined(userEventDefinition.xPath)&&userEventDefinition.handlerCallBack!=undefined){this.registerObserver(userEventDefinition.domElement,userEventDefinition);}
else if(!Object.isUndefined(userEventDefinition.name)&&!userEventDefinition.name.empty()&&!Object.isUndefined(userEventDefinition.xPath)&&!userEventDefinition.xPath.empty()&&userEventDefinition.handlerCallBack!=undefined){$$(userEventDefinition.xPath).each(function(object){this.registerObserver(object,userEventDefinition);}.bind(this));}
else{this.registerEventWasSuccessful=false;}
return this.registerEventWasSuccessful;},registerObserver:function(domElement,userEventDefinition){var element;if
(!Object.isUndefined(userEventDefinition.delay)&&Object.isNumber(userEventDefinition.delay))
{element=$(domElement).observe
(userEventDefinition.name,DelayedExecuter.execute.bind(this,userEventDefinition));}
else
{element=$(domElement).observe
(userEventDefinition.name,userEventDefinition.handlerCallBack);}
if(Object.isElement(element)){this.registerEventWasSuccessful=true;this.observeredElements.push({element:element,eventName:userEventDefinition.name,handlerCallBack:userEventDefinition.handlerCallBack});}
else{this.registerEventWasSuccessful=false;}},stopAllObservers:function()
{for(i=0;i<this.observeredElements.length;++i){var observeredElement=this.observeredElements[i];$(observeredElement.element).stopObserving(observeredElement.eventName,observeredElement.handlerCallBack);}},loadModule:function(moduleToLoad)
{try{moduleToLoad=moduleToLoad.strip();moduleToLoadLowerCase=moduleToLoad.toLowerCase();this.modules[moduleToLoadLowerCase]=eval('new '+moduleToLoad);this.modules[moduleToLoadLowerCase].setParent(this);if(Object.isFunction(this.modules[moduleToLoadLowerCase].setupEvents)){this.modules[moduleToLoadLowerCase].setupEvents();}
return this.modules[moduleToLoadLowerCase];}catch(e){return false;}},loadModules:function(modulesToLoad)
{modulesArray=modulesToLoad.split(',');for(var i=0;i<modulesArray.length;i++)
{if(!this.loadModule(modulesArray[i]))
{return false;}}
return true;},reSetupLoadedModulesEvents:function()
{for(key in this.modules)
{if
(!Object.isUndefined(this.modules[key])&&Object.isFunction(this.modules[key].setupEvents))
{this.modules[key].setupEvents();}}},makeDomElementClickable:function(initObject)
{if(!Object.isUndefined(initObject.xPath)&&!initObject.xPath.empty())
{$$(initObject.xPath).each(function(listElement)
{$(listElement).setStyle({cursor:'pointer'}).observe('click',function(event){document.location=initObject.url;}).identify();});}
else if(Object.isElement(initObject.domElement))
{$(initObject.domElement).setStyle({cursor:'pointer'}).observe('click',function(event){document.location=initObject.url;}).identify();}
else
{throw"UserInterface.makeDomElementClickable invalid initObject";}}});var PageCallTime=Class.create({official:Object(),client:Object(),initialize:function(officialTime){this.client=new Date();this.official=new Date(officialTime*1000);}});var Sanego=Class.create({userIsLoggedIn:false,useRegistrationOverlay:false,showPromotionRegistrationOverlay:false,pageCallTime:null,debugMode:false,browserHasFireBug:false,initialize:function()
{this.ui=new UserInterface();this.ui.setParent(this);this.setBrowserHasFireBug();},setBrowserHasFireBug:function(){this.browserHasFireBug=((window.console&&window.console.firebug)?true:false);},setUserIsLoggedIn:function()
{sanego.userIsLoggedIn=true;},setDebugMode:function(bool){if(bool==true){this.debugMode=true;}},setPageCallTime:function(time){this.pageCallTime=new PageCallTime(time);},log:function(string){if(this.debugMode&&this.browserHasFireBug){console.log(string);}
else if(this.debugMode){alert(string);}},error:function(string){if(this.debugMode&&this.browserHasFireBug){console.error(string);}
else if(this.debugMode){alert(string);}},trackPageImpression:function(pagename,areas){try{et_eC_Wrapper({et_pagename:pagename,et_areas:areas,et_et:et_et});}
catch(e){}}});SingleParent.UserInterfaceUniqueElement=Class.create(SingleParent,{initialize:function()
{this.userEventDefinitions=[];},unregisterEvents:function()
{for(i=0;i<this.userEventDefinitions.length;++i)
{if(!Object.isElement(this.userEventDefinitions[i].domElement))
{$$(this.userEventDefinitions[i].xPath).each
(function(element)
{element.stopObserving
(this.userEventDefinitions[i].name,this.userEventDefinitions[i].handlerCallBack);}.bind(this));}
else if(!Object.isUndefined(this.userEventDefinitions[i].xPath))
{this.userEventDefinitions[i].domElement.stopObserving
(this.userEventDefinitions[i].name,this.userEventDefinitions[i].handlerCallBack);}
else
{this.userEventDefinitions[i].domElement.select
(this.userEventDefinitions[i].xPath).each
(function(element)
{element.stopObserving
(this.userEventDefinitions[i].name,this.userEventDefinitions[i].handlerCallBack);}.bind(this));}}}});var BecomeMemberBanner=Class.create(SingleParent.UserInterfaceUniqueElement,{initialize:function($super)
{$super();this.xPath='.BecomeMemberBanner';},setupEvents:function()
{if(!this.parent.parent.userIsLoggedIn)
{this.userEventDefinitions[0]=new UserEventDefinition({name:"click",xPath:this.xPath,handlerCallBack:this.showRegisterForm.bind(this)});this.parent.registerEvent(this.userEventDefinitions[0]);$$(this.xPath).each(function(banner){$(banner).setStyle({'cursor':'pointer'});});}},showRegisterForm:function(event)
{this.parent.modules.registrationoverlay.show(event);}});var Overlay=Class.create(SingleParent.UserInterfaceUniqueElement,{initialize:function($super)
{$super();this.id=null;this.backgroundId=null;this.contentId=null;this.defaultWidth=null;this.hideOverlayHook=null;this.generate();this.enableEscapeKey();},generate:function()
{if(!$(this.id))
{var overlay=new Element('div').addClassName('overlay');this.id=overlay.identify();$$('body').first().insert(overlay);var contentArea=new Element('div');$(this.id).insert(new Element('div')).insert(contentArea);this.contentId=contentArea.identify();}
if(!$(this.backgroundId))
{var backg=new Element('div').addClassName('overlayBackg');$$('body').first().insert(backg);this.backgroundId=backg.identify();$(this.backgroundId).observe('click',this.hide.bind(this));}
this.hide();this.addCloseButton();this.defaultWidth=$(this.id).getWidth();this.defaultHeight=$(this.id).getHeight();},addCloseButton:function()
{$(this.id).select('div').first().update(new Element('a',{'href':'javascript:void(0)','title':'schließen [esc]'}).addClassName('closeOverlay').insert(new Element('img',{'src':'/img/overlay-close.gif','alt':'schließen'})).observe('click',this.hide.bind(this)));},insert:function(htmlString)
{$(this.contentId).insert(htmlString);this.center();return this;},show:function()
{$(this.id).show();$(this.backgroundId).show();return this;},hide:function()
{if(Object.isFunction(this.hideOverlayHook)){this.hideOverlayHook();this.hideOverlayHook=null;}
$(this.id).hide();$(this.backgroundId).hide();return this;},hideDelayed:function(milliseconds)
{setTimeout(this.hide.bind(this),milliseconds);},update:function(htmlString)
{$(this.contentId).update(htmlString);this.center();return this;},resize:function(width,height)
{if(typeof width!='undefined'&&width!=null)
{$(this.id).setStyle({'width':width+'px'});}
if(typeof height!='undefined'&&height!=null)
{$(this.id).setStyle({'height':height+'px'});}
this.center();return this;},center:function()
{var height=$(this.id).getHeight();var diff=document.viewport.getHeight()-height;var top=5;if(diff>10){top=diff/2;}
var width=$(this.id).getWidth();diff=document.viewport.getWidth()-width;var left=diff/2;$(this.id).setStyle({'top':top+'px','left':left+'px'});return this;},resetSize:function()
{if(this.defaultWidth!=null)
{this.resize(this.defaultWidth);}
return this;},showConfirmLayer:function(confirmHTML,confirmYesLabel,confirmNoLabel,functionObject){var confirmDiv=new Element('div');var yesButton=new Element('input',{type:'button',value:confirmYesLabel});var noButton=new Element('input',{type:'button',value:confirmNoLabel});yesButton.observe('click',functionObject);noButton.observe('click',function(){this.hide();}.bind(this));confirmDiv.insert(confirmHTML);confirmDiv.insert(new Element('br'));confirmDiv.insert(new Element('br'));confirmDiv.insert(yesButton);confirmDiv.insert('&nbsp;');confirmDiv.insert(noButton);this.update(confirmDiv).show();yesButton.focus();return this;},showAlert:function(message,okLabel){var confirmDiv=new Element('div');var okButton=new Element('input',{type:'button',value:okLabel});okButton.observe('click',this.showAlertClickHandler.bind(this));confirmDiv.insert(message);confirmDiv.insert(new Element('br'));confirmDiv.insert(new Element('br'));confirmDiv.insert(okButton);this.update(confirmDiv).show();okButton.focus();return this;},showAlertClickHandler:function(event){this.hide();},appear:function(){new Effect.Appear(this.backgroundId);new Effect.Appear(this.id);return this;},enableEscapeKey:function(){Event.observe(document,'keypress',function(event){if(event.keyCode==Event.KEY_ESC){this.hide();}}.bind(this));},selectContent:function(selector){return $(this.contentId).select(selector);}});var MessageDetailViewController=Class.create({initialize:function(){},registerDeleteEvents:function(domElement,confirmHTML,confirmYesLabel,confirmNoLabel){var userEventDefinition=new UserEventDefinition({name:"click",xPath:"a.delete",domElement:domElement,handlerCallBack:this.confirmDelete.bind(this,confirmHTML,confirmYesLabel,confirmNoLabel)});sanego.ui.registerEvent(userEventDefinition);},confirmDelete:function(confirmHTML,confirmYesLabel,confirmNoLabel,event){event.stop();sanego.ui.modules.overlay.showConfirmLayer(confirmHTML,confirmYesLabel,confirmNoLabel,this.doDelete.bind(this,event.findElement('a').readAttribute('href')));},doDelete:function(url,event){window.location=url;}});var MessageListController=Class.create({messageListElement:Object(),highlightSelected:true,displayMessageObject:Object(),initialize:function(){},registerEvents:function(domElement,displayMessageObject){this.messageListElement=domElement;this.displayMessageObject=displayMessageObject;this.enableCheckings();domElement.select('tr.message').each(function(message){$(message).observe('mouseover',function(event){var islink=Event.findElement(event,'a');if(islink&&!islink.up('td').hasClassName('subject')){return false;}
Event.findElement(event,'tr').addClassName('hover');}).observe('mouseout',function(event){Event.findElement(event,'tr').removeClassName('hover');}).observe('click',function(event){if(Event.findElement(event,'td.check')){var cb=Event.findElement(event,'td').select('input').first();if(cb!=Event.element(event)){cb.click();}
return false;}
document.location=Event.findElement(event,'tr').select('td.subject a').first().readAttribute('href');});});this.monitorSelectedMessages();this.messageListElement.select('div.batchactions input').each(function(button){$(button).observe('click',function(event){this.confirmBatchAction(event);Event.stop(event);}.bind(this));}.bind(this));},countChecked:function(){return this.messageListElement.select('input[type="checkbox"]:checked').size();},confirmBatchAction:function(messageListActionButtonEvent){var count=this.countChecked();var labels=messageConfirmationLabels;if(count==0){sanego.ui.modules.overlay.showAlert(this.displayMessageObject['none_selected'],this.displayMessageObject['ok']);return false;}
var el=messageListActionButtonEvent.findElement('input');var identifier=el.readAttribute('class');if(count==1){identifier+='_single';}
else{identifier+='_multiple';}
sanego.ui.modules.overlay.showConfirmLayer(this.displayMessageObject[identifier],this.displayMessageObject['yes'],this.displayMessageObject['no'],this.confirmYesHandler.bind(this,messageListActionButtonEvent));},confirmYesHandler:function(messageListActionButtonEvent,confirmLayerYesButtonEvent){var messageListActionButton=messageListActionButtonEvent.findElement('input');messageListActionButton.stopObserving('click');$(messageListActionButton).click();},enableCheckings:function(){this.messageListElement.select('div.checkings').first().show();this.messageListElement.select('div.checkings ul li').each(function(checkType){$(checkType).select('a').first().observe('click',function(event){this.doCheck(Event.element(event).classNames().toArray()[0]);Event.stop(event);}.bind(this));}.bind(this));},monitorSelectedMessages:function(){if(this.highlightSelected){this.messageListElement.select('table tr.message input[type="checkbox"]').each(function(checkbox){$(checkbox).observe('click',function(){this.runSelectedMessagesTest();}.bind(this));}.bind(this));};},runSelectedMessagesTest:function(){this.messageListElement.select('table tr.message input[type="checkbox"]').each(function(checkbox){if($(checkbox).getValue()){$(checkbox).up('tr').addClassName('selected');}
else{$(checkbox).up('tr').removeClassName('selected');}});},doCheck:function(checkType){if(checkType=='all'||checkType=='none'){var setting=false;if(checkType=='all'){setting=true;}
this.messageListElement.select('table tr.message input[type="checkbox"]').each(function(checkbox){$(checkbox).checked=setting;});}
else if(checkType=='read'||checkType=='unread'){this.doCheck('none');if(checkType=='read'){this.messageListElement.select('table tr.message:not([class~=new]) input[type="checkbox"]').each(function(checkbox){$(checkbox).checked=true;});}
else{this.messageListElement.select('table tr.message.new input[type="checkbox"]').each(function(checkbox){$(checkbox).checked=true;});}}
else if(checkType=='toggle'){this.messageListElement.select('table tr.message input[type="checkbox"]').each(function(checkbox){$(checkbox).checked=!Boolean($(checkbox).getValue());});}
if(this.highlightSelected){this.runSelectedMessagesTest();}}});var RegistrationOverlay=Class.create(SingleParent.UserInterfaceUniqueElement,{initialize:function($super){$super();this.entryPagePrefix='registrieren';this.eTrackerArea='registrieren';this.staticFallbackUrl='/registrieren';this.ajaxUrl='/ajax/registrationOverlay';this.promotedAjaxUrl='/ajax/promotedRegistrationOverlay';this.overlayDontShowAgain=false;},setupEvents:function(){if(this.userEventDefinitions.length>0){this.unregisterEvents();}
if(!this.parent.parent.userIsLoggedIn){if(this.parent.parent.useRegistrationOverlay){this.userEventDefinitions[0]=new UserEventDefinition({name:"click",xPath:"a.reqLogin",handlerCallBack:this.show.bind(this)});this.parent.registerEvent(this.userEventDefinitions[0]);}
this.showPromotionRegistrationOverlay();}},showPromotionRegistrationOverlay:function(){if(sanego.showPromotionRegistrationOverlay){this.showAjaxForm(null,this.promotedAjaxUrl);this.setPromotionOverlayDontShowAgain();}},show:function(event){if(this.parent.parent.useRegistrationOverlay){this.showAjaxForm(event);}
else{this.showStaticForm();}},showStaticForm:function(){window.location=this.staticFallbackUrl;},showAjaxForm:function(event,ajaxUrl){if(event!=null){Event.stop(event);}
if(Object.isUndefined(ajaxUrl)){ajaxUrl=this.ajaxUrl;}
new Ajax.Request(ajaxUrl,{method:'get',contentType:'text/xml',evalJS:true,onSuccess:function(transport){this.parent.modules.overlay.resize(700).update(transport.responseText).show();new UserRegisterFormValidator();this.enableFocusLoginBox();var entryPageName=this.entryPagePrefix;if($F('entryPage')){entryPageName+='/'+$F('entryPage');}
this.parent.parent.trackPageImpression(entryPageName,this.eTrackerArea);return false;}.bind(this),onFailure:function(){this.showStaticForm();}.bind(this)});},setPromotionOverlayDontShowAgain:function(){this.overlayDontShowAgain=true;new Ajax.Request('/ajax/setPromotionOverlayDontShowAgain',{method:'get'});},enableFocusLoginBox:function(){$(this.parent.modules.overlay.contentId).select('a.doLogin').first().observe('click',function(event){Event.stop(event);this.parent.modules.overlay.hide();this.parent.modules.loginbox.show();}.bind(this));}});var Spam=Class.create(SingleParent.UserInterfaceUniqueElement,{initialize:function($super)
{$super();this.spamType=String();this.spamId=String();this.spamDOMElement=Object();this.userEventDefinitions=Array();},setupEvents:function()
{if(this.userEventDefinitions.length>0)
{this.unregisterEvents();}
this.userEventDefinitions[0]=new UserEventDefinition({name:"click",xPath:"a.spamable",handlerCallBack:this.report.bind(this)});this.parent.registerEvent(this.userEventDefinitions[0]);},hideOverlay:function(event)
{Event.stop(event);this.parent.modules.overlay.hide();},doSpamConfirmation:function()
{if(this.spamDOMElement)
{this.spamDOMElement.select('form').last().observe('submit',function(event)
{Event.stop(event);});this.spamDOMElement.select('input').last().observe('click',this.hideOverlay.bind(this));this.spamDOMElement.select('input').first().observe('click',this.doAjax.bind(this));}},doAjax:function(event)
{this.spamDOMElement.select('form').first().hide();var url=new Template('/spam/#{type}/#{id}/');url=url.evaluate({type:encodeURIComponent(this.spamType),id:encodeURIComponent(this.spamId)});new Ajax.Request(url,{method:'get',parameters:{'method':'ajax'},onSuccess:function(transport)
{this.spamDOMElement.select('p').last().show();window.setTimeout(function()
{this.parent.modules.overlay.hide();}.bind(this),1500);if(transport.status==200)
{return true;}
else
{return false;}}.bind(this)});},fetchSpamConfirm:function()
{new Ajax.Request('/ajax/SpamConfirm/',{method:'get',contentType:'text/xml',evalJS:false,onSuccess:function(transport)
{this.parent.modules.overlay.resetSize().update(transport.responseText).show();this.spamDOMElement=$('spamConfirm');this.doSpamConfirmation();}.bind(this)});},report:function(event)
{Event.stop(event);var ids=Event.findElement(event,'a').identify().split('_');this.spamType=ids[1];this.spamId=ids[2];this.fetchSpamConfirm();}});var InformationOverlay=Class.create(SingleParent.UserInterfaceUniqueElement,{initialize:function($super){$super();},setupEvents:function(){if(this.userEventDefinitions.length>0)
{this.unregisterEvents();}
this.userEventDefinitions[0]=new UserEventDefinition({name:"click",xPath:"a.informationOverlay",handlerCallBack:this.fetch.bind(this)});this.parent.registerEvent(this.userEventDefinitions[0]);},fetch:function(event)
{var href=Event.findElement(event,'a').readAttribute('href');var matches=href.split('#');var type=matches[1];if(type){Event.stop(event);new Ajax.Request('/ajax/informationOverlay',{method:'get',parameters:{'type':type},onSuccess:function(transport)
{this.parent.modules.overlay.update(transport.responseText.evalJSON().informationOverlay).show();}.bind(this)});}}});var Autosuggest=Class.create(SingleParent.UserInterfaceUniqueElement,{initialize:function($super){$super();this.elements=[];},setupEvents:function(){},add:function(){var whatToSuggest=arguments[0];var j=0;for(var i=1;i<arguments.length;++i){if(this.addToOneElement(whatToSuggest,arguments[i])){j++;}}
return j;},addToOneElement:function(whatToSuggest,element){element=$(element);if(element&&!this.isElementExtended(element)){var elementId=element.identify();var inputArea=new Element('div',{'id':elementId+'_suggestions'}).addClassName('suggestions');element.insert({'after':inputArea});new Ajax.Autocompleter(elementId,$(inputArea).identify(),'/ajax/autosuggest',{paramName:'name',parameters:'whatToSuggest='+whatToSuggest});this.elements.push(element);return true;}
return false;},isElementExtended:function(element){return(Object.isElement(element)&&this.elements.include(element));}});var GrowingTextArea=Class.create(SingleParent.UserInterfaceUniqueElement,{initialize:function($super)
{$super();this.elements=Array();this.currentObservation=Object();this.minLines=new Hash();this.defaultLines=5;this.defaultOverhead=2;this.observationInterval=.25;this.xPath='textarea.maygrow';this.userEventDefinitions=Array();},setupEvents:function()
{if(this.userEventDefinitions.length>0)
{this.unregisterEvents();}
this.userEventDefinitions[0]=new UserEventDefinition({name:"focus",xPath:this.xPath,handlerCallBack:this.focused.bind(this)});this.parent.registerEvent(this.userEventDefinitions[0]);this.userEventDefinitions[1]=new UserEventDefinition({name:"blur",xPath:this.xPath,handlerCallBack:this.blurred.bind(this)});this.parent.registerEvent(this.userEventDefinitions[1]);this.initialRun();},setSizeByContent:function(element,execution){this.currentObservation=execution;var minLines=this.minLines.get($(element).identify());var cols=parseInt($(element).readAttribute('cols'));var value=$F(element);var lines=1+this.defaultOverhead;$A(value.split("\n")).each(function(line){lines+=1+Math.floor(line.length/cols);});if(lines<minLines){lines=minLines;}
$(element).writeAttribute('rows',lines);},focused:function(event){var element=Event.findElement(event,'textarea');new PeriodicalExecuter(this.setSizeByContent.bind(this,element),this.observationInterval);},blurred:function(event){if(this.currentObservation){this.currentObservation.stop();}},initialRun:function(){$$(this.xPath).each(function(element){var lines=parseInt($(element).readAttribute('rows'));if(isNaN(lines)){lines=this.defaultLines;$(element).writeAttribute('rows',lines);}
this.minLines.set($(element).identify(),lines);this.setSizeByContent(element,null);}.bind(this));}});var FakeLink=Class.create(SingleParent.UserInterfaceUniqueElement,{initialize:function($super)
{$super();this.xPath='.fakeLink';},setupEvents:function()
{this.initialRun();},initialRun:function(){$$(this.xPath).each(function(element){var previous=element.previous();if(!previous.readAttribute('href')){previous.wrap('a',{href:element.innerHTML.strip()});element.remove();}}.bind(this));}});var LoginBox=Class.create(SingleParent.UserInterfaceUniqueElement,{initialize:function($super)
{$super();this.link=$('login_link');this.domElement=$('login_cont').select('form').first();this.showHideElements=[$('sanegoOnlineUsers')];},setupEvents:function(){if(this.userEventDefinitions.length>0){this.unregisterEvents();}
this.userEventDefinitions[0]=new UserEventDefinition({name:'click',domElement:this.link,handlerCallBack:this.toggle.bind(this)});this.parent.registerEvent(this.userEventDefinitions[0]);},toggle:function(event){Event.stop(event);if(this.domElement.visible()){this.hide();Event.findElement(event).blur();}
else{this.show();}},show:function(){this.parent.modules.overlay.hide();window.scrollTo(0,0);this.showHideElements.invoke('hide');this.domElement.show();this.link.addClassName('active');this.domElement.select('input').first().focus();new Effect.Highlight('username_login',{startcolor:'#FF7E00',endcolor:'#FFFFFF'});},hide:function(){this.domElement.hide();this.showHideElements.invoke('show');this.link.removeClassName('active');}});var AjaxLoaderOverlay=Class.create();Object.extend
(AjaxLoaderOverlay,{insertedOverlays:Object(),show:function(domElementToUpdateAssigned,ajaxLoaderOverlayCSSClassNameAssigned)
{var domElementToUpdate;var ajaxLoaderOverlayCSSClassName;if(Object.isString(domElementToUpdateAssigned))
{domElementToUpdate=$(domElementToUpdateAssigned);}
else if(Object.isElement(domElementToUpdateAssigned))
{domElementToUpdate=domElementToUpdateAssigned;}
else
{throw"AjaxLoaderOverlay.show(): no valid domElementToUpdate assigned";}
ajaxLoaderOverlayCSSClassName='ajaxLoaderOverlay';if(!Object.isUndefined(ajaxLoaderOverlayCSSClassNameAssigned))
{ajaxLoaderOverlayCSSClassName=ajaxLoaderOverlayCSSClassNameAssigned;}
var overlay=new Element('div').addClassName(ajaxLoaderOverlayCSSClassName);var dimensions=domElementToUpdate.getDimensions();$(overlay).setStyle({'height':dimensions.height+'px','width':dimensions.width+'px','marginTop':(-(parseInt(domElementToUpdateAssigned.getStyle('paddingTop'))))+'px','marginLeft':(-(parseInt(domElementToUpdateAssigned.getStyle('paddingLeft'))))+'px'});$(domElementToUpdate).insert({'top':overlay});this.insertedOverlays[domElementToUpdate.identify()]=overlay;},hide:function(domElementUpdatedAssigned)
{if(Object.isString(domElementUpdatedAssigned))
{domElementUpdated=$(domElementUpdatedAssigned);}
else if(Object.isElement(domElementUpdatedAssigned))
{domElementUpdated=domElementUpdatedAssigned;}
else
{throw"AjaxLoaderOverlay.hide(): no valid domElementUpdated assigned";}
this.insertedOverlays[domElementUpdated.identify()].remove();}});var Comment=Class.create({FORM_DUMMY_CLASS_NAME:'dummy',itemIdOfCommentsToShow:String(),containerSiteURL:String,userEventDefinitions:Array(),submitURL:String,showPageURL:String,initialize:function()
{},focusNew:function(event){var form=Event.findElement(event,'form');if(form.hasClassName(this.FORM_DUMMY_CLASS_NAME)){form.removeClassName(this.FORM_DUMMY_CLASS_NAME);form.select('textarea[name=comment]').first().clear();}},resetForm:function(form){form.addClassName(this.FORM_DUMMY_CLASS_NAME).reset();},saveNewComment:function(event){event.stop();var form=Event.findElement(event,'form.nc');var text=form.select('textarea[name=comment]').first().getValue();if(!text.blank()){var articleId=form.select('input[name=articleId]').first().getValue();this.submit(form,text,articleId);}
else{this.resetForm(form);}},saveNewArticle:function(event){event.stop();var form=Event.findElement(event,'form.na');var text=form.select('textarea[name=comment]').first().getValue();if(!text.blank()){this.submit(form,text);}
else{this.resetForm(form);}},submit:function(form,text,articleId){AjaxLoaderOverlay.show(form);var params={'itemId':this.itemIdOfCommentsToShow,'text':text};if(articleId!=undefined){params.articleId=articleId;}
new Ajax.Request(this.submitURL,{method:'post',parameters:params,onSuccess:function(transport){if(articleId==undefined){this.loadPage(1,false);}
else{var comments=$('Article_'+articleId).select('.comments').first();var ul=comments.select('ul').first();if(!ul){ul=new Element('ul');comments.insert({'top':ul});}
ul.insert(transport.responseText);var li=ul.select('li.c').last();this.registerEntryEvents(li);sanego.ui.reSetupLoadedModulesEvents();}
this.resetForm(form);AjaxLoaderOverlay.hide(form);}.bind(this)});},confirmDelete:function(event){event.stop();var id=this.getIdFromUnderscoreDelimitedString(Event.findElement(event,'.actions').up('li').identify());sanego.ui.modules.overlay.showConfirmLayer('Möchten Sie den Eintrag wirklich löschen?','Ja, bitte!','Nein.',this.doDelete.bind(this,id));},displayHiddenComments:function(event){event.stop();var li=Event.findElement(event,'li');var siblings=li.siblings();li.remove();siblings.each(function(element){if(!element.visible()){new Effect.Appear(element);}});},doDelete:function(id){sanego.ui.modules.overlay.hide();new Ajax.Request("/ajax/commentDelete",{method:'post',parameters:{'id':id},onSuccess:function(transport){var article=$('Article_'+id);new Effect.SwitchOff(article);Element.remove.delay(2,article);if($$('.comments ul.articles li.a').size()-1<1){this.loadPage(1,false);}}.bind(this,id)});},registerPagerLinks:function(){this.userEventDefinitions[0]=new UserEventDefinition({name:"click",xPath:"a.topCommentPagerLink",delay:0.5,handlerCallBack:this.processPaging.bind(this)});sanego.ui.registerEvent(this.userEventDefinitions[0]);this.userEventDefinitions[1]=new UserEventDefinition({name:"click",xPath:"a.bottomCommentPagerLink",delay:0.5,handlerCallBack:this.processPaging.bind(this)});sanego.ui.registerEvent(this.userEventDefinitions[1]);},registerNewCommentEvents:function(){this.userEventDefinitions[2]=new UserEventDefinition({name:"focus",xPath:".comments ul.articles li form.nc textarea",handlerCallBack:this.focusNew.bind(this)});sanego.ui.registerEvent(this.userEventDefinitions[2]);this.userEventDefinitions[3]=new UserEventDefinition({name:"click",xPath:".comments ul.articles li form.nc .s input[type=submit]",handlerCallBack:this.saveNewComment.bind(this)});sanego.ui.registerEvent(this.userEventDefinitions[3]);},registerEntryEvents:function(entry){var event=new UserEventDefinition({name:"click",xPath:"ul.actions li.delete a",handlerCallBack:this.confirmDelete.bind(this)});if(entry!=undefined){event.domElement=entry;}
else{event.domElement=$$('.comments').first();this.userEventDefinitions[4]=event;}
sanego.ui.registerEvent(event);this.userEventDefinitions[9]=new UserEventDefinition({name:"click",xPath:".comments .articles .comments li a.displayHiddenComments",handlerCallBack:this.displayHiddenComments.bind(this)});sanego.ui.registerEvent(this.userEventDefinitions[9]);},registerNewArticleEvents:function(){this.userEventDefinitions[5]=new UserEventDefinition({name:"focus",xPath:".comments form.na textarea",handlerCallBack:this.focusNew.bind(this)});sanego.ui.registerEvent(this.userEventDefinitions[5]);this.userEventDefinitions[6]=new UserEventDefinition({name:"click",xPath:".comments form.na .s input[type=submit]",handlerCallBack:this.saveNewArticle.bind(this)});sanego.ui.registerEvent(this.userEventDefinitions[6]);},registerRefreshLink:function(){if($("commentsRefresh")){this.userEventDefinitions[10]=new UserEventDefinition({name:"click",domElement:$("commentsRefresh"),xPath:"a",handlerCallBack:this.refresh.bind(this)});sanego.ui.registerEvent(this.userEventDefinitions[10]);}},registerStaticPageCallEvents:function(){this.registerNewArticleEvents();this.registerNewCommentEvents();this.registerPagerLinks();this.registerRefreshLink();this.registerEntryEvents();},processPaging:function(event){Event.stop(event);AjaxLoaderOverlay.show($('commentContainer'));var domElement=Event.findElement(event,'a');var matches=domElement.readAttribute('href').match(/commentPage=(\d+).*/);var page=matches[1];var jumpTo='top';if(domElement.hasClassName('bottomCommentPagerLink')){jumpTo='bottom';}
this.loadPage(page,jumpTo);},refresh:function(event){Event.stop(event);if($('commentContainer')){AjaxLoaderOverlay.show($('commentContainer'));}
this.loadPage(1,false);},loadPage:function(page,jumpTo){new Ajax.Request(this.showPageURL,{method:'get',parameters:{'commentPage':page,'itemId':this.itemIdOfCommentsToShow,'containerSiteURL':this.containerSiteURL},onSuccess:function(transport){$('commentContainer').update(transport.responseText.evalJSON().layerUpdateHTML);if(jumpTo!==false){window.scrollTo(0,this.getListTopOffset(jumpTo));}
this.registerPagerLinks();this.registerEntryEvents();this.registerNewCommentEvents();sanego.ui.reSetupLoadedModulesEvents();}.bind(this),onFailure:function(){document.location.reload();}});},getListTopOffset:function(edge){var offs=$$('.comments').first().cumulativeOffset()[1];if(edge=='bottom'){offs+=$$('.comments').first().getHeight()-document.viewport.getHeight();}
return offs;},getIdFromUnderscoreDelimitedString:function(idString){var underScorePos=idString.lastIndexOf('_');if(!isNaN(underScorePos)){var id=idString.substring(underScorePos+1,idString.length);if(!isNaN(id)){return id;}}
return false;}});var GuestBook=Class.create(Comment,{registerSettingsEvents:function(){this.enforcePermissionIntegrity();this.userEventDefinitions[7]=new UserEventDefinition({name:"click",xPath:".comments .permissions a",handlerCallBack:this.toggleSettings.bind(this)});sanego.ui.registerEvent(this.userEventDefinitions[7]);this.userEventDefinitions[8]=new UserEventDefinition({name:"change",xPath:".comments .permissions select",handlerCallBack:this.setPermissions.bind(this)});sanego.ui.registerEvent(this.userEventDefinitions[8]);},enforcePermissionIntegrity:function(form){if(form===undefined){form=$$('.comments .permissions form').first();}
if(form){var writingAllUserOption=$(form['GuestbookWritingPermission']).select('option[value=ALL_USERS])').first();if($(form['GuestbookReadingPermission']).getValue()=='FRIENDS_AND_ME'){if(writingAllUserOption.selected){var i=0;$(form['GuestbookWritingPermission']).select('option').each(function(o){if(o.readAttribute('value')=='FRIENDS_AND_ME'){$(form['GuestbookWritingPermission']).selectedIndex=i;return;}
i++;});}
writingAllUserOption.writeAttribute('disabled',true);}
else{writingAllUserOption.writeAttribute('disabled',false);}}
return form;},setPermissions:function(event){var form=$$('.comments .permissions form').first();this.enforcePermissionIntegrity(form);AjaxLoaderOverlay.show(form);new Ajax.Request("/ajax/setSettingOneInteger",{method:'post',parameters:form.serialize(),onSuccess:function(transport){AjaxLoaderOverlay.hide(form);},onFailure:function(){document.location.reload();}});},toggleSettings:function(event){Event.stop(event);Event.findElement(event,'a').toggleClassName('closed').next('form').toggle();}});var SideeffectComment=Class.create(Comment,{});var UserEmotion=Class.create({});UserEmotion.set=function(radioButtonIdArray,emotionTextFieldId,saveLinkContainerId,formContainerId)
{var why=$(emotionTextFieldId).value;var emotion;for(i=0;i<radioButtonIdArray.length;++i)
{if($(radioButtonIdArray[i]).checked)
{emotion=$(radioButtonIdArray[i]).value;break;}}
if(emotion==null)
{sanego.ui.modules.overlay.showAlert("Es muss mindestens die Stimmung angegeben werden. Besser noch, auch eine Beschreibung. Danke.","OK");return;}
else
{$(saveLinkContainerId).update('<img src="/img/loading.gif" alt="" />');new Ajax.Request("/ajax/setUserEmotion",{method:'post',parameters:{'emotion':emotion,'why':why},onSuccess:function(formContainerId,transport)
{try
{var jsonObject=transport.responseText.evalJSON();$(formContainerId).update(jsonObject.userEmotionFormHTML);}
catch(error)
{}}.bind(this,formContainerId),onFailure:function(event)
{},onException:function(event)
{}});}};UserEmotion.getUpdateForm=function(formContainerId)
{new Ajax.Request("/ajax/getEmotionUpdateForm",{method:'get',onSuccess:function(formContainerId,transport)
{var jsonObject=transport.responseText.evalJSON();$(formContainerId).update(jsonObject.userEmotionFormHTML);sanego.ui.reSetupLoadedModulesEvents();}.bind(this,formContainerId),onFailure:function(event)
{},onException:function(event)
{}});};var WikiEditor=Class.create({wikiPreviewHtml:function(text,target)
{new Ajax.Updater
(target,'/ajax/wikiHtmlPreview/',{method:'post',parameters:{wiki_syntax:text}});},updatePreview:function()
{if
($('article')&&$('articleCache')&&!$F('article').blank()&&!this.articleMatchesPreviewVersion())
{this.wikiPreviewHtml($F('article'),$('preview'));$('articleCache').update($F('article'));}},init:function(localizedLabels)
{$('article').insert
({'before':new Element
('div',{'id':'articleCache'}).update($F('article'))});$('submitButton').insert
({'after':new Element('input',{'type':'hidden','name':'wikiPreview','value':'1'})});$('wikiEditForm').writeAttribute('action','save');$('submitButton').writeAttribute('value',localizedLabels[0]);$('submitHint').remove();$('preview').insert
({'before':new Element
('a',{href:'javascript:void(0)',id:'wikiPreviewUpdate'}).update('aktualisieren')});$('wikiEditForm').observe('submit',function(event){Event.stop(event);sanego.ui.modules.overlay.showConfirmLayer
(localizedLabels[1],'OK','Abbrechen',this.submitForm);}.bind(this));$('article').observe('change',this.updatePreview.bind(this));$('wikiPreviewUpdate').observe('click',this.updatePreview.bind(this));new PeriodicalExecuter(this.updatePreview.bind(this),10);},submitForm:function()
{$('wikiEditForm').submit();},articleMatchesPreviewVersion:function(){return($F('article').gsub(/\s+/,' ')==$('articleCache').innerHTML.gsub(/\s+/,' '));}});var FormValidation=Class.create({initialize:function(){this.isValid=false;this.formValidator=null;this.inputValidators=null;this.cachedEvent=null;this.setInitializeObject();this.validateMembers();if(this.formValidator!=null){this.registerFormValidatorEvent();}
if(this.inputValidators!=null){this.registerInputValidatorsEvents();}},setInitializeObject:function(){throw("child class of FormValidation didn't define the method on its own");},validateMembers:function(){if(this.formValidator==null&&this.inputValidators==null){throw"missing required Element in FormValidator";}},registerFormValidatorEvent:function(){try{var userEventDefinition=new UserEventDefinition({name:'submit',domElement:this.formValidator.formElement,handlerCallBack:this.ElementValidationAjax.bind(this,this.formValidator)});sanego.ui.registerEvent(userEventDefinition);}
catch(error){throw"cant register formValidator event: "+error;}},registerInputValidatorsEvents:function(){$A(this.inputValidators).each(function(inputValidator){try{this.registerInputValidatorEvents(inputValidator);}
catch(error){throw"cant register inputValidatorsEvents: "+error;}}.bind(this));},registerInputValidatorEvents:function(inputValidator){$A(inputValidator.eventNames).each(function(eventName){$A(inputValidator.observeElements).each(function(observeElement){var userEventDefinition=new UserEventDefinition({name:eventName,domElement:observeElement,delay:inputValidator.delay,handlerCallBack:this.ElementValidationAjax.bind(this,inputValidator)});sanego.ui.registerEvent(userEventDefinition);}.bind(this));}.bind(this));},doAjaxRequest:function(elementValidator,ajaxRequestParameters,observedEvent){new Ajax.Request(FormValidation.ajaxURL+elementValidator.ajaxAction,{method:'post',parameters:ajaxRequestParameters,evalJS:true,onSuccess:this.doAjaxRequestSuccess.bind(this,elementValidator,observedEvent),onFailure:this.doAjaxRequestFailure.bind(this,elementValidator,observedEvent),onException:this.doAjaxRequestSuccess.bind(this,elementValidator,observedEvent)});},ElementValidationAjax:function(elementValidator,observedEvent){observedEvent.stop();var ajaxRequestParameters=new Object;if(observedEvent.type=='submit'){ajaxRequestParameters=elementValidator.formElement.serialize(true);}
else{try{$A(elementValidator.valueElements).each(function(domElement){if(!Object.isUndefined(domElement.getValue())){ajaxRequestParameters[domElement.name]=domElement.getValue();}});}
catch(error){throw"Error in FormValidator.ElementValidationAjax: "+error;}}
this.doAjaxRequest(elementValidator,ajaxRequestParameters,observedEvent);},doAjaxRequestSuccess:function(elementValidator,observedEvent,response){try{var jsonObject=response.responseText.evalJSON(true);elementValidator.isValid=jsonObject.valid;$(elementValidator.messageElement).update(jsonObject.message);elementValidator.onSuccessCallBack(response,observedEvent);}
catch(error){sanego.error("Error in FormValidator.doAjaxRequestSuccess: "+error);}},doAjaxRequestFailure:function(elementValidator,observedEvent){elementValidator.onFailureCallBack(elementValidator,observedEvent);}});FormValidation.ajaxURL="/ajax/";var InputValidator=Class.create({eventNames:Object,delay:Number,valueElements:Object,observeElements:Object,messageElement:Element,ajaxAction:String,ajaxParameters:Object,onSuccessCallBack:Function,onFailureCallBack:Function,isValid:false,initialize:function(initializationObject){if(Object.isArray(initializationObject.eventNames)){this.eventNames=initializationObject.eventNames;}
else{this.eventNames=new Array();this.eventNames[0]=initializationObject.eventNames;}
if(Object.isUndefined(initializationObject.delay)){this.delay=0;}
else{this.delay=initializationObject.delay;}
if(Object.isElement(initializationObject.valueElements)){this.valueElements=new Array();this.valueElements[0]=initializationObject.valueElements;}
else{this.valueElements=initializationObject.valueElements;}
if(Object.isElement(initializationObject.observeElements)){this.observeElements=new Array();this.observeElements[0]=initializationObject.observeElements;}
else{this.observeElements=initializationObject.observeElements;}
this.messageElement=initializationObject.messageElement;this.ajaxAction=initializationObject.ajaxAction;this.ajaxParameters=initializationObject.ajaxParameters;if(Object.isUndefined(this.ajaxParameters)){this.ajaxParameters=new Object();}
this.onSuccessCallBack=initializationObject.onSuccessCallBack;this.onFailureCallBack=initializationObject.onFailureCallBack;this.validateMembers();},validateMembers:function(){if(Object.isUndefined(this.eventNames)||!Object.isArray(this.eventNames)){throw"missing required eventName in InputTextElementValidator";}else{$A(this.eventNames).each(function(item){if(!Object.isString(item)){throw"one Element in eventNames is not a String in InputTextElementValidator";}});}
if(!Object.isNumber(this.delay)){throw"delay is not a Number in InputTextElementValidator.";}
if(Object.isUndefined(this.valueElements)||!Object.isArray(this.valueElements)){throw"missing one required valueElement in InputTextElementValidator";}else{$A(this.valueElements).each(function(item){if(!Object.isElement(item)){throw item+" one Element in valueElements is not a Element in InputTextElementValidator";}});}
if(Object.isUndefined(this.observeElements)||!Object.isArray(this.observeElements)){throw this.observeElements+" missing one required observeElements in InputTextElementValidator";}else{$A(this.observeElements).each(function(item){if(!Object.isElement(item)){throw item+" one Element in observeElements is not a Element in InputTextElementValidator";}});}
if(!Object.isElement(this.messageElement)){throw"missing required messageElement in InputTextElementValidator";}
if(Object.isUndefined(this.ajaxAction)||this.ajaxAction.empty()){throw"missing required ajaxAction in InputTextElementValidator";}
if(!Object.isFunction(this.onSuccessCallBack)){throw"missing required onSuccessCallBack in InputTextElementValidator";}
if(!Object.isFunction(this.onFailureCallBack)){throw"missing required onSuccessCallBack in InputTextElementValidator";}}});var FormValidationSetupValidator=Class.create({isValid:false,formElement:Element,messageElement:Element,ajaxAction:String,ajaxParameters:Object,onSuccessCallBack:Function,onFailureCallBack:Function,initialize:function(initializationObject){this.formElement=initializationObject.formElement;this.messageElement=initializationObject.messageElement;this.ajaxAction=initializationObject.ajaxAction;this.ajaxParameters=initializationObject.ajaxParameters;if(Object.isUndefined(this.ajaxParameters)){this.ajaxParameters=new Object();}
this.onSuccessCallBack=initializationObject.onSuccessCallBack;this.onFailureCallBack=initializationObject.onFailureCallBack;this.validateMembers();},validateMembers:function(){if(Object.isUndefined(this.formElement)||!Object.isElement(this.formElement)){throw"missing one required formElement in FormValidationSetupValidator";}else if(this.formElement.nodeName!='FORM'){throw $(this.formElement.identify())+" is not a form Element FormValidationSetupValidator";}
if(!Object.isElement(this.messageElement)){throw"missing required messageElement in FormValidationSetupValidator";}
if(Object.isUndefined(this.ajaxAction)||this.ajaxAction.empty()){throw"missing required ajaxAction in FormValidationSetupValidator";}
if(!Object.isFunction(this.onSuccessCallBack)){throw"missing required onSuccessCallBack in FormValidationSetupValidator";}
if(!Object.isFunction(this.onFailureCallBack)){throw"missing required onSuccessCallBack in FormValidationSetupValidator";}}});var UserRegisterFormValidator=Class.create(FormValidation,{setInitializeObject:function(){this.inputValidators=new Array();var usernameValidatorElement=new InputValidator({eventNames:"keyup",delay:0.5,valueElements:$("username"),observeElements:$("username"),messageElement:$("userError"),ajaxAction:"ValidateUsername",onSuccessCallBack:this.onValidateFormElementSuccess,onFailureCallBack:this.onFailure});this.inputValidators.push(usernameValidatorElement);var usernameBlurValidatorElement=new InputValidator({eventNames:"blur",valueElements:$("username"),observeElements:$("username"),messageElement:$("userError"),ajaxAction:"ValidateUsername",onSuccessCallBack:this.onValidateFormElementSuccess,onFailureCallBack:this.onFailure});this.inputValidators.push(usernameBlurValidatorElement);var emailValidatorElement=new InputValidator({eventNames:"keyup",delay:0.5,valueElements:$("email"),observeElements:$("email"),messageElement:$("emailError"),ajaxAction:"ValidateEmail",onSuccessCallBack:this.onValidateFormElementSuccess,onFailureCallBack:this.onFailure});this.inputValidators.push(emailValidatorElement);var emailBlurValidatorElement=new InputValidator({eventNames:"blur",valueElements:$("email"),observeElements:$("email"),messageElement:$("emailError"),ajaxAction:"ValidateEmail",onSuccessCallBack:this.onValidateFormElementSuccess,onFailureCallBack:this.onFailure});this.inputValidators.push(emailBlurValidatorElement);var passwordValidatorElement=new InputValidator({eventNames:"keyup",delay:0.5,valueElements:$("password"),observeElements:$("password"),messageElement:$("passwordError"),ajaxAction:"CheckUserPasswordStrength",onSuccessCallBack:this.onValidateFormElementSuccess,onFailureCallBack:this.onFailure});this.inputValidators.push(passwordValidatorElement);var passwordBlurValidatorElement=new InputValidator({eventNames:"blur",valueElements:$("password"),observeElements:$("password"),messageElement:$("passwordError"),ajaxAction:"CheckUserPasswordStrength",onSuccessCallBack:this.onValidateFormElementSuccess,onFailureCallBack:this.onFailure});this.inputValidators.push(passwordBlurValidatorElement);var passwordsAreEqualValidatorElement=new InputValidator({eventNames:"keyup",delay:0.5,valueElements:[$("password2"),$("password")],observeElements:[$("password2"),$("password")],messageElement:$("password2Error"),ajaxAction:"CheckPasswordsAreEqual",onSuccessCallBack:this.onValidateFormElementSuccess,onFailureCallBack:this.onFailure});this.inputValidators.push(passwordsAreEqualValidatorElement);var passwordsAreEqualBlurValidatorElement=new InputValidator({eventNames:"blur",valueElements:[$("password2"),$("password")],observeElements:[$("password2"),$("password")],messageElement:$("password2Error"),ajaxAction:"CheckPasswordsAreEqual",onSuccessCallBack:this.onValidateFormElementSuccess,onFailureCallBack:this.onFailure});this.inputValidators.push(passwordsAreEqualBlurValidatorElement);var agbValidatorElement=new InputValidator({eventNames:"change",valueElements:$("agb"),observeElements:$("agb"),messageElement:$("agbError"),ajaxAction:"ValidateAGBCheckbox",onSuccessCallBack:this.onValidateFormElementSuccess,onFailureCallBack:this.onFailure});this.inputValidators.push(agbValidatorElement);this.formValidator=new FormValidationSetupValidator({formElement:$("createuser"),messageElement:$("formError"),ajaxAction:"ValidateUserRegisterForm",onSuccessCallBack:this.onValidateFormSuccess,onFailureCallBack:this.onFailure});},onValidateFormSuccess:function(response,observedEvent){try{if(this.isValid){this.formElement.submit();}}
catch(error){sanego.error("Error in onValidateFormSuccess: "+error);}},onValidateFormElementSuccess:function(response){},onFailure:function(error){sanego.error(error);}});var ClickAreaSearchResult=Class.create({xPath:String,initialize:function(initObject){this.xPath=initObject.xPath;this.validateMembers();this.makeClickable();},validateMembers:function(){if(Object.isUndefined(this.xPath)||this.xPath.empty()){throw"missing required xPath in ClickArea";}},makeClickable:function(){$$(this.xPath).each(function(listElement){$(listElement).setStyle({cursor:'pointer'}).observe('mouseover',function(event){listElement.select('a').first().setStyle({textDecoration:'underline'});}).observe('mouseout',function(event){listElement.select('a').first().setStyle({textDecoration:'none'});}).observe('click',function(event){document.location=Event.findElement(event,'li').select('a').first().readAttribute('href');}).identify();});}});var ClickAreaSideEffctListElement=Class.create({xPath:String,initialize:function(initObject){this.xPath=initObject.xPath;this.validateMembers();this.makeClickable();},validateMembers:function(){if(Object.isUndefined(this.xPath)||this.xPath.empty()){throw"missing required xPath in ClickArea";}},makeClickable:function(){$$(this.xPath).each(function(listElement){$(listElement).insert(new Element('p',{}).setStyle({'textAlign':'right'}).insert(new Element('a',{'href':$(listElement).select('a').last().readAttribute('href')}).update('mehr…')));listElement.observe('click',function(){window.location=$(this).select('a').last().readAttribute('href');}).observe('mouseover',function(){$(this).select('h4').first().setStyle({textDecoration:'underline'});$(this).select('p').last().setStyle({textDecoration:'underline'});}).observe('mouseout',function(){$(this).select('h4').first().setStyle({textDecoration:'none'});$(this).select('p').last().setStyle({textDecoration:'none'});}).setStyle({cursor:'pointer'});});}});var UserSearch=Class.create({userEventDefinitions:Array(),searchTimeout:Number(),lastCommittedParams:Object(),initialize:function()
{lastCommittedParams={'usersearch_username':'','usersearch_illness':'','usersearch_drug':'','usersearch_zipOrCity':'','usersearch_category':'','page':''};},registerPagerLinks:function()
{this.userEventDefinitions[0]=new UserEventDefinition({name:"click",xPath:"a.usersInNeedPagerLink",handlerCallBack:this.showUsersInNeedPage.bind(this)});sanego.ui.registerEvent(this.userEventDefinitions[0]);this.userEventDefinitions[1]=new UserEventDefinition({name:"click",xPath:"a.userSearchPagerLink",handlerCallBack:this.searchNow.bind(this)});sanego.ui.registerEvent(this.userEventDefinitions[1]);},autosuggestForSearchform:function(){sanego.ui.modules.autosuggest.add('drug','usersearch_drug');sanego.ui.modules.autosuggest.add('illness','usersearch_illness');sanego.ui.modules.autosuggest.add('city','usersearch_zipOrCity');},registerSearchFormSurveillance:function(){var userEventChangeDefinition=new UserEventDefinition({name:"click",domElement:$('deleteSearchButton'),handlerCallBack:this.deleteSearchFilters.bind(this)});sanego.ui.registerEvent(userEventChangeDefinition);var userEventChangeDefinition=new UserEventDefinition({name:"change",domElement:$('usersearch_category'),handlerCallBack:this.searchNow.bind(this)});sanego.ui.registerEvent(userEventChangeDefinition);['usersearch_username','usersearch_illness','usersearch_drug','usersearch_zipOrCity'].each(function(field){var userEventChangeDefinition=new UserEventDefinition({name:"change",domElement:$(field),handlerCallBack:this.searchNow.bind(this),delay:0.6});sanego.ui.registerEvent(userEventChangeDefinition);var userEventKeyupDefinition=new UserEventDefinition({name:"keyup",domElement:$(field),handlerCallBack:this.searchNow.bind(this),delay:0.6});sanego.ui.registerEvent(userEventKeyupDefinition);}.bind(this));},search:function(event){if(event){Event.stop(event);}
if(this.searchTimeout){window.clearTimeout(this.searchTimeout);}
this.searchTimeout=this.searchNow.delay(0.6,event);},searchNow:function(event)
{var page=1;if(event!=undefined){Event.stop(event);if(event.type=='click'){var link=Event.findElement(event,'a');if(link){var matches=link.readAttribute('href').match(/page=(\d+).*/);if(matches.length==2){page=matches[1];}}}}
if
(lastCommittedParams['usersearch_username']!=$F('usersearch_username')||lastCommittedParams['usersearch_illness']!=$F('usersearch_illness')||lastCommittedParams['usersearch_drug']!=$F('usersearch_drug')||lastCommittedParams['usersearch_zipOrCity']!=$F('usersearch_zipOrCity')||lastCommittedParams['usersearch_category']!=$F('usersearch_category')||(event.type=='click'&&lastCommittedParams['page']!=page))
{AjaxLoaderOverlay.show($('userSearch'));lastCommittedParams={'usersearch_username':$F('usersearch_username'),'usersearch_illness':$F('usersearch_illness'),'usersearch_drug':$F('usersearch_drug'),'usersearch_zipOrCity':$F('usersearch_zipOrCity'),'usersearch_category':$F('usersearch_category'),'page':page};new Ajax.Request("/ajax/userSearch",{method:'post',parameters:{'username':$F('usersearch_username'),'category':$F('usersearch_category'),'illness':$F('usersearch_illness'),'drug':$F('usersearch_drug'),'zipOrCity':$F('usersearch_zipOrCity'),'page':page},onSuccess:function(transport){this.showDeleteSearchButton();$("userSearch").update(transport.responseText.evalJSON().userSearchResultHTML);this.registerPagerLinks();sanego.ui.reSetupLoadedModulesEvents();}.bind(this)});}
else
{}},showUsersInNeedPage:function(event)
{Event.stop(event);AjaxLoaderOverlay.show($('usersInNeed'));var domElement=Event.findElement(event,'a');var matches=domElement.readAttribute('href').match(/usersInNeedPage=(\d+).*/);var page=matches[1];new Ajax.Request("/ajax/showUsersInNeedPage",{method:'get',parameters:{'usersInNeedPage':page},onSuccess:function(transport){$('usersInNeed').update(transport.responseText.evalJSON().layerUpdateHTML);this.registerPagerLinks();sanego.ui.reSetupLoadedModulesEvents();}.bind(this),onFailure:function(event)
{},onException:function(event)
{}});},showDeleteSearchButton:function()
{$('deleteSearchButton').removeClassName('deleteSearchButtonDisabled');},hideDeleteSearchButton:function()
{$('deleteSearchButton').addClassName('deleteSearchButtonDisabled');},deleteSearchFilters:function(event)
{Event.stop(event);if
($F('usersearch_username')!=""||$F('usersearch_category')!=""||$F('usersearch_illness')!=""||$F('usersearch_drug')!=""||$F('usersearch_zipOrCity'))
{AjaxLoaderOverlay.show($('userSearchBox'));new Ajax.Request("/ajax/deleteSearchFilters",{method:'post',parameters:{'searchFiltersType':'UserSearch'},onSuccess:function(transport){$("userSearch").update(transport.responseText.evalJSON().userSearchResultHTML);AjaxLoaderOverlay.hide($('userSearchBox'));Form.Element.clear('usersearch_username');Form.Element.clear('usersearch_illness');Form.Element.clear('usersearch_drug');Form.Element.clear('usersearch_zipOrCity');$('usersearch_category').setValue("");sanego.ui.reSetupLoadedModulesEvents();}.bind(this),onFailure:function(event)
{},onException:function(event)
{}});this.hideDeleteSearchButton();}}});var DrugDetail=Class.create({initialize:function()
{}});var DoctorInstitutePicker=Class.create({city:String(),NEW_INSTITUTE_ID:0,createNewInstitute:false,enable:function(){$('editDoctorsInstituteOption').show();if(this.createNewInstitute){this.createInstituteMode();}
else{$('eitherEditOrChooseOtherInstitute').show();}
this.enableResetToOriginalInstituteLink();this.enableChangeInstituteLink();},createInstituteMode:function(){$('originalInstituteName').hide();this.updateToBeInstituteLabel('');$('eitherEditOrChooseOtherInstitute').hide();$('instituteDidChangeQuestion').hide();$('originalInstituteEditLink').hide();sanego.ui.modules.autosuggest.add('city','institute_city');$('toBeInstituteName').show();$('newInstiuteFields').show();},show:function(){sanego.ui.modules.overlay.update($('institutePicker').innerHTML).resize(700).show();this.enableMakeNewInsituteLink(sanego.ui.modules.overlay.contentId);this.ajaxRequest({'l':this.city},false);},extendSearchFrom:function(){$('clinicSearch').observe('submit',function(event){Event.stop(event);var el=Event.findElement(event,'form');AjaxLoaderOverlay.show(sanego.ui.modules.overlay.selectContent('#clinicSearch').first().up());this.ajaxRequest(el.serialize(true),true);}.bind(this));},extendSearchResults:function(){$('resultList').select('li a.addToDoc').each(function(link){$(link).observe('click',function(event){Event.stop(event);var el=Event.findElement(event,'a');var newId=el.readAttribute('rel');if(newId!=$F('originalInstituteId')){$('instituteDidChangeQuestion').hide();$('newInstiuteFields').hide();$('originalInstituteName').hide();$('eitherEditOrChooseOtherInstitute').hide();$('originalInstituteEditLink').hide();this.updateToBeInstituteId(newId);this.updateToBeInstituteLabel(el.up('div').readAttribute('title'));this.showToBeInstituteLabelWithEffect();}
else{this.resetInstitute();}
sanego.ui.modules.overlay.hide();}.bind(this));}.bind(this));},enableMakeNewInsituteLink:function(containerId){$(containerId).select('a.makeNewInstitute').first().observe('click',function(event){this.updateToBeInstituteId(this.NEW_INSTITUTE_ID);this.createInstituteMode();sanego.ui.modules.overlay.hide();$('institute_name').focus();}.bind(this));},enableResetToOriginalInstituteLink:function(){$('toBeInstituteName').select('a').first().observe('click',function(){sanego.ui.modules.overlay.showConfirmLayer('Wollen Sie die Instituts-Auswahl wirklich zurücksetzen?','Ja','Nein',this.resetInstitute.bind(this));this.resetInstitute.bind(this);}.bind(this));},enableChangeInstituteLink:function(){$('changeInstitute').observe('click',function(event){Event.stop(event);this.show();}.bind(this));},ajaxRequest:function(parameters,updateResultOnly){if(!updateResultOnly){AjaxLoaderOverlay.show(sanego.ui.modules.overlay.selectContent('div.search').first());}
parameters.nocache=Math.random();parameters.mode='doctorInstitutePicker';new Ajax.Request('/institute_search.php',{method:'get',parameters:parameters,onSuccess:function(transport){if(!updateResultOnly){sanego.ui.modules.overlay.selectContent('div.search').first().update(transport.responseText);sanego.ui.modules.overlay.center();}
else{$('clinicSearch').up('div').replace(transport.responseText);}
this.extendSearchFrom();this.extendSearchResults();if($("resultList")){$("resultList").scrollTo();}
$('clinicsearch_what').focus();}.bind(this)});},updateToBeInstituteLabel:function(label){$('toBeInstituteName').select('span').first().update(label);},updateToBeInstituteId:function(id){$('instituteId').writeAttribute('value',id);},resetInstitute:function(){sanego.ui.modules.overlay.hide();this.updateToBeInstituteId($F('originalInstituteId'));$('toBeInstituteName').hide();$('originalInstituteName').show();$('instituteDidChangeQuestion').show();$('eitherEditOrChooseOtherInstitute').show();$('originalInstituteEditLink').show();$('newInstiuteFields').hide();this.updateToBeInstituteLabel('');},showToBeInstituteLabelWithEffect:function(){$('toBeInstituteName').show();new Effect.Highlight('toBeInstituteName',{startcolor:'#FF7E00',endcolor:'#FFFFFF'});}});var DoctorEditor=Class.create({institutePicker:DoctorInstitutePicker,initialize:function(){this.institutePicker=new DoctorInstitutePicker();},addFormBehavior:function(){this.addMedicalAreaAutoSuggest();this.addProfessionalGroupAutoSuggest();this.enableMedicalAreaFormFieldAdding();this.enableProfessionalGroupFormFieldAdding();this.lockSubmitButtonAfterClick();},setInstituteSuggestions:function(city){this.institutePicker.city=city;},enableMedicalAreaFormFieldAdding:function(){this.enableFormFieldAdding('medicalAreas','medicalArea');},enableProfessionalGroupFormFieldAdding:function(){this.enableFormFieldAdding('professionalGroups','professionalGroup');},addMedicalAreaAutoSuggest:function(){this.addAutoSuggestToFormFieldArray('medicalAreas','medicalArea');},addProfessionalGroupAutoSuggest:function(){this.addAutoSuggestToFormFieldArray('professionalGroups','professionalGroup');},lockSubmitButtonAfterClick:function(){$$('form.editDoctor').first().observe('submit',function(event){var el=Event.findElement(event,'form');$(el).select('input[name=submit]').first().disable();});},addAutoSuggestToFormFieldArray:function(containerId,autoSuggestType){if($(containerId)){$$('#'+containerId+' input[type=text]').each(function(o){sanego.ui.modules.autosuggest.add(autoSuggestType,$(o).identify());}.bind(this));}
else{sanego.log("containerId '"+containerId+"' not existing!");}},enableFormFieldAdding:function(containerId,autoSuggestType){$$('#'+containerId+' a').last().observe('click',function(event){var clone=$$('#'+containerId+' div.line').first().cloneNode(true);$(clone).select('div.suggestions').invoke('remove');var autosuggests=new Array();$(clone).select('input[type=text]').each(function(o){$(o).writeAttribute('id',null).writeAttribute('value','').removeClassName('error');autosuggests.push($(o).identify());});$$('#'+containerId+' div.list').first().insert($(clone));autosuggests.each(function(objId){sanego.ui.modules.autosuggest.add(autoSuggestType,objId);}.bind(this));Event.stop(event);}.bind(this));}});var DoctorRate=Class.create({doctorRateFormId:'rate_doctor',toCopyElementLinkXPath:' tr.line',addLineLinkXPath:'addNewLine',submitLinkId:'rating_submit',userEventDefinitions:Array(),initialize:function(){this.addAutosuggest();},registerEvents:function(id){this.userEventDefinitions[0]=new UserEventDefinition({name:'click',domElement:$(this.addLineLinkXPath),handlerCallBack:this.addLine.bind(this)});this.userEventDefinitions[1]=new UserEventDefinition({name:'submit',domElement:$(this.doctorRateFormId),handlerCallBack:this.disableSubmit.bind(this)});sanego.ui.registerEvent(this.userEventDefinitions[0]);sanego.ui.registerEvent(this.userEventDefinitions[1]);},addAutosuggest:function(){$(this.doctorRateFormId).select(this.toCopyElementLinkXPath).each(function(el){sanego.ui.modules.autosuggest.add('drug',el.select('.drug').first().id);sanego.ui.modules.autosuggest.add('illness',el.select('.illness').first().id);});},addLine:function(event){Event.stop(event);var clone=$(this.doctorRateFormId).select(this.toCopyElementLinkXPath).last().clone(true);var i=parseInt($(this.doctorRateFormId).select(this.toCopyElementLinkXPath).last().select('th').first().innerHTML)+1;$(clone).select('div.suggestions').invoke('remove');$(clone).select('th').first().innerHTML=i;$(clone).select('input').each(function(el){el.clear();});var autosuggests=new Array();$(clone).select('input[type=text]').each(function(o){$(o).writeAttribute('id',null).writeAttribute('value','').removeClassName('error');autosuggests.push($(o).identify());});$('doctor_experience').select('tbody').first().insert($(clone));autosuggests.each(function(objId,index){if(index==0){sanego.ui.modules.autosuggest.add('drug',objId);}
if(index==1){sanego.ui.modules.autosuggest.add('illness',objId);}}.bind(this));},handleNoAppointment:function(noAppointmentRatings){$('doctor_noAppointment').observe('click',function(){var action=($F('doctor_noAppointment')?'hide':'show');$(this).disable();$('doctor_endDate_section','lightRating').invoke(action);$('doctor_rating').select('div.rate').each(function(element,i){if(noAppointmentRatings.indexOf(i)==-1){[$(element)].invoke(action);}});$(this).enable();});},disableSubmit:function(event){$(this.submitLinkId).disable();}});var Hug=Class.create({userEventDefinitions:Array(),initialize:function()
{},registerActionLinks:function()
{this.userEventDefinitions[0]=new UserEventDefinition({name:"click",xPath:"a.markHugAsSeen",handlerCallBack:this.hideHugAndReload.bind(this)});sanego.ui.registerEvent(this.userEventDefinitions[0]);},hideHugAndReload:function(event)
{Event.stop(event);AjaxLoaderOverlay.show($('myHugs'));var domElement=Event.findElement(event,'a');var matches=domElement.readAttribute('href').match(/markHugAsSeen=(\d+)&hugPage=(\d+).*/);var id=matches[1];var page=matches[2];new Ajax.Request("/ajax/markHugAsSeen",{method:'get',parameters:{'id':id,'hugPage':page},onSuccess:function(transport){$('hugs').update(transport.responseText.evalJSON().layerUpdateHTML);sanego.ui.reSetupLoadedModulesEvents();this.registerActionLinks();}.bind(this),onFailure:function(event)
{},onException:function(event)
{}});}});var UserEdit=Class.create({updatePasswordformValidator:Object(),updateProfileformValidator:Object(),userEventDefinitions:Array(),initialize:function(){$('newpassword').disable();$('newpassword2').disable();if($('error')){this.highlight($('error'));}
if(!$('images').hasClassName('hasImage')){this.highlight($('images'));}
sanego.ui.modules.autosuggest.add('city','city');this.initFormValidators();this.registerUserEvents();},highlight:function(element){new Effect.Highlight(element,{startcolor:'#FF7E00',endcolor:'#FFFFFF'});},initFormValidators:function(){try{this.updatePasswordformValidator=new UpdatePasswordFormValidation;this.updateProfileformValidator=new UpdateProfileFormValidation;}catch(error){sanego.error(error);}},submitImageForm:function(){$('imageForm').submit();},registerUserEvents:function(){this.userEventDefinitions[0]=new UserEventDefinition({name:"change",xPath:"input.file",handlerCallBack:this.submitImageForm.bind(this)});sanego.ui.registerEvent(this.userEventDefinitions[0]);}});var UpdatePasswordFormValidation=Class.create(FormValidation,{setInitializeObject:function(){this.inputValidators=new Array();var oldpasswordValidatorElement=new InputValidator({eventNames:"keyup",delay:0.5,valueElements:$("oldpassword"),observeElements:$("oldpassword"),messageElement:$("oldpasswordError"),ajaxAction:"CheckUserPassword",onSuccessCallBack:this.onValidatePasswordElementSuccess,onFailureCallBack:this.onFailure});this.inputValidators.push(oldpasswordValidatorElement);var oldpasswordBlurValidatorElement=new InputValidator({eventNames:"blur",valueElements:$("oldpassword"),observeElements:$("oldpassword"),messageElement:$("oldpasswordError"),ajaxAction:"CheckUserPassword",onSuccessCallBack:this.onValidatePasswordElementSuccess,onFailureCallBack:this.onFailure});this.inputValidators.push(oldpasswordBlurValidatorElement);var newpasswordValidatorElement=new InputValidator({eventNames:"keyup",delay:0.5,valueElements:$("newpassword"),observeElements:$("newpassword"),messageElement:$("newpasswordError"),ajaxAction:"CheckUserPasswordStrength",onSuccessCallBack:this.onValidateFormElementSuccess,onFailureCallBack:this.onFailure});this.inputValidators.push(newpasswordValidatorElement);var newpasswordBlurValidatorElement=new InputValidator({eventNames:"blur",valueElements:$("newpassword"),observeElements:$("newpassword"),messageElement:$("newpasswordError"),ajaxAction:"CheckUserPasswordStrength",onSuccessCallBack:this.onValidateFormElementSuccess,onFailureCallBack:this.onFailure});this.inputValidators.push(newpasswordBlurValidatorElement);var newpassword2ValidatorElement=new InputValidator({eventNames:"keyup",delay:0.5,valueElements:[$("newpassword2"),$("newpassword")],observeElements:[$("newpassword2"),$("newpassword")],messageElement:$("newpassword2Error"),ajaxAction:"CheckPasswordsAreEqual",onSuccessCallBack:this.onValidateFormElementSuccess,onFailureCallBack:this.onFailure});this.inputValidators.push(newpassword2ValidatorElement);var newpassword2BlurValidatorElement=new InputValidator({eventNames:"blur",valueElements:[$("newpassword2"),$("newpassword")],observeElements:[$("newpassword2"),$("newpassword")],messageElement:$("newpassword2Error"),ajaxAction:"CheckPasswordsAreEqual",onSuccessCallBack:this.onValidateFormElementSuccess,onFailureCallBack:this.onFailure});this.inputValidators.push(newpassword2BlurValidatorElement);this.formValidator=new FormValidationSetupValidator({formElement:$("updatePassword"),messageElement:$("updatePasswordFormError"),ajaxAction:"CheckChangePasswordForm",onSuccessCallBack:this.onValidateFormSuccess,onFailureCallBack:this.onFailure});},onValidateFormSuccess:function(response,observedEvent){try{if(this.isValid){$(observedEvent.findElement("form")).submit();}}
catch(error){sanego.error("Error in onValidateFormSuccess"+": "+error);}},onValidateFormElementSuccess:function(){},onValidatePasswordElementSuccess:function(response,observedEvent){observedEvent.stop();if(response.responseText.evalJSON().valid){$('newpassword').enable();$('newpassword2').enable();}
if(!response.responseText.evalJSON().valid){$('newpassword').clear().disable();$('newpassword2').clear().disable();$('oldpassword').focus();}},onFailure:function(){}});var UpdateProfileFormValidation=Class.create(FormValidation,{setInitializeObject:function(){this.inputValidators=new Array();var emailValidatorElement=new InputValidator({eventNames:"keyup",delay:0.5,valueElements:$("email"),observeElements:$("email"),messageElement:$("emailError"),ajaxAction:"ValidateEmail",onSuccessCallBack:this.onValidateFormElementSuccess,onFailureCallBack:this.onFailure});this.inputValidators.push(emailValidatorElement);var emailBlurValidatorElement=new InputValidator({eventNames:"blur",valueElements:$("email"),observeElements:$("email"),messageElement:$("emailError"),ajaxAction:"ValidateEmail",onSuccessCallBack:this.onValidateFormElementSuccess,onFailureCallBack:this.onFailure});this.inputValidators.push(emailBlurValidatorElement);},onValidateFormSuccess:function(response,observedEvent){try{if(this.isValid){$(observedEvent.findElement("form")).submit();}}
catch(error){sanego.error("Error in onValidateFormSuccess"+": "+error);}},onValidateFormElementSuccess:function(){},onValidatePasswordElementSuccess:function(transport,observedEvent){observedEvent.stop();if(transport.responseText.evalJSON().valid){$('newpassword').enable();$('newpassword2').enable();}},onFailure:function(){}});var SideeffectPage=Class.create({seId:null,thxMessage:String(),initialize:function(thxMessage)
{this.thxMessage=thxMessage;},registerEvents:function(seId)
{this.seId=seId;sanego.ui.registerEvent
(new UserEventDefinition
({name:"mouseover",xPath:"input.ratingStar",handlerCallBack:this.highlightStar.bind(this)}));sanego.ui.registerEvent
(new UserEventDefinition
({name:"mouseout",xPath:"input.ratingStar",handlerCallBack:this.blurStar.bind(this)}));sanego.ui.registerEvent
(new UserEventDefinition
({name:"click",xPath:"input.ratingStar",handlerCallBack:this.doRating.bind(this)}));sanego.ui.registerEvent
(new UserEventDefinition
({name:"submit",domElement:$('ratingform'),handlerCallBack:this.stopFormSubmit.bind(this)}));},stopFormSubmit:function(event)
{event.stop();},highlightStar:function(event)
{var domElement=Event.findElement(event,'input');var starUnderMouseCursor=domElement.readAttribute('value');for(i=1;i<=starUnderMouseCursor;i++)
{$('ratingInput'+i).src='img/stern_gruen.gif';}},blurStar:function(event)
{for(i=1;i<=5;i++)
{$('ratingInput'+i).src='img/stern_grau.gif';}},doRating:function(event)
{var domElement=Event.findElement(event,'input');var starUnderMouseCursor=domElement.readAttribute('value');new Ajax.Request("/ajax/rateSideeffect",{method:'post',parameters:{'seId':this.seId,'rating':starUnderMouseCursor},onSuccess:function(transport){$('currentRating').update(transport.responseText.evalJSON().ratingHTML);$('ratingformContent').update(this.thxMessage);}.bind(this),onFailure:function(event)
{},onException:function(event)
{}});}});var QuestionPage=Class.create({initialize:function(){sanego.ui.registerEvent(new UserEventDefinition({name:"click",xPath:"a.unhideNegativeAnswer",handlerCallBack:this.unhideNegativeAnswer.bind(this)}));sanego.ui.registerEvent(new UserEventDefinition({name:"click",xPath:"div.thumbRating a",handlerCallBack:this.thumbRating.bind(this)}));},unhideNegativeAnswer:function(event){event.stop();var answerId=event.findElement('tr').readAttribute('id');$(answerId+'UnhideLayer').toggle('blind');$(answerId+'AnswerLayer').appear();},thumbRating:function(event){event.stop();var linkElement=event.findElement('a');var rateUrl=linkElement.readAttribute('href');var divContainerElement=event.findElement('div.thumbRating');AjaxLoaderOverlay.show(divContainerElement);new Ajax.Request(rateUrl,{method:'get',onSuccess:function(divContainerElement,transport){divContainerElement.replace(transport.responseText);}.bind(this,divContainerElement),onFailure:function(event){},onException:function(event){}});}});var ExperiencePage=Class.create({confirmHTML:String(),confirmYesLabel:String(),confirmNoLabel:String(),initialize:function(initObject)
{this.confirmHTML=initObject.confirmHTML;this.confirmYesLabel=initObject.confirmYesLabel;this.confirmNoLabel=initObject.confirmNoLabel;},registerEvents:function(seId)
{this.seId=seId;sanego.ui.registerEvent
(new UserEventDefinition({name:"click",xPath:"a.delete",handlerCallBack:this.confirmDelete.bind(this)}));},confirmDelete:function(event){event.stop();sanego.ui.modules.overlay.showConfirmLayer(this.confirmHTML,this.confirmYesLabel,this.confirmNoLabel,function()
{window.location=event.findElement('a').readAttribute('href')+"&submit=löschen";});}});ExperiencePage.updateAndHighlightAssistant=function(update){var assi=$('assistant');assi.show().select('p').first().update(update);new Effect.Highlight(assi.select('p').first(),{startcolor:'#FF7E00',endcolor:'#FFFFFF'});};var FriendsInvitation=Class.create({initialize:function()
{$('friendsInivitation').show();},registerEvents:function()
{sanego.ui.registerEvent
(new UserEventDefinition
({name:"click",domElement:$('friendsInivitation'),handlerCallBack:this.showFormOverlay.bind(this)}));},showFormOverlay:function(event)
{new Ajax.Request("/ajax/showFriendInvitationOverlay",{method:'get',contentType:'text/javascript',onSuccess:function(transport)
{sanego.ui.modules.overlay.update(transport.responseText.evalJSON().layerUpdateHTML).show();sanego.ui.registerEvent
(new UserEventDefinition
({name:"click",domElement:$('invitationFormSubmitButton'),handlerCallBack:this.submitForm.bind(this)}));}.bind(this)});event.stop();},submitForm:function(event)
{event.stop();if($F('email').strip()==''||$F('message').strip()=='')
{$('invitationForm').select('p.error').first().appear();return false;}
else
{AjaxLoaderOverlay.show($('invitationForm'));new Ajax.Request("/ajax/submitFriendInvitationForm",{method:'post',parameters:$('invitationForm').serialize(true),onSuccess:function(transport)
{var text=transport.responseText.evalJSON().text;var success=transport.responseText.evalJSON().success;if(!success){AjaxLoaderOverlay.hide($('invitationForm'));$('invitationForm').select('p.error').first().update(text).appear();}
else
{this.done(text);}}.bind(this)});}},done:function(text)
{sanego.ui.modules.overlay.update(text);sanego.ui.modules.overlay.hideDelayed(2000);}});var Contacts=Class.create({registerEvents:function(){this.userEventDefinition=new Array();this.userEventDefinition[0]=new UserEventDefinition({name:"click",xPath:"a.linkAccept",handlerCallBack:this.confirmAccept.bind(this)});this.userEventDefinition[1]=new UserEventDefinition({name:"click",xPath:"a.linkReject",handlerCallBack:this.confirmReject.bind(this)});this.userEventDefinition[2]=new UserEventDefinition({name:"click",xPath:"a.linkDelete",handlerCallBack:this.confirmDelete.bind(this)});this.userEventDefinition[3]=new UserEventDefinition({name:"click",xPath:"a.linkWithdraw",handlerCallBack:this.confirmWithdraw.bind(this)});sanego.ui.registerEvent(this.userEventDefinition[0]);sanego.ui.registerEvent(this.userEventDefinition[1]);sanego.ui.registerEvent(this.userEventDefinition[2]);sanego.ui.registerEvent(this.userEventDefinition[3]);},confirmAccept:function(event){Event.stop(event);var toAccept=Event.findElement(event,'tr');var user=Event.findElement(event,'a').readAttribute('href');user=user.match(/\/accept\/(.+)/)[1];sanego.ui.modules.overlay.showConfirmLayer('Einladung von '+user+' wirklich annehmen?','Ja','Nein',this.doAccept.bind(this,toAccept,user));},confirmDeleteCommon:function(event,template){Event.stop(event);var toDelete=Event.findElement(event,'tr');var username=Event.findElement(event,'a').readAttribute('href');username=username.match(/\/delete\/(.+)/)[1];sanego.ui.modules.overlay.showConfirmLayer(template.evaluate({user:username}),'Ja','Nein',this.doDelete.bind(this,toDelete,username));},confirmReject:function(event){this.confirmDeleteCommon(event,new Template('Einladung von #{user} wirklich löschen?'));},confirmWithdraw:function(event){this.confirmDeleteCommon(event,new Template('Einladung für #{user} wirklich zurückziehen?'));},confirmDelete:function(event){this.confirmDeleteCommon(event,new Template('Kontakt zu #{user} wirklich zurückziehen?'));},doAccept:function(element,user){sanego.ui.modules.overlay.hide();AjaxLoaderOverlay.show($('friendsBox'));new Ajax.Request("/ajax/acceptInvitation",{method:'post',parameters:{'username':user},onComplete:function(transport){Element.remove.delay(2,element);window.location.reload();}.bind(this,element),onError:function(){}});},doDelete:function(element,user){sanego.ui.modules.overlay.hide();AjaxLoaderOverlay.show($('friendsBox'));new Ajax.Request("/ajax/deleteInvitation",{method:'post',parameters:{'username':user},onComplete:function(transport){Element.remove.delay(2,element);window.location.reload();}.bind(this,element),onError:function(){}});}});Contacts.showFriendsInivitation=function(){$('friendsInivitation').show();},Contacts.confirmInvite=function(){var links=$$('.userActions a.linkInvite');if(links.size()){links.first().observe('click',function(event){Event.stop(event);var link=Event.findElement(event,'a').readAttribute('href');var name=Event.findElement(event,'div.boxen').select('h4.box_headline').first().innerHTML;sanego.ui.modules.overlay.showConfirmLayer('Wollen Sie '+name+' als Kontakt einladen?','Ja','Nein',function(link){sanego.ui.modules.overlay.hide();window.location=link;}.bind(this,link));});}};var AgentDetail=Class.create({id:Number,setId:function(id){this.id=id;}});var QuestionList=Class.create({});QuestionList.extendTeaser=function(teaserText){$('questionTeaser').select('form').first().observe('submit',function(event){var el=$('questionTeaser').select('input.title').first();if($(el).getValue().blank()||$(el).getValue().strip()==teaserText){Event.stop(event);$(el).focus();}
else{if($F('description').blank()){Event.stop(event);$('description').focus();}}});$('questionTeaser').select('input.title').first().observe('focus',function(event){var el=Event.findElement(event,'input');Event.stopObserving(el,'focus');if($(el).getValue().strip()==teaserText){$(el).writeAttribute('value','').removeClassName('dummytext');}
new Effect.SlideDown($('questionTeaser').select('div.formExtension').first().identify());}).addClassName('dummytext').writeAttribute('value',teaserText);};var DoctorVerification=Class.create({initialize:function(){},addFormBehavior:function(){this.addAutoSuggest();},addAutoSuggest:function(){sanego.ui.modules.autosuggest.add('degree','degree');sanego.ui.modules.autosuggest.add('city','institute_city');}});var Utils=Class.create({});Utils.toggleMore=function(obj,lessMsg,moreMsg,moreClass){if($(obj).up().hasClassName(moreClass)){$(obj).update(moreMsg);}
else{$(obj).update(lessMsg);}
$(obj).up().toggleClassName(moreClass);return false;};Utils.writeLoadingIndicator=function(oId){$(oId).update('<img src="/img/loading.gif" alt="" />');};Utils.bcT=function(uri,target){new Ajax.Request('/tracking',{method:'get',parameters:{'type':'bc','uri':uri,'target':target}});}
var IllnessCategory=Class.create({id:Number(),tagCloudToggleLinkXPath:'a.tagCloudToggle',userEventDefinitions:Array(),initialize:function(){$$(this.tagCloudToggleLinkXPath).invoke('show');},setId:function(id){this.id=id;},registerEvents:function(){this.userEventDefinitions[0]=new UserEventDefinition({name:"click",xPath:this.tagCloudToggleLinkXPath,handlerCallBack:this.toggleTagCloudByAlphabet.bind(this)});sanego.ui.registerEvent(this.userEventDefinitions[0]);},toggleTagCloudByAlphabet:function(event){Event.stop(event);var match,type;match=Event.findElement(event,'a').identify().match('(.+)Switch');if(!match||!match[1]){return false;}
type=match[1];if(!$(type+'ByAlph').innerHTML){new Ajax.Updater(type+'ByAlph','/ajax/getByAlphabetForIllnessCategory',{method:'get',parameters:{'type':type,'id':this.id},onCreate:function(){AjaxLoaderOverlay.show($(type+'TagCloud'));},onSuccess:function(transport){AjaxLoaderOverlay.hide($(type+'TagCloud'));$(type+'ByAlph').toggle();$(type+'TagCloud').toggle();}});}
else{$(type+'ByAlph').toggle();$(type+'TagCloud').toggle();}}});var Subscription=Class.create({registerEvents:function()
{this.userEventDefinition=new Array();this.userEventDefinition[0]=new UserEventDefinition({name:"click",xPath:"button.delete",handlerCallBack:this.confirmDelete.bind(this)});sanego.ui.registerEvent(this.userEventDefinition[0]);},confirmDelete:function(event){Event.stop(event);var button=Event.element(event);sanego.ui.modules.overlay.showConfirmLayer('Wollen Sie diese Benachrichtigung wirklich löschen?','Ja','Nein',function(button){sanego.ui.modules.overlay.hide();button.stopObserving('click');$(button).click();}.bind(this,button));}});var Blog=Class.create({userEventDefinitions:Array(),initialize:function()
{},registerEvents:function(){this.userEventDefinitions[1]=new UserEventDefinition({name:"click",xPath:"div.blog .defaultCancel",handlerCallBack:this.cancelConfirm.bind(this)});this.userEventDefinitions[2]=new UserEventDefinition({name:"click",xPath:"div.blog input.delete",handlerCallBack:this.deleteConfirm.bind(this)});sanego.ui.registerEvent(this.userEventDefinitions[1]);sanego.ui.registerEvent(this.userEventDefinitions[2]);},cancelConfirm:function(event){Event.stop(event);var button=Event.element(event);sanego.ui.modules.overlay.showConfirmLayer('Soll die Seite wirklich verlassen werden? Eventuell liegen ungespeicherte Änderungen vor.','Ja','Nein',function(button){sanego.ui.modules.overlay.hide();button.stopObserving('click');$(button).click();}.bind(this,button));},deleteConfirm:function(event){Event.stop(event);var button=Event.element(event);sanego.ui.modules.overlay.showConfirmLayer('Soll der Eintrag wirklich unwiederbringlich gelöscht werden?','Ja','Nein',function(button){sanego.ui.modules.overlay.hide();button.stopObserving('click');$(button).click();}.bind(this,button));},highlightTitle:function(event){url=document.location;if(url.hash){$('blogTitle').focus();new Effect.Highlight('blogTitle',{startcolor:'#FF7E00',endcolor:'#FFFFFF'});}}});