// Overriding function from system.js
function checkFocus(errorType, baseClass, errorClass, varClass) {
	var currentClass;

	if (errorType == 'phone') {
		currentClass = d.getElementById('form['+errorType+'1]').className;
		if (currentClass != baseClass) {
			d.getElementById('form['+errorType+'1]').className = baseClass+' '+errorClass+' '+varClass;
			d.getElementById('form['+errorType+'2]').className = baseClass+' '+errorClass+' '+varClass;
			d.getElementById('form['+errorType+'3]').className = baseClass+' '+errorClass+' '+varClass;
		}
	} else {
		currentClass = d.getElementById('form['+errorType+']').className;
		if (currentClass != baseClass)
			d.getElementById('form['+errorType+']').className = baseClass+' '+errorClass+' '+varClass;
	}
}

// Overriding function from system.js
function checkBlur(errorType, baseClass, errorClass) {
	var data;

	if (errorType == 'phone') {
		var phone1 = d.getElementById('form['+errorType+'1]').value;
		var phone2 = d.getElementById('form['+errorType+'2]').value;
		var phone3 = d.getElementById('form['+errorType+'3]').value;
		data = (phone1+'-'+phone2+'-'+phone3);
	} else if (errorType == 'city' || errorType == 'bill_city') {
		if (d.getElementById('suggestCityList').style.display == 'block')
			return true;
		data = d.getElementById('form['+errorType+']').value;
	} else if (errorType == 'card_exp') {
		var y = d.getElementById('form[card_year]').value;
		var m = d.getElementById('form[card_month]').value;
		data = (y+'-'+m);
		if (m != '' && y == '')
			return true;
	} else
		data = d.getElementById('form['+errorType+']').value;

	transport(errorType, data, baseClass, errorClass);
}


function initCityForSelect(cityForSelect) {
	cityForSelect = cityForSelect.split(', ');
	d.getElementById('form[city]').value = cityForSelect[0];
	if (cityForSelect.length > 1)
		suggestCityList(cityForSelect);
	else
		wipeCityList();
}

function initStateForSelect(stateForSelect) {
	var state = d.getElementById('form[state]');
	for(var i=0; i<state.length; i++) {
		if (state.options[i].value == stateForSelect) {
			state.selectedIndex = i;
			break;
		}
	}
}

function initCityForSelectBill(cityForSelect) {
	cityForSelect = cityForSelect.split(', ');
	d.getElementById('form[bill_city]').value = cityForSelect[0];
	if (cityForSelect.length > 1)
		suggestCityList(cityForSelect);
	else
		wipeCityList();
}

function initStateForSelectBill(stateForSelect) {
	var state = d.getElementById('form[bill_state]');
	for(var i=0; i<state.length; i++) {
		if (state.options[i].value == stateForSelect) {
			state.selectedIndex = i;
			break;
		}
	}
}

function renderError(response, errorType, baseClass, errorClass) {
	var trimResponse = false;

	if (response == 'true') {
		if (errorType == 'phone') {
			d.getElementById('form['+errorType+'1]').className = baseClass;
			d.getElementById('form['+errorType+'2]').className = baseClass;
			d.getElementById('form['+errorType+'3]').className = baseClass;
		} else if (errorType == 'zip') {
			d.getElementById('form['+errorType+']').className = baseClass;
			jRequest('getCityListFromZip', d.getElementById('form[zip]').value, 'initCityForSelect');
			jRequest('getStateFromZip', d.getElementById('form[zip]').value, 'initStateForSelect');
		} else if (errorType == 'bill_zip') {
			d.getElementById('form['+errorType+']').className = baseClass;
			jRequest('getCityListFromZip', d.getElementById('form[bill_zip]').value, 'initCityForSelectBill');
			jRequest('getStateFromZip', d.getElementById('form[bill_zip]').value, 'initStateForSelectBill');
		} else if (errorType == 'card_exp') {
			d.getElementById('form[card_year]').className = baseClass;
			d.getElementById('form[card_month]').className = baseClass;
		} else
			d.getElementById('form['+errorType+']').className = baseClass;

		d.getElementById('error_cnt['+errorType+']').style.display = 'none';

		return true;
	} else {
		if (errorType == 'phone') {
			d.getElementById('form['+errorType+'1]').className = baseClass+' '+errorClass;
			d.getElementById('form['+errorType+'2]').className = baseClass+' '+errorClass;
			d.getElementById('form['+errorType+'3]').className = baseClass+' '+errorClass;
		} else if (errorType == 'zip') {
			wipeCityList();
		} else if (errorType == 'card_exp') {
			d.getElementById('form[card_year]').className = baseClass+' '+errorClass;
			d.getElementById('form[card_month]').className = baseClass+' '+errorClass;
		} else if ((errorType == 'city' || errorType == 'bill_city') && (gettxt(response, '[', ']') != '')) {
			trimResponse = true;
			d.getElementById('form['+errorType+']').className = baseClass+' '+errorClass;
			var cityForSelect = gettxt(response, '[', ']').split(', ');
			d.getElementById('form['+errorType+']').value = cityForSelect[0];
			if (cityForSelect.length > 1)
				suggestCityList(cityForSelect);
			else
				wipeCityList();
		} else if (errorType == 'state' && (gettxt(response, '[', ']') != '')) {
			trimResponse = true;
			var inputBox = d.getElementById('form['+errorType+']');
			var responseState = gettxt(response, '[', ']');
			for (i=0; i<inputBox.length; i++) {
				if (inputBox.options[i].value == responseState) {
					inputBox.selectedIndex = i;
					break;
				}
			}
			d.getElementById('form['+errorType+']').className = baseClass+' '+errorClass;
		} else {
			d.getElementById('form['+errorType+']').className = baseClass+' '+errorClass;
		}

		if (trimResponse)
			response = response.substr(response.indexOf(']', 0)+1, response.length);

		d.getElementById('error['+errorType+']').innerHTML = response;
		d.getElementById('error_cnt['+errorType+']').style.display = 'table-row';

		return true;
	}
}

function wipeCityList() {
	d.getElementById('suggestCityList').innerHTML = '';
	d.getElementById('suggestCityList').style.display = 'none';
}

function suggestCityList(cityArr) {
	var html = '';

	for (var i=0; i<cityArr.length; i++) {
		html += '<div onclick="selectCity(this.innerHTML)">'+cityArr[i]+'</div>';
	}

	try {
		d.getElementById('form[city]').value = '';
	} catch (e) {}
	try {
		d.getElementById('form[bill_city]').value = '';
	} catch (e) {}

	d.getElementById('suggestCityList').innerHTML = html;
	d.getElementById('suggestCityList').style.display = 'block';
}

function selectCity(city) {
	try {
	d.getElementById('form[city]').value = city;
	d.getElementById('form[city]').className = 'baseClass';
	d.getElementById('error_cnt[city]').style.display = 'none';
	} catch (e) {}
	try {
	d.getElementById('form[bill_city]').value = city;
	d.getElementById('form[bill_city]').className = 'baseClass';
	d.getElementById('error_cnt[bill_city]').style.display = 'none';
	} catch (e) {}
	d.getElementById('suggestCityList').style.display = 'none';
}

function switchReferral() {
	if (d.getElementById('haveReferral').checked == true)
		d.getElementById('form[referral]').style.display = 'block';
	else {
		d.getElementById('form[referral]').style.display = 'none';
		d.getElementById('form[referral]').value = '';
	}
}
