// window.loadFirebugConsole(); 

function SignUp() {
	var mythis=this;
	this.check_ok=[];
	this.logTab=[];
	this.check_ok.push({"value":true, "index": "birthday"});
	this.check_ok.push({"value":true, "index": "captcha"});
	
	this.logActivty("","start","");
		
	$("radio_female").onmouseover=function() { this.style.border="1px solid #888"; }; 
	$("radio_female").onmouseout=function() { this.style.border="1px solid #B3B3B3";  }; 
	$("radio_female").onclick=function() { $("sexFemale").checked=true; mythis.logActivty(this.id,"click",""); };
	$("radio_male").onmouseover=function() { this.style.border="1px solid #888"; }; 
	$("radio_male").onmouseout=function() { this.style.border="1px solid #B3B3B3"; };
	$("radio_male").onclick=function() { $("sexMale").checked=true; mythis.logActivty(this.id,"click",""); };
	$("bt_change_loc").onclick=function() { $("editLocation").style.display="block"; mythis.logActivty(this.id,"click",""); };
	$("bt_more_loc").onclick=function() { $("moreLocation").style.display="block"; return false;};
	$("bt_change_loc_cancel").onclick=function() { $("editLocation").style.display="none"; mythis.logActivty(this.id,"click",""); };
	$("bt_change_loc_ok").onclick=function() { mythis.changeLoc(); mythis.logActivty(this.id,"click",""); };
	$("pass").onkeyup=function() { mythis.evalPassword(); };
	$("form_signup").onsubmit=function() { mythis.submitForm(this); return false; };
	$("password_display").onclick=function() { mythis.showPassword(this) };
	$("loc_more_info").onkeyup=function() { this.value=this.value.substr(0,255); };
	$('captcha_change').onclick = function() {mythis.changeCaptcha();return false;};
	$("submitted").onclick=function() { mythis.logActivty(this.id,"click",""); };

	$("day_calendar").onchange=function() { mythis.check_birthday(this.id); };
	$("month_calendar").onchange=function() { mythis.check_birthday(this.id); };
	$("year_calendar").onchange=function() { mythis.check_birthday(this.id); };
	
	$("captcha").value = "";
	$("submitted").addClass('opac50');

	var spans = document.getElementsByTagName('SPAN');
	for (i=0;spans[i];i++)
	{
		if ((typeof(spans[i]) == 'object') && $(spans[i]).hasClass('input_desc'))
			mythis.inputDesc(spans[i]);
	}
	window.onbeforeunload=function() { msg = mythis.logActivitySend(); if (msg) return msg; };
}
SignUp.prototype = {
	submitForm: function(obj) {
		var mythis=this;
		if ( this.checkAll() ) {
			$("form_disable").style.display="block";
			$("form_signup").style.display="none";	
			$("activity").value=Json.toString(this.logTab);
			obj.send({
				onSuccess: function(data){
					json=eval('(' + data + ')');
					if (json.error) {
						for (var i = 0; i < json.error.length; i++)
						{
							$(json.error[i].ID + "_ok").style.display = "none";
							$(json.error[i].ID + "_" + json.error[i].err).style.display = "block";
							mythis.getCheckOk(json.error[i].ID).value = false;
						}
						mythis.changeCaptcha();
						mythis.checkAll();
						$("form_disable").style.display="none";
						$("form_signup").style.display="block";
						mythis.logActivty("","submitform","error");
					}
					else {
						mythis.logTab=[];
						window.location.href=json.redirect;
					}
				}
			});
		}
	},
	logActivty: function(id,event,data) {
		if ( !this.secondInit )
			this.secondInit=Math.round((new Date()).getTime()/1000);
		this.logTab.push([Math.round((new Date()).getTime()/1000)-this.secondInit,id,event,data]);
	},
	logActivitySend: function() {
		if ( this.logTab.length ) {
			new Ajax("/default/ajax/signupActivity", { method: 'post', data: { data: Json.toString(this.logTab) } }).request();
			this.logTab=[];
			this.logActivty("","leave","");
			return "Are you sure you want to leave sign up without 'submitting'?";
		}
		return null;
	},
	showPassword: function(obj) {
		if (obj.checked)
			$("pass_change").innerHTML='<input id="pass" name="password" value="'+$("pass").value+'" type="text" maxlength="32" />';
			// $("pass").type="text";
		else
			$("pass_change").innerHTML='<input id="pass" name="password" value="'+$("pass").value+'" type="password" maxlength="32" />';
			// $("pass").type="password";
	},
	evalPassword: function() {
		var value=$("pass").value;
		var level=0;
		if((/[0-9]/).test(value)) level++;
		if((/[a-z]/).test(value)) level++;
		if((/[A-Z]/).test(value)) level++;
		if((/[^a-zA-Z0-9]/).test(value)) level++;
		for (var i=0;i<5;i++)
			$("pass_desc"+i).style.display=(i==level?"inline":"none");
	},
	checkAll: function() {
		for (var i = 0; i < this.check_ok.length; i++)
		{
			if (!this.check_ok[i].value)
			{
				$("submitted").addClass('opac50');
				return false;
			}
		}
		$("submitted").removeClass('opac50');
		return true;
	},
	check_birthday: function(id) {
		$("birthday_err1").style.display="none";
		$("birthday_err2").style.display="none";
		$("birthday_err3").style.display="none";
		$("birthday_ok").style.display="none";
		this.getCheckOk("birthday").value=false;
		
		this.logActivty(id,"change","?");
		if ( $("day_calendar").value!="" && $("month_calendar").value!="" && $("year_calendar").value!="" ) 
		{
			$("birthday_ok").style.display="inline";
			this.getCheckOk("birthday").value=true;
			this.logActivty(id,"change","");
		}
		this.checkAll();
	},
	check_user_name: function(id) {
		var mythis=this;
		if ( this.checkCommun(id) )
		{
			new Ajax("/default/ajax/checkUserName", { method: 'post', data: { username: $(id).value },
				onComplete : function(data) { 
					if ( data == "false" ) { 
						$(id + "_err3").style.display="block"; 
						mythis.logActivty(id,"blur","3");
					}
					else {
						$(id + "_ok").style.display="inline";
						mythis.getCheckOk(id).value=true;
						mythis.logActivty(id,"blur","");
						mythis.checkAll();
					}
				}
			}).request();
		}
	},
	check_email: function(id) {
		var mythis=this;
		if ( this.checkCommun("email") )
		{
			if ( !RegExp("^[-_a-zA-Z0-9\.\'+*$^&%=~!?{}]+@([-_a-z0-9\'+*$^&%=~!?{}]+\.)+[.]{1}([a-z]{2,6}|[0-9]{1,3})$").test($("email").value) ) {
				$("email_err2").style.display="block";
				this.logActivty(id,"blur","2");
			}
			else {
				new Ajax("/default/ajax/checkEmail", { method: 'post', data: { email: $("email").value.trim() },
					onComplete : function(data) { 
						if ( data=="true" )
						{
							$("email_ok").style.display="inline";
							mythis.getCheckOk(id).value=true;
							mythis.logActivty(id,"blur","");
							mythis.checkAll();
						}
						else {
							$("email_" + data).style.display="block";
							mythis.logActivty(id,"blur",data);
						}
					}
				}).request();
			}
		}
	},
	check_noblank: function(id) {
		if ( this.checkCommun(id) ){
			$(id + "_ok").style.display="inline";
			this.getCheckOk(id).value=true;
			this.logActivty(id,"blur","");
			this.checkAll();
		}
	},
	checkCommun: function (id) {
		this.getCheckOk(id).value=false;
		$(id + "_ok").style.display="none";
		$(id + "_desc").style.display="none";
		for (var i=1;$(id + "_err" + i);i++)
			$(id + "_err" + i).style.display="none";
		if ( !$(id).value.trim().length )
		{
			$(id + "_err1").style.display="block";
			this.logActivty(id,"blur","1");
			return false;
		}
		return true;
	},
	getCheckOk: function(id) {
		for (var i = 0; i < this.check_ok.length; i++)
		{
			if ( this.check_ok[i].index==id )
				return this.check_ok[i];
		}
		return null;
	},
	inputDesc: function (obj) {
		var mythis=this;
		var idDest=obj.id.substr(0,(obj.id.length-5));
		var objDest=$(idDest);
		if ( objDest ) {
			objDest.onclick=function () { obj.style.display="block"; mythis.logActivty(this.id,"click",""); };
			objDest.onfocus=function () { obj.style.display="block"; mythis.logActivty(this.id,"focus",""); };
			if ( typeof(eval("mythis.check_" + idDest)) == "function" )
				objDest.onblur=function () { eval("mythis.check_" + idDest + "('" +idDest+ "')"); mythis.checkAll(); };
			else
				objDest.onblur=function () { eval("mythis.check_noblank('" +idDest+ "')"); mythis.checkAll(); };
			this.check_ok.push({"value":false, "index": idDest});
		}
	},
	changeLoc: function () {
		$("desc_loc").innerHTML="<p><b>"+ $("up_country").options[$("up_country").selectedIndex].text + ", " + $("up_region").options[$("up_region").selectedIndex].text + ", " + $("up_city_display").innerHTML+"</b><p>";
		$("maxmind_city_id").value=$("up_city_id").value;
		$("editLocation").style.display="none";
	},
	changeCaptcha: function() {
		$('captcha_image').src = '/images/captcha?' + Math.random();
		$('captcha').value = "";
		$('captcha').focus;
		this.getCheckOk('captcha').value = true;
	},
}
