﻿Common.Object.extend(Common.Dom,{setOpacity:function(oElement,iValue){oElement.style.opacity=iValue;oElement.style.filter='alpha(opacity='+Math.round(iValue*100)+')';}});Common.Object.extend(Number.prototype,{between:function(iStart,iEnd,bNoInclude){var iVal=this.valueOf();if(bNoInclude){return(iVal>iStart&&iVal<iEnd);}
else{return(iVal>=iStart&&iVal<=iEnd);}},nice:function(iRoundBase){var re=/^(\d+)([\.,](\d+))?$/;var iNum=Number(this);var sNum=String(iNum);var aMatches;var sDecPart='';var sTSeparator=' ';if((aMatches=sNum.match(re))){var sIntPart=aMatches[1];var iDecPart=aMatches[3]?Number('0.'+aMatches[3]):0;if(iDecPart){var iRF=Math.pow(10,iRoundBase?iRoundBase:2);iDecPart=Math.round(iDecPart*iRF);sDecPart=iDecPart?','+iDecPart:'';}
if(Number(sIntPart)<10000){return sIntPart+sDecPart;}
else{var sNewNum='';var i;for(i=1;i*3<sIntPart.length;i++){sNewNum=sTSeparator+sIntPart.substring(sIntPart.length-i*3,sIntPart.length-(i-1)*3)+sNewNum;}
return sIntPart.substr(0,3-i*3+sIntPart.length)+sNewNum+sDecPart;}}
else{return sNum;}},toDegree:function(){return this.valueOf()/Math.PI*180;}});Common.Object.extend(String.prototype,{toNumber:function(){return Number(this.replace(/[^\d\.]/g,''));}});Common.Object.extend(Common.Utils,{getWindowSize:function(){var oResult={iWidth:0,iHeight:0};oResult.iWidth=window.innerWidth?window.innerWidth-18:document.documentElement&&document.documentElement.clientWidth?document.documentElement.clientWidth:document.body.clientWidth?document.body.clientWidth:0;oResult.iHeight=window.innerHeight?window.innerHeight:document.documentElement&&document.documentElement.clientHeight?document.documentElement.clientHeight:document.body.clientHeight?document.body.clientHeight:0;return oResult;},getWindowScroll:function(){var oResult={iScrollLeft:0,iScrollTop:0};oResult.iScrollLeft=window.pageXOffset?window.pageXOffset:document.documentElement&&document.documentElement.scrollLeft?document.documentElement.scrollLeft:document.body.scrollLeft?document.body.scrollLeft:0;oResult.iScrollTop=window.pageYOffset?window.pageYOffset:document.documentElement&&document.documentElement.scrollTop?document.documentElement.scrollTop:document.body.scrollTop?document.body.scrollTop:0;return oResult;}});function placeholder(eThis,sText,sClass_on_empty){eThis.onfocus=function(){if(eThis.value.length&&eThis.value==sText){eThis.value='';}
Common.Class.remove(this,sClass_on_empty);eThis.select();document.getElementsByTagName('body')[0].className+='';};eThis.onblur=function(){if(!this.value.length){Common.Class.add(this,sClass_on_empty);this.value=sText;document.getElementsByTagName('body')[0].className+='';}};if(!eThis.value.length){eThis.onblur();}
if(!eThis.getAttribute('placeholder')){eThis.setAttribute('placeholder',sText);}}
function initContainers(){var aContainerLinks=Common.Dom.getElementsByClassName(document,'container_link','*');if(aContainerLinks.length>0){for(var i=0,iLength=aContainerLinks.length;i<iLength;i++){Common.Class.add(aContainerLinks[i],'pseudo_link clickable');aContainerLinks[i].onclick=function(evt){var sContainerId=this.id.match(new RegExp('for_(\\w+)'))[1];var oContainer=document.getElementById(sContainerId);if(oContainer){if(Common.Class.match(oContainer,'hidden')){Common.Class.replace(this,'closed','open');Common.Class.remove(oContainer,'hidden');}
else{Common.Class.replace(this,'open','closed');Common.Class.add(oContainer,'hidden');}}
return Common.Event.cancel(evt);};}}}
function makeSearchExamples(){var eSearch=document.getElementById('search');if(eSearch){var eSearchInput=Common.Dom.getElementsByClassName(eSearch,'search_input','input')[0];var eSearchExamples=Common.Dom.getElementsByClassName(eSearch,'search_examples','div')[0];if(eSearchInput&&eSearchExamples){var aLinks=eSearchExamples.getElementsByTagName('a');if(aLinks.length>0){for(var i=0,iLength=aLinks.length;i<iLength;i++){Common.Class.add(aLinks[i],'pseudo_link');aLinks[i].onclick=function(evt){eSearchInput.value=this.innerHTML;return Common.Event.cancel(evt);};}}}}}
function makePseudoLinks(){var aPseudoLinks=Common.Dom.getElementsByClassName(document,'pseudo_link','*');if(aPseudoLinks.length>0){for(var i=0,iLength=aPseudoLinks.length;i<iLength;i++){if(aPseudoLinks[i].tagName.toLowerCase()!='a'){aPseudoLinks[i].onmouseover=function(){Common.Class.add(this,'pseudo_link_hover');};aPseudoLinks[i].onmouseout=function(){Common.Class.remove(this,'pseudo_link_hover');};}}}
Common.Event.add(window,'unload',function(){if(aPseudoLinks.length>0){for(var i=0,iLength=aPseudoLinks.length;i<iLength;i++){if(aPseudoLinks[i].tagName.toLowerCase()!='a'){aPseudoLinks[i].onmouseover=null;aPseudoLinks[i].onmouseout=null;}}}});}
function makeLogoHover(){var oLogo=document.getElementById('logo');var oSiteCaption=document.getElementById('site_caption');if(oLogo&&oSiteCaption){var oLogoLink=oLogo.getElementsByTagName('a')[0];if(oLogoLink){Common.Event.add(oLogoLink,'mouseover',function(){Common.Class.add(oSiteCaption,'hover');});Common.Event.add(oLogoLink,'mouseout',function(){Common.Class.remove(oSiteCaption,'hover');});}}}
function main(){var aeInput=document.getElementsByTagName('input');for(var i=0;i<aeInput.length;i++){if(aeInput[i].getAttribute('placeholder')){placeholder(aeInput[i],aeInput[i].getAttribute('placeholder'),'empty');}}
initContainers();makeSearchExamples();makePseudoLinks();makeLogoHover();}
function AJAXRequestClass(sURL,sMethod){this.Init();this.SetURL(sURL);this.SetMethod(sMethod);}
AJAXRequestClass.prototype.Init=function(){this.oXHR=null;this.fCallback=null;this.sURL='';this.sMethod='GET';this.sParams=null;if(window.XMLHttpRequest){this.oXHR=new XMLHttpRequest();if(this.oXHR.overrideMimeType){this.oXHR.overrideMimeType('text/xml');}}
else if(window.ActiveXObject){this.oXHR=new ActiveXObject("Microsoft.XMLHTTP");}};AJAXRequestClass.prototype.SetURL=function(sURL){this.sURL=sURL;};AJAXRequestClass.prototype.SetMethod=function(sMethod){this.sMethod=(sMethod)?sMethod:'GET';};AJAXRequestClass.prototype.SetParams=function(oParams){if(oParams){this.sParams='';for(var prop in oParams){if(oParams.hasOwnProperty(prop)){this.sParams+=prop+'='+encodeURIComponent(oParams[prop])+'&';}}
this.sParams=this.sParams?this.sParams.substr(0,this.sParams.length-1):null;}
else{this.sParams=null;}};AJAXRequestClass.prototype.SetCallback=function(fCallback){this.fCallback=fCallback;};AJAXRequestClass.prototype.Load=function(sURL,sMethod,oParams,fCallback){if(sURL){this.SetURL(sURL);}
if(sMethod){this.SetMethod(sMethod);}
if(oParams){this.SetParams(oParams);}
if(fCallback){this.SetCallback(fCallback);}
this.oXHR.open(this.sMethod,this.sURL,true);var _XHR=this.oXHR;var _me=this;this.oXHR.onreadystatechange=function(){if(_XHR.readyState==4){if(_me.fCallback){_me.fCallback(_XHR);}
else{alert('Document successfully loaded');}}};if(this.sParams){this.oXHR.setRequestHeader('Content-Type','application/x-www-form-urlencoded');}
this.oXHR.send(this.sParams);};function PopupBlock(oContainer,oLink,oFader){this.bInit=null;this.bKeep=false;var me=this;this.oContainer=oContainer;if(this.oContainer){Common.Event.add(this.oContainer,'click',function(evt){me.keep(evt);});}
this.oLink=oLink;if(this.oLink){Common.Event.add(this.oLink,'click',function(evt){if(me.toggle(evt)){return Common.Event.cancel(evt);}});}
this.oFader=oFader;}
PopupBlock.prototype.isInit=function(){if(this.bInit===null){this.bInit=this.oContainer&&this.oLink;}
return this.bInit;};PopupBlock.prototype.toggle=function(evt){if(this.isInit()){if(Common.Class.match(this.oContainer,'hidden')){this.show(evt);}
else{this.hide(evt);}
return true;}
else{return false;}};PopupBlock.prototype.show=function(evt){if(this.isInit()){Common.Class.remove(this.oContainer,'hidden');if(this.oFader){Common.Class.remove(this.oFader,'hidden');}
var me=this;this.documentClickHandler=function(evt){me.hide(evt);};this.documentKeyDownHandler=function(evt){me.cancel(evt);};Common.Event.add(document,'click',this.documentClickHandler);Common.Event.add(document,'keydown',this.documentKeyDownHandler);}};PopupBlock.prototype.keep=function(evt){if(this.isInit()){this.bKeep=true;}};PopupBlock.prototype.hide=function(evt){if(this.isInit()){if(this.bKeep){this.bKeep=false;return;}
Common.Class.add(this.oContainer,'hidden');if(this.oFader){Common.Class.add(this.oFader,'hidden');}
Common.Event.remove(document,'click',this.documentClickHandler);Common.Event.remove(document,'keydown',this.documentKeyDownHandler);}};PopupBlock.prototype.cancel=function(evt){if(this.isInit()){if((evt=Common.Event.normalize(evt))){var code=evt.keyCode?evt.keyCode:evt.which?evt.which:null;if(code==27){this.hide(evt);}}}};function LoginForm(){var me=this;var oContainer=document.getElementById('login_form');var oLinkContainer=document.getElementById('login_link');if(oLinkContainer){var oLink=oLinkContainer.getElementsByTagName('a')[0];}
var oFader=document.getElementById('fader');LoginForm.baseConstructor.call(this,oContainer,oLink,oFader);if(Common.Class.match(this.oContainer,'hidden')){this.oFader.parentNode.insertBefore(this.oContainer,this.oFader.nextSibling);}
if(this.oContainer){this.oForm=this.oContainer.getElementsByTagName('form')[0];if(this.oForm){Common.Event.add(this.oForm,'submit',function(evt){if(me.send(evt)){return Common.Event.cancel(evt);}});}
this.oClose=document.getElementById('login_form_close');if(this.oClose){Common.Event.add(this.oClose,'click',function(evt){me.hide(evt);return Common.Event.cancel(evt);});}}
this.oTitle=this.oContainer.getElementsByTagName('h2')[0];this.sTitle=this.oTitle.innerHTML;this.oUserNameInput=document.getElementById('j_username');this.oPasswordInput=document.getElementById('j_password');if(this.oPasswordInput){Common.Event.add(this.oPasswordInput,'keypress',function(evt){me.capsLockDetect(evt);});Common.Event.add(this.oPasswordInput,'blur',function(evt){me.hideCapsLockWarning(evt);});}
this.oCapsLockWarning=document.getElementById('login_form_caps_lock_warning');if(this.oPasswordInput&&this.oCapsLockWarning){this.oPasswordInput.parentNode.insertBefore(this.oCapsLockWarning,this.oPasswordInput.nextSibling);}
this.iTimer=null;Common.Event.add(window,'load',function(evt){me.iTimer=setInterval(function(){me.xFormCheck();},100);});this.oProgress=document.getElementById('login_form_progress');this.oError=document.getElementById('login_form_error');this.oAjax=new AJAXRequestClass('/j_security_check/','POST');var oAjaxCallback=function(oXHR){if(oXHR.responseText.indexOf('request-uri: /profile/')>=0){me.allow();}
else{me.deny();}};this.oAjax.SetCallback(oAjaxCallback);}
LoginForm.inheritFrom(PopupBlock,{isInit:function(){if(this.bInit===null){this.bInit=this.oContainer&&this.oForm;}
return this.bInit;},show:function(evt,bCenter,sCustomTitle){if(bCenter){Common.Class.replace(this.oContainer,'normal','center_popup');}
else{Common.Class.replace(this.oContainer,'center_popup','normal');}
if(typeof sCustomTitle==='string'){this.oTitle.innerHTML=sCustomTitle;Common.Class.add(this.oTitle,'custom');}
else{this.oTitle.innerHTML=this.sTitle;Common.Class.remove(this.oTitle,'custom');}
LoginForm.superClass.show.call(this,evt);if(this.isInit()&&this.oUserNameInput){this.oUserNameInput.focus();}},send:function(evt){if(this.isInit()&&this.oProgress&&this.oError){Common.Class.add(this.oError,'hidden');Common.Class.remove(this.oProgress,'hidden');var aInputs=this.oForm.getElementsByTagName('input');var oLoginData={};for(var i=0,iLength=aInputs.length,oInput;i<iLength;i++){oInput=aInputs[i];if(oInput.name&&(oInput.type!='checkbox'||oInput.checked)){oLoginData[oInput.name]=oInput.value;}}
this.oAjax.SetParams(oLoginData);this.oAjax.Load();return true;}
else{return false;}},allow:function(){if(this.isInit()){document.location.reload();}},deny:function(){if(this.isInit()&&this.oProgress&&this.oError){Common.Class.add(this.oProgress,'hidden');Common.Class.remove(this.oError,'hidden');}},xFormCheck:function(){if(this.isInit()&&this.oUserNameInput){if(this.oUserNameInput.value!==''){if(window.xForm){xForm.init();}}
clearInterval(this.iTimer);}},capsLockDetect:function(evt){if(this.isInit()){if((evt=Common.Event.normalize(evt))){var theKey=0;if(evt.which){theKey=evt.which;}
else
if(evt.keyCode){theKey=evt.keyCode;}
else
if(evt.charCode){theKey=evt.charCode;}
var theShift=false;if(evt.shiftKey){theShift=evt.shiftKey;}
else
if(evt.modifiers){if(evt.modifiers&4){theShift=true;}}
if(theKey>64&&theKey<91&&!theShift){this.showCapsLockWarning(evt);}
else
if(theKey>96&&theKey<123&&theShift){this.showCapsLockWarning(evt);}
else{this.hideCapsLockWarning(evt);}}}},showCapsLockWarning:function(evt){if(this.isInit()&&this.oCapsLockWarning){Common.Class.remove(this.oCapsLockWarning,'hidden');}},hideCapsLockWarning:function(evt){if(this.isInit()&&this.oCapsLockWarning){Common.Class.add(this.oCapsLockWarning,'hidden');}}});function Observable(){this.aObservers=[];}
Observable.prototype={attachObserver:function(sEventType,mObserver){if(!(mObserver instanceof Object)){return;}
if(!this.aObservers[sEventType]){this.aObservers[sEventType]=[];}
this.aObservers[sEventType].push(mObserver);},detachObserver:function(sEventType,mObserver){if(this.aObservers[sEventType]&&this.aObservers[sEventType].contains(mObserver)){this.aObservers[sEventType].remove(mObserver);}},notify:function(sEventType){if(!this.aObservers[sEventType]){return;}
for(var i=0,aObservers=this.aObservers[sEventType],iLength=aObservers.length;i<iLength;i++){if(aObservers[i]instanceof Function){aObservers[i](sEventType,this);}
else
if(aObservers[i].update instanceof Function){aObservers[i].update(sEventType,this);}}}};function TabSwitch(aSwitchItems,aContentAreas){TabSwitch.baseConstructor.call(this);this.aSwitchItems=aSwitchItems;this.aContentAreas=aContentAreas;this.oSwitchItemSelected=null;var i=0;var iLength=0;for(i=0,iLength=this.aSwitchItems.length;i<iLength;i++){if(Common.Class.match(this.aSwitchItems[i],'selected')){this.oSwitchItemSelected=this.aSwitchItems[i];break;}}
var me=this;for(i=0,iLength=this.aSwitchItems.length;i<iLength;i++){(function(oSwitchItem){var oInnerPseudoLink=Common.Dom.getElementsByClassName(oSwitchItem,'pseudo_link','span')[0];Common.Event.add(oInnerPseudoLink?oInnerPseudoLink:oSwitchItem,'click',function(evt){me.switchTab(oSwitchItem);});})(me.aSwitchItems[i]);}}
TabSwitch.inheritFrom(Observable,{switchTab:function(oSwitchItem){if(this.oSwitchItemSelected!=oSwitchItem){if(this.oSwitchItemSelected){Common.Class.remove(this.oSwitchItemSelected,'selected');}
Common.Class.add(oSwitchItem,'selected');this.oSwitchItemSelected=oSwitchItem;var sClassName=oSwitchItem.className.match(new RegExp('for_(\\w+)'))[1];if(sClassName=='all'){this.showAll();}
else{this.hideAll();for(var i=0,iLength=this.aContentAreas.length;i<iLength;i++){if(Common.Class.match(this.aContentAreas[i],sClassName)){Common.Class.remove(this.aContentAreas[i],'hidden');}}}
this.notify(sClassName);}},hideAll:function(){for(var i=0,iLength=this.aContentAreas.length;i<iLength;i++){Common.Class.add(this.aContentAreas[i],'hidden');}},showAll:function(){for(var i=0,iLength=this.aContentAreas.length;i<iLength;i++){Common.Class.remove(this.aContentAreas[i],'hidden');}}});
