var uname_ok = false;
var email_ok = false;
var cur_uname = "";
var cur_email = "";

function check_uname(obj) {
	ssr ("starting to check_uname\n");

	if (typeof(obj) == "object") {
		ssr(gsr() + "obj was an object, continue.\n");

		if (obj.value != "" && (uname_ok !== true || (uname_ok === true && obj.value != cur_uname))) {
	
			$('check_uname_msg').removeClass("alertok");
			$('check_uname_msg').addClass("alert");
			$('check_uname_msg').set('html', "checking username availability...");
	
			//alert("1");
			if (obj.value.length > 0 && obj.value != cur_uname || obj.value == "") {
				//alert("2");
				cur_uname = obj.value;
				ssr(gsr() + "obj.value had a length ["+obj.value.length+"]\n");
				//alert("3");

				var ajrq = new Request({
					url:ajax_url,
					method: 'post',
					onSuccess: function(txt,xml){
						//alert("4");
						update_uname_flags(txt,obj);
						//alert("5");
					}
				}).send({data:{util: 'create_acct', stype: 'check.uname', uname: obj.value }});

			} else {
				//alert("no object!");
			}

		} else if (obj.value == "" || obj.value.length == 0) {
			
			ssr(gsr() + "no value in name field.\n");
			$('check_uname_msg').removeClass("alertok");
			$('check_uname_msg').addClass("alert");
			$('check_uname_msg').set('html', "don't forget to pick a username!");
			uname_ok = false;
			check_reg_form();

		} else {
			check_reg_form();
		}


	}
}

function check_email(obj) {
	ssr ("starting to check_email\n");

	if (typeof(obj) == "object") {

		ssr(gsr() + "obj was an object, continue.\n");

		if (email_ok !== true || obj.value != cur_email || obj.value == "") {

			$('check_email_msg').removeClass("alertok");
			$('check_email_msg').addClass("alert");
			$('check_email_msg').set('html', "checking email...");
			$('acct_register').disabled = true;
			$('acct_register').addClass("disable_button");
	
			if (obj.value.length > 0 && obj.value != cur_email) {
				cur_email = obj.value;
				ssr(gsr() + "obj.value had a length ["+obj.value.length+"]\n");

				var ajrq = new Request({
					url:ajax_url,
					method: 'post',
					onSuccess: function(txt,xml){
						//alert(responseHTML);
						update_email_flags(txt,obj);
					}
				}).send({data:{util: 'create_acct', stype: 'check.email', email: obj.value }});
	
			} else {
				ssr(gsr() + "no value in name field.\n");
				if (obj.value.length == 0) {
					$('check_email_msg').removeClass("alertok");
					$('check_email_msg').addClass("alert");
					$('check_email_msg').set('html', "don't forget to enter your email address!");
					email_ok = false;
				}
				check_reg_form();
			}
		} else {
			check_reg_form();
		}

	}
}

function update_email_flags(txt,obj) {
	ssr(gsr() + "in update_email_flags()\ntxt: [[["+txt+"]]]\n");
	var cbObj = JSON.decode(txt); // eval("(" + txt + ")");
	if (cbObj.result == "ok") {
		email_ok = true;
		$('check_email_msg').removeClass("alert");
		$('check_email_msg').addClass("alertok");
		$('check_email_msg').set('html', "This email is valid");

	} else {
		$('check_email_msg').removeClass("alertok");
		$('check_email_msg').addClass("alert");
		if (cbObj.result == "not.valid") {
			$('check_email_msg').set('html', "this email is not valid, please try again.");
		} else {
			var msg = "this email is in use by another user, please pick another.";
			if (cbObj.st == "c") {
				msg += "<br /><strong>If you have a Recswusa account, you may login with that here.</strong>";
			}
			$('check_email_msg').set('html', msg);
		}
		obj.value="";
		cur_email = "";
		obj.focus();
	}

	check_reg_form();

	ssr(gsr() + "\n\nresult text: "+txt+"\n");
}

