
function getBaseDomain(){var domain="";if(document.domain){domainAry=document.domain.split(".");var topDomain=domainAry.pop();var domainName=domainAry.pop();if(topDomain){domain=domainName+'.'+topDomain;}
else{domain=domainName;}}
return domain;}
function el(id){if(document.getElementById){return document.getElementById(id);}
else if(window[id]){return window[id];}}
function getStaticDomain(){var staticDomain="";var baseDomain=getBaseDomain();if(baseDomain!=null){staticDomain=getProtocol()+"www."+baseDomain;}
return staticDomain;}
function getProtocol(){var protocol="http://";if(document.location.protocol=="https:"){protocol="https://";}
return protocol;}
function getByTagAndClass(source,tagName,className){if(source==null||tagName==null){return null;}
var ret=null;var elements=source.getElementsByTagName(tagName);for(i=0;i<elements.length;i++){var obj=elements[i];if(obj.className==className){ret=obj;}}
return ret;}
function L(str,replacements){var ret=LOCAL_STRINGS[str];if(typeof(ret)=='undefined'){ret=str;}
ret=ret.replace(/{NEWLINE}/g,'<br/>');if(replacements instanceof Object){for(var replacement in replacements){var name=replacement;var value=replacements[name];if(name=="URL"){ret=replaceLink(ret,value);}
else{ret=ret.replace(new RegExp('{'+name+'}','g'),value);}}}
else{if(replacements){ret=ret.replace(new RegExp("{.*}"),replacements);}}
return ret;}
function replaceLink(str,link){var linkStart="<a";if(typeof(link)=='object'){var linkHref=link.href;}
else{var linkHref=link;}
if(!linkHref){linkHref="#";}
linkStart+=" href=\""+linkHref+"\"";if(link.onClick){linkStart+=" onclick=\""+link.onClick+" return false; \"";}
linkStart+=">";str=str.replace("{START_URL}",linkStart);var linkEnd="</a>";str=str.replace("{END_URL}",linkEnd);return str;}
String.prototype.isEmpty=function(){var s=this.toString();return((s==null)||(s.length==0))}
String.prototype.trim=function(){var s=this.toString();if(s!=null){s=s.replace(/^ *| *$/g,"");}
return s;}
String.prototype.htmlEntities=function(){return this.replace(/&/g,'&amp;').replace(/</g,'&lt;').replace(/>/g,'&gt;');}
String.prototype.nl2br=function(){return this.replace(/(\r\n)|(\n\r)|\r|\n/g,"<br/>");}
function toArray(pseudoArray){var result=[];for(var i=0;i<pseudoArray.length;i++)
result.push(pseudoArray[i]);return result;}
function getSelectValue(selectElement){var selectedId=selectElement.selectedIndex;if(selectedId!=null&&selectedId>=0){return selectElement.options[selectedId].value;}}
function setSelectValue(selectElement,value){var len=selectElement.options.length;var selectedId=null;for(i=0;i<len;i++){var option=selectElement.options[i];if(option.value==value){selectedId=i;}}
if(selectedId!=null){selectElement.selectedIndex=selectedId;}}
function isValidStatus(status){var isValid=true;if(status==null||status=='error'||status.error!=null){if(status.error=='session'){}
isValid=false;}
return isValid;}
function htmlentities(s){var div=document.createElement('div');var text=document.createTextNode(s);div.appendChild(text);return div.innerHTML;}
var StatusBox=new Class({Implements:[Options],options:{divId:'statusBox'},initialize:function(options){this.setOptions(options);this.visible=false;var div=$(this.options.divId);if(!div){return;}
this.fx=new Fx.Tween(div,{duration:700,wait:false}).set('opacity',0);},setText:function(text){$(this.options.divId).innerHTML=text;this.show();},show:function(seconds){this.fx.set('opacity',1);if(seconds){this.setAutoHide(seconds);}},hide:function(){this.fx.start('opacity',0);},setAutoHide:function(seconds){if(seconds){clearTimeout(this.timer);this.timer=setTimeout(this.hide.bind(this),seconds*1000);}}});var ConnectionManager=new Class({options:{requestPath:"/",timeout:20*1000},initialize:function(){this.isBusy=false;this.conn=null;this.queue=[];this.createTransport();},onRetry:function(e,requestId){e=new Event(e).stop();var queueItem=this.getQueueItemById(requestId);if(queueItem!==null){this.removeFromQueue(requestId);statusBox.setText(L("Retrying..."));this.request(queueItem.actionName,queueItem.queryParams,queueItem.requestType);}},onSuccess:function(requestId){var queueItem=this.getQueueItemById(requestId);if(queueItem!==null){clearTimeout(queueItem.timeoutCallback);}
this.callNextQueueItem();},onTimeout:function(requestId){this.stopWithMessage(requestId,L("Connection timeout. Action '{ACTION_NAME}' failed. {START_URL}Try again?{END_URL}"));},onError:function(requestId){this.stopWithMessage(requestId,L("Error. Action '{ACTION_NAME}' failed. {START_URL}Try again?{END_URL}"));},stopWithMessage:function(requestId,messageId){if(this.isBusy){this.transport.abort();this.isBusy=false;}
this.clearTimeouts();var queueItem=this.getQueueItemById(requestId);if(queueItem!==null){var retryLink='#';if(typeof statusBox!="undefined"){var span=document.createElement('span');span.innerHTML=L(messageId,{"ACTION_NAME":queueItem.actionName,"URL":retryLink})
var hrefs=span.getElementsByTagName('a');if(hrefs.length==1){var href=hrefs[0];href.onclick=this.onRetry.bindWithEvent(this,requestId);}
statusBox.setText(span.innerHTML);};}},request:function(actionName,queryParams,requestType){if(requestType==null){requestType=ConnectionManager.REQUEST_TYPE_GET;}
var queueItem=this.createQueueItem(actionName,queryParams,requestType);this.queue.push(queueItem);if(!this.isBusy){this.isBusy=true;var requestUrl=this.options.requestPath;requestUrl+="?action="+actionName;requestUrl=encodeURI(requestUrl);var requestParams="r="+encodeURIComponent(queueItem.itemId);if(queryParams!=null){requestParams+="&p="+encodeURIComponent(JSON.encode(queryParams));}
if(requestType==ConnectionManager.REQUEST_TYPE_GET){requestUrl+="&"+requestParams;this.transport.open("GET",requestUrl,true);}
else{this.transport.open("POST",requestUrl,true);this.transport.setRequestHeader("Content-Type","application/x-www-form-urlencoded");}
this.transport.onreadystatechange=this.onStateChange.bind(this);if(requestType==ConnectionManager.REQUEST_TYPE_GET){this.transport.send(null);}
else{this.transport.send(requestParams);}}},onStateChange:function(){if(this.transport.readyState==4){if(this.transport.responseText){if(this.transport.responseText.charAt(0)=="<"){alert("HTTP error:"+this.transport.responseText);this.onError(queueItem.itemId);}
else{eval(this.transport.responseText);}}}},clearTimeouts:function(){for(i=0;i<this.queue.length;i++){var queueItem=this.queue[i];var timeoutCallback=queueItem.timeoutCallback;if(timeoutCallback!==null){clearTimeout(timeoutCallback);}}},callNextQueueItem:function(){this.clearTimeouts();this.isBusy=false;this.queue.shift();var queueLength=this.queue.length;if(queueLength>0){var lastItem=this.queue.pop();this.request(lastItem.actionName,lastItem.queryParams,lastItem.requestType);}},getQueueItemById:function(id){var item=null;for(var i=0;i<this.queue.length;i++){var queueItem=this.queue[i];if(queueItem.itemId==id){item=queueItem;break;}}
return item;},removeFromQueue:function(id){var startId=null;for(var i=0;i<this.queue.length;i++){var queueItem=this.queue[i];if(queueItem.itemId==id){if(queueItem.timeoutCallback){clearTimeout(queueItem.timeoutCallback);queueItem.timeoutCallback=null;}
startId=i;break;}}
if(startId!==null){this.queue.splice(startId,1);}},createQueueItem:function(actionName,queryParams,requestType){var me=this;var itemId=$random(1,999999);var errorCallback=function(){me.onTimeout(itemId);};var timeoutCallback=setTimeout(errorCallback,this.options.timeout);var queueItem={"itemId":itemId,"actionName":actionName,"queryParams":queryParams,"requestType":requestType,"date":new Date(),"timeoutCallback":timeoutCallback};return queueItem;},createTransport:function(){this.transport=null;if(window.XMLHttpRequest){this.transport=new XMLHttpRequest();}
else{var ex;try{this.transport=new ActiveXObject("Msxml2.XMLHTTP.4.0");}
catch(ex){try{this.transport=new ActiveXObject("MSXML2.XMLHTTP");}
catch(ex){try{this.transport=new ActiveXObject("Microsoft.XMLHTTP");}
catch(ex){}}}}}});ConnectionManager.implement(new Options);ConnectionManager.REQUEST_TYPE_GET="get";ConnectionManager.REQUEST_TYPE_POST="post";var SignupManager=new Class({initialize:function(){this.preloadIcons();this.connectionManager=new ConnectionManager();this.usernameField=$("username");this.emailField=$("electronicalMail");this.passwordField=$("password");this.passwordConfirmField=$("passwordConfirm");this.termsField=$("terms");this.usernameStatus=$("usernameStatus");this.emailStatus=$("emailStatus");this.passwordStatus=$("passwordStatus");this.passwordConfirmStatus=$("passwordConfirmStatus");this.termsStatus=$("termsStatus");this.addressPreview=$("userAddressPreview");this.hashField=$("hash");this.usernameField.onkeyup=this.checkUsername.bind(this);this.emailField.onkeyup=this.checkEmail.bind(this);this.passwordField.onkeyup=this.checkPassword.bind(this);this.passwordConfirmField.onkeyup=this.checkPasswordConfirm.bind(this);this.termsField.onclick=this.validateTerms.bind(this);this.form=$("signupForm");this.form.onsubmit=this.checkForm.bind(this);if(!this.usernameField.value.isEmpty()){this.checkForm();}
L("Username '{USERNAME}' is not available.");L("Username '{USERNAME}' is available.");L("No special symbols allowed.");},preloadIcons:function(){var okIcon=new Image();okIcon.src=getStaticDomain()+"/resources/img/all/ico_ok.png";var errIcon=new Image();errIcon.src=getStaticDomain()+"/resources/img/all/ico_err.png";},setSuccess:function(obj,msg){if(msg==null){msg="&nbsp;"}
obj.innerHTML="<span>"+msg+"</span>";obj.className="success";},setError:function(obj,msg){if(msg==null){msg="&nbsp;"}
obj.innerHTML="<span>"+msg+"</span>";obj.className="error";},updateAddressPreview:function(username){return;var previewText=null;if(username.length==0){this.addressPreview.addClass('hidden');}
else{var usr=username.replace(".","");usr=usr.toLowerCase();var url="http://"+usr+'.'+getBaseDomain();previewText=L("Your forms will be available at {START_URL}{SITE_ADDRESS}{END_URL}",{"URL":url,"SITE_ADDRESS":url});this.addressPreview.innerHTML=previewText;this.addressPreview.removeClass('hidden');}},checkUsername:function(){if(this.usernameField.value.isEmpty()){this.setError(this.usernameStatus,L("Username is empty."));this.updateAddressPreview(this.usernameField.value);return false;}
else{if(this.usernameField.value.length<3){this.setError(this.usernameStatus,L("At least 3 chars required."));return false;}}
var username=escape(this.usernameField.value);this.connectionManager.request('account.ajax.ValidateUsernameAction',{"username":username});return this.usernameAvailable;},checkEmail:function(){if(this.emailField.value.isEmpty()){this.setError(this.emailStatus,L("Email address is empty."));return false;}
var email=escape(this.emailField.value);this.connectionManager.request('account.ajax.ValidateEmailAction',{"email":email});return this.emailAvailable;},checkPassword:function(){if(this.passwordField.value.isEmpty()||this.passwordField.value.length<5){this.setError(this.passwordStatus,L("At least 5 chars required."));return false;}
this.setSuccess(this.passwordStatus);return true;},checkPasswordConfirm:function(){this.checkPassword();if(this.passwordConfirmField.value.isEmpty()||this.passwordConfirmField.value.length<5){this.setError(this.passwordConfirmStatus,L("At least 5 chars required."));return false;}
else{if(this.passwordConfirmField.value!=this.passwordField.value){this.setError(this.passwordConfirmStatus,L("Passwords should be equal."));return false;}
this.setSuccess(this.passwordConfirmStatus);return true;}},checkTerms:function(){return this.termsField.checked==true;},validateTerms:function(){if(this.checkTerms()){this.setSuccess(this.termsStatus);}
else{this.setError(this.termsStatus);}},checkForm:function(){this.hashField.value=this.usernameField.value+this.emailField.value;this.validateTerms();if(this.checkUsername()&this.checkEmail()&this.checkPassword()&this.checkPasswordConfirm()&this.checkTerms()){return true;}
return false;},eval:function(str,errorStatusSpan){try{eval(str);}
catch(e){alert(str);this.setSuccess(errorStatusSpan);}},setUsernameValid:function(valid,message){if(valid){this.updateAddressPreview(this.usernameField.value);this.setSuccess(this.usernameStatus,L(message,this.usernameField.value));this.usernameAvailable=true;}
else{this.updateAddressPreview('');this.setError(this.usernameStatus,L(message,this.usernameField.value));this.usernameAvailable=false;}},setEmailValid:function(valid,message){if(valid){this.setSuccess(this.emailStatus);this.emailAvailable=true;}
else{this.setError(this.emailStatus,L(message,this.emailField.value));this.emailAvailable=false;}}});var SignupDetailsManager=new Class({initialize:function(accountTypeId,pricePerMonth,pricePerYear){this.accountTypeId=accountTypeId;this.pricePerMonth=pricePerMonth;this.pricePerYear=pricePerYear;this.typeCodeSelect=$("typeCode");this.typeCodeSelect.onchange=this.onTypeCodeChanged.bind(this);this.paymentPeriodSelect=$("paymentPeriod");this.paymentPeriodSelect.onchange=this.onPaymentPeriodChanged.bind(this);this.promotionalCodeInput=$('promotionalCode');this.promotionalCodeApplyLink=$('applyPromotionalCode');this.promotionalCodeApplyLink.onclick=this.onApllyPromotionalCodeClicked.bindWithEvent(this);},onTypeCodeChanged:function(){var typeCode=getSelectValue(this.typeCodeSelect);if(typeCode=='private'){$$('.privateFields').each(function(el){el.removeClass('hidden');});$$('.corporateFields').each(function(el){el.addClass('hidden');});}
else{$$('.privateFields').each(function(el){el.addClass('hidden');});$$('.corporateFields').each(function(el){el.removeClass('hidden');});}},onApllyPromotionalCodeClicked:function(e){e=new Event(e);e.stop();var code=this.promotionalCodeInput.value;if(code!=''){statusBox.setText(L("Loading..."));var options={url:'/?action=account.billing.ValidatePromotionalCodeAction',method:'post',onComplete:this.onValidateResponseReceived.bind(this)};var data={'promotionalCode':code,'accountTypeId':this.accountTypeId};var req=new Request.JSON(options);req.post({'json':JSON.encode(data)});}},onValidateResponseReceived:function(data){statusBox.hide();if(data=='error'){$('promotionalCodeError').removeClass('hidden');}
else{this.pricePerMonth=data.pricePerMonth;this.pricePerYear=data.pricePerYear;this.onPaymentPeriodChanged();$('promotionalCodeError').addClass('hidden');}},onPaymentPeriodChanged:function(){var paymentPeriod=getSelectValue(this.paymentPeriodSelect);var paymentPeriodSpan='';if(paymentPeriod==1){paymentPeriodSpan=this.pricePerMonth+' <span class="perPeriod">'+L('per month')+'</span>';}
else{paymentPeriodSpan=this.pricePerYear+' <span class="perPeriod">'+L('per year')+'</span>';}
$('orderTotal').innerHTML=paymentPeriodSpan;}});var signupManger=null;var statusBox=null;var signupDetailsManager=null;function init(accountTypeId,pricePerMonth,pricePerYear){signupManager=new SignupManager();if(accountTypeId&&accountTypeId>1){statusBox=new StatusBox();signupDetailsManager=new SignupDetailsManager(accountTypeId,pricePerMonth,pricePerYear);}}