
// Get Document Object
function getObj(name){
	if(document.getElementById){
		return document.getElementById(name);
	}else if(document.all){
		return document.all[name];
	}else if(document.layers && document.layers[name] != null){
		return getObjNN4(document, name);
	}else{
		return false;
	}
}

// Get Document Style Object
function getObjStyle(name){
	if(document.getElementById){
		return document.getElementById(name).style;
	}else if(document.all){
		return document.all[name].style;
	}else if(document.layers){
		return getObjNN4(document, name);
	}
}

// Get NN4 Document Object
function getObjNN4(obj, name){
	var x = obj.layers;
	var foundLayer;
	for(var i=0;i<x.length;i++){
		if(x[i].id == name){
			foundLayer = x[i];
		}else if (x[i].layers.length){
			var tmp = getObjNN4(x[i],name);
		}
		if(tmp){
			foundLayer = tmp;
		}
	}
	if(foundLayer){
		return foundLayer;
	}else{
		return false;
	}
}

// Set Document Object Visibility
function setObjVisibility(name, what){
	if(what == 'SHOW'){
		if(document.getElementById){
			getObjStyle(name).visibility = "visible";
			getObjStyle(name).display = "inline";
		}else if(document.all){
			getObjStyle(name).visibility = "visible";
			getObjStyle(name).display = "inline";
		}else if(document.layers){
			getObjStyle(name).visibility = "show";
			getObjStyle(name).display = "inline";
		}
	}else if(what == 'HIDE'){
		if(document.getElementById){
			getObjStyle(name).visibility = "hidden";
			getObjStyle(name).display = "none";
		}else if(document.all){
			getObjStyle(name).visibility = "hidden";
			getObjStyle(name).display = "none";
		}else if(document.layers){
			getObjStyle(name).visibility = "hide";
			getObjStyle(name).display = "none";
		}
	}
}

// Disable the Enter Key usage: onkeypress="return disable_enter(this, event)"
function disable_enter(field, event){
	var keyCode = event.keyCode ? event.keyCode : event.which ? event.which : event.charCode;
	if(keyCode == 13){
		var i;
		for(i = 0; i < field.form.elements.length; i++){
			if(field == field.form.elements[i]){
				break;
			}
		}
		if(field.form.elements[i+1].type != 'hidden' && field.form.elements[i+1].disabled != 1){
			i = (i + 1) % field.form.elements.length;
			field.form.elements[i].focus();
			return false;
		}else{
			return disable_enter(field.form.elements[i+1], event);
		}
	}else{
		return true;
	}
}

// Replace char/string in a string
function replace(string, text, by){
	var strLength = string.length, txtLength = text.length;
	if((strLength == 0) || (txtLength == 0)){
		return string;
	}
	var i = string.indexOf(text);
	if((!i) && (text != string.substring(0,txtLength))){
		return string;
	}
	if(i == -1){
		return string;
	}
	var newstr = string.substring(0,i) + by;
	if(i+txtLength < strLength){
		newstr += replace(string.substring(i+txtLength,strLength),text,by);
	}
	return newstr;
}

// Formats phone, fax fields
function checkPhone(what, field, req, errAlert){
	var str = getObj(what).value;
	str = replace(str, '(', '');
	str = replace(str, ')', '');
	str = replace(str, '-', '');
	str = replace(str, ' ', '');
	var regex = new RegExp("^[0-9]*$", "gi");
	var alertErr = "Incorrect " + field + " format.\n\nuse a 10 digit number\nincluding the area code in this field.\n\nie. 6045551234";
	var msgErr = "- Incorrect '" + field + "' format.\n";
	if(!regex.test(str)){
		if(errAlert == 1){
			alert(alertErr);
			getObj(what).value = '';
			return false;
		}else{
			return msgErr;
		}
	}else{
		if(str.length == 10){
			getObj(what).value = "(" + str.substring(0,3) + ") " + str.substring(3,6) + "-" + str.substring(6,10);
			if(errAlert == 1){
				return true;
			}else{
				msgErr = '';
				return msgErr;
			}
		}else{
			if((str.length > 0 && str != '0') || (req == 1 && (str == '0' || str.length == 0))){
				if(errAlert == 1){
					alert(alertErr);
					getObj(what).value = '';
					return false;
				}else{
					return msgErr;
				}
			}else{
				if(errAlert == 1){
					return true;
				}else{
					msgErr = '';
					return msgErr;
				}
			}
		}
	}
}

