var alertedCount = 0;

function checkform(form) {
	if(document.getElementById('required')) {
		var reqfields = document.getElementById('required').value.split(',');
		if (document.getElementById('alertMessage')) {
			var alert = document.getElementById('alertMessage');
			alert.parentNode.removeChild(alert);
		}
		alertedCount = 0;
		for(var i=0; i<reqfields.length; i++) {
			var field = document.getElementById(reqfields[i]);
			if (field) {
				checkField(form,field);
			}
		}
	}
	if (alertedCount > 0) {
		alertMessage(form,'We were unable to process your form.','Please review the highlighted fields and resubmit.');
		return false;
	}
}

function checkField(form,field) {
	field.parentNode.parentNode.className = field.parentNode.parentNode.className.replace("alert","");
	var type = field.type.toLowerCase();
	switch(type) {
		case 'text':
			if (field.value==''){
				alertField(field.id);
			} else if (field.id == 'emailAddress' && !isEmailAddr(field.value)){
				alertField(field.id);
			} else if (field.id == 'email' && !isEmailAddr(field.value)){
				alertField(field.id);
			} else if (field.id=='phoneNumber' || field.id=='orderFaxNumber' || field.id=='orderPhoneNumber' || field.id=='hphone'){
				if (!isPhone(field.value)){
					alertField(field.id);
				} else {
					field.value = isPhone(field.value);
				}
			} else if (field.id=='socialSecurityNumber1' || field.id=='socialSecurityNumber2'){
				if (!isSocial(field.value)){
					alertField(field.id);
				} else {
					field.value = isSocial(field.value);
				}
			} else if (field.id=='zipCode' || field.id=='bZip' || field.id=='sZip'){
				if (!isZip(field.value)){
					alertField(field.id);
				} else {
					field.value = isZip(field.value);
				}
			} else if (field.id=='cvv'){
				if (!isCVV(field.value)){
					alertField(field.id);
				} else {
					field.value = isCVV(field.value);
				}
			}
		break;
		case 'textarea':
			if (field.value==''){
				alertField(field.id);
			}			
		break;
		case 'password':
			if (field.value==''){
				alertField(field.id);
			} else if (field.id == 'password' && document.getElementById('confirmPassword')){
				if (!isMatch(field.value,document.getElementById('confirmPassword').value,field.value)){
					alertField("confirmPassword");
				} else {
					document.getElementById('confirmPassword').parentNode.parentNode.className = document.getElementById('confirmPassword').parentNode.parentNode.className.replace("alert","");
				} 
			} else if (field.id == 'confirmPassword' && document.getElementById('password')){
				if (!isMatch(field.value,document.getElementById('password').value)){
					alertField(field.id);
				} else {
					document.getElementById('password').parentNode.parentNode.className = document.getElementById('password').parentNode.parentNode.className.replace("alert","");
				} 
			}
		break;
		case 'checkbox':
			if (!field.checked){
				alertField(field.id);
			}							
		break;
		case 'select-one':
			if (field.options[field.selectedIndex].value==''){
				alertField(field.id);
			}
		break;	
	}
}

function alertMessage(form,msg,notes) {
	var urlPath = location.protocol + "//" + document.domain;
	if(!document.getElementById('alertMessage')){
		var alertDiv			= document.createElement('div');
		alertDiv.id				= "alertMessage";
		var alertIcon			= document.createElement('div');
		alertIcon.id			= "alertIcon";
		var alertImg			= document.createElement('img');
		alertImg.src			= urlPath + "/img/alertIcon.gif";
		alertImg.alt			= "We were unable to process your form. Please review the highlighted fields and resubmit.";
		var p					= document.createElement('p');
		var noteSpan			= document.createElement('span');
		alertIcon.appendChild(alertImg);
		p.appendChild(document.createTextNode(msg));
		noteSpan.appendChild(document.createTextNode(notes));
		p.appendChild(noteSpan);
		alertDiv.appendChild(alertIcon);
		alertDiv.appendChild(p);
		form.parentNode.insertBefore(alertDiv,form);
	}
}

function alertField(fieldID) {
	var field = document.getElementById(fieldID);
	field.parentNode.parentNode.className += " alert";
	alertedCount++;
}

function isEmailAddr(str) {
    return str.match(/^[\w-]+(\.[\w-]+)*@([\w-]+\.)+[a-zA-Z]{2,7}$/);
}
function isPhone(str) {
	str = str.replace( /[^0-9]/g, "" );
	var reg = /^([0-9]{3})([0-9]{3})([0-9]{4})$/;
	if (vals = reg.exec(str))                                  
		return "(" + vals[1] + ") " + vals[2] + "-" + vals[3];
	else
		return false;
}
function isSocial(str) {
	str = str.replace( /[^0-9]/g, "" );
	var reg = /^([0-9]{3})([0-9]{2})([0-9]{4})$/;
	if (vals = reg.exec(str))                                  
		return vals[1] + "-" + vals[2] + "-" + vals[3];
	else
		return false;
}
function isZip(str) {
	str = str.replace( /[^0-9]/g, "" );
	var reg9 = /^([0-9]{5})([0-9]{4})$/;
	var reg5 = /^([0-9]{5})$/;
	if (vals = reg9.exec(str))                                  
		return vals[1] + "-" + vals[2];
	else if (vals = reg5.exec(str))                                  
		return vals[1];
	else
		return false;
}
function isCVV(str) {
	str = str.replace( /[^0-9]/g, "" );
	var reg = /^([0-9]{3})$/;
	if (vals = reg.exec(str))                                  
		return vals[1];
	else
		return false;
}
function isMinMax(str,min,max) {
	str = str.replace( /[^0-9.]/g, "" );
	str = parseFloat(str);
	min = parseFloat(min);
	max = parseFloat(max);
	if (str >= min && str <= max) {
		if (str == 0) {
			return "0";
		}
		return str;
	} else {
		return false;
	}
}
function leaveDigits(master) {
	master.value=strip(master.value);
}
function strip(_str) {
	var STR="";
	var _exp =/\d+|\./g;
	var _array;
	while(_array=_exp.exec(_str)) {
		STR+=_array.join();
	}
	return(STR);
}
function isMatch(confirm,original) {
	if (confirm == original) {
		return true;
	} else {
		return false;
	}
}
function formatCurrency(num,signs) {
	num = num.toString().replace(/\$|\,/g,'');
	if(isNaN(num)) { 
		num = "0";
	}
	sign = (num == (num = Math.abs(num)));
	num = Math.floor(num*100+0.50000000001);
	cents = num%100;
	num = Math.floor(num/100).toString();
	if(cents<10) {
		cents = "0" + cents;
	}
	for (var i = 0; i < Math.floor((num.length-(1+i))/3); i++) {
		num = num.substring(0,num.length-(4*i+3))+','+num.substring(num.length-(4*i+3));
	}
	if (signs == true) {
		return (((sign)?'':'-') + '$' + num + '.' + cents);
	} else {
		return (num + '.' + cents);
	}
}