// ******************************************************************************

//   FILENAME: $Workfile: $
//   DATE: $Date: $
//   REVISION: $Revision: $

//   Copyright (c) 2002 e-masque interactive corp.
//   All Rights Reserved.
//   This is unpublished proprietary source code of e-masque interactive corp.
//   The copyright notice above does not evidence any actual or intended
//   publication of such source code.

//******************************************************************************** -->

function letterCheck(c,which){

	if (which == 1){
		if (!((((c >= "a")&&(c <= "z"))||((c >= "A")&&(c <= "Z")))||((c >= "0")&&(c <= "9")))){
			return false;
		}
	}
	else if (which == 2){
		if (!(((c >= "a")&&(c <= "z"))||((c >= "A") && (c <= "Z")))){
			return false;
		}
	}
	else if (which == 3){
		if (!(((c >= "0")&&(c <= "9"))||(c == "-"))){
			return false;
		}
	}
	else if (which == 4){
		if (!(((c >= "0")&&(c <= "9"))||(c == ".")||(c == "-")||(c == " "))){
			return false;
		}
	}
	else if (which == 5){
		if (!((c >= "0")&&(c <= "9"))){
			return false;
		}
	}
	else if (which == 6){
		if (!(((c >= "0")&&(c <= "9"))||(c == "."))){
			return false;
		}
	}
	else if (which == 7){
		if (!((((c >= "a")&&(c <= "z"))||((c >= "A")&&(c <= "Z")))||((c >= "0")&&(c <= "9"))||(c == "-")||(c == " ")||(c == "."))){
			return false;
		}
	}
	else if (which == 8){
		if (!((((c >= "a")&&(c <= "z"))||((c >= "A")&&(c <= "Z")))||((c >= "0")&&(c <= "9"))||(c == "-")||(c == "'"))){
			return false;
		}
	}
	else if (which == 9){
		if (!(((c >= "a")&&(c <= "z"))||((c >= "A") && (c <= "Z"))||(c == "-")||(c == " ")||(c == ",")||(c == "."))){
			return false;
		}
	}
	if (which == 10){
		if (!((((c >= "a")&&(c <= "z"))||((c >= "A")&&(c <= "Z")))||((c >= "0")&&(c <= "9"))||(c == " "))){
			return false;
		}
	}
	else if (which == 11){
		if (!(((c >= "a")&&(c <= "z"))||((c >= "A") && (c <= "Z"))||((c >= "0")&&(c <= "9"))||(c == "-")||(c == ".")||(c == "_"))){
			return false;
		}
	}
	return true;
	
}

// ******************************************************************************************

function checkStandard(obj,alertName,refNo)
{   
	var i;

	if (obj.value == ""){
		blankAlert(obj,alertName)
		return false;
	
	}
	
	else{

		for (i = 0; i < obj.value.length; i++){   
		
		var c = obj.value.charAt(i);
			if (!(letterCheck(c,refNo))){
				obj.focus()
				obj.select()
				if (refNo == 1){
					alert(alertName + " may only contain numbers or letters");
				}
				else if (refNo == 2){
					alert(alertName + " may only contain letters");
				}
				else if (refNo == 3){
					alert(alertName + " may only contain numbers or -");
				}
				else if (refNo == 4){
					alert(alertName + " may only contain numbers or . -");
				}
				else if (refNo == 5){
					alert(alertName + " may only contain numbers");
				}
				else if (refNo == 6){
					alert(alertName + " may only contain numbers or .");
				}
				else if (refNo == 7){
					alert(alertName + " may only contain numbers, letters, spaces or -");
				}
				else if (refNo == 8){
					alert(alertName + " may only contain numbers, letters or - '");
				}
				else if (refNo == 9){
					alert(alertName + " may only contain letters, spaces or - , .");
				}
				else if (refNo == 10){
					alert(alertName + " may only contain numbers, letters or spaces");
				}
				else if (refNo == 11){
					alert(alertName + " may only contain numbers, letters or - . _");
				}
				return false;
			}
		}
	}

	return true;
}

// ******************************************************************************************

function blankAlert(obj,alertName){

	obj.focus()
	obj.select()
	alert(alertName + " may not be blank");
	return false;
}