// Check Date Format
function checkDate(what, field){
	msg = '';
	var newDate = getObj(what).value;
	if(newDate.length > 0 && (newDate.search(/^[0-9]{1,2}\/[0-9]{1,2}\/([0-9]{2}|[0-9]{4})$/) == -1)){
		msg = "- Incorrect '" + field + "' format.\n";
	}
	return msg;
}

// Check Postal/Zip Code Format
function checkPostal(what, formatOnly){
	msg = '';
	var newPostalCode = getObj(what).value;
	if (newPostalCode.length > 0 && (newPostalCode.search(/^[a-zA-Z]{1}[0-9]{1}[a-zA-Z]{1}[\-\ ]?[0-9]{1}[a-zA-Z]{1}[0-9]{1}$/) == -1) && (newPostalCode.search(/^[0-9]{5}$/) == -1) && (newPostalCode.search(/^[0-9]{5}[\-]?[0-9]{4}$/) == -1)) {
		if(formatOnly == 1){
			alert("Incorrect 'Postal/Zip Code' format.\n\nie. Q1W 2E3 or 90210");
			getObj(what).value = '';
			msg = false;
		}else{
			msg = "- Incorrect 'Postal/Zip Code' format.\n";
		}
		newPostalCode = '';
	}
	if(formatOnly == 1){
		getObj(what).value = newPostalCode.toUpperCase();
		msg = true;
	}
	return msg;
}

// Check Money Format
function checkMoney(what, field, formatOnly, required){
	msg = '';
	amount = getObj(what).value;
	amount = replace(amount, '-', '');
	amount = replace(amount, '$', '');
	amount = replace(amount, ' ', '');
	amount = amount;
	amount -= 0;
	amount = Math.round(amount*100)/100;
	if(((amount / amount) != 1) && (amount != 0)){
		if(formatOnly == 1){
			alert("Invalid '" + field + "' format.\n\nie. $10.00");
			getObj(what).value = '0.00';
			msg = false;
		}else{
			msg = "- Invalid '" + field + "' format.\n";
		}
	}else{
		if(amount == 0 && required == 1){
			if(formatOnly == 1){
				alert("Missing '" + field + "' field.");
				getObj(what).value = '0.00';
				msg = false;
			}else{
				msg = "- Missing '" + field + "' field.\n";
			}
		}else{
			newAmount = (amount == Math.floor(amount)) ? amount + '.00' : ((amount*10 == Math.floor(amount*10)) ? amount + '0' : amount);
			if(formatOnly == 1){
				getObj(what).value = newAmount;
				msg = true;
			}
		}
		return msg;
	}
}

// Check Email Format
function checkEmail(what) {
	msg = '';
	var str = getObj(what).value;
	if(str.search(/^([0-9a-zA-Z]+([_&\.-]?[0-9a-zA-Z]+[_]?)*@[0-9a-zA-Z]+[0-9,a-z,A-Z,\.,-]*(\.){1}[a-zA-Z]{2,4})$/i) == -1){
	//if(str.search(/^(\w+(?:\.\w+)*)@((?:\w+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$/i) == -1){
		msg = "- Incorrect 'Email' format.\n";
	}
	return msg;
}


// Format number
function formatNumber(field){
	amount = field.value;
	amount = replace(amount, '-', '');
	amount = replace(amount, ' ', '');
	amount -= 0;
	if(((amount / amount) != 1) && (amount != 0)){
		field.value = '0';
		return false;
	}else{
		field.value = amount;
		return true;
	}
}

//check character count
function checkCharacterCount(what, maxlength){
	var myText = getObj(what).value;
	var myNewText = "";
	if(myText.length > maxlength){
		myNewText = myText.substring(0, maxlength);
		getObj(what).value = myNewText;
	}
}

// Set Form not submitted on load
var formSubmitted = "no";

// Form Submission
function submitForm(form){
	var msg = "";
	msg = validateForm();
	if(msg == ''){
		getObj("hdnSubmit").value = form;
		getObj(form).submit();
		return false;
	}else{
		getObj("hdnSubmit").value = "";
		alert("Please correct the follow errors:\n\n" + msg);
		return false;
	}
}
