
if(typeof Register=="undefined"){var Register={_USERNAME:1<<0,_EMAIL:1<<1,_PASSWORD:1<<2,_VALID:1|1<<1|1<<2,flags:0,setValid:function(field){Register.flags|=field;},setInvalid:function(field){Register.flags&=~field;},isValid:function(field){return(Register.flags&field)==field;},validate:function(field){var elem=field?$(field):null;var value=elem?$F(field):null;var flag=0;var valid=false;if(field=="r_username"){valid=value&&value.match(/^[0-9a-zA-Z_.@!]{3,16}$/);flag=Register._USERNAME;}else if(field=="r_email"){flag=Register._EMAIL;valid=value&&value.length>0&&value.length<=127&&value.match(/^[a-z0-9!#$%&'*+\/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+\/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+(?:[a-z]{2}|edu|com|org|net|gov|biz|info|name|aero|biz|info|jobs|museum)$/i);}else if(field=="r_password"){flag=Register._PASSWORD;valid=value&&value.match(/\S{4,32}$/);}else{return;}
var remove,add;if(valid){remove="invalid";add="valid";Register.setValid(flag);}else{remove="valid";add="invalid";Register.setInvalid(flag);}
if(elem){if(elem.hasClassName(remove))
elem.removeClassName(remove);if(!elem.hasClassName(add))
elem.addClassName(add);}},getErrors:function(){var ul=new Element("ul",{"class":" register_errors"});["r_username","r_email","r_password"].each(function(field){if(!$(field))
return;var elem=field?$(field):null;var value=elem?$F(field):null;var valid=false;var error=null;if(field=="r_username"){valid=value&&value.match(/^[0-9a-zA-Z_.@!]{3,16}$/);if(!valid){if(value==""){error="<span>Username</span> cannot be empty";}else{error="<span>Username</span> - 4 to 16 upper or lowercase letters, numbers or any of <b>. @ !</b>";}}}else if(field=="r_email"){valid=value&&value.length>0&&value.length<=127&&value.match(/[a-z0-9!#$%&'*+\/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+\/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+(?:[A-Za-z]{2}|edu|com|org|net|gov|biz|info|name|aero|biz|info|jobs|museum)\b/);if(!valid){if(!value||value==""){error="<span>E-Mail</span> cannot be empty";}else{error="<span>E-Mail</span> - Please enter a valid e-mail address";}}}else if(field=="r_password"){valid=value&&value.match(/^\S{4,32}$/);if(!valid){if(!value||value==""){error="<span>Password</span> cannot be empty";}else{error="<span>Password</span> - 4 to 32 characters";}}}
if(error){this.insert(new Element("li").update(error));}},ul);return ul;},init:function(){var u=$("r_username");u.observe("blur",function(e){Register.validate("r_username");});u.observe("keypress",function(e){Register.validate("r_username");if(e.keyCode==Event.KEY_RETURN){Event.stop(e);$("r_email").focus();}});var r=$("r_email");r.observe("blur",function(e){$("r_email").value=$F("r_email").toLowerCase();Register.validate("r_email");});r.observe("keypress",function(e){Register.validate("r_email");if(e.keyCode==Event.KEY_RETURN){Event.stop(e);$("r_password").focus();}});var p=$("r_password");p.observe("blur",function(e){Register.validate("r_password");});p.observe("keypress",function(e){Register.validate("r_password");if(e.keyCode==Event.KEY_RETURN){Event.stop(e);Register.validateAll();}});},send:function(){Register.setStatus("Creating Account...");var form=$("registerform");var params=form.serialize(true);new Ajax.Request(form.action,{method:"POST",parameters:params,onComplete:function(transport){if(transport.status==201){Register.setStatus("Logging in...");window.location.href="/login";}else{Confirm.notifyError({title:"Error Signing Up",message:transport.responseText,onYes:Register.clearStatus});}},onFailure:function(transport){Confirm.notifyError({title:"Error Signing Up",message:transport.responseText,onYes:Register.clearStatus});}});},setStatus:function(status){var regBtn=$("registerbutton");if(regBtn.visible()){$("registerbutton").hide().insert({before:new Element("img",{id:"registerloader",src:"/img/loader3.gif"}).setStyle({position:"relative",top:"4px"})});$("registerloader").insert({after:new Element("span",{id:"registerstatus"}).setStyle({paddingLeft:"7px",fontWeight:"bold"})});}
$("registerstatus").update(status);},clearStatus:function(){$("registerloader","registerstatus").invoke("remove");$("registerbutton").show();},validateAll:function(){Register.setStatus("Validating...");Register.validate("r_email");Register.validate("r_username");Register.validate("r_password");if(Register.flags!=Register._VALID){Confirm.notifyError({title:"Please Correct the Following",message:Register.getErrors(),onYes:Register.clearStatus});return;}
Register.checkAvailability();},checkAvailability:function(){Register.setStatus("Checking Availability...");new Ajax.Request("/checkavailability",{method:"POST",parameters:{username:$("r_username").value,email:$("r_email").value},onSuccess:function(transport){var json=transport.responseJSON;var errors=new Element("ul",{"class":"register_errors"});if(!json.username){Register.setInvalid(Register._USERNAME);$("r_username").replaceClassName("valid","invalid");errors.insert(new Element("li").update("<span>Username</span> - already taken"));}
if(!json.email){Register.setInvalid(Register._EMAIL);$("r_email").replaceClassName("valid","invalid");errors.insert(new Element("li").update("<span>E-mail</span> - already taken"));}
if(Register.flags==Register._VALID){Register.send();}else{Confirm.notifyError({title:"Please correct the following:",message:errors,onYes:Register.clearStatus});}},onFailure:function(){Register.setInvalid(Register._USERNAME);Register.setInvalid(Register._EMAIL);$("r_username").replaceClassName("valid","invalid");$("r_email").replaceClassName("valid","invalid");Confirm.notifyError({title:"Opps!",message:"We had a problem, please try signing up again later!",onYes:Register.clearStatus});}});},show:function(){$("registerform").appear({duration:0.4});}};var l2=new Image();l2.src="/img/loader3.gif";Event.observe(document,"dom:loaded",Register.init);}