/**************************************************************
' File:	form_utility.js
' Created:  15 Aug 2001
' Project:  iAnalyze
' Author:   John Watson, ETC
' Purpose:  Provides common client-side javascript functions
'			for HTML form validation.
' Requires: A modern browser
'
' Modifications:
'
'  1.0.0 15 Aug 2001 by John Watson, ETC
'              Original version installed.
'**************************************************************/ 

//var digits = "0123456789";
var reDigit = /^\d/
var lowercaseLetters = "abcdefghijklmnopqrstuvwxyz";
var uppercaseLetters = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
var whitespace = " \t\n\r";

function trim(s)
{
	var strlen = s.length;
	for (var i = 0; i < strlen; i ++)
	{
		if (s.charAt(i) != " ")
		{
			s = s.substr(i);
			break;
		}
	}
	if (s.length > 0){
	   if (s.charAt(0) == " ")
	       s = "";
	   else {
	     	var upperbound = s.length - 1;
			for (var i = upperbound; i >= 0; i --)
			{
				if (s.charAt(i) != " ")
				{
				    s = s.substr(0, (i + 1));
					break;
				}
			}
	   }
	}   		
	return s;
}

function checkMissingValue(e,s)
{
	if (isEmpty(e.value)){
		alert("Please provide a value for " + s + '.');
		e.focus()
		return false;
	}
	return true;
}

function isDigit (c)
{
	//return ((c >= "0") && (c <= "9"))
	return reDigit.test(c)
}

function isEmpty(s)
{
	return ((s == null) || (s.length == 0))
}

function isLetter (c)
{
	return ( ((c >= "a") && (c <= "z")) || ((c >= "A") && (c <= "Z")) )
}

function isNumericElement(e,s)
{
	var v = e.value;
    for (var i = 0; i < v.length; i++){   
        var c = v.charAt(i);
        if (!isDigit(c)){
			alert("Please use only numeric digits for " + s + ".");
			e.focus()
			return false;
		}
    }
	return true;
}

function isNumericValue(s)
{
    for (var i = 0; i < s.length; i++){   
        var c = s.charAt(i);
		if (!isDigit(c)) return false;
    }
	return true;
}

function isValidName(s)
{
	var str = new String(s);
	if( containsWhitespace(str) )
		return false;
		
	if ( str.search(/\"/g) != -1 )
		return false;
	if ( str.search(/'/g) != -1 )
		return false;
	if ( str.search(/~/g) != -1 )
		return false;
	if ( str.search(/!/g) != -1 )
		return false;
	if ( str.search(/@/g) != -1 )
		return false;
	if ( str.search(/#/g) != -1 )
		return false;
	if ( str.search(/\$/g) != -1 )
		return false;
	if ( str.search(/%/g) != -1 )
		return false;
	if ( str.search(/\^/g) != -1 )
		return false;
	if ( str.search(/&/g) != -1 )
		return false;
	if ( str.search(/\*/g) != -1 )
		return false;
	if ( str.search(/\(/g) != -1 )
		return false;
	if ( str.search(/\)/g) != -1 )
		return false;
	if ( str.search(/\-/g) != -1 )
		return false;
	if ( str.search(/\+/g) != -1 )
		return false;
	if ( str.search(/=/g) != -1 )
		return false;
	if ( str.search(/\[/g) != -1 )
		return false;
	if ( str.search(/\]/g) != -1 )
		return false;
	if ( str.search(/\\/g) != -1 )
		return false;
	if ( str.search(/\{/g) != -1 )
		return false;
	if ( str.search(/}/g) != -1 )
		return false;
	if ( str.search(/\|/g) != -1 )
		return false;
	if ( str.search(/\;/g) != -1 )
		return false;
	if ( str.search(/:/g) != -1 )
		return false;
	if ( str.search(/\//g) != -1 )
		return false;
	if ( str.search(/\?/g) != -1 )
		return false;
	if ( str.search(/\./g) != -1 )
		return false;
	if ( str.search(/>/g) != -1 )
		return false;
	if ( str.search(/,/g) != -1 )
		return false;
	if ( str.search(/</g) != -1 )
		return false;
	if ( str.search(/\s/g) != -1 )
		return false;
		
	// all tests have been passed
	return true;
}

function isWhitespace(s)
{
	if (isEmpty(s)) return true;
	for (var i = 0; i < s.length; i++){   
		var c = s.charAt(i);
		if (whitespace.indexOf(c) == -1) return false;
	}
	return true;
}

function containsWhitespace(s)
{
	if (isEmpty(s)) return false;
	
	var bFoundWhitespace = false;
	for (var i = 0; i < s.length; i++){   
		var c = s.charAt(i);
		if (whitespace.indexOf(c) > -1) bFoundWhitespace = true;
	}
	return bFoundWhitespace;
}