// ******************************************************************************************

function formatFloat(val) {

		var idx = val.indexOf(".");
		var len = val.length;

		if (idx == -1 ){
			val = val + ".00";
		}
		else if (idx == len - 1){
			val = val + "00";
		}
		else if (idx  == len  - 2){
			val = val + "0";
		}
		else if (idx < len - 3){
			val = val.substr(0,idx+3);
		}
		return val;

}

// ******************************************************************************************

function checkMainChrs(obj,alertName){   
	var i;
	
	if (obj.value == ""){
		blankAlert(obj,alertName)
		return false;
	}
	else{
	
		for (i = 0; i < obj.value.length; i++){   
			var c = obj.value.charAt(i);
	
			if (!(letterCheck(c,1))){
				if (!grammerCharacterCheck(c, "!@#$%&*(),.-_+=/<> ~;:?©®")){
					obj.focus()
					obj.select()
					alert("Please enter a valid Character in " + alertName + '.\nInvalid Character: ' + c);
					return false;
				}
			}
	    	}
	}

	return true;
}

// ******************************************************************************************

function checkAllCharacters(obj,alertName){   
	var i;
	
	if (obj.value == ""){
		blankAlert(obj,alertName)
		return false;
	}
	else{
	
		for (i = 0; i < obj.value.length; i++){   
			var c = obj.value.charAt(i);
	
			if (!(letterCheck(c,1))){
				if ((escape(c) != "%0D")&&(escape(c) != "%0A")&&(escape(c) != "%5C")){
					if (!grammerCharacterCheck(c, "!@#$%&*(),.-_+=/<>| ~;:?©®")){
						obj.focus()
						obj.select()
						alert("Please enter a valid Character in " + alertName + '.\nInvalid Character: ' + c);
						return false;
					}
				}
			}
	    	}
	}

	return true;
}

// ******************************************************************************************

function grammerCharacterCheck(obj,checkString){

	var checkOK = checkString;
  	var allValid = false;
  	var decPoints = 0;
  	var allNum = "";	
  	
	ch = obj;

    	for (j = 0;  j < checkOK.length;  j++){
	      	if (ch == checkOK.charAt(j)){
      			allValid = true;
        		break;
        	}
	}
	return allValid;
}

// ******************************************************************************************
function checkUserPassword(obj,alertName){   
	var i;

	if (obj.value.length < 8){
		alert(alertName + " must be at least 8 characters long");
		obj.focus();
		return false;
	}
	else if (obj.value == ""){
		obj.focus()
		obj.select()
		alert(alertName + " may not be blank");
		return false;
	
	}
	
	else{
	
		var gotNum;
		var gotAlpha;
		var gotCap;
		
		gotNum = 0;
		gotAlpha = 0;
		gotCap = 0;
		
		for (i = 0; i < obj.value.length; i++){   
		
			var c = obj.value.charAt(i);
			if (! (( ((c >= "a") && (c <= "z")) || ((c >= "A") && (c <= "Z")) ) || ((c >= "0") && (c <= "9")) ) ){
				obj.focus()
				obj.select()
				alert(alertName + " may only contain numbers or letters");
				return false;
			}
			else{
				if ((c >= "0") && (c <= "9")){
					gotNum = 1
				}
				else if ((c >= "A") && (c <= "Z")){
					gotCap = 1
				}
				else{
					gotAlpha = 1
				}
			
			}
		}
	    
		if ((gotNum == 0)||(gotAlpha == 0)||(gotCap == 0)){
			obj.focus()
			obj.select()
			alert(alertName + " must contain at least 1 number, 1 capital letter, 1 character.");
			return false;
		}
		else{
			return true;
		}
	}
}

// ******************************************************************************************

function checkPassword(obj,alertName){

	if (obj.value.length < 6){
		alert(alertName + " must be at least 8 characters long");
		obj.focus();
		return false;
	}

	if (!checkStandard(obj,alertName,1)){
		return false;
	}
	
	return true;
}

// ******************************************************************************************

function checkFloatNumbers(obj,alertName)
{   
	var i;
	var noChars;
	
	noChars = 0;
	
	if (obj.value == ""){
		blankAlert(obj,alertName)
		return false;
	
	}
	
	else{

    		for (i = 0; i < obj.value.length; i++){   

        		var c = obj.value.charAt(i);

        		if (!(letterCheck(c,6))){
				obj.focus();
				obj.select();
				alert(alertName + " may only contain numbers or '.'");
				return false;
			}
			else{
        			if (c != "."){
        				noChars = noChars + 1
        			}
        		}
    		}
    	}

	if (noChars > 0){
		return true;
	}
	else{
		obj.focus();
		obj.select();
		alert("Please enter a valid value for " + alertName);
		return false;
	}
}

// ******************************************************************************************

function checkDate(obj){

	var i,j,l,n,p,r;

	if (obj.value == ""){
		blankAlert(obj,alertName)
		return false;
	
	}
	
	else{
	
	var k = 0;
	var day = "";
	var month = "";
	var year = "";
	
    	for (i = 0; i < obj.value.length; i++){

       		var c = obj.value.charAt(i);

        	if (! (((c >= "0") && (c <= "9")) || (c == "/"))){
        
			obj.focus()
			obj.select()
			alert(obj.name + " is not a valid date format");
			return false;
		}
	}
	
	for(j = 0; j < obj.value.length; j++){
		var d = obj.value.charAt(j);
			
		if (k != 1){
			if (d != "/"){
				month = month + obj.value.charAt(j);
			}
			else{
				k = 1;
				n = j;
			}
		}
	}

	for(l = (n + 1); l < obj.value.length; l++){
		var m = obj.value.charAt(l);
			
		if (k != 2){
			if (m != "/"){
				day = day + obj.value.charAt(l);
			}
			else{
				k = 2;
				r = l;
			}
		}
	}

	for(p = (r + 1); p < (obj.value.length); p++){
		var y = obj.value.charAt(p);
			
		if (k != 3){
			if ((y != "/") || (p != obj.value.length)) {
				year = year + obj.value.charAt(p);
			}
			else{
				k = 3;
			}
		}
	}

	if ((month > 12) || (month == "")){
		obj.focus()
		obj.select()
		alert(obj.name + " is not a valid month. Please enter MM/DD/YY");
		return false;
	
	}
	
	var maxDays = 30;
	if ((month == 9)||(month == 6)||(month == 4)||(month == 11)){
		maxDays = 31
	}
	else if (month == 2){
		yearTest = year % 4
		if (yearTest == 0){
			maxDays = 29
		}
		else{
			maxDays = 28
		}
	}
	
	if ((day > maxDays) || (maxDays == "")){
		obj.focus()
		obj.select()
		alert(obj.name + " is not a valid day. Please enter MM/DD/YY");
		return false;
	
	}
	if ((year > 100) || (year == "")){
		obj.focus()
		obj.select()
		alert(obj.name + " is not a valid year. Please enter MM/DD/YY");
		return false;
	
	}
    	
    }	
	return true;
}

// ******************************************************************************************

function checkKeyboardCharacters(obj,alertName){   
	var i;
	
	if (obj.value == ""){
		blankAlert(obj,alertName)
		return false;
		
	}
		
	else{
	
		for (i = 0; i < obj.value.length; i++){   
			var c = obj.value.charAt(i);
	
			if (!(letterCheck(c,1))){
				if (escape(c) != "%5C"){
					if (!grammerCharacterCheck(c, "!@#$%&*(),.-_+=/<>| ~;:'?©®")){
						obj.focus()
						obj.select()
						alert("Please enter a valid Character in " + alertName + '.\nInvalid Character: ' + c);
						return false;
					}
				}
			}
	    	}
	}
	
	return true;
}

// ******************************************************************************************

