
var l_registerFormValidator;var l_loginFormValidator;var l_formElementValidationDelay;var l_formValidationDelay;var l_activeForm='register';var l_serverCookie=null;var l_formElementValidationRequested=[];window.addEvent('domready',function(){g_tooltipErrorMessage=document.id('errorContainer');var registerCheckbox=document.id('registerORlogin_0'),loginCheckbox=document.id('registerORlogin_1');registerCheckbox.addEvent('click',function(){showRegister();});loginCheckbox.addEvent('click',function(){showLogin();});l_serverCookie=Cookie.read('preferredServer');var registerDiv=$("registerHideaway");var loginDiv=$("loginHideaway");registerDiv.getElements("input, a").addEvent("focus",function(){registerCheckbox.checked=true;registerDiv.removeClass('hidden');loginDiv.addClass('hidden');});loginDiv.getElements("input, a").addEvent("focus",function(){loginCheckbox.checked=true;registerDiv.addClass('hidden');loginDiv.removeClass('hidden');});if(document.id('registerORlogin_1').checked){document.id('registerORlogin_1').fireEvent('click');}
var loginServerChange=$$('#loginHideaway a.devSeverSelect');loginServerChange[0].addEvent('click',function(event){showServerSelector(event.target);return false;});var registerServerChange=$$('#registerHideaway a.devSeverSelect');registerServerChange[0].addEvent('click',function(event){showServerSelector(event.target,'register');var options=$$('#registerForm span.customSelect div');options=options[0].getChildren();options.each(function(element,index,array){element.addEvent('click',function(event){revalidateNicknameAndEmail();});});return false;});document.id('loginServerSelector').addEvent('change',function(event){if(document.id('registerUsername').getProperty('value').length<=1)
return;document.id('registerUsername').fireEvent('blur');});document.id('registerServerSelector').addEvent('change',function(event){if(document.id('registerUsername').getProperty('value').length<=1)
return;document.id('registerUsername').fireEvent('blur');});$$('#registerForm input').each(function(element,index,array){element.addEvent('keydown',function(event){$$('#registerForm input').each(function(element,index,array){element.removeEvent('keydown');});});});var inputFieldsWithValidationAdvices=$$('input.loginRegisterTooltip');inputFieldsWithValidationAdvices.each(function(element,index,array){element.addEvent('showtip',function(event){showtip(this);},element);element.addEvent('hidetip',function(event){hidetip(this);},element);});document.id('registerUsername').store('tip:message',g_lang.get('register','error_username'));document.id('registerUsername').store('tip:showToolTip',true);document.id('registerUsername').store('form:name','register');document.id('registerEmailAddress').store('tip:message',g_lang.get('register','error_email'));document.id('registerEmailAddress').store('tip:showToolTip',true);document.id('registerEmailAddress').store('form:name','register');document.id('registerPassword').store('tip:message',g_lang.get('register','error_password'));document.id('registerPassword').store('tip:showToolTip',true);document.id('registerPassword').store('form:name','register');l_registerFormValidator=new Form.Validator(document.id('registerForm'),{onFormValidate:validationForm,onElementValidate:validationElement,onElementPass:validationSucceeded,onElementFail:validationFailed});l_registerFormValidator.add('validate-unique-username',{errorMsg:'',test:function(element){var result=handleCheckUsernameEvent();if(result==null)
return true;if(result.reason=='server not found')
return true;else
return result.result;}});l_registerFormValidator.add('validate-unique-email',{errorMsg:'',test:function(element){var result=handleCheckEmailEvent();if(result==null)
return true;if(result.reason=='server not found')
return true;else
return result.result;}});document.id('registerForm').addEvent('keyup:relay(input[type=text])',function(event){var button=event.target;if(button.get('value')==0)
return;if($chk(l_formElementValidationRequested[button.get('id')])&&l_formElementValidationRequested[button.get('id')]==true)
return;else
l_formElementValidationRequested[button.get('id')]=true;l_formElementValidationDelay=l_registerFormValidator.validateField.delay(1400,l_registerFormValidator,[event.target,true]);});document.id('registerForm').addEvent('keydown:relay(input[type=text])',function(event){var button=event.target;l_formElementValidationRequested[button.get('id')]=false;$clear(l_formElementValidationDelay);});document.id('registerForm').addEvent('keyup:relay(input[type=password])',function(event){var button=event.target;if(button.get('value')==0)
return;if($chk(l_formElementValidationRequested[button.get('id')])&&l_formElementValidationRequested[button.get('id')]==true)
return;else
l_formElementValidationRequested[button.get('id')]=true;l_formElementValidationDelay=l_registerFormValidator.validateField.delay(1400,l_registerFormValidator,[event.target,true]);});document.id('registerForm').addEvent('keydown:relay(input[type=password])',function(event){var button=event.target;l_formElementValidationRequested[button.get('id')]=false;$clear(l_formElementValidationDelay);});document.id('registerForm').addEvent('keyup:click(input[type=checkbox])',function(event){l_formElementValidationDelay=l_registerFormValidator.validateField.delay(200,l_registerFormValidator,[event.target,true]);});document.id('registerForm').addEvent('checkClickability',function(event){checkClickability(this);},document.id('registerForm'));document.id('loginLink').addEvent('mousedown',function(event){closeOpenErrorMessages(document.id('loginForm'));handleLoginEvent();},document.id('loginLink'));document.id('registerLink').addEvent('mousedown',function(event){closeOpenErrorMessages(document.id('registerForm'));handleRegisterEvent();},document.id('registerLink'));document.id('loginPassword').addEvent('keydown',function(event,target){if(event.event.keyCode==13)
$('loginLink').fireEvent('mousedown');});if(l_serverCookie!=null){showLogin();loginCheckbox.checked=true;}});window.addEvent('load',function(){if(l_trigger=='login'){var radios=$$('label.radios');radios[1].getElement('input').onchange();radios[1].getElement('span').onmousedown();radios[1].getElement('span').onmouseup();document.onmouseup();radios[1].getElement('input').fireEvent('click');}});function handleLoginEvent(){var loginForm=document.id('loginForm');var tmp=loginForm.getElements('div.devServerSelectArea select');if($chk(tmp[0])){var index=tmp[0].selectedIndex;var children=tmp[0].getChildren();var server=children[index].getProperty('value');}
else{var server=g_preferredServer;}
var username=document.id('loginUsername').getProperty('value').toString();var password=document.id('loginPassword').getProperty('value').toString();handleLoginRequest(username,password,server);}
function handleCheckUsernameEvent(){var registerForm=document.id('registerForm');var tmp=registerForm.getElements('div.devServerSelectArea select');if($chk(tmp[0])){var index=tmp[0].selectedIndex;var children=tmp[0].getChildren();var server=children[index].getProperty('value');}
else{var server=g_preferredServer;}
var username=document.id('registerUsername').getProperty('value').toString();if(username.length==0)
return;var request=handleCheckUsernameRequest(server,username);return request;}
function handleCheckEmailEvent(){var registerForm=document.id('registerForm');var tmp=registerForm.getElements('div.devServerSelectArea select');if($chk(tmp[0])){var index=tmp[0].selectedIndex;var children=tmp[0].getChildren();var server=children[index].getProperty('value');}
else{var server=g_preferredServer;}
var email=document.id('registerEmailAddress').getProperty('value').toString();var request=handleCheckEmailRequest(server,email);return request;}
function handleRegisterEvent(){var result=l_registerFormValidator.validate();if(result!=true)
return;var registerForm=document.id('registerForm');var tmp=registerForm.getElements('div.devServerSelectArea select');if($chk(tmp[0])){var index=tmp[0].selectedIndex;var children=tmp[0].getChildren();var server=children[index].getProperty('value');}
else{var server=g_preferredServer;}
var username=document.id('registerUsername').getProperty('value');var email=document.id('registerEmailAddress').getProperty('value');var password=document.id('registerPassword').getProperty('value');var captchaResponse='';if(typeof grecaptcha!=="undefined"){captchaResponse=grecaptcha.getResponse();}
handleRegisterRequest(username,password,server,email,captchaResponse);}
function handleRegisterRequest(username,password,server,email,captchaResponse){var oneRequest=new Request.JSON({url:g_base_request+'register/',method:'post',data:{'server':server,'username':username,'email':email,'password':password,'captchaResponse':captchaResponse,'partner':g_partner},onRequest:function(){showLoader();},onSuccess:function(data){if(data.result==false){hideLoader(document.id('modalLoader'));handleRegisterError(data);return false;}
if(window.gfCookieConsent.consent.preferences){var cookie=new Object;cookie[g_gameLang]=server;Cookie.write('preferredServer',JSON.encode(cookie),{duration:60});}
var url=data.data.url+'/'+data.data.loginPath;var arguments=data.data.username+'/'+data.data.password+'/1'+'?kid='+g_kid+'&gfsid'+g_gfsid;redirect(url,arguments);return true;},onFailure:function(){hideLoader(document.id('modalLoader'));}}).send();}
function handleRegisterError(error){switch(error.reason){case'captcha not verified':$('registerLink').fade('out');(function(){$('recaptchaContainer').fade('in')}).delay(500);break;case'email address already exists':var emailInput=document.id('registerEmailAddress');emailInput.fireEvent('hidetip');emailInput.store('tip:showToolTip',true);emailInput.store('tip:message',g_lang.get('register','error_emailAlreadyExists'));emailInput.addClass('validation-failed');showErrorClassAndMessage(emailInput);break;case'email address is not valid':var emailInput=document.id('registerEmailAddress');emailInput.fireEvent('hidetip');emailInput.store('tip:showToolTip',true);emailInput.store('tip:message',g_lang.get('register','error_email'));emailInput.addClass('validation-failed');showErrorClassAndMessage(emailInput);break;case'PASSWORD_INVALID':var passwordInput=document.id('registerPassword');passwordInput.fireEvent('hidetip');passwordInput.store('tip:showToolTip',true);passwordInput.store('tip:message',g_lang.get('register','error_password'));passwordInput.addClass('validation-failed');showErrorClassAndMessage(passwordInput);break;case'USERNAME_TOO_SHORT':case'USERNAME_TOO_LONG':case'USERNAME_INCLUDING_UNALLOWED_LETTERS':case'USERNAME_ALREADY_EXISTS':case'USERNAME_UNALLOWED':var element=document.id('registerUsername');element.fireEvent('hidetip');element.store('tip:showToolTip',true);showCheckUsernameError(element,error.reason);break;case'could not create new knight':break;}
document.id('registerForm').fireEvent('checkClickability');return false;}
function showErrorClassAndMessage(element){element.getParent().getParent().removeClass('accepted');element.getParent().getParent().addClass('rejected');element.fireEvent('showtip');element.store('tip:showToolTip',false);}
function handleLoginRequest(username,password,server){var oneRequest=new Request.JSON({url:g_base_request+'login/'+server+'/'+username+'/'+hex_md5(password),noCache:true,onRequest:function(){showLoader();},onSuccess:function(data){if(data.result==false){hideLoader(document.id('modalLoader'));handleLoginError(data);return false;}
if(window.gfCookieConsent.consent.preferences){var cookie=new Object;cookie[g_gameLang]=server;Cookie.write('preferredServer',JSON.encode(cookie),{duration:60});}
var url=data.data.url+'/'+data.data.path;var arguments=data.data.username+'/'+data.data.md5pw+'?kid='+g_kid+'&gfsid'+g_gfsid+'&servername='+data.data.servername+'&serverlanguage='+data.data.serverlanguage;redirect(url,arguments);return true;},onFailure:function(){hideLoader(document.id('modalLoader'));}}).get();}
function handleCheckUsernameRequest(server,username){var oneRequest=new Request.JSON({url:g_base_request+'checkUsername/'+server+'/'+encodeURI(username),noCache:true,async:false,onRequest:function(){},onSuccess:function(data){if(data==null)
return;var element=document.id('registerUsername');element.fireEvent('hidetip');element.store('tip:showToolTip',true);if(data.result==false){showCheckUsernameError(element,data.reason);document.id('registerForm').fireEvent('checkClickability');return false;}
element.getParent().getParent().removeClass('rejected');element.getParent().getParent().addClass('accepted');document.id('registerForm').fireEvent('checkClickability');return true;},onFailure:function(){}}).get();return oneRequest.response.json;}
function handleCheckEmailRequest(server,email){var oneRequest=new Request.JSON({url:g_base_request+'checkEmail/'+server+'/'+email,noCache:true,async:false,onRequest:function(){},onSuccess:function(data){if(data==null)
return;var element=document.id('registerEmailAddress');element.fireEvent('hidetip');element.store('tip:showToolTip',true);if(data.result==false){switch(data.reason){case'email address is not valid':element.store('tip:message',g_lang.get('register','error_email'));break;case'email address already exists':element.store('tip:message',g_lang.get('register','error_emailAlreadyExists'));break;}
document.id('registerForm').fireEvent('checkClickability');return false;}
element.getParent().getParent().removeClass('rejected');element.getParent().getParent().addClass('accepted');document.id('registerForm').fireEvent('checkClickability');return true;},onFailure:function(){}}).get();return oneRequest.response.json;}
function showCheckUsernameError(element,error){switch(error){case'server not found':return false;break;case'USERNAME_TOO_SHORT':element.store('tip:message',g_lang.get('register','error_username'));break;case'USERNAME_TOO_LONG':element.store('tip:message',g_lang.get('register','error_username'));break;case'USERNAME_INCLUDING_UNALLOWED_LETTERS':element.store('tip:message',g_lang.get('register','error_usernameUnallowedCharacters'));break;case'USERNAME_ALREADY_EXISTS':element.store('tip:message',g_lang.get('register','error_usernameAlreadyExists'));break;case'USERNAME_UNALLOWED':element.store('tip:message',g_lang.get('register','error_usernameUnallowed'));break;}
element.getParent().getParent().removeClass('accepted');element.getParent().getParent().addClass('rejected');element.addClass('validation-failed');element.fireEvent('showtip');element.store('tip:showToolTip',false);return true;}
function handleLoginError(error){if(error.reason=='login not found'||error.reason=='username not valid'){document.id('loginUsername').store('tip:message',g_lang.get('login','error_credentialsNotFound'));showtip(document.id('loginUsername'));document.id('loginUsername').getParent().getParent().removeClass('accepted');document.id('loginUsername').getParent().getParent().addClass('rejected');document.id('loginPassword').store('tip:message',g_lang.get('login','error_credentialsNotFound'));showtip(document.id('loginPassword'));document.id('loginPassword').getParent().getParent().removeClass('accepted');document.id('loginPassword').getParent().getParent().addClass('rejected');return false;}
if(error.reason=='login event occured'){$$('#mainContent h2')[0].set('html',g_lang.get('login','error_block'));var messageContainer=buildErrorMessageContainer(error);$$('#mainContent div.startSwitch')[0].destroy();document.id('signUpLoginForm').destroy();document.id('loginLink').destroy();document.id('registerLink').destroy();var helplinks=new Element('p',{'class':'links'});var linkSupport=new Element('a',{'href':g_linkSupport,'html':g_lang.get('game','support')});var linkBoard=new Element('a',{'href':g_linkBoard,'html':g_lang.get('game','forum')});helplinks.adopt(linkSupport).adopt(linkBoard);messageContainer.adopt(helplinks);messageContainer.inject($$('#mainContent h2')[0],'after');return false;}
$$('#mainContent h2')[0].set('html',g_lang.get('login','error_communication'));var messageContainer=new Element('p',{'html':g_lang.get('login','error_gameround')+'<br /><br />'});$$('#mainContent div.startSwitch')[0].destroy();document.id('signUpLoginForm').destroy();document.id('loginLink').destroy();document.id('registerLink').destroy();var divider=new Element('span',{'html':' | '});var helplinks=new Element('p',{'class':'links'});var linkSupport=new Element('a',{'href':g_linkSupport,'html':g_lang.get('game','support')});var linkBoard=new Element('a',{'href':g_linkBoard,'html':g_lang.get('game','forum')});helplinks.adopt(linkSupport).adopt(divider.clone()).adopt(linkBoard);messageContainer.adopt(helplinks);messageContainer.inject($$('#mainContent h2')[0],'after');}
function buildErrorMessageContainer(error){var messageContainer=new Element('div',{'id':'messageContainer'});messageContainer.adopt(new Element('br',{'class':'clearfloat'}));if(error.data.ip_banned_until!=null){messageContainer.adopt(new Element('p',{'html':g_lang.get('login','error_ipIsBlocked')}));return messageContainer;}
if(error.data.blocked_until!=null&&error.data.block_reason=='PAYMENT'){messageContainer.adopt(new Element('p',{'html':g_lang.get('login','error_blockedUntil').replace('##dateTime##','<b>'+error.data.blocked_until+'</b>')}));var reason=new Element('p',{'html':'<em>'+g_lang.get('login','error_blockReason')+'</em> '+g_lang.get('login','block_payment')});messageContainer.adopt(reason);return messageContainer;}
if(error.data.blocked_until!=null){messageContainer.adopt(new Element('p',{'html':g_lang.get('login','error_blockedUntil').replace('##dateTime##','<b>'+error.data.blocked_until+'</b>')}));var from=(new Element('p')).adopt(new Element('em',{'html':g_lang.get('login','error_blockedBy')+' '})).adopt(new Element('a',{'text':error.data.userName,'href':g_supportLink}));var reason=new Element('p',{'html':'<em>'+g_lang.get('login','error_blockReason')+'</em> '+error.data.block_reason});messageContainer.adopt(from);messageContainer.adopt(reason);return messageContainer;}}
function showtip(element){if(!element.retrieve('tip:showToolTip'))
return;var offset={x:-10,y:0};var parentFormName=element.retrieve('form:name');if(parentFormName!=null&&l_activeForm!=parentFormName)
return;var position=element.getPosition();var errorContainer=document.id('errorContainer').clone();errorContainer.getFirst().getFirst().adopt(new Element('li',{html:element.retrieve('tip:message')}));document.body.adopt(errorContainer);var size=errorContainer.getSize();errorContainer.setStyles({left:position.x-size.x+offset.x,top:position.y+offset.y,display:'block'});element.store('tip:errorContainer',errorContainer);}
function hidetip(element){if($chk(element.retrieve('tip:errorContainer')))
element.retrieve('tip:errorContainer').destroy();}
function checkClickability(form){var childNodes=form.getElements('input');form.store('isClickable',true);childNodes.each(function(element,index,array){if(element.hasClass('validation-failed')){this.store('isClickable',false);}},form);}
function validationForm(validationPassed,form,event){}
function validationElement(formValidationPassed,element,failedValidators,isWarning){}
function validationSucceeded(element){element.fireEvent('hidetip');element.store('tip:showToolTip',true);switch(element.getProperty('type')){case'password':case'text':var parentStartfield=element.getParent('div.startField');break;case'checkbox':var parentStartfield=element.getParent('div.terms');break;}
parentStartfield.addClass('accepted');parentStartfield.removeClass('rejected');element.getParent('form').fireEvent('checkClickability');}
function validationFailed(element,failedValidators){element.fireEvent('showtip');element.store('tip:showToolTip',false);switch(element.getProperty('type')){case'password':case'text':var parentStartfield=element.getParent('div.startField');break;case'checkbox':var parentStartfield=element.getParent('div.terms');break;}
parentStartfield.removeClass('accepted');parentStartfield.addClass('rejected');element.getParent('form').fireEvent('checkClickability');}
function showLogin(){$("registerHideaway").addClass('hidden');$("loginHideaway").removeClass('hidden');l_activeForm='login';toggleServerSelector('login',true);toggleServerSelector('register',false);checkClickability(document.id('loginForm'));closeOpenErrorMessages(document.id('registerForm'));if(l_serverCookie==null){(function(){showServerSelector($('loginHideaway').getElement('a.devSeverSelect'))}).delay(250);}
return true;}
function closeOpenErrorMessages(form){var tooltipElements=form.getElements('.loginRegisterTooltip');tooltipElements.each(function(element,index,array){element.fireEvent('hidetip');element.store('tip:showToolTip',true);});}
function showRegister(){$("registerHideaway").removeClass('hidden');$("loginHideaway").addClass('hidden');l_activeForm='register';toggleServerSelector('register',true);toggleServerSelector('login',false);checkClickability(document.id('registerForm'));closeOpenErrorMessages(document.id('loginForm'));return true;}
function toggleServerSelector(trigger,show){var selectorPath='';switch(trigger){case'login':selectorPath='#loginHideaway div.devServerSelectArea span';break;case'register':selectorPath='#registerHideaway div.devServerSelectArea span';break;}
var serverSelector=$$(selectorPath);if(!$chk(serverSelector[0]))
return;if(show==true)
serverSelector[0].set('styles',{'visibility':'visible'});else
serverSelector[0].set('styles',{'visibility':'hidden'});}
function revalidateNicknameAndEmail(){var registUsername=document.id('registerUsername').get('value');var registEmail=document.id('registerEmailAddress').get('value');if(registUsername.length>0)
handleCheckUsernameEvent();if(registEmail.length>0)
handleCheckEmailEvent();}
window.addEvent('unload',function(){});