HabboView.add(function(){HabboEditor.addCallback("setGender",function(value){$("register-gender").value=value
});
HabboEditor.addCallback("setFigure",function(value){$("register-figure").value=value
});
HabboEditor.addCallback("setEditorState",function(value){$("register-editor-state").value=value
});
window.refreshingAvatars=false;
RegistrationForm.createNameTooltip();
if($("register-avatars-refresh")){Event.observe($("register-avatars-refresh"),"click",function(e){window.refreshingAvatars=true
})
}RegistrationForm.previousName=$F("register-name");
Event.observe($("register-name"),"keyup",function(e){var value=$F("register-name");
if(value!=RegistrationForm.previousName){Event.element(e).removeClassName("error");
RegistrationForm.previousName=value;
if(RegistrationForm.Validator._waitingForValidName){RegistrationForm.Validator._waitingForValidName=false;
RegistrationForm.createNameTooltip();
Tips.get($("register-name")).showTip()
}}});
Event.observe($("register-name-check"),"click",function(e){Event.stop(e);
var name=$F("register-name");
if(name!=""&&$F("register-name")!=RegistrationForm.Validator._lastCheckedName){RegistrationForm.Validator.checkNameAvailability()
}else{$("register-name").focus()
}});
$("register-name-check-container").show();
if($("register-password")){RegistrationForm.createPasswordTooltip();
Event.observe($("register-password"),"focus",function(e){RegistrationForm.passwordFieldHasFocus=true
});
Event.observe($("register-password"),"blur",function(e){RegistrationForm.passwordFieldHasFocus=false
});
new Form.Element.Observer($("register-password"),0.5,RegistrationForm.Validator.checkPasswordValidity);
new Form.Element.Observer($("register-password2"),0.5,function(el,value){if(value!=""){if(value==$F("register-password")){el.removeClassName("error");
el.addClassName("register-ok")
}else{el.removeClassName("register-ok");
el.addClassName("error")
}}else{el.removeClassName("error");
el.removeClassName("register-ok")
}})
}Event.observe($("register-terms-link"),"click",function(e){Event.stop(e);
var elem=Event.element(e);
window.open(elem.href,elem.target,"toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=yes,resizable=yes,width=820,height=500")
});
if($("register-name-other")){RegistrationForm.Validator._waitingForValidName=true;
Event.observe($("register-name"),"focus",function(e){$("register-name-other").checked=true
});
document.getElementsByClassName("register-name-suggestion").each(function(el){Event.observe(el,"change",function(e){if(Event.element(e).checked){RegistrationForm.Validator._waitingForValidName=false
}})
})
}new Form.Element.Observer($("register-email"),0.2,function(el,value){if(value!=""){if(RegistrationForm.Validator.validateEmail(value)){el.removeClassName("error");
el.addClassName("register-ok")
}else{el.removeClassName("register-ok");
el.addClassName("error")
}}else{el.removeClassName("error");
el.removeClassName("register-ok")
}});
new Form.Element.Observer($("register-email2"),0.2,function(el,value){if(value!=""){if(value==$F("register-email")){el.removeClassName("error");
el.addClassName("register-ok")
}else{el.removeClassName("register-ok");
el.addClassName("error")
}}else{el.removeClassName("error");
el.removeClassName("register-ok")
}});
Event.observe($("registerform"),"submit",function(e){if(!window.refreshingAvatars){if($("register-parentEmail-bubble")){var value=$F("register-parentEmail-bubble");
if(!value||value.search(/[^@]+@[^@]+/i)==-1){Event.stop(e);
Element.addClassName($("register-parentEmail-bubble"),"error")
}}else{if(RegistrationForm.Validator._waitingForValidName){Event.stop(e);
$("register-name").focus();
$("registerform").scrollTo()
}else{if(!RegistrationForm.Validator.validate()){Event.stop(e)
}else{if(!RegistrationForm.isRegistrationAllowed()){Event.stop(e);
RegistrationForm.showAgeLimitMessage()
}else{if(!$("register-parentEmail")&&RegistrationForm.isParentEmailNeeded()){Event.stop(e);
RegistrationForm.showParentEmailField()
}}}}}}})
});
RegistrationForm={ageLimit:-1,parentEmailAgeLimit:-1,passwordFieldHasFocus:false,previousName:null,registrationTipStyle:{className:"bubbletip left",title:" ",hook:{target:"topRight",tip:"bottomRight"},offset:{x:50,y:-3},fixed:true,startEvent:"focus",endEvent:"blur"},cancel:function(qs){location.href=habboReqPath+"/register/cancel"+(qs||"")
},isParentEmailNeeded:function(){if(RegistrationForm.parentEmailAgeLimit>-1){var age=RegistrationForm._calculateAge();
if(age!=-1){return age<=RegistrationForm.parentEmailAgeLimit
}}return false
},showParentEmailField:function(){RegistrationForm._showErrorBubble("register-parent-email",L10N.get("register.message.parent_email_js_form"),function(){RegistrationForm._disableFormFields(true,["register-button-continue","register-parentEmail-bubble","register-parent-ok"])
});
$("register-parentEmail-bubble").focus();
RegistrationForm._track("parentEmail")
},showAgeLimitMessage:function(){RegistrationForm._showErrorBubble("register-ageLimit",L10N.get("register.message.age_limit_ban"),function(){RegistrationForm._disableFormFields(false,["register-parentEmail-cancel"])
});
RegistrationForm._track("ageLimit")
},isRegistrationAllowed:function(){if(RegistrationForm.ageLimit>-1){var age=RegistrationForm._calculateAge();
if(age!=-1){return age>=RegistrationForm.ageLimit
}}return true
},createNameTooltip:function(){new Tip("register-name",L10N.get("register.tooltip.name"),RegistrationForm.registrationTipStyle)
},createPasswordTooltip:function(){new Tip("register-password",L10N.get("register.tooltip.password"),RegistrationForm.registrationTipStyle)
},updateNameFromBubble:function(name){var el=$("register-name");
el.value=name;
el.removeClassName("error");
el.addClassName("register-ok");
RegistrationForm.Validator._lastCheckedName=name;
RegistrationForm.Validator._waitingForValidName=false;
RegistrationForm.createNameTooltip();
el.focus()
},_showErrorBubble:function(id,html,formCallback){var registerForm=$("registerform");
var box=Builder.node("div",{id:id,className:"redtip"},[Builder.node("div",{className:"title"}),Builder.node("div",{className:"content"},[Builder.build(html)])]);
registerForm.appendChild(box);
Element.hide(box);
if(formCallback){formCallback()
}var dim=Element.getDimensions(box);
var parentDim=Element.getDimensions(registerForm);
box.style.left=(parentDim.width-dim.width/2-20)+"px";
box.style.top=($("register-button-continue").offsetTop-dim.height-5)+"px";
Element.show(box)
},_calculateAge:function(){var year=$F("bean_year");
var month=$F("bean_month");
var day=$F("bean_day");
if(year&&month&&day){var now=new Date();
var birthDate=new Date();
birthDate.setFullYear(year,month-1,day);
var age=now.getFullYear()-birthDate.getFullYear();
if((birthDate.getMonth()>now.getMonth())||(birthDate.getMonth()==now.getMonth()&&birthDate.getDate()>now.getDate())){age--
}if(age>=0){return age
}}return -1
},_disableFormFields:function(createHiddenFields,enabledIds){var registerForm=$("registerform");
var els=registerForm.getElementsByTagName("*");
$A(els).each(function(el){if((el.tagName.toLowerCase()=="select"||el.tagName.toLowerCase()=="input")&&el.type!="hidden"&&enabledIds.indexOf(el.id)==-1){el.disabled=true;
if(createHiddenFields&&el.type!="button"){var value=el.value;
var name=el.name;
el.name=name+"Disabled";
registerForm.appendChild(Builder.node("input",{type:"hidden",name:name,value:value}))
}}})
},_track:function(name){if(window.urchinTracker){urchinTracker("/register/"+name)
}}};
RegistrationForm.Validator={_lastCheckedName:null,_lastCheckedPassword:null,_tipChanged:false,_waitingForValidName:false,validate:function(){var ok=true;
var updateStatus=function(name,validator,options){var opts=options||{errorField:null,errorMsg:null};
if(!validator()){ok=false;
RegistrationForm.Validator._showError(name,opts.errorField,opts.errorMsg)
}else{RegistrationForm.Validator._hideError(name,opts.errorField,opts.errorMsg)
}};
updateStatus("name",function(){return !!$F("register-name")&&!$("register-name").hasClassName("error")
});
updateStatus("birthday",function(){if(!$F("bean_year")||!$F("bean_month")||!$F("bean_day")){return false
}return new Date().setFullYear($F("bean_year"),$F("bean_month")-1,$F("bean_day"))<new Date()
},{errorField:$("register-birthday")});
var pw=$F("register-password");
if(!pw){RegistrationForm.Validator._showError("password",null,L10N.get("register.error.password_required"))
}else{if(pw.length<6){RegistrationForm.Validator._showError("password",null,L10N.get("register.error.password_too_short"))
}}updateStatus("password",function(){return !!$F("register-password2")
},{errorField:$("register-password2")});
updateStatus("email",function(){return RegistrationForm.Validator.validateEmail($F("register-email"))
});
var email2=$F("register-email2");
if(!email2||$F("register-email")!=email2){if(!email2){RegistrationForm.Validator._showError("email","email2",L10N.get("register.error.retyped_email_required"))
}else{RegistrationForm.Validator._showError("email","email2",L10N.get("register.error.retyped_email_notsame"))
}$("register-email2").addClassName("error")
}else{$("register-email2").removeClassName("error")
}if($("register-parentEmail")){updateStatus("parentEmail",function(){var email=$F("register-parentEmail");
return !!email&&email.search(/[^@]+@[^@]+/i)!=-1
})
}updateStatus("terms",function(){return !!$F("register-terms-check")
},{errorField:$("register-terms-content")});
if($("register-captcha")){updateStatus("captcha",function(){return !!$F("register-captcha")
})
}return ok
},checkNameAvailability:function(){var name=$F("register-name");
if(name!=""&&name!=RegistrationForm.Validator._lastCheckedName){$("register-name").addClassName("register-loading");
RegistrationForm.Validator._lastCheckedName=name;
new Ajax.Request(habboReqPath+"../habblet/ajax/namecheck.cfm",{method:"post",parameters:{name:name},onComplete:function(req,jsonObj){$("register-name").removeClassName("register-loading");
new Tip("register-name",req.responseText,RegistrationForm.registrationTipStyle);
RegistrationForm.Validator._tipChanged=true;
$("register-name").focus()
if(jsonObj.registration_name_in_use||jsonObj.registration_name){$("register-name").removeClassName("register-ok");
$("register-name").addClassName("error");
var errorText;
if(jsonObj.registration_name_in_use&&req.responseText!=""){errorText=req.responseText
}else{errorText=(jsonObj.registration_name)?jsonObj.registration_name:jsonObj.registration_name_in_use
}new Tip("register-name",errorText,{className:"bubbletip left",title:" ",hook:{target:"topRight",tip:"bottomRight"},offset:{x:50,y:-3},fixed:true,startEvent:"focus",endEvent:null});
RegistrationForm.Validator._boundNameClickObserver=RegistrationForm.Validator._nameClickObserver.bindAsEventListener(document);
RegistrationForm.Validator._waitingForValidName=true;
Event.observe(document,"click",RegistrationForm.Validator._boundNameClickObserver);
$("register-name").focus()
}else{$("register-name").removeClassName("error");
$("register-name").addClassName("register-ok");
RegistrationForm.createNameTooltip();
$("name-error-box").hide();
RegistrationForm.Validator._waitingForValidName=false;
Event.stopObserving(document,"click",RegistrationForm.Validator._boundNameClickObserver)
}}})
}else{if(name==""){$("register-name").removeClassName("register-ok")
}}},checkPasswordValidity:function(el,value){if(value&&value.length>=6){RegistrationForm.Validator._lastCheckedPassword=value;
new Ajax.Request(habboReqPath+"../habblet/ajax/password.cfm",{method:"post",parameters:{password:value},onComplete:function(req,jsonObj){var el=$("register-password");
if(jsonObj=="charOk"){el.removeClassName("error");
el.addClassName("register-ok")
}else{el.removeClassName("register-ok")
}new Tip("register-password",req.responseText,RegistrationForm.registrationTipStyle);
RegistrationForm.Validator._tipChanged=true;
if(RegistrationForm.passwordFieldHasFocus){Tips.get(el).showTip()
}}})
}else{if(value!=RegistrationForm.Validator._lastCheckedPassword&&RegistrationForm.Validator._tipChanged){RegistrationForm.createPasswordTooltip();
RegistrationForm.Validator._tipChanged=false;
el.removeClassName("register-ok");
if(RegistrationForm.passwordFieldHasFocus){Tips.get($("register-password")).showTip()
}}}},validateEmail:function(email){return !!email&&email.search(/[^@]+@[^@]+/i)!=-1
},_showError:function(name,errorField,errorMsg){if($(name+"-error-box")&&$(name+"-error-box").innerHTML==""){errorField=errorField||$("register-"+name);
if(errorField){Element.addClassName(errorField,"error")
}}},_hideError:function(name,errorField){if($(name+"-error-box")){$(name+"-error-box").innerHTML=""
}errorField=errorField||$("register-"+name);
if(errorField){Element.removeClassName(errorField,"error")
}},_nameClickObserver:function(e){var el=Event.element(e);
if(el.className=="namelist-link"){Event.stop(e);
RegistrationForm.updateNameFromBubble(el.name)
}else{if(el.id!="register-name"){Tips.get($("register-name")).hideTip()
}}}};
var HabboEditor=function(){var allowedToProceed=true;
var figure=null;
var gender=null;
var callbacks=[];
return{addCallback:function(key,f){if(!callbacks[key]){callbacks[key]=[]
}callbacks[key].push(f)
},setGenderAndFigure:function(gender,figure){this.setGender(gender);
this.setFigure(figure)
},setFigure:function(newFigure){figure=newFigure;
if(callbacks["setFigure"]){callbacks["setFigure"].each(function(f){f(newFigure)
})
}},setGender:function(newGender){gender=newGender;
if(callbacks["setGender"]){callbacks["setGender"].each(function(f){f(newGender)
})
}},setAllowedToProceed:function(allowed){allowedToProceed=allowed;
if(callbacks["setAllowedToProceed"]){callbacks["setAllowedToProceed"].each(function(f){f(allowed)
})
}},isAllowedToProceed:function(){return allowedToProceed
},showHabboClubNotice:function(){if(callbacks["showHabboClubNotice"]){callbacks["showHabboClubNotice"].each(function(f){f()
})
}},hideHabboClubNotice:function(){if(callbacks["hideHabboClubNotice"]){callbacks["hideHabboClubNotice"].each(function(f){f()
})
}},showOldFigureNotice:function(){if(callbacks["showOldFigureNotice"]){callbacks["showOldFigureNotice"].each(function(f){f()
})
}},hideOldFigureNotice:function(){if(callbacks["hideOldFigureNotice"]){callbacks["hideOldFigureNotice"].each(function(f){f()
})
}},setEditorState:function(state){if(callbacks["setEditorState"]){callbacks["setEditorState"].each(function(f){f(state)
})
}}}
}()
