/*
'
' Copyright (c) 2003 by Knowledge Networks. All Rights Reserved.
'
' This software and any algorithms contained within is the intellectual
' property of Knowledge Networks.  Any use of this software, in either 
' source or binary form, without the express written consent of Knowledge
' Networks is prohibited.  This copyright notice must appear in any 
' redistribution of the software.
'
' THIS SOFTWARE IS PROVIDED "AS IS," WITHOUT A WARRANTY OF ANY KIND. ALL
' EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES, INCLUDING
' ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE
' OR NON-INFRINGEMENT, ARE HEREBY EXCLUDED. KNOWLEDGE NETWORKS AND ITS 
' LICENSORS SHALL NOT BE LIABLE FOR ANY DAMAGES SUFFERED BY LICENSEE AS A 
' RESULT OF USING, MODIFYING OR DISTRIBUTING THE SOFTWARE OR ITS DERIVATIVES.
' IN NO EVENT WILL KNOWLEDGE NETWORKS OR ITS LICENSORS BE LIABLE FOR ANY LOST 
' REVENUE, PROFIT OR DATA, OR FOR DIRECT, INDIRECT, SPECIAL, CONSEQUENTIAL, 
' INCIDENTAL OR PUNITIVE DAMAGES, HOWEVER CAUSED AND REGARDLESS OF THE THEORY 
' OF LIABILITY, ARISING OUT OF THE USE OF OR INABILITY TO USE SOFTWARE, EVEN 
' IF KNOWLEDGE NETWORKS HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
'
' $Header: /Projects/UMP.NET/Source Code/UMP.Web/ValidationFuncs.js 1     7/08/03 11:16p Jcarpenter $
'
*/

<!--
	// This file contains the data validation JavaScript functions
	// It is included in the HTML pages with forms that need these
	// data validation routines.


// DEFINE VARIABLES
var showAlert = true;

// whitespace characters
var whitespace = " \t\n\r";
var whitespaceArray = new Array();
	
whitespaceArray[0] = " ";
whitespaceArray[1] = "\t";
whitespaceArray[2] = "\n";
whitespaceArray[3] =  "\r";



/****************************************************************/

// Check whether string s is empty.

function isEmpty(s)
{   return ((s == null) || (s.length == 0))
}

/****************************************************************/

// Returns true if string s is empty or 
// whitespace characters only.

function isWhitespace (s)

{   var i;

    // Is s empty?
    if (isEmpty(s)) return true;

    // Search through string's characters one by one
    // until we find a non-whitespace character.
    // When we do, return false; if we don't, return true.

    for (i = 0; i < s.length; i++)
    {   
	// Check that current character isn't whitespace.
	var c = s.charAt(i);
	    	
	if (whitespace.indexOf(c) == -1) return false;
    }

    // All characters are whitespace.
    return true;
}

/****************************************************************/

// isEmail (STRING s [, BOOLEAN emptyOK])
// 
// Email address must be of form a@b.c ... in other words:
// * there must be at least one character before the @
// * there must be at least one character before and after the .
// * the characters @ and . are both required
//
// For explanation of optional argument emptyOK,
// see comments of function isInteger.

function isEmail (s)
{  
	
	if (isEmpty(s)) 
       if (isEmail.arguments.length == 1) return false;
       else return (isEmail.arguments[1] == true);
   
    // is s whitespace?
    //if (isWhitespace(s)) return false;
	s = Trim(s);
    for (i = 0; i < 4; i++)
    {   
		// Check that current character isn't whitespace.
		if (s.indexOf(whitespaceArray[i]) > -1) 
			return false;
    }
    	
	var emailParts = s.split("@");
	if(emailParts.length != 2) return false;

    // there must be >= 1 character before @, so we
    // start looking at character position 1 
    // (i.e. second character)
    var i = 1;
    var sLength = s.length;

    // look for @
    while ((i < sLength) && (s.charAt(i) != "@"))
    { i++;
    }
	
    if ((i >= sLength) || (s.charAt(i) != "@")) return false;
    else i += 2;

    // look for .
    while ((i < sLength) && (s.charAt(i) != "."))
    { i++;
    }

    // there must be at least one character after the .
    if ((i >= sLength - 1) || (s.charAt(i) != ".")) return false;
    else return true;
}


// Checks to see if a required field is blank.  If it is, a warning
// message is displayed...

function ForceEntry(objField, FieldName)
{
	var strField = new String(objField.value);
	if (isEmpty(strField)) {
		if(showAlert == true)
		{
			var message = ResourceManager.GetString("reqAlert",FieldName);
			alert(message);
		}
		else
			document.all['ErrorText'].innerText = ResourceManager.GetString("reqAlert",FieldName);
		objField.focus();
		objField.select();
		return false;
	}
	if (isWhitespace(strField)) {
		if(showAlert == true)
		{
			var message = ResourceManager.GetString("whiteSpaceAlert",FieldName);
			alert(message);
		}
		else
			document.all['ErrorText'].innerText = ResourceManager.GetString("whiteSpaceAlert",FieldName);
		objField.focus();
		objField.select();
		return false;
	}

	return true;
}
		
/****************************************************************/



// Trims the string on both sides...  
function Trim(strTrim)
{
	var str = new String(strTrim);
	var i = 0;
	var c = "";
	var endpos = 0;
	var startpos;
	//for Right Trim
	for (i = str.length; i >= 0 && endpos == 0; i = i - 1) {
		c = str.charAt(i);
		if (whitespace.indexOf(c) == -1)
			endpos = i;
	};
	str=str.substring(0,endpos+1);
	
	//for Left Trim
	startpos = str.length;
	for (i = 0; i <= str.length  && startpos == str.length ; i++ ) {
		c = str.charAt(i);
		if (whitespace.indexOf(c) == -1)
			startpos = i;
	};

	return str.substring(startpos,str.length);
}
// Right trims the string...  Useful for SQL datatypes of CHAR


var ResourceManager = new RM();
	function RM()
	{
		this.list = new Array();
	};
	RM.prototype.AddString = function(key, value)
	{
		this.list[key] = value;
	};
	RM.prototype.GetString = function(key)
	{
		var result = " " + this.list[key];
		for (var i = 1; i < arguments.length; ++i)
		{
			result = result.replace("{" + (i-1) + "}", arguments[i]);
		}
		return Trim(result);
	};
// -->

