var reEmail = /^([\w-]+\.)*[\w-]+\@([\w-]+\.)+[a-zA-Z]{2,4}$/;
var reUser = /^([\w\d]+)*$/;

window.onload = function() {
	if (typeof(onload_) != 'undefined')
		eval(onload_);
	
	elements = document.subscribe.elements;
	for (var i = 0; i <= elements.length-1; i++) {
		eval('isFunc = typeof(check' + ucFirst(elements[i].name) + ')');
		if ((elements[i].type == 'text' || elements[i].type == 'password' || elements[i].type == 'textarea') && isFunc == 'function')  {
			if (elements[i].name != 'city') {
				elements[i].onkeyup = function() {
					eval('check' + ucFirst(this.name) + '(this)');
				}
				elements[i].onblur = function() {
					eval('check' + ucFirst(this.name) + '(this)');
				}
			}
		}
		else
		if (elements[i].type == 'select-one' && isFunc == 'function') {
			// see if onChange already set to prevent overwriting it
			onchange_content = elements[i].getAttribute('onchange');
			if (onchange_content == null)
				elements[i].onchange = function() {
					eval('check' + ucFirst(this.name) + '(this)');
				}
		}
	}
}

function checkSubscribe() {
	success = true;
	my_form = document.subscribe;
	
	checkMember_name(my_form.member_name);
	checkMember_email(my_form.member_email, sync = 1);
	checkMember_username(my_form.member_username, sync = 1);
	checkMember_password(my_form.member_password);
	checkC_password(my_form.c_password);
	if (typeof(my_form.country_iso) != 'undefined' && my_form.country_iso.type == 'select-one')
		checkCountry_iso(my_form.country_iso);
	if (typeof(my_form.zone_iso) != 'undefined' && !my_form.zone_iso.disabled)
		checkZone_iso(my_form.zone_iso);
	if (typeof(my_form.city) != 'undefined' && !my_form.city.disabled)
		checkCity(my_form.city, sync = 1);
	checkDay(my_form.day);
	checkMonth(my_form.month);
	checkYear(my_form.year);
	checkStatus_id(my_form.status_id);
	checkBody_id(my_form.body_id);
	checkHair_id(my_form.hair_id);
	checkEye_id(my_form.eye_id);
	checkHeight_id(my_form.height_id);
	checkGender_id(my_form.gender_id);
	checkLooking_seeking_id(my_form.looking_seeking_id);
	checkMember_headline(my_form.member_headline);
	checkMember_desc(my_form.member_desc);
	checkMember_date_desc(my_form.member_date_desc);
	checkMember_interest(my_form.member_interest);
	if (success)
		my_form.submit();
}

function checkMember_name(elem) {
	msg = messages[elem.name];
	if (elem.value == '')
		setError(elem.name, msg[0]);
	else
		setSuccess(elem.name);
}

function checkMember_email(elem) {
	msg = messages[elem.name];
	if (elem.value == '')
		setError(elem.name, msg[0]);
	else
	if (!reEmail.test(elem.value))
		setError(elem.name, msg[1]);
	else {
		setSuccess(elem.name);
		var e = elem.name;
		var m = msg[2];
		if (typeof(checkMember_email.arguments[1]) == 'undefined') 
			var opt = {
				onSuccess: function(t) {
					if (t.responseText != 0) 
						setError(e, m);
				}
			}
		else
			var opt = {
				asynchronous: 'false',
				onSuccess: function(t) {
					if (t.responseText != 0) 
						setError(e, m);
				}
			}
		new Ajax.Request('index.php?obj=member&action=check_email&email=' + elem.value, opt);
	}
}

function checkMember_username(elem) {
	msg = messages[elem.name];
	if (elem.value == '')
		setError(elem.name, msg[0]);
	else
	if (!reUser.test(elem.value))
		setError(elem.name, msg[1]);
	else 
	if (elem.value.length < 3) 
		setError(elem.name, msg[2]);
	else {
		setSuccess(elem.name);
		var e = elem.name;
		var m = msg[3];
		if (typeof(checkMember_username.arguments[1]) == 'undefined') 
			var opt = {
				onSuccess: function(t) {
					if (t.responseText != 0) 
						setError(e, m);
				}
			}
		else
			var opt = {
				asynchronous: 'false',
				onSuccess: function(t) {
					if (t.responseText != 0) 
						setError(e, m);
				}
			}
		new Ajax.Request('index.php?obj=member&action=check_username&username=' + elem.value, opt);
	}
}

function checkMember_password(elem) {
	msg = messages[elem.name];
	if (elem.value == '')
		setError(elem.name, msg[0]);
	else
	if (!reUser.test(elem.value))
		setError(elem.name, msg[1]);
	else 
	if (elem.value.length < 4) 
		setError(elem.name, msg[2]);
	else
		setSuccess(elem.name);
}

function checkC_password(elem) {
	msg = messages[elem.name];
	if (elem.value == '')
		setError(elem.name, msg[0]);
	else
	if (elem.value != document.subscribe.member_password.value) 
		setError(elem.name, msg[1]);
	else
		setSuccess(elem.name);
}

function checkCountry_iso(elem) {
	msg = messages[elem.name];
	if (elem.value == '')
		setError(elem.name, msg[0]);
	else
		setSuccess(elem.name);
}

function checkZone_iso(elem) {
	msg = messages[elem.name];
	if (elem.value == '')
		setError(elem.name, msg[0]);
	else
		setSuccess(elem.name);
}

function checkCity(elem) {
	msg = messages[elem.name];
	if (elem.value == '')
		setError(elem.name, msg[0]);
	else {
		setSuccess(elem.name);
		var e = elem.name;
		var m = msg[1];
		if (typeof(checkCity.arguments[1]) == 'undefined') 
			var opt = {
				onSuccess: function(t) {
					if (t.responseText == 0) 
						setError(e, m);
				}
			}
		else
			var opt = {
				asynchronous: 'false',
				onSuccess: function(t) {
					if (t.responseText == 0) 
						setError(e, m);
				}
			}
		new Ajax.Request('index.php?obj=member&action=check_city&city1=' + escape(elem.value) + '&country_iso=' + document.subscribe.country_iso.value + '&zone_iso=' + document.subscribe.zone_iso.value, opt);
	}
}

function checkDay(elem) {
	msg = messages['year'];
	if (elem.value == '' || document.subscribe.year.value == '' || document.subscribe.month.value == '')
		setError('year', msg[0]);
	else
		setSuccess('year');
}

function checkMonth(elem) {
	msg = messages['year'];
	if (elem.value == '' || document.subscribe.day.value == '' || document.subscribe.year.value == '')
		setError('year', msg[0]);
	else
		setSuccess('year');
}

function checkYear(elem) {
	msg = messages[elem.name];
	if (elem.value == '' || document.subscribe.day.value == '' || document.subscribe.month.value == '')
		setError(elem.name, msg[0]);
	else
		setSuccess(elem.name);
}

function checkHeight_id(elem) {
	msg = messages[elem.name];
	if (elem.value == '')
		setError(elem.name, msg[0]);
	else
		setSuccess(elem.name);
}

function checkGender_id(elem) {
	msg = messages[elem.name];
	if (elem.value == '')
		setError(elem.name, msg[0]);
	else
		setSuccess(elem.name);
}

function checkStatus_id(elem) {
	msg = messages[elem.name];
	if (elem.value == '')
		setError(elem.name, msg[0]);
	else
		setSuccess(elem.name);
}

function checkBody_id(elem) {
	msg = messages[elem.name];
	if (elem.value == '')
		setError(elem.name, msg[0]);
	else
		setSuccess(elem.name);
}

function checkHair_id(elem) {
	msg = messages[elem.name];
	if (elem.value == '')
		setError(elem.name, msg[0]);
	else
		setSuccess(elem.name);
}

function checkEye_id(elem) {
	msg = messages[elem.name];
	if (elem.value == '')
		setError(elem.name, msg[0]);
	else
		setSuccess(elem.name);
}

function checkLooking_seeking_id(elem) {
	msg = messages[elem.name];
	if (elem.value == '')
		setError(elem.name, msg[0]);
	else
		setSuccess(elem.name);
}

function checkMember_zip(elem) {
	msg = messages[elem.name];
	if (elem.value == '')
		setError(elem.name, msg[0]);
	else
		setSuccess(elem.name);
}

function checkMember_headline(elem) {
	msg = messages[elem.name];
	if (elem.value == '')
		setError(elem.name, msg[0]);
	else
		setSuccess(elem.name);
}

function checkMember_desc(elem) {
	msg = messages[elem.name];
	if (elem.value == '')
		setError(elem.name, msg[0]);
	else
		setSuccess(elem.name);
}

function checkMember_date_desc(elem) {
	msg = messages[elem.name];
	if (elem.value == '')
		setError(elem.name, msg[0]);
	else
		setSuccess(elem.name);
}

function checkMember_interest(elem) {
	msg = messages[elem.name];
	if (elem.value == '')
		setError(elem.name, msg[0]);
	else
		setSuccess(elem.name);
}

function setError(elem, msg) {
	var t = findDOM(elem + 'Msg', 0);
	if (t.innerHTML.indexOf(msg) == -1) 
		t.innerHTML = '<img src="images/not_ok.gif" title="' + msg + '">';
	success = false;
}

function setSuccess(elem) {
	var t = findDOM(elem + 'Msg', 0);
	if (t.innerHTML.indexOf('success') == -1) 
		t.innerHTML = '<img src="images/ok.gif">';
}

function setLoading(elem) {
	var t = findDOM(elem + 'Msg', 0);
	if (t.innerHTML.indexOf('ajax_indicator') == -1) 
		t.innerHTML = '<img src="images/ajax_indicator.gif">';
}

function ucFirst(str) {
   return str.substr(0,1).toUpperCase() + str.substr(1,str.length);
}