// VALIDATION CODE v0.0.2

// -------------------- AutoEnter date & refer into flds  -------------------------
function enterDate(myfield) {
	myfield.value=new Date()
}

function enterURL(myfield) {
	myfield.value=document.URL
}


//  ------------------------- Various string-checking functions  -------------------------

function notNull(str) {
	if (str.length == 0 )
		return false
	else 
		return true
}

function notBlank(str) {
	for (i = 0; i < str.length; i++) {
		if (str.charAt(i) != " ")
			return true
	}
	return false
}

function isSize(str, size) {
	if (str.length == size) 
		return true
	else
		return false
}

function isSizeGreaterThan(str, size) {
	if (str.length > size) 
		return true
	else
		return false
}

function isSizeLessThan(str, size) {
	if (str.length < size) 
		return true
	else
		return false
}


//  -------------------------Validation functions for numerical data  -------------------------

function isDigits(str) {
	for (i = 0; i < str.length; i++) {
		mychar = str.charAt(i)
		if (mychar < "0" || mychar > "9")
			return false
	}
	return true
}

function isNumber(str) {
	numdecs = 0
	for (i = 0; i < str.length; i++) {
		mychar = str.charAt(i)
		if ((mychar >= "0" && mychar <= "9") || mychar 
			== ".") {
			if (mychar == ".")
				numdecs++
		}
		else 
			return false
	}
	if (numdecs > 1)
		return false	
	return true
}

function isInRange(str, num1, num2) {
	var i = parseInt(str)
	return((i >= num1) && (i <= num2))
}


//  ------------------------- STRING FUNCTIONS  -------------------------
// Function to strip all non-digits from a string 

function stripNonDigits(str) {
var i = ""	
var newstring = ""
	for (i = 0;  i < str.length; i++) {
		mychar = str.charAt(i)
		if (isDigits(mychar)) 
			newstring += mychar
	}
	return newstring
}

function stripChars(str, chars) {
	var newstring = ""
	for (i = 0;  i < str.length; i++) {
		mychar = str.charAt(i)
		if (chars.indexOf(mychar) == -1)
			newstring += mychar
	}
	return newstring
}



// Code to validate a string.
function validateString(myfield, s) {
var emptyMessage = " field is blank. Please enter your " //Global variable set at start of script
	if (notNull(myfield.value)&& notBlank(myfield.value)) 
		return true
	else {
		alert("The " + s + emptyMessage + s + ".")
		myfield.focus()
		myfield.select()
		return false
	}
}


// Code to validate a Select.
function validateSelect(myfield, s) {
var emptyMessage = "Please select an option from the " //Global variable set at start of script
if (!myfield.options[0].selected)
		return true
else {
		alert(emptyMessage + s + " field.")
		return false
	}
}


// Code to validate a US state.
function isStateCode (str) {
var STATECODES = "AL/AK/AS/AZ/AR/CA/CO/CT/DE/DC/FL/GA/GU/HI/ID/IL/IN/IA/KS/KY/LA/ME/MD/MA/MI/MN/MS/MO/MT/NE/NV/NH/NJ/NM/NY/NC/ND/OH/OK/OR/PA/PR/RI/SC/SD/TN/TX/UT/VT/VI/VA/WA/WV/WI/WY"
	var newstring = str.toUpperCase()
	if (STATECODES.indexOf(newstring) != -1 && str.indexOf("/") == -1)
		return true
	else 
		return false
}

function validateStateSelect(myfield) {
if (!myfield.options[0].selected)
		return true
	else {
		alert("Please select your state.")
		return false
	}
}


function validateZip(myfield) {
	if (notNull(myfield.value)) {
		newstring = stripNonDigits(myfield.value)
		if (isSize(newstring,5) || isSize(newstring, 9)) 
			return true
	}
	alert("Invalid zip code. Please enter 5-digit or 9-digit zip code.")
	myfield.focus()
	myfield.select()
	return false
}


function validatePhoneFax(myfield, vSize, errMsg, required) {
	if (required==true) {		
		if (notNull(myfield.value)) {
		newstring = stripNonDigits(myfield.value)
			if (isSize(newstring,vSize))
				return true
			}
		}
	else {
		newstring = stripNonDigits(myfield.value)
		if (notNull(newstring)==false || isSize(newstring,vSize))
			return true
	}
	alert("Invalid " + errMsg + ". Please enter your " + vSize + "-digit " + errMsg + ".")
	myfield.focus()
	myfield.select()
	return false
}


// -------------------- VALIDATE ORDER QTY -------------------------
// IS IT A VALID QTY?

var isMinOrderQty = 0
function validateQty(myfield, min, max) {
	//newstring = stripNonDigits(myfield.value)
	if (isDigits(myfield.value)) {
		if (isInRange(myfield.value, min, max)) {
			if (myfield.value > isMinOrderQty)
				isMinOrderQty = myfield.value
			return true
		}
	}
	alert("Invalid quantity. Please enter a number between " + min + " and " + max + ".")
	myfield.focus()
	myfield.select()
	return false
}


// ARE THERE ENOUGH ITEMS ORDERED?
function validateMinOrderQty(myfield, minQty) {
	if (isMinOrderQty >= minQty)
		return true
	else {
		alert("Please enter the quantity of items to order.")
		myfield.focus()
		myfield.select()
		return false
	}
}


// -------------------- VALIDATE CHECKBOXES -------------------------
// IS IT CHECKED?

var isMinCheckedQty = 0
function validateChecked(myfield) {
	if (myfield.type == "checkbox" ) {
		if (myfield.checked == true)
		{
			isMinCheckedQty += 1
			return true
		}
		return true
	}
	else {
	alert("The field " + myfield.name + " is not a checkbox. Change it or don't use this validator.")
		return false
	}
}

// IS MIN. NUMBER OF CHECKBOXES CHECKED?
function validateMinCheckedQty(minQty, errMsg) {
	if (isMinCheckedQty >= minQty)
		return true
	else {
		alert(errMsg)
		return false
	}
}


// Validate e-mail address (must have "@", ".", & valid US TLD)
function validateEmail(myfield) {
	if (notNull(myfield.value)&& notBlank(myfield.value)) {
		var newstring = myfield.value.toUpperCase()
		if (
			isSizeGreaterThan(myfield.value, 6) &&
			myfield.value.indexOf("@") != "-1" &&
			myfield.value.indexOf(".") != "-1" &&
			(newstring.indexOf(".BIZ") != "-1" ||
			newstring.indexOf(".COM") != "-1" ||
			newstring.indexOf(".EDU") != "-1" ||
			newstring.indexOf(".GOV") != "-1" ||
			newstring.indexOf(".INFO") != "-1" ||
			newstring.indexOf(".INT") != "-1" ||
			newstring.indexOf(".MIL") != "-1" ||
			newstring.indexOf(".NAME") != "-1" ||
			newstring.indexOf(".NET") != "-1" ||
			newstring.indexOf(".ORG") != "-1" ||
			newstring.indexOf(".US") != "-1" 
			)
	)
			return true
	}
else
	{
			alert("Please enter your e-mail address.")
			myfield.focus()
			myfield.select()
			return false
	}
}