function update_uname_flags(txt,obj) {
	ssr(gsr() + "in update_uname_flags()\ntxt: [[["+txt+"]]]\n");
	var cbObj = JSON.decode(txt); // eval("(" + txt + ")");
	if (cbObj.result == "ok") {
		uname_ok = true;
		$('check_uname_msg').removeClass("alert");
		$('check_uname_msg').addClass("alertok");
		$('check_uname_msg').set('html', "This username is available!");

	} else {
		$('check_uname_msg').removeClass("alertok");
		$('check_uname_msg').addClass("alert");
		if (cbObj.result == "in.use") {
			$('check_uname_msg').set('html', "this username is already in use, please choose another.");
		} else {
			$('check_uname_msg').set('html', "this username is not valid, please make sure the username is at least 3 characters long.");
		}
	}

	if (cbObj.action == "update.uname" && cbObj.newuname != "") {
		obj.value = cbObj.newuname;
		cur_uname = obj.value;
		var str = "PLEASE NOTE: Your chosen username had illegal characters in it, so we filtered those out and changed it to this: '"+cbObj.newuname+"'";
		big_poppa(str,400,200);
	}
	
	check_reg_form();
	
	ssr(gsr() + "\n\nresult text: [[["+txt+"]]]\n");
}

function old_enough(mydate) {
	var ofage = new Date();
	ofage.setFullYear(ofage.getFullYear() - 13);
	var uage = new Date(mydate);
	return (uage <= ofage);
}

function check_reg_form() { // txt,obj
	ssr("in check_reg_form()\n");
	var missing = false;
	oform = $('register_form');

	if (uname_ok !== true) { missing = true; ssr(gsr() + "uname not ok\n"); }
	if (email_ok !== true) { missing = true; ssr(gsr() + "email not ok\n"); }
	if (oform.pass.value == "" || oform.pass.value != oform.passv.value) { missing = true; }
	//if (oform.tnc.checked !== true) {
		//ssr(gsr() + "tnc not checked: "+oform.tnc.checked+"\n"); 
		//missing = true;
	//}
	//if (oform.mcap.value == "") { missing = true; }

	if (oform.birthday.value != "" && old_enough(oform.birthday.value)) {
		$("bdayalert").removeClass("alert");
		$("bdayalert").addClass("alertok");
	} else {
		missing = true;
		$("bdayalert").removeClass("alertok");
		$("bdayalert").addClass("alert");
		ssr(gsr() + "not old enough\n");
	}

	//oform.removeEvents("submit");
	if (missing === false) {
		ssr(gsr() + "missing is FALSE, enable the button.\n");
		$('acct_register').disabled = false;
		$('acct_register').removeClass("disable_button");
	} else {
		ssr(gsr() + "missing is TRUE, disable the button.\n");
		$('acct_register').disabled = true;
		$('acct_register').addClass("disable_button");
		//oform.addEvent('submit', function(e) { new Event(e).stop(); });
	}
	
	return $('acct_register').disabled;
	
}

function init_reg_form() {
	ssr(gsr() + "\ninit_reg_form()");
	oform = $('register_form');
	ssr(gsr() + "\nckd for rf");
	//if (typeof(oform) == "object") {
	if ($('register_form')) {
		for (var i=0; i<oform.elements.length; i++) {
			if (oform.elements[i].name != "" && oform.elements[i].name != "mcap" && (oform.elements[i].type == "text" || oform.elements[i].type == "password" || oform.elements[i].type == "select-one")) {
				oform.elements[i].onchange = function () { check_reg_form(); }
				if (oform.elements[i].name == "uname") {
					oform.elements[i].onblur = function () { check_uname(this); }
					if (oform.elements[i].value != "") { check_uname(oform.elements[i]); }
				} else if (oform.elements[i].name == "uemail") {
					oform.elements[i].onblur = function () { check_email(this); }
					if (oform.elements[i].value != "") { check_email(oform.elements[i]); }
				} else {
					oform.elements[i].onblur = function () { check_reg_form(); }
				}
				if (oform.elements[i].type == "text" || oform.elements[i].type == "password") {
					oform.elements[i].onkeypress = function () { check_reg_form(); }
				}
				if (oform.elements[i].type == "select") {
					oform.elements[i].onchange = function () { check_reg_form(); }
				}
			}
		}
		
		//oform.addEvent('submit', function(e) { new Event(e).stop(); });
		
		ssr(gsr() + "\ndid mah stuff");

		new Calendar({ birthday: 'M d, Y'}, { classes: ['cal-alternate'], direction: -4749, navigation: 2, onHideStart: function() { check_reg_form(); } }); // 4749 = 13 years * 365 + 4 leap year days...
		ssr(gsr() + "\ncal");
	} else {
		ssr(gsr() + "\nwtf no oform...");
	}
	check_reg_form();
}

window.addEvent('domready', function() {
	init_reg_form();
});
