function validatePallet(input, idname, markname, pallet, variance) {
	var msgHolder = document.getElementById(idname);
	var markHolder = document.getElementById(markname);
	if(isNaN(input.value)) {
		markHolder.innerHTML = '<div class="validation-false"></div>';
		msgHolder.innerHTML = ' numbers only';
		return false;
	} else if(input.value) {
		markHolder.innerHTML = '<div class="validation-true"></div>';
		if(input.value != pallet && Math.abs(parseInt(input.value)-pallet)<=variance) {
			msgHolder.innerHTML = ' Note: A pallet is '+pallet;
		} else {
			msgHolder.innerHTML = '';
		}
		return true;
	} else {
		msgHolder.innerHTML = '';
		markHolder.innerHTML = '';
		return true;
	}
}

function validateRequired(input, trname, markname, idname) {
	var trHolder = document.getElementById(trname);
	var markHolder = document.getElementById(markname);
	var msgHolder = document.getElementById(idname);
	if(trim(input.value) == "") {
		trHolder.className = 'validation-false-row';
		markHolder.innerHTML = '<div class="validation-false"></div>';
		msgHolder.innerHTML = 'required';
		return false;
	} else {
		trHolder.className = '';
		msgHolder.innerHTML = '&nbsp;';
		markHolder.innerHTML = '<div class="validation-true"></div>';
		return true;
	}
}

function validateSelected(input, trname, markname, idname) {
	var trHolder = document.getElementById(trname);
	var markHolder = document.getElementById(markname);
	var msgHolder = document.getElementById(idname);
	if(input.options[input.selectedIndex].value == "") {
		trHolder.className = 'validation-false-row';
		msgHolder.innerHTML = 'required';
		markHolder.innerHTML = '<div class="validation-false"></div>';
		return false;
	} else {
		trHolder.className = '';
		msgHolder.innerHTML = '&nbsp;';
		markHolder.innerHTML = '<div class="validation-true"></div>';
		return true;
	}
}

function validatePhone(input, trname, markname, idname, required) {
	var trHolder = document.getElementById(trname);
	var markHolder = document.getElementById(markname);
	var msgHolder = document.getElementById(idname);
	if(input.value=='' && !required) {
		markHolder.innerHTML = '';
		trHolder.className = '';
		msgHolder.innerHTML = '&nbsp;';
		return true;
	} else if(input.value=='' && required) {
		trHolder.className = 'validation-false-row';
		msgHolder.innerHTML = 'required';
		markHolder.innerHTML = '<div class="validation-false"></div>';
		return false;
	} else if(!isPhone(input.value)) {
		trHolder.className = 'validation-false-row';
		msgHolder.innerHTML = 'must be a valid phone number';
		markHolder.innerHTML = '<div class="validation-false"></div>';
		return false;
	} else {
		trHolder.className = '';
		msgHolder.innerHTML = '&nbsp;';
		markHolder.innerHTML = '<div class="validation-true"></div>';
		input.value = formatPhone(input.value);
		return true;
	}
}

function validateEmail(input, trname, markname, idname, required) {
	var trHolder = document.getElementById(trname);
	var markHolder = document.getElementById(markname);
	var msgHolder = document.getElementById(idname);
	if(input.value=='' && !required) {
		markHolder.innerHTML = '';
		trHolder.className = '';
		msgHolder.innerHTML = '&nbsp;';
		return true;
	} else if(input.value=='' && required) {
		trHolder.className = 'validation-false-row';
		msgHolder.innerHTML = 'required';
		markHolder.innerHTML = '<div class="validation-false"></div>';
		return false;
	} else if(!isEmail(input.value)) {
		trHolder.className = 'validation-false-row';
		msgHolder.innerHTML = 'must be a valid email address';
		markHolder.innerHTML = '<div class="validation-false"></div>';
		return false;
	} else {
		trHolder.className = '';
		msgHolder.innerHTML = '&nbsp;';
		markHolder.innerHTML = '<div class="validation-true"></div>';
		return true;
	}
}

