// $Id: check_zipcode.js,v 1.3.2.2 2007/02/20 11:26:13 max Exp $

// check_zip_code_rules is defined in check_zipcode_js.tpl

function check_zip_code_field(cnt, zip) {
	var c_code;
	var zip_error = false;

	if (!zip || zip.value == "")
		return true;

	//xcart always used a dropdown (select) for countries. We've overridden this and sometimes it's a hidden field
	//Handle both.
	if ("select" == cnt.tagName.toLowerCase())
	{
		c_code = cnt ? cnt.options[cnt.selectedIndex].value : config_default_country;
	}
	else
	{
		c_code = cnt.value;
	}

	if (window.check_zip_code_rules && isset(check_zip_code_rules[c_code])) {
		var rules = check_zip_code_rules[c_code];

		if (isset(rules.lens) && !isset(rules.lens[zip.value.length]))
			zip_error = true;

		if (isset(rules.re) && zip.value.search(rules.re) != -1)
			zip_error = true;

		if (zip_error) {
			if (rules.error && rules.error.length > 0)
				alert(rules.error);
			zip.focus();
			return false;
		}
	}

	return !zip_error;
}

function check_zip_code() {
	var success = true;
	var frm = document.forms["registerform"];
	
	//if fields don't exist, we can't validate them. Assume we're fine.
	if (null == frm.s_country || null == frm.s_zipcode || null == frm.b_country || null == frm.b_zipcode)
	{
		return true;
	}

	//if shipping fields are visible, validate them. Skip them if they're hidden.
	if ("hidden" != frm.s_country.type.toLowerCase() && "hidden" != frm.s_zipcode.type.toLowerCase())
	{
		success = check_zip_code_field(frm.s_country, frm.s_zipcode);
	}
	
	success = check_zip_code_field(frm.b_country, frm.b_zipcode) && success;
	
	return success;
}