function checkEmail(obj){

	if (obj.value != ""){
		if (!checkKeyboardCharacters(obj)){
			alert("Please enter a valid Email Address in the Email Field");
			obj.focus();
			obj.select();
			return false;
		}
	}
	
	if (obj.value.indexOf('@',0) == -1 || obj.value.indexOf('.',0) == -1) {
		alert ("The E-mail field must be in X@X.X format")
		obj.focus();
		obj.select();
		return false;
	}
	else {
	
		emailAddress = (obj.value)
		AmpersandIndex = (obj.value.indexOf('@'))
		DotIndex = (obj.value.indexOf('.'))
		DotIndexPlusOne = (emailAddress.charAt(DotIndex + 1))
		
		if (AmpersandIndex == 0) {
			alert ("The E-mail field must be in X@X.X format")
			obj.focus();
			obj.select();
			return false;
		}
		
		if ((AmpersandIndex + 1) == DotIndex) {
			alert ("The E-mail field must be in X@X.X format")
			obj.focus();
			obj.select();
			return false;
		}
		
		if ((DotIndexPlusOne) == "") {
			alert ("The E-mail field must be in X@X.X format")
			obj.focus();
			obj.select();
			return false;
		}
		
	}
	return true;	
}

// ******************************************************************************************

function checkDateLongYear(obj,futureRef,alertName){

	var i,j,l,n,p,r;

	if (obj.value == ""){
		blankAlert(obj,alertName)
		return false;
	
	}
	
	else{
	
	var k = 0;
	var day = "";
	var month = "";
	var year = "";
	
    	for (i = 0; i < obj.value.length; i++){

       		var c = obj.value.charAt(i);

        	if (! (((c >= "0") && (c <= "9")) || (c == "/"))){
        
			obj.focus()
			obj.select()
			alert(alertName + " is not a valid date format");
			return false;
		}
	}
		if (k == 0){
			for(j = 0; j < obj.value.length; j++){
				var d = obj.value.charAt(j);
					
				if (k != 1){
					if (d != "/"){
						month = month + obj.value.charAt(j);
					}
					else{
						k = 1;
						n = j;
					}
				}
			}
		}
			
		if ((k == 1)){
			for(l = (n + 1); l < obj.value.length; l++){
				var m = obj.value.charAt(l);
					
				if (k != 2){
					if (m != "/"){
						day = day + obj.value.charAt(l);
					}
					else{
						k = 2;
						r = l;
					}
				}
			}
		}
			
		if ((k == 2)){
			for(p = (r + 1); p < (obj.value.length); p++){
				var y = obj.value.charAt(p);
					
				if (k != 3){
					if ((y != "/") || (p != obj.value.length)) {
						year = year + obj.value.charAt(p);
					}
					else{
						k = 3;
					}
				}
			}
		}
	
	if ((month > 12) || (month == "") || (month < 1)){
		obj.focus()
		obj.select()
		alert(alertName + " is not a valid month. Please enter in the following format: mm/dd/yyyy");
		return false;
	
	}
	
	var maxDays = 30;
	if ((month == 9)||(month == 6)||(month == 4)||(month == 11)){
		maxDays = 31
	}
	else if (month == 2){
		yearTest = year % 4
		if (yearTest == 0){
			maxDays = 29
		}
		else{
			maxDays = 28
		}
	}

	if ((day > maxDays) || (day == "") || (day < 1)){
		obj.focus()
		obj.select()
		alert(alertName + " is not a valid day. Please enter in the following format: mm/dd/yyyy");
		return false;
	
	}
	
	var today = new Date();
	var thisYear = today.getYear() + 1900;

	if (year.length > 4){
		obj.focus()
		obj.select()
		alert(alertName + " is not a valid year. Please enter in the following format: mm/dd/yyyy");
		return false;
	}
	
	if ((year < 1900) || (year == "")){
		obj.focus()
		obj.select()
		alert(alertName + " is not a valid year. Please enter in the following format: mm/dd/yyyy");
		return false;
	
	}
	if (futureRef != 1){
		if ((year > thisYear)){
			obj.focus()
			obj.select()
			alert("You cannot enter a year greater than the current year");
			return false;
		
		}
	}
    	
    }	
	return true;
}

// ******************************************************************************************

function checkValueToMinMax(value, minValue, maxValue, valueName){

	if(!((value >= minValue) && (value <= maxValue))){
		alert(valueName + " value may not be lower than " + minValue + ", or higher than " + maxValue + ".")
		return false;
	}
}