function validateDate(input, trname, markname, idname, required) {
	var trHolder = document.getElementById(trname);
	var markHolder = document.getElementById(markname);
	var msgHolder = document.getElementById(idname);
	if(input.value=='' && !required) {
		markHolder.innerHTML = '';
		trHolder.className = '';
		msgHolder.innerHTML = '&nbsp;';
		return true;
	} else if(input.value=='' && required) {
		trHolder.className = 'validation-false-row';
		msgHolder.innerHTML = 'required';
		markHolder.innerHTML = '<div class="validation-false"></div>';
		return false;
	} else if(!isDate(input.value)) {
		trHolder.className = 'validation-false-row';
		msgHolder.innerHTML = 'must be a valid date (dd/mm/yyyy)';
		markHolder.innerHTML = '<div class="validation-false"></div>';
		return false;
	} else {
		trHolder.className = '';
		msgHolder.innerHTML = '&nbsp;';
		markHolder.innerHTML = '<div class="validation-true"></div>';
		input.value = formatDate(input.value);
		return true;
	}
}

function validatePostalCode(input, trname, markname, idname, required) {
	var trHolder = document.getElementById(trname);
	var markHolder = document.getElementById(markname);
	var msgHolder = document.getElementById(idname);
	if(input.value=='' && !required) {
		markHolder.innerHTML = '';
		trHolder.className = '';
		msgHolder.innerHTML = '&nbsp;';
		return true;
	} else if(input.value=='' && required) {
		trHolder.className = 'validation-false-row';
		msgHolder.innerHTML = 'required';
		markHolder.innerHTML = '<div class="validation-false"></div>';
		return false;
	} else if(!isPostalCode(input.value)) {
		trHolder.className = 'validation-false-row';
		msgHolder.innerHTML = 'must be a valid postal code';
		markHolder.innerHTML = '<div class="validation-false"></div>';
		return false;
	} else {
		trHolder.className = '';
		msgHolder.innerHTML = '&nbsp;';
		markHolder.innerHTML = '<div class="validation-true"></div>';
		input.value = formatPostalCode(input.value);
		return true;
	}
}

function validateEmailConfirmation(input, trname, markname, idname, input1) {
	var trHolder = document.getElementById(trname);
	var markHolder = document.getElementById(markname);
	var msgHolder = document.getElementById(idname);
	if(input.value != input1.value) {
		trHolder.className = 'validation-false-row';
		msgHolder.innerHTML = 'must match email address above';
		markHolder.innerHTML = '<div class="validation-false"></div>';
		return false;
	} else if(input.value != '') {
		trHolder.className = '';
		msgHolder.innerHTML = '&nbsp;';
		markHolder.innerHTML = '<div class="validation-true"></div>';
		return true;
	} else {
		trHolder.className = '';
		msgHolder.innerHTML = '&nbsp;';
		markHolder.innerHTML = '';
		return true;
	}
}



function trim(stringToTrim) {
	return stringToTrim.replace(/^\s+|\s+$/g,"");
}

function isEmail(str) {
	var pattern = /^[a-zA-Z][\w\.-]*[a-zA-Z0-9]@[a-zA-Z0-9][\w\.-]*[a-zA-Z0-9]\.[a-zA-Z][a-zA-Z\.]*[a-zA-Z]$/;
	return str.match(pattern);
}

function isPhone(str) {
	var pattern = /^\D*(\d{3})\D*(\d{3})\D*(\d{4})\D*(\d*)$/;
	return str.match(pattern);
}

function formatPhone(str) {
	var pattern = /^\D*(\d{3})\D*(\d{3})\D*(\d{4})\D*(\d*)$/;
	var tmp = str.replace(pattern, "($1) $2-$3x$4");
	return tmp.replace(/x$/,"");
}

function isPostalCode(str) {
	var pattern = /^([a-z]\d[a-z])\s*(\d[a-z]\d)$/i;
	return str.match(pattern);
}

function formatPostalCode(str) {
	var pattern = /^([a-z]\d[a-z])\s*(\d[a-z]\d)$/i;
	return str.replace(pattern, "$1 $2").toUpperCase();
}

function isDate(str) {
	var pattern = /^([0-3]\d)\D*([0-1]\d)\D*(20[0-1]\d)$/i;
	return str.match(pattern);
}

function formatDate(str) {
	var pattern = /^([0-3]\d)\D*([0-1]\d)\D*(20[0-1]\d)$/i;
	return str.replace(pattern, "$1/$2/$3");
}


