//check length of text in the passed control
function invalLength(ctl, ctlName, len) {
	if (ctl.value.length > len) {
		alert("Please limit " + ctlName + " to " + len + " characters.\nYou have used " + ctl.value.length + " characters.")
		ctl.focus()
		ctl.select()
		return true
	}

	return false
}


//check whether passed parameter is a valid number
function notNumber(number) {
	number = number.toString()

	for (var i=0; i<number.length; i++) {
		if (number.charAt(i) > "9" || number.charAt(i) < "0") return true
	}

	return false
}


//check whether passed validated control contains any of passes invalid characters (case insensitive)
function invalidChars(validatedControl, validatedName, charString) {
	var validatedString = trim(validatedControl.value).toLowerCase()
	charString = charString.toLowerCase()

	for (var i=0; i<validatedString.length; i++) {
		for (var j=0; j<charString.length; j++) {
			if (validatedString.charAt(i) == charString.charAt(j)) {
				var alertString = charString.split("").join("  ")
				alertString = alertString.split("     ").join("  space  ")
				alert(validatedName + " cannot contain any of the following\nillegal characters:\n\n " + alertString)
				validatedControl.focus()
				validatedControl.select()
				return true
			}
		}
	}

	return false
}


//check whether text-box is empty
function isEmpty(field, fieldName) {
	if (trim(field.value) == "") {
		alert("Please enter " + fieldName + ".")
		field.focus()
		return true
	}

	return false
}


//check whether selection has been made in the select-box
function notSelected(field, fieldName) {
	if (field.selectedIndex == 0) {
		alert("Please select " + fieldName + ".")
		field.focus()
		return true
	}

	return false
}


//trim string
function trim(stringToTrim) {
	var trimmedString = ""

	//left trim
	for(var i=0; i<stringToTrim.length; i++) {
		if (stringToTrim.charAt(i) != " ") break
	}

	trimmedString = stringToTrim.substring(i)

	//right trim
	for(var i=trimmedString.length-1; i>=0; i--) {
		if (trimmedString.charAt(i) != " ") break
	}

	trimmedString = trimmedString.substring(0, i + 1)

	return trimmedString
}


//validate email address
function notEmail(field, fieldName) {
	var email = trim(field.value)

	if (email == "") return false

	var at = false
	var dot = false

	for (var i=0; i<email.length; i++) {
		if (email.charAt(i) == "@") at = true
		if (email.charAt(i) == "." && at) dot = true
	}

	if (!(at && dot && email.length > 5)) {
		alert("The " + fieldName + " you entered is not a valid e-mail address.")
		field.focus()
		field.select()
		return true
	}

	//check for invalid characters
	if (invalidChars(field, fieldName, ',;|\'" <>\\/')) return true

	return false
}


//date validation
function validDate(date, ctlDay) {
	return date.getDate() == ctlDay[ctlDay.selectedIndex].text
}

//validate ASCII Character Set 
function charCheck(field, message) {
	var txt = field.value

	for (var i=0; i<txt.length; i++) {
		if (txt.charCodeAt(i) >= 128) {	
			alert(message) 
			field.focus()
			return true
		}
	}

	return false
}


//Checks if selected item has invalid value then select item with gotoIndex
function checkInvalVal(sel, invalVal, gotoIndex) {
	if (sel.options[sel.selectedIndex].value == invalVal) {		
		sel.selectedIndex = gotoIndex
	}
}