// ******************************************************************************************

function verifyUrl(obj){

// *********************************************************************
//  This script searches a string and verifies it as a url. It checks
//  for http:// or https:// to begin the string, and then allows any
//  alphanumeric characters. Checks and determines if the string is 
//  an IP or web address, and verifies it is formatted correctly.
//  Lastly, the function checks for a "/" at the end of the string.
// *********************************************************************

	var myCheck
	var ipCheck
	var newUrl
	var mytestUrl
	
	myCheck = "0"
	ipCheck = "0"
	mytestUrl = ""
	
	newUrl = obj.value
	
	if (newUrl == ""){		
		alert("Value may not be left blank");
		return false;	
	}
	else{					
		h = newUrl.indexOf("http://");		// should be found in pos 0
		h2 = newUrl.indexOf("https://");	// should be found in pos 0
		alpha1 = newUrl.charAt("7")		// checks for alpha value in pos 7
		alpha2 = newUrl.charAt("8")		// checks for alpha value in pos 8
		
// ***********************************************************************************
//  Checks that the url string begins with http:// or https://, if not returns false.
// ***********************************************************************************
		
		if (h == "0"){
			myCheck = 1
			mytestUrl = "h"
		}
		else if (h2 == "0"){
			myCheck = 1
			mytestUrl = "h2"
		}
		else{
			alert("A valid url begins with http:// or https://")
			return false
		}			

// ******************************************************************************************
//  Checks to see if the url is an IP or a web address, and checks for spaces within string.
// ******************************************************************************************

		if (myCheck == "1"){
		
		var spCheck = "0"
					
			if (alpha1 == ""){
				alert("You have entered an invalid IP format");
			}
			else{
				for (v = 0; v < newUrl.length; v++){
					var c =  newUrl.charAt(v);
					if ((c == " ") || (c == ";")){
						spCheck = 1
					}
					else				
					if (! ((c >= "a") && (c <= "z")) || ((c >= "A") && (c <= "Z"))){						
						if ((c >= 0) && (c <= 9)){
							ipCheck = 1						
						}
						else{
							myCheck = 2
						}
					}				
				}
				if (spCheck == "1"){
					alert("URL may not contains spaces or invalid characters.")
					return false
				}
			}			
			
		}

// **********************************************************************************
//  Checks the IP formatting.
//  IP format is: http(s)://[3 digit max].[3 digit max].[3 digit max].[3 digit max]
// **********************************************************************************
		
		if (ipCheck == "1"){
		
		tempUrl = "";
		myDots = 0;
		myHit = 0;
		firstCharCheck = 0
		
		if (mytestUrl == "h"){
			firstCharCheck = 7
		}
		else if (mytestUrl == "h2"){
			firstCharCheck = 8
		}
		
			for (i = firstCharCheck; i < newUrl.length; i++){
			
				c = newUrl.charAt(i)
				
				if (i == firstCharCheck){
					if (!((c >= 0) && (c <= 9))){
						alert("You have entered an invalid IP format");
						return false;
					}					
				}
				
				if ((c >= 0) && (c <= 9)){
					if (tempUrl.length > 2){
					
						alert("You have entered an invalid IP format");
						return false;
					}
					else{
						tempUrl = tempUrl + c;
						myCheck = 4;
						myHit = 0;
					}					
				}
				else if (c == "."){
					myHit = myHit + 1
					myDots = myDots + 1				
					if (tempUrl.length > 3){
						alert("You have entered an invalid IP format");
						break;
						return false;
					}
					else{
						tempUrl = ""
					}
				}
				if (myHit > 1){
					alert("double dot");
					return false;
				}

			}
			if ((myDots > 0)&&(myDots < 3)){
				alert("You have entered an invalid IP format");
				return false;
			}
		}

// ***************************************************************************
//  Check for forward slash at end of url, if not return false.
// ***************************************************************************
		
		l = newUrl.lastIndexOf("/")
		
		if (l == newUrl.length - 1){
			myCheck = 4
		}
		else{
			alert("A valid url must contain '/' as the last character")
			return false;
		}
	}
	
	if (myCheck == "4"){
		return true;
	}
}
