var CtRequest_Iframe=Class.create({iframe:null,callback:null,ident:null,options:{},url:null,form:null,initialize:function(ident,callback){this.url='about:blank';this.form=null;this.options={};this.callback=callback;this.ident=ident;var iframeName='iframe-'+(Math.random()+'').replace('.','');this.iframe=new Element('iframe',{className:'hidden',name:iframeName,src:this.url});$$('body')[0].appendChild(this.iframe);},send:function(){if(this.url=='about:blank'&&this.form==null){throw"CtRequest error: cannot send request without URL or FORM";}
if(this.url!='about:blank'&&this.form!=null){throw"CtRequest error: both URL and FORM are set. Specify either URL or FORM";}
Event.observe(this.iframe,'load',this._responseHandler.bindAsEventListener(this));if(this.url!='about:blank'){this.iframe.src=this.url;}else{this.form.writeAttribute('target',this.iframe.readAttribute('name'));this.form.submit();}
return true;},_responseHandler:function(event){Event.stop(event);var json=false;var content={};content[this.ident]={json:null,content:null};var raw=this.iframe.contentWindow.document.body.innerHTML;var blocks=this.iframe.contentWindow.document.body.getElementsByTagName('div');if(raw.length==0){return;}
if(blocks){for(var i=0;i<blocks.length;i++){var block=$(blocks[i]);var ident=Element.readAttribute(block,'title');if(ident=='_json'){try{json=block.innerHTML.evalJSON();if('redirect_path'in json){json.redirect_path=json.redirect_path.unescapeHTML();}
content[this.ident].json=json;}catch(e){break;}
continue;}
if(ident=='_content'){content[this.ident].content=block.innerHTML.unescapeHTML();continue;}
if(!content[ident]){content[ident]={json:null,content:null};}
switch(block.className){case'content':if(content[ident].content){content[ident].content+=block.innerHTML.unescapeHTML();}else{content[ident].content=block.innerHTML.unescapeHTML();}
break;case'json':try{json=block.innerHTML.evalJSON();}catch(e){json={};}
content[ident].json=Object.extend(content[ident].json?content[ident].json:{},json?json:{});break;default:break;}}}
if(!blocks||json===false){content={'error':{json:null,content:raw}};content[this.ident]=false;}
this.iframe.stopObserving('load');this.iframe.src='about:blank';this.iframe.remove();this.iframe=null;this.callback(content);}});var CtRequest_Ajax=Class.create({callback:null,ident:null,options:{},url:null,form:null,initialize:function(ident,callback){this.callback=callback;this.ident=ident;this.url='';this.options={};this.form=null;},send:function(){if(this.url==''&&this.form==null){throw"CtRequest error: cannot send request without URL or FORM";}
if(this.options.parameters&&this.form!=null){throw"CtRequest error: both OPTION PARAMETERS and FORM are set. Specify either OPTION PARAMETERS or FORM";}
if(this.form){this.options.parameters=Form.serialize(this.form);this.url=this.form.readAttribute('action');}
this.options.onSuccess=this._successHandler.bind(this);this.options.onFailure=this._failureHandler.bind(this);new Ajax.Request(this.url,this.options);return true;},_failureHandler:function(){var raw='Error. Check your internet connection';var content={'error':{json:null,content:raw}};content[this.ident]=false;this.callback(content);},_addJS:function(jsCollection){jsCollection.each(function(src){var head=$$('head')[0];if(head.select('script[src*="'+src+'"]').length==0){head.insert(new Element("script",{"type":"text/javascript","src":src}));}});},_addCSS:function(cssCollection){cssCollection.each(function(src){var head=$$('head')[0];if(head.select('link[href*="'+src+'"]').length==0){head.insert(new Element("link",{"type":"text/css","rel":"stylesheet","media":"screen","href":src}));}});},_successHandler:function(transport){var content={};var raw=transport.responseText;var tmpDiv=new Element('div').update(raw);content[this.ident]={json:null,content:null};try{content[this.ident].content=tmpDiv.down('div[title="_content"]').innerHTML.unescapeHTML();}catch(ex){}
try{var json=tmpDiv.down('div[title="_json"]').innerHTML.evalJSON();if(json.js){this._addJS(json.js);delete json.js;}
if(json.css){this._addCSS(json.css);delete json.css;}
content[this.ident].json=json;}catch(ex){}
tmpDiv.select('div.content').each(function(contentElement){var ident=contentElement.readAttribute('title');if(!content[ident]){content[ident]={json:null,content:null};}
if(content[ident].content){content[ident].content+=contentElement.innerHTML.unescapeHTML();}else{content[ident].content=contentElement.innerHTML.unescapeHTML();}}.bind(this));tmpDiv.select('div.json').each(function(contentElement){var ident=contentElement.readAttribute('title');if(!content[ident]){content[ident]={json:null,content:null};}
var json;try{json=contentElement.innerHTML.evalJSON();}catch(e){json={};}
content[ident].json=Object.extend(content[ident].json?content[ident].json:{},json?json:{});}.bind(this));if(!content[this.ident].json){content={'error':{json:null,content:raw}};content[this.ident]=false;}
this.callback(content);}});var CtRequest_Manager=Class.create({adapters:{},initialize:function(){this.adapters={};},get:function(ident,requestType){var adapter=null;switch(requestType){case'ajax':adapter=new CtRequest_Ajax(ident,this._responseHandler.bind(this));break;case'iframe':adapter=new CtRequest_Iframe(ident,this._responseHandler.bind(this));break;default:throw'Request type for component '+ident+' is not defined';break;}
this.adapters[ident]=adapter;return adapter;},send:function(ident){var result=this.adapters[ident].send();},_responseHandler:function(content){Object.keys(content).each(function(ident){var component=CtPage.getComponent(ident);if(component===null){component=new CtComponent_Default(ident);CtPage.addComponent(component);}
component.refresh(content[ident]);var element=$(ident);if(Object.isElement(element)){element.fire('CtPage:refresh');}}.bind(this));}});CtPage.registerScript("CtRequest");;var globalZIndex=5000;var ctComponentConfig={message:{type:{0:{className:'error',hold:true},1:{className:'warning',hold:true},2:{className:'message',hold:false},strongest:2}}};var CtComponent_Abstract=Class.create({id:null,element:null,type:'CtComponent',initialize:function(){throw'initialize() must be redifined';},refresh:function(){throw'refresh() must be redifined';},smoothClear:function(callback){Effect.Queues.get(this.id).each(function(effect){effect.cancel();});callback=!callback?Prototype.emptyFunction:callback;if(this.wrapper){if(this.element.getHeight()>0){new Effect.Opacity(this.wrapper,{to:0,duration:0.5,queue:{scope:this.id,position:'end'},afterFinish:callback});}else{this.wrapper.setOpacity(0);callback();}}else{callback();}},smoothUpdate:function(element,content,callback){callback=!callback?Prototype.emptyFunction:callback;var heightOld=element.getHeight();this.wrapper=new Element('div');this.wrapper.update(content);element.appendChild(this.wrapper);var heightNew=this.wrapper.getHeight();$$('body')[0].appendChild(this.wrapper);this.wrapper.hide();this.wrapper.setOpacity(0);if(heightOld!=heightNew){new Effect.Morph(this.element,{style:{height:heightNew+'px'},duration:0.5,afterFinish:function(){this.element.setStyle({height:'auto'});element.update(this.wrapper);this.wrapper.show();}.bind(this),queue:{scope:this.id,position:'end'}});}else{element.update(this.wrapper);this.wrapper.show();}
new Effect.Opacity(this.wrapper,{to:1,duration:0.5,queue:{scope:this.id,position:'end'},afterFinish:callback});}});var CtComponent_Locker=Class.create(CtComponent_Abstract,{firstRun:null,initialize:function(){this.element=new Element('div',{style:'display: none; position: absolute; top: 0; left: 0;'});this.id=this.element.identify();this.firstRun=true;},refresh:function(){var viewportDimensions=document.viewport.getDimensions();var bodyDimensions=$$('body')[0].getDimensions();var width=viewportDimensions.width>bodyDimensions.width?viewportDimensions.width:bodyDimensions.width;var height=viewportDimensions.height>bodyDimensions.height?viewportDimensions.height:bodyDimensions.height;this.element.setStyle({width:width+'px',height:height+'px',overflow:'hidden'});},show:function(){if(this.firstRun){$$('body')[0].appendChild(this.element);this.firstRun=false;}
this.refresh();this.element.show();},hide:function(){this.element.hide();}});var CtComponent_PageLocker=Class.create(CtComponent_Locker,{initialize:function($super){$super();this.element.addClassName('ctComponent-pageLocker');this.element.setOpacity(0.7);}});var CtComponent_FormLocker=Class.create(CtComponent_Locker,{form:null,initialize:function($super,form){$super();this.element.addClassName('ctComponent-formLocker');this.element.setOpacity(0.5);this.form=form;},refresh:function(){var dimensions=this.form.element.getDimensions();var offsets=this.form.element.cumulativeOffsetFixed();this.element.setStyle({width:dimensions.width+'px',height:dimensions.height+'px',top:offsets.top+'px',left:offsets.left+'px'});}});var CtComponent_BlockLocker=Class.create(CtComponent_Locker,{container:null,initialize:function($super,container){$super();this.element.addClassName('ctComponent-blockLocker');this.element.setOpacity(0.5);this.container=$(container);},refresh:function(){var dimensions=this.container.getDimensions();var offsets=this.container.cumulativeOffsetFixed();this.element.setStyle({width:dimensions.width+'px',height:dimensions.height+'px',top:offsets.top+'px',left:offsets.left+'px'});}});var CtComponent_Error=new(Class.create(CtComponent_Abstract,{firstRun:null,pageLocker:null,initialize:function(){this.element=new Element('div',{className:'ctComponent-error',style:'display: none'});this.id=this.element.identify();this.firstRun=true;this.pageLocker=new CtComponent_PageLocker();},hide:function(){this.element.hide();this.pageLocker.hide();this.element.update(null);},show:function(){this.pageLocker.show();if(this.firstRun){this.pageLocker.element.insert({after:this.element})
Event.observe(this.element,'dblclick',this.hide.bindAsEventListener(this));this.firstRun=false;}
this.element.show();},refresh:function(response){var errorText=response.content.stripScripts();this.element.update(errorText);this.show();this.element.fire('CtComponent:refresh',{sender:this});}}));var CtComponent_ModalBox=Class.create(CtComponent_Abstract,{firstRun:null,closeCallback:Prototype.emptyFunction,closeButton:null,container:null,pageLocker:null,initialize:function(){this.container=new Element('div',{className:'ctComponent-modalBox',style:'display: none; position: absolute;'});this.element=new Element('div');this.container.appendChild(this.element);this.closeButton=new Element('a',{className:'controls controls-delete',style:'position: absolute; top: 5px; right: 5px; padding: 0; margin: 0;'});this.container.appendChild(this.closeButton);this.id=this.element.identify();this.firstRun=true;this.pageLocker=new CtComponent_PageLocker();},hide:function(){this.container.hide();this.pageLocker.hide();this.closeCallback();},show:function(){this.pageLocker.show();if(this.firstRun){this.pageLocker.element.insert({after:this.container});Event.observe(this.closeButton,'click',this.hide.bindAsEventListener(this));Event.observe(this.element,'CtComponent:refresh',function(event){this.pageLocker.refresh();}.bind(this));this.firstRun=false;}
this.container.show();},refresh:function(response){var errorText=response.content.stripScripts().stripTags();this.element.update(errorText);this.show();this.element.fire('CtComponent:refresh',{sender:this});}});var CtComponent_Popup=Class.create(CtComponent_Abstract,{firstRun:null,closeCallback:Prototype.emptyFunction,closeButton:null,moveButton:null,container:null,titleText:null,initialize:function(){this.titleText=null;this.container=new Element('div',{className:'ctComponent-popup',style:'display: none; position: absolute;'});this.element=new Element('div');this.title=new Element('div',{className:'ctComponent-popup-title'});this.container.appendChild(this.title);this.container.appendChild(this.element);this.closeButton=new Element('a',{href:'javascript:void(0);',className:'controls controls-delete',style:'position: absolute; top: 5px; right: 5px; padding: 0; margin: 0;'}).update('&nbsp;');this.container.appendChild(this.closeButton);var titleId=this.title.identify();new Draggable(this.container,{handle:'ctComponent-popup-title',starteffect:function(element){Draggable._dragging[element]=true;},endeffect:function(element){Draggable._dragging[element]=false;}});this.id=this.element.identify();this.firstRun=true;},hide:function(delay){Effect.Queues.get(this.id).each(function(effect){effect.cancel();});if(!delay||delay<0){delay=0;}
new Effect.Fade(this.container,{delay:delay,duration:0.3,queue:{scope:this.id,position:'end'},afterFinish:this.closeCallback.bind(this)})},closeButtonClickHandler:function(event){Event.stop(event);this.hide();},show:function(title){if(title){this.titleText=title;}
if(this.firstRun){var body=$$('body')[0];body.appendChild(this.container);Event.observe(this.closeButton,'click',this.closeButtonClickHandler.bindAsEventListener(this));this.firstRun=false;}else{Effect.Queues.get(this.id).each(function(effect){effect.cancel();});}
this.title.update(this.titleText);new Effect.Appear(this.container,{duration:0.3,queue:{scope:this.id,position:'end'}})},move:function(){var left,top;if(arguments.length==2){left=arguments[0];top=arguments[1];}else if(arguments.length==1){left=arguments[0][0];top=arguments[0][1];}else if(arguments.length==0){offset=this.container.cumulativeOffsetFixed();left=offset[0];top=offset[1];}
if(!left||!top){return;}
var viewport=document.viewport.getDimensions();var dimensions=this.container.getDimensions();width=dimensions.width;height=dimensions.height;left=left>0?left:0;top=top>0?top:0;if(isIE6()){scrollOffset=document.viewport.getScrollOffsets();left=((left+width)<viewport.width)?left:(viewport.width-width);}else{left=((left+width)<viewport.width)?left:(viewport.width-width);}
this.container.setStyle({top:top+'px',left:left+'px'});},setLoader:function(){this.container.addClassName('ctComponent-popup-loader');},resetLoader:function(){this.container.removeClassName('ctComponent-popup-loader');},refresh:function(response){var errorText=response.content.stripScripts().stripTags();this.element.update(errorText);this.show();this.element.fire('CtComponent:refresh',{sender:this});}});var CtComponent_ConfirmBox=Class.create(CtComponent_Abstract,{question:null,hr:null,yes:null,no:null,yesCallback:null,noCallback:null,pageLocker:null,firstRun:null,initialize:function(){this.firstRun=true;this.element=new Element('div',{className:'ctComponent-confirmBox',style:'display: none; position: fixed;'});this.id=this.element.identify();this.yesCallback=Prototype.emptyFunction;this.noCallback=Prototype.emptyFunction;this.question=new Element('b',{className:'ctComponent-confirmBox-question controls-text controls-discuss'});this.yes=new Element('a',{className:'ctComponent-confirmBox-yes controls-text controls-ok',href:'#'});this.yes.update('Yes');this.no=new Element('a',{className:'ctComponent-confirmBox-no controls-text controls-stop',href:'#'});this.no.update('No');this.element.update(this.question);this.element.appendChild(this.yes);this.element.appendChild(this.no);this.pageLocker=new CtComponent_PageLocker();},refresh:function(){},show:function(question,yesCallback,noCallback){this.pageLocker.show();if(this.firstRun){this.pageLocker.element.insert({after:this.element})
this.yes.observe('click',this.yesHandler.bindAsEventListener(this));this.no.observe('click',this.noHandler.bindAsEventListener(this));this.firstRun=false;}
this.question.update(question);this.yesCallback=yesCallback?yesCallback:this.yesCallback;this.noCallback=noCallback?noCallback:this.noCallback;var viewportDimensions=document.viewport.getDimensions();this.element.show();var elementDimensions=this.element.getDimensions();var left=(viewportDimensions.width-elementDimensions.width)/2;var top=(viewportDimensions.height-elementDimensions.height)/2;this.element.setStyle({top:top+'px',left:left+'px'});},yesHandler:function(event){Event.stop(event);this.element.hide();this.pageLocker.hide();this.yesCallback();},noHandler:function(event){Event.stop(event);this.element.hide();this.pageLocker.hide();this.noCallback();}});var CtComponent_ContextMenu=Class.create(CtComponent_Abstract,{centerX:null,centerY:null,distanceXMin:null,distanceYMin:null,distanceXMax:null,distanceYMax:null,hideListener:null,modifyOpacityListener:null,initialize:function(htmlElement){this.element=$(htmlElement);if(!this.element){this.element=new Element('div');}
this.id=this.element.identify();this.element.addClassName('ctComponent-contextMenu');this.element.setStyle({opacity:0,display:'none',position:'absolute',zIndex:30000});$$('body')[0].appendChild(this.element);this.hideListener=this.hide.bindAsEventListener(this);this.modifyOpacityListener=this.modifyOpacityHandler.bindAsEventListener(this);this.centerX=null;this.centerY=null;this.distanceXMin=null;this.distanceYMin=null;this.distanceXMax=null;this.distanceYMax=null;},show:function(x,y){var left=x+15;var top=y-this.element.getHeight()-15;this.element.setStyle({top:top+'px',left:left+'px'});var dimensions=this.element.getDimensions();this.centerX=left+dimensions.width/2;this.centerY=top+dimensions.height/2;this.distanceXMin=dimensions.width/2+10;this.distanceYMin=dimensions.height/2+10;this.distanceXMax=this.distanceXMin+50;this.distanceYMax=this.distanceYMin+50;this.modifyOpacity(x,y);this.element.show();document.observe('click',this.hideListener);document.observe('mousemove',this.modifyOpacityListener);},modifyOpacityHandler:function(event){this.modifyOpacity(Event.pointerX(event),Event.pointerY(event));},modifyOpacity:function(x,y){var distanceX=Math.abs(this.centerX-x);var distanceY=Math.abs(this.centerY-y);var opacity=0;if(distanceX>distanceY){opacity=1-(distanceX-this.distanceXMin)/this.distanceXMax;}else{opacity=1-(distanceY-this.distanceYMin)/this.distanceYMax;}
opacity=opacity>1?1:(opacity<0?0:opacity);this.element.setOpacity(opacity*0.9);if(!opacity){this.hide();}},hide:function(){document.stopObserving('click',this.hideListener);document.stopObserving('mousemove',this.modifyOpacityListener);this.element.hide();},refresh:function(response){if(this.element&&this.element.update){this.element.update(response.content);}
this.element.fire('CtComponent:refresh',{sender:this});}});var CtComponent_Message=Class.create(CtComponent_Abstract,{wrapper:null,close:null,messages:null,initialize:function(htmlElement){this.element=$(htmlElement);if(!this.element){this.element=new Element('div',{className:'ctComponent-message',style:'display: none'});}
this.id=this.element.identify();this.messages=null;this.wrapper=new Element('div',{className:'ctComponent-message-wrapper'});this.close=new Element('a',{href:'javascript:void(0)',className:'controls controls-delete',style:'position: absolute; right: 5px; top: 5px; padding: 0; margin: 0;'});this.element.update(this.wrapper);this.element.appendChild(this.close);Event.observe(this.close,'click',this.closeClickHandler.bindAsEventListener(this));},closeClickHandler:function(event){Event.stop(event);this.hide();},_render:function(){Object.values(ctComponentConfig.message.type).each(function(element){this.element.removeClassName('ctComponent-message-'+element.className);}.bind(this));this.wrapper.update(null);if(this.messages&&this.messages.length){var messageTypeStrongest=ctComponentConfig.message.type.strongest;for(var i=0;i<this.messages.length;i++){var messageType=this.messages[i][1];var messageText=this.messages[i][0];if(messageType<messageTypeStrongest){messageTypeStrongest=messageType;}
this.wrapper.appendChild(new Element('p',{className:ctComponentConfig.message.type[messageType].className}).update(messageText));}
this.element.addClassName('ctComponent-message-'+ctComponentConfig.message.type[messageTypeStrongest].className);var queue={scope:this.id,position:'end'};this.element.setStyle({height:'auto',display:'block'});if(Prototype.Browser.Opera){Element.scrollTo(this.element);}else if(this.element.viewportOffset().top<0){Element.scrollTo(this.element);}}else{this.hide();}
this.element.fire('CtComponent:refresh',{sender:this});},hasErrors:function(messages){var messageTypeStrongest=ctComponentConfig.message.type.strongest;if(messages&&messages.length){for(var i=0;i<messages.length;i++){if(ctComponentConfig.message.type[messages[i][1]].hold){return true;}}}
return false;},show:function(messages){this.messages=messages;var lastEffect=Effect.Queues.get(this.id).effects.last();if(lastEffect&&lastEffect.options){lastEffect.options.afterFinish=this._render.bind(this);}else{this._render();}},refresh:function(response){if(response&&response.json&&response.json.messages){this.show(response.json.messages);}},hide:function(){this.prepare();},prepare:function(){var height=this.element.getHeight();if(this.element){if(height>0){new Effect.BlindUp(this.element,{duration:0.5,afterFinish:function(){this.wrapper.update(null);}.bind(this),queue:{scope:this.id,position:'end'}});}else{this.element.hide();}}}});var CtComponent_Default=Class.create(CtComponent_Abstract,{initialize:function(htmlElement){this.element=$(htmlElement);if(this.element&&this.element.identify){this.id=this.element.identify();}else{this.id=null;}},refresh:function(response){if(this.element&&this.element.update){this.element.update(response.content);this.element.fire('CtComponent:refresh',{sender:this});}}});var CtComponent_Comments=Class.create(CtComponent_Abstract,{initialize:function(htmlElement){this.element=$(htmlElement);if(this.element&&this.element.identify){this.id=this.element.identify();}else{this.id=null;}}});CtPage.registerScript("CtComponent");;var ctFormConfig={responseStatus:null};var CtForm=Class.create(CtComponent_Abstract,{element:null,wrapper:null,form:null,config:{},id:null,status:null,submitHandlerCache:null,returnTrigger:null,isProcessing:true,formLocker:null,_processingStartDelegates:[],_processingFinishDelegates:[],refresh:function(response){var json=response.json;var content=response.content;var redirect=(this.returnTrigger&&parseInt($F(this.returnTrigger),10))?true:false;if(redirect&&json&&!('redirect_path'in json)){json.messages.push(['"redirect_path" is not set',0]);}
var hasErrorMessages=(json&&json.messages&&this.status&&this.status.hasErrors(json.messages));if(json&&'redirect_path'in json&&redirect&&!json.hasErrors&&!hasErrorMessages){document.location.href=json.redirect_path;return;}
this.waitStatus=true;this.element.observe('CtComponent:refresh',function(event){if(event.memo.sender==this.status){this.waitStatus=false;this.element.stopObserving('CtComponent:refresh');}}.bindAsEventListener(this));if(json&&json.messages&&this.status){this.status.show(json.messages);}
if(content){if(this.status&&this.status.element){this.element.insert({after:this.status.element});this.element.update(content);this.element.insert({top:this.status.element});}else{this.element.update(content);}
this.form=this.element.down('form');if(this.form){this.reassembly();}}
this.processingFinish(response);},reassembly:function(){this.element=$(this.element.identify());this.returnTrigger=this.element.down('.ctForm-return');this.addSubmit(this.element.select('.ctForm-submit'));this.addReset(this.element.select('.ctForm-reset'));Event.observe(this.form,'submit',this.submitHandlerCache);CtPage.scriptIsReady("CtSuperSelect",function(){CtSuperSelect_Factory.refresh(this.element);}.bind(this));CtPage.scriptIsReady("CtFileExpert",function(){CtFileExpert_Factory.refresh(this.element);}.bind(this));CtPage.scriptIsReady("CtUpload",function(){CtUpload_Factory.refresh(this.element);}.bind(this));CtPage.scriptIsReady("CtValidator",function(){CtValidator_Factory.refresh(this.element);}.bind(this));CtPage.scriptIsReady("CtCollection",function(){CtCollection_Manager.refresh(this.element);}.bind(this));CtPage.scriptIsReady("CtFormLabel",function(){CtFormLabel_Factory.refresh(this.element);}.bind(this));CtPage.scriptIsReady("CtGoogleMap",function(){CtGoogleMap_Factory.refresh(this.element);}.bind(this));CtPage.scriptIsReady("CtResizableBlock",function(){CtResizableBlock_Factory.refresh(this.element);}.bind(this));CtPage.scriptIsReady("CtSimpleStyler",function(){CtSimpleStyler_Factory.refresh(this.element);}.bind(this));CtPage.scriptIsReady("CtFormLinkedInput",function(){CtFormLinkedInput_Factory.refresh(this.element);}.bind(this));CtPage.scriptIsReady("CtFormPassword",function(){CtFormPassword_Factory.refresh(this.element);}.bind(this));},addSubmit:function(htmlElementList){for(var i=0;i<htmlElementList.length;i++){var rel=htmlElementList[i].readAttribute('rel');if(Object.isString(rel)){try{rel=rel.evalJSON(true);}catch(exc){}}
htmlElementList[i].writeAttribute('rel',null);Event.observe(htmlElementList[i],'click',this.submitHandler.bindAsEventListener(this,rel));}},addReset:function(htmlElementList){for(var i=0;i<htmlElementList.length;i++){Event.observe(htmlElementList[i],'click',this.resetHandler.bindAsEventListener(this));}},initialize:function(htmlElement){this.element=$(htmlElement);this.form=this.element.down('form');if(this.form){this.id=this.form.identify();}else{this.id=this.element.identify();}
this.config=Object.extend(Object.clone(ctFormConfig),(ctFormConfig[this.id])?ctFormConfig[this.id]:{});if(this.config.responseStatus!==false){this.status=new CtComponent_Message(this.config.responseStatus);if(!Object.isElement($(this.status.element.identify()))){this.element.insert({top:this.status.element});}}else{this.status=null;}
this.submitHandlerCache=this.submitHandler.bindAsEventListener(this);if(this.form){this.reassembly();}
this.isProcessing=false;this.formLocker=new CtComponent_FormLocker(this);},addProcessingStartCallback:function(callback){this._processingStartDelegates.push(callback);},addProcessingFinishCallback:function(callback){this._processingFinishDelegates.push(callback);},processingStart:function(){this.onProcessingStart();this.isProcessing=true;this.formLocker.show();},processingFinish:function(response){this.isProcessing=false;if(this.form){this.form.enable();}
this.formLocker.hide();this.onProcessingFinish(response);if(this.waitStatus){this.element.stopObserving('CtComponent:refresh');this.element.observe('CtComponent:refresh',function(event){if(event.memo.sender==this.status){this.waitStatus=false;this.element.stopObserving('CtComponent:refresh');this.fireRefresh();}}.bindAsEventListener(this));}else{this.fireRefresh();}},fireRefresh:function(){this.element.fire('CtComponent:refresh',{sender:this});},onProcessingStart:function(){for(var i=0;i<this._processingStartDelegates.length;i++){this._processingStartDelegates[i]();}},onProcessingFinish:function(response){for(var i=0;i<this._processingFinishDelegates.length;i++){this._processingFinishDelegates[i](response);}},resetHandler:function(event){Event.stop(event);this.form.reset();},submitHandler:function(event,url){Event.stop(event);this.submit(url);},submit:function(){if(this.isProcessing){return;}
var enctype=this.form.readAttribute('enctype');if(!Object.isString(enctype)){enctype='';}
enctype=enctype.toLowerCase();if(arguments.length>0&&arguments[0]!=''&&arguments[0]!=undefined){var oldAction=this.form.readAttribute('action');if(Object.isString(arguments[0])){var request=CtPage.getRequest(this.id,enctype=='multipart/form-data'?'iframe':'ajax');if(typeof(tinyMCE)!='undefined'){tinyMCE.triggerSave();}
this.form.writeAttribute('action',arguments[0]);request.form=this.form;request.send();this.form.writeAttribute('action',oldAction);}else if('action'in arguments[0]&&'target'in arguments[0]){var oldTarget=this.form.readAttribute('target');this.form.writeAttribute('action',arguments[0].action);this.form.writeAttribute('target',arguments[0].target);Event.stopObserving(this.submitHandlerCache);this.form.submit();Event.observe(this.form,'submit',this.submitHandlerCache);this.form.writeAttribute('target',oldTarget);this.form.writeAttribute('action',oldAction);return;}}else{var request=CtPage.getRequest(this.id,enctype=='multipart/form-data'?'iframe':'ajax');if(typeof(tinyMCE)!='undefined'){tinyMCE.triggerSave();}
request.form=this.form;request.send();}
this.processingStart();}});var CtForm_DisableStyle=Class.create(CtForm,{loader:null,initialize:function(htmlElement){this.element=$(htmlElement);this.form=this.element.down('form');if(this.form){this.id=this.form.identify();}else{this.id=this.element.identify();}
this.submitHandlerCache=this.submitHandler.bindAsEventListener(this);if(this.form){this.reassembly();}
this.isProcessing=false;},reassembly:function($super){$super();var statusElement=this.element.down('.ctForm-message');if(Object.isElement(statusElement)){this.status=new CtComponent_Message(statusElement);}
this.loader=this.element.down('.ctForm-loader');},processingStart:function(){this.onProcessingStart();this.isProcessing=true;this.element.addClassName('ctForm_DisableStyle-disable');this.form.disable();this.status.element.hide();this.loader.show();this.element.fire('CtComponent:processingStart',{sender:this});},processingFinish:function(response){this.isProcessing=false;if(this.form){this.form.enable();}
this.element.removeClassName('ctForm_DisableStyle-disable');this.loader.hide();this.onProcessingFinish(response);this.element.fire('CtComponent:processingFinish',{sender:this});},refresh:function(response){this.loader.hide();var json=response.json;var content=response.content;var redirect=(this.returnTrigger&&parseInt($F(this.returnTrigger),10))?true:false;if(redirect&&json&&!('redirect_path'in json)){json.messages.push(['"redirect_path" is not set',0]);}
var hasErrorMessages=(json&&json.messages&&this.status&&this.status.hasErrors(json.messages));if(json&&'redirect_path'in json&&redirect&&!json.hasErrors&&!hasErrorMessages){if(json.messages&&json.messages.length>0&&this.status){this.status.show(json.messages);setTimeout(function(){document.location.href=json.redirect_path;},1000);}else{document.location.href=json.redirect_path;}
return;}
if(content){this.element.update(content);this.form=this.element.down('form');if(this.form){this.reassembly();}}
if(json&&json.messages&&this.status){this.status.show(json.messages);}
this.processingFinish(response);}});var CtForm_Normal=Class.create(CtComponent_Abstract,{element:null,wrapper:null,form:null,config:{},id:null,isProcessing:true,refresh:function(response){var content=response.content;if(content){var children=this.wrapper.immediateDescendants();for(var i=0;i<children.length;i++){children[i].remove();}
this.wrapper.update(content);this.form=this.element.down('form');this.reassembly();}},reassembly:function(){var buttonSubmit=this.element.down('.ctForm-submit');if(buttonSubmit){Event.observe(buttonSubmit,'click',this.submitHandler.bindAsEventListener(this));}
var buttonReset=this.element.down('.ctForm-reset');if(buttonReset){Event.observe(buttonReset,'click',this.resetHandler.bindAsEventListener(this));}
Event.observe(this.form,'submit',this.submitHandler.bindAsEventListener(this));CtPage.scriptIsReady("CtFormLabel",function(){CtFormLabel_Factory.refresh(this.element);}.bind(this));CtPage.scriptIsReady("CtGoogleMap",function(){CtGoogleMap_Factory.refresh(this.element);}.bind(this));CtPage.scriptIsReady("CtResizableBlock",function(){CtResizableBlock_Factory.refresh(this.element);}.bind(this));CtPage.scriptIsReady("CtSimpleStyler",function(){CtSimpleStyler_Factory.refresh(this.element);}.bind(this));CtPage.scriptIsReady("CtFormPassword",function(){CtFormPassword_Factory.refresh(this.element);}.bind(this));},initialize:function(htmlElement){this.element=$(htmlElement);this.form=this.element.down('form');if(this.form){this.id=this.form.identify();}else{this.id=this.element.identify();}
this.config=Object.extend(ctFormConfig,(ctFormConfig[this.id])?ctFormConfig[this.id]:{});if(this.form){this.reassembly();}
this.isProcessing=false;},resetHandler:function(event){Event.stop(event);this.form.reset();},submitHandler:function(event){Event.stop(event);this.submit();},submit:function(){if(this.isProcessing){return;}
this.form.submit();}});var CtForm_Factory=new(Class.create({initialize:function(){},refresh:function(htmlElement){var elements=[];if(htmlElement){elements=$(htmlElement).select('div.ctForm');}else{elements=$$('div.ctForm');}
var i;for(i=0;i<elements.length;i++){elements[i].removeClassName('ctForm');var form=new CtForm(elements[i]);CtPage.addComponent(form);}
if(htmlElement){elements=$(htmlElement).select('div.ctForm_Normal');}else{elements=$$('div.ctForm_Normal');}
for(i=0;i<elements.length;i++){elements[i].removeClassName('ctForm_Normal');CtPage.addComponent(new CtForm_Normal(elements[i]));}
if(htmlElement){elements=$(htmlElement).select('div.ctForm_DisableStyle');}else{elements=$$('div.ctForm_DisableStyle');}
for(i=0;i<elements.length;i++){elements[i].removeClassName('ctForm_DisableStyle');CtPage.addComponent(new CtForm_DisableStyle(elements[i]));}}}));var CtForm_Textarea=Class.create(CtComponent_Abstract,{initialize:function(htmlElement){this.element=$(htmlElement);if(this.element&&this.element.identify){this.id=this.element.identify();}else{this.id=null;}},refresh:function(response){if(this.element){this.element.value=response.content;}}});CtPage.registerScript("CtForm");;var CtFormLabel=Class.create({label:null,input:null,initialize:function(htmlElement){var element=$(htmlElement);this.label=element.up('label');if(!Object.isElement(this.label)){var labels=$$('label[for="'+element.identify()+'"]');if(labels.length>0){this.label=labels[0];}}
if(!Object.isElement(this.label)){return;}
this.input=this.label.down('input, textarea, select');if(!Object.isElement(this.input)){this.input=$(this.label.readAttribute('for'));}
if(Object.isElement(this.input)){new Form.Element.Observer(this.input,0.1,function(){if(!!this.input.getValue()){this._updateLabelState(null,false);}}.bind(this));this.input.observe('focus',this._updateLabelState.bindAsEventListener(this,false));this.input.observe('blur',this._updateLabelState.bindAsEventListener(this,true));setTimeout(function(){this._updateLabelState(null,!!!this.input.getValue());}.bind(this),500);}},_updateLabelState:function(element,showLabel){if(showLabel&&!this.input.present()){this.label.show();this.label.removeClassName('ctFormLabel-hidden');this.label.fire('CtFormLabel:shown');}else if(this.label.visible()){this.label.hide();this.label.addClassName('ctFormLabel-hidden');this.label.fire('CtFormLabel:hidden');}}});var CtFormLabel_Factory=new(Class.create({initialize:function(){},refresh:function(htmlElement){var elements=[];if(htmlElement){elements=$(htmlElement).select('.ctFormLabel');}else{elements=$$('.ctFormLabel');}
for(var i=0;i<elements.length;i++){elements[i].removeClassName('ctFormLabel');new CtFormLabel(elements[i]);}}}));CtPage.registerScript("CtFormLabel");;var CtMenu_Item=Class.create({container:null,hoverCallback:null,isLinkHover:false,isSubItemHover:false,isInputFocus:false,initialize:function(container,hoverCallback){this.container=$(container);this.hoverCallback=hoverCallback;var link=this.container.down('.ctMenu-item-link');Event.observe(link,'mouseover',this.linkMouseOverHandler.bindAsEventListener(this));Event.observe(link,'mouseout',this.linkMouseOutHandler.bindAsEventListener(this));Event.observe(link,'mousedown',this.linkMouseDownHandler.bindAsEventListener(this));Event.observe(link,'mouseup',this.linkMouseUpHandler.bindAsEventListener(this));var subItemContainer=this.container.down('.ctMenu-subitem');if(subItemContainer!==undefined){if(subItemContainer.getWidth()<this.container.getWidth()){subItemContainer.setStyle({width:this.container.getWidth()+'px'});}
Event.observe(subItemContainer,'mouseover',this.subItemMouseOverHandler.bindAsEventListener(this));Event.observe(subItemContainer,'mouseout',this.subItemMouseOutHandler.bindAsEventListener(this));}
var input=this.container.select('.ctMenu-input');for(var i=0;i<input.length;i++){Event.observe(input[i],'focus',this.inputFocusHandler.bindAsEventListener(this));Event.observe(input[i],'blur',this.inputBlurHandler.bindAsEventListener(this));}},linkMouseOverHandler:function(){this.container.addClassName('hover');this.isLinkHover=true;this.container.addClassName('menu-top-item-active');this.hoverCallback(this);},linkMouseOutHandler:function(){this.container.removeClassName('hover');this.isLinkHover=false;setTimeout(this.hideSubItem.bind(this,false),500);},subItemMouseOverHandler:function(){this.container.addClassName('hover');this.isSubItemHover=true;},subItemMouseOutHandler:function(){this.container.removeClassName('hover');this.isSubItemHover=false;setTimeout(this.hideSubItem.bind(this,false),500);},linkMouseDownHandler:function(event){if(!this.container.hasClassName('pressed')){this.container.addClassName('pressed');}},linkMouseUpHandler:function(event){this.container.removeClassName('pressed');},inputFocusHandler:function(){this.isInputFocus=true;},inputBlurHandler:function(){this.isInputFocus=false;setTimeout(this.hideSubItem.bind(this,false),1000);},hideSubItem:function(ignoreFocus){if(!this.isLinkHover&&!this.isSubItemHover&&(ignoreFocus||!this.isInputFocus)){this.container.removeClassName('menu-top-item-active');}}});var CtMenu=Class.create({items:[],initialize:function(){var items=$$('.ctMenu-item');for(var i=0;i<items.length;i++){this.items.push(new CtMenu_Item(items[i],this.hoverCallback.bind(this)));}},hoverCallback:function(item){for(var i=0;i<this.items.length;i++){if(item!=this.items[i]){this.items[i].hideSubItem(true);}}}});CtPage.registerScript('CtMenu');;Event.observe(document,'dom:loaded',function(){window.CtPopup=new(Class.create(CtComponent_Abstract,{container:null,initialize:function(){this.container=new CtComponent_ModalBox();var content=$$('.ctPopup');this.container.element.update(content[0].innerHTML);Element.remove(content[0]);this.container.container.addClassName('ctPopup');this.container.closeButton.removeClassName('controls-delete').addClassName('controls-close');this.container.closeButton.setStyle({top:'15px',right:'15px'});Event.observe(this.container.pageLocker.element,'click',function(){this.close();}.bindAsEventListener(this));this.element=this.container.element.down('.content');this.element.addClassName('ctPopup-content');this.element.id='popup';this.id=this.element.identify();CtPage.addComponent(this);},close:function(){this.container.hide();},show:function(className){if(!Object.isUndefined(className)){this.container.element.firstDescendant().writeAttribute('class',className);}
this.container.show();if(this.container.container.cumulativeOffset().top<document.viewport.getScrollOffsets().top){Effect.ScrollTo(document.body);}
this.container.container.setStyle({marginLeft:'-'+Math.ceil(this.element.getWidth()/2)+'px'});},showUrl:function(url,className){this.show(className);var params=document.location.search.toQueryParams();if('ref'in params){setCookie('popup_ref',params.ref,null,'/');}else{setCookie('popup_ref',null,new Date(0),'/');}
this.element.setStyle({width:this.element.getWidth()+'px',height:this.element.getHeight()+'px'}).addClassName('ctPopup-content-loader').update('');var request=CtPage.getRequest(this.id,'ajax');request.url=url;request.options.method='get';request.send();},showContent:function(content,className){this.element.removeClassName('ctPopup-content-loader').setStyle({width:'auto',height:'auto'});this.element.update(content);this.show(className);},refresh:function(response){if(response.content){this.showContent(response.content);}
if(response.json&&response.json.url){this.url=null;if(response.json.timeout){setTimeout(this.showUrl.bind(this,response.json.url,undefined),parseInt(response.json.timeout,10));}else{this.showUrl(response.json.url);}}
this.element.fire('CtPopup:refresh');},x:null}));CtPage.registerScript('CtPopup');});;var CtToolTip=new(Class.create({toolTip:null,initialize:function(){this.toolTip=new Element('div',{className:'ctToolTip-container',style:'display: none'}).insert(new Element('div',{className:'ctToolTip-content'})).insert(new Element('div',{className:'ctToolTip-corner'}));Event.observe(document,'dom:loaded',function(){var body=$$('body')[0];body.insert(this.toolTip);Event.observe(body,'mouseover',this.showHandler.bindAsEventListener(this));Event.observe(body,'mouseout',this.hideHandler.bindAsEventListener(this));Event.observe(this.toolTip,'mouseout',this.hideHandler.bindAsEventListener(this));}.bind(this));},showHandler:function(event){var link=event.findElement('.ctToolTip');if(Object.isElement(link)&&this.toolTip.visible()&&this.toolTip.retrieve('current')==link.identify()){return;}
try{this.toolTip.down('.ctToolTip-content').update(link.down('.ctToolTip-data').innerHTML);}catch(ex){return;}
this.setStyle(link);Effect.Queues.get('ctToolTip').effects.invoke('cancel');this.toolTip.store('current',link.identify());new Effect.Appear(this.toolTip,{duration:0.1,queue:{scope:'ctToolTip',position:'end'}});link.fire('CtToolTip:show',{element:link,toolTip:this.toolTip});},hideHandler:function(event){if(!Object.isElement(event.relatedTarget)||$(event.relatedTarget).up('.ctToolTip-container, .ctToolTip')||$(event.relatedTarget)==this.toolTip||$(event.relatedTarget).hasClassName('ctToolTip')){return;}
Effect.Queues.get('ctToolTip').effects.invoke('cancel');new Effect.Fade(this.toolTip,{duration:0.1,queue:{scope:'ctToolTip',position:'end'}});this.toolTip.fire('CtToolTip:hide',{toolTip:this.toolTip,relatedTarget:event.relatedTarget});},setStyle:function(link){var offset=link.cumulativeOffset();var position;try{position=link.down('.ctToolTip-data').readAttribute('rel')}catch(ex){position='top';}
this.toolTip.removeClassName('ctToolTip-left').removeClassName('ctToolTip-right').removeClassName('ctToolTip-bottom').removeClassName('ctToolTip-top');switch(position){case'left':this.toolTip.addClassName('ctToolTip-left');this.toolTip.setStyle({left:offset.left-this.toolTip.getWidth()+'px',top:offset.top+'px'});break;case'right':this.toolTip.addClassName('ctToolTip-right');this.toolTip.setStyle({left:offset.left+link.getWidth()+'px',top:offset.top+'px'});break;case'bottom':this.toolTip.addClassName('ctToolTip-bottom');this.toolTip.setStyle({left:offset.left+'px',top:offset.top+link.getHeight()+'px'});break;case'top':default:this.toolTip.addClassName('ctToolTip-top').setStyle({opacity:0,left:offset.left+'px'}).show();this.toolTip.hide();this.toolTip.setStyle({opacity:1,left:offset.left+'px',top:offset.top-this.toolTip.getHeight()+'px'});}}}));CtPage.registerScript('CtToolTip');;var CtResizableBlock=Class.create(CtComponent_Abstract,{initialize:function(htmlElement){this.assembly(htmlElement);},assembly:function(element){var configDefault={minHeight:0,minWidth:0,onStart:null,onEnd:null,onMove:null};var config={};try{config=element.down('.ctConfig').innerHTML.evalJSON(true);}catch(ex){}
config=Object.extend(configDefault,config);element.store('config',config);var marker,markerContainer;marker=new Element('div',{'class':'ctResizableBlock-marker'});markerContainer=element.up('div');markerContainer.relativize();markerContainer.insert({'bottom':marker});marker.observe('mousedown',function(event,element){var body,marker,config;event.stop();body=$$('body')[0];marker=event.findElement();config=element.retrieve('config');if(event.isLeftClick()){var dimensions;if(config.onStart){config.onStart(element,event);}
dimensions={width:parseInt(element.getStyle('width').replace(/px/g,'')),height:parseInt(element.getStyle('height').replace(/px/g,'')),x:event.pointerX(),y:event.pointerY()};element.store('dimensions',dimensions);}
body.observe('mouseup',function(event,element){var config=element.retrieve('config');if(Object.isFunction(config.onFinish)){config.onFinish(event,element);}
event.findElement().up('body').stopObserving('mousemove');}.bindAsEventListener(this,element));body.observe('mousemove',function(event,element){var newPos,oldPos,newWidth,newHeight,config;newPos={x:event.pointerX(),y:event.pointerY()};oldPos=element.retrieve('dimensions');newWidth=oldPos.width+newPos.x-oldPos.x;newHeight=oldPos.height+newPos.y-oldPos.y;config=element.retrieve('config');if(newHeight>config.minHeight||element.getHeight()<newHeight){element.setStyle({'height':newHeight+'px'})}
if(newWidth>config.minWidth||element.getWidth()<newWidth){element.setStyle({'width':newWidth+'px'})}
if(Object.isFunction(config.onMove)){config.onMove(event,element);}}.bindAsEventListener(this,element));}.bindAsEventListener(this,element));},x:null});var CtResizableBlock_Factory=new(Class.create({initialize:function(){Event.observe(window,'load',function(){this.refresh()}.bind(this));},refresh:function(htmlElement){var elements=[];if(htmlElement){elements=$(htmlElement).select('.ctResizableBlock');}else{elements=$$('.ctResizableBlock');}
for(var i=0;i<elements.length;i++){elements[i].removeClassName('ctResizableBlock');new CtResizableBlock(elements[i]);}}}));CtPage.registerScript("CtResizableBlock");
