	// Version 1.01 Current as of 09/15/00
	
	// Only says that this is in a valid date format ie[xx/xx/xxxx or any numeric combo with slash
	// delimiters (you still have to check if month day combo is legal)
	function isDateFormat(str)
	{
		// Get into string object
		var sTemp = new String(str);
		x = sTemp.search(/([0][1-9]|[1][012]|[1-9])[\/]([0][1-9]|[12]\d?|[3][01]|[1-9])[\/](\d{2}|\d{4})$/);	// all combos still have to chek month day combo validation
		return TrueorFalse(x);
	}
	
	function isDate(str)
	{
		var day;
		var pos1;
		var pos2;
		var month;
		var year;
		
		
		
		var sTemp = new String(str);
		if(!isDateFormat(sTemp))
			return false;
		
		// Now we know it is in a good format
		sTemp = trim(sTemp);
		
		// Get the month(position of first "/")
		pos1 = instr(1,sTemp,"/");
		month = left(sTemp,pos1-1);
		
				
		// Get day (position of second "/")
		sTemp = mid((pos1+1),sTemp,len(sTemp));
		pos2 = instr(1,sTemp,"/");
	
		day = left(sTemp,pos2-1);
		
		// Validate day month combo, need year to get leapyear possibility
		year = right(sTemp,len(sTemp)-pos2);
		
		
		if (isValidMonthDay(month,day,year))
		{
			// Now Check Safe SQL Year
						
			if (instr(1,right(sTemp,4),"/") == 0)
			{
				// This is a four digit year, check that it is greater than 1752
				if(	right(sTemp,4) > "1752")
				{
					
					return true; // OK SQL Date
				}
				else
				{
					return false; // Bad SQL Date
				}
			}
			else
				return true; // Good two digit year
		}
		else // Not a valid date
		{
			return false;
		}
		
		
		
			
		
		
	}	
	
	// Returns true if leapyear
function isLeapYear(year)
{
	return (year % 4 == 0 && (year % 100 !=0 || year % 400 ==0));
}

// Returns true if Day Month Combo is Legal
function isValidMonthDay(month,day,year)
{
		
	// Return Value to be assigned
	var  gooddate = true;
	
	
	// Months with thrity days
	var sThirty = " 09 9 04 4 06 6 11 "
		
	// Check for Feb First
	if ( month == "02" || month == "2" )
	{
		
		if(isLeapYear(year))
		{
			if(day <= 29) // If leap year and 29 or less date is good
				gooddate = true;
			else 
				gooddate = false;
			
		}
		else // Not a leap year check day less than equal to 28
		{
			if(day >= 29)
			 gooddate = false;
			
			
		}
				
	} // Not feb
	else
	{
		// If not Feb check if should have thirty days
		// Returns 0 if not found
		var index = instr(1,sThirty,month)
	
		if (index > 0) // This month must have thiry days 
		{
			if(day > 30)
				gooddate = false;
					
		}
		else
		{
			 if(day > 31)
				goodate = false;
		}
	}
		
	
	return gooddate;
}
	
	function isZipcode(str)
	{
		var sTemp = new String(str);
		x = sTemp.search(/(\d{5}$)|\d{5}-?\d{4}/); // Matches xxxxx or xxxxx-xxxx
		return TrueorFalse(x);
	}
	
	function reformat (s)

	{   var arg;
	    var sPos = 0;
	    var resultString = "";

	    for (var i = 1; i < reformat.arguments.length; i++) {
	       arg = reformat.arguments[i];
	       if (i % 2 == 1) resultString += arg;
	       else {
	           resultString += s.substring(sPos, sPos + arg);
	           sPos += arg;
	       }
	    }
	    return resultString;
	}

	function reformatSSN(str)
	{   
		newssn=(reformat(str, "", 3, "-", 2, "-", 4));
	}

	
	function isSocialSecurity(str)
	{
		var sTemp = new String(str);
		x = sTemp.search(/\d{3}-?\d{2}-?\d{4}$/); // Matches xxx-xx-xxxx or xxxxxxxx
		return TrueorFalse(x);
	}
	
	function isPhoneNumber(str)
	{
		
		var sTemp = new String(str);
		x = sTemp.search(/\d{3}-?\d{3}-?\d{4}$/); // Matches xxx-xxx-xxxx or xxxxxxxx 
		return TrueorFalse(x);
	}
	 
	
	
	
	// Returns a string as with vb
	function mid(start,str,length)
	{
		start = (start == 1) ? 0 : (start - 1);
		length = start + length;
		
		var sTemp = new String(str);
		
		// Get substring
		return sTemp.substring(eval(start),eval(length));
	}
	
	
	// Returns trimmed version of string
	function trim(str)
	{
		var sTemp = new String(str);
		var sReturn = new String();
		for(var i = 0;i<=sTemp.length;i++)
		{
			if(sTemp.charAt(i) != " ")
				sReturn = sReturn + sTemp.charAt(i);
		}
		return sReturn;
				
		
	}
	
	// Returns left part of string as with vb
	function left(str,length)
	{
		var sTemp = new String(str);
		
		// Get substring
		return sTemp.substring(0,eval(length));
	}
	
	// Returns left part of string as with vb
	function right(str,length)
	{
		var sTemp = new String(str);
		var endofstr = sTemp.length;
		var start = endofstr - length;
		
		// Get substring
		return sTemp.substring(start,endofstr);
	}
	
	
	// Returns index of a string or character within a string as with vb
	// Returns 0 if not found
	function instr(start,strToSearch,strToFind)
	{
		
		var sTemp = new String(strToSearch);
		
		start = (start == 1) ? 0 : (start - 1);
				
		// Get substring
		return (sTemp.indexOf(strToFind,start) + 1);
	}
	
	// Returns length of string
	function len(str)
	{
		sTemp = new String(str);
		return sTemp.length; 
		
	}
	
	// Returns upper case version of string
	function ucase(str)
	{
		sTemp = new String(str);
		sTemp = sTemp.toUpperCase();
		return sTemp; 
		
	}
	
	
	// Returns lower case version of string
	function lcase(str)
	{
		sTemp = new String(str);
		sTemp = sTemp.toLowerCase();
		return sTemp; 
		
	}
	
	
	// Validates numbers
	function isNumeric(val)
	{
		sTemp = new String(val);
		//Use reg expr digits only
		return(TrueorFalse(sTemp.search(/\d+$/)));
	}
	
	function valnumbers (entry)
	{
		retval=true
		if (entry == " ")
			{
			retval=false;
			return retval;
			}
				for (var i=0; i<entry.length; i++)
				{
				if (entry.charAt(i) != " ")	
					{
					if ( !parseFloat(entry.charAt(i)) && entry.charAt(i)!="0"  && entry.charAt(i)!="." )
						{
						retval=false;
						break;
						}
					}
				}
		return retval;
	}



	// Validates Currency
	function isCurrency(str)
	{
		
		var sTemp = new String(str);
		//x = sTemp.search( /(\d|\$)\d*\.?\d\d$/);  
		x = sTemp.search(/(\$)?(\d{1,3}((\,\d{3})*)|(\d+))?(\.\d\d)?$/) // Allows commas
		
		return TrueorFalse(x);
	}

	 function isTime(str)
	{
		// Get into string object
		var sTemp = new String(str);
		x = sTemp.search(/([0][1-9]|[1][012]|\d)[:][0-5]\d([:][0-5]\d)?\s?(AM|am|PM|pm)$/);  // also accept optional space before AM/PM
		return TrueorFalse(x);
	}

	
	// This function is a utility to use inside of other functions
	// False values are any non-zero values
	function TrueorFalse(val)
	{
		return (val == 0) ? true : false; 
	}
	
	
	function echeck(str) 
	{
		var at="@"
		var dot="."
		var lat=str.indexOf(at)
		var lstr=str.length
		var ldot=str.indexOf(dot)
		if (str.indexOf(at)==-1){
		   //alert("Invalid E-mail ID")
		   return false
		}
	
		if (str.indexOf(at)==-1 || str.indexOf(at)==0 || str.indexOf(at)==lstr){
		   //alert("Invalid E-mail ID")
		   return false
		}
	
		if (str.indexOf(dot)==-1 || str.indexOf(dot)==0 || str.indexOf(dot)==lstr){
		   // alert("Invalid E-mail ID")
			return false
		}
	
		 if (str.indexOf(at,(lat+1))!=-1){
			//alert("Invalid E-mail ID")
			return false
		 }
	
		 if (str.substring(lat-1,lat)==dot || str.substring(lat+1,lat+2)==dot){
			//alert("Invalid E-mail ID")
			return false
		 }
	
		 if (str.indexOf(dot,(lat+2))==-1){
			//alert("Invalid E-mail ID")
			return false
		 }
			
		 if (str.indexOf(" ")!=-1){
			//alert("Invalid E-mail ID")
			return false
		 }
	
		 return true					
	}
	
	var bag = "0123456789";
	function stripCharsNotInBag (s, bag)
	
	{   var i;
		var returnString = "";
	
		// Search through string's characters one by one.
		// If character is in bag, append to returnString.
	
		for (i = 0; i < s.length; i++)
		{
			// Check that current character isn't whitespace.
			var c = s.charAt(i);
			if (bag.indexOf(c) != -1) returnString += c;
		}
	
		return returnString;
	}
	
	var goodbag = "`~!@#$%^&*()-+=[{]}\|';<>,?/";
	function stripCharsNotInMyBag (s, goodbag)
	
	{   var i;
		var returnString = "";
	
		// Search through string's characters one by one.
		// If character is in bag, append to returnString.
	
		for (i = 0; i < s.length; i++)
		{
			// Check that current character isn't whitespace.
			var c = s.charAt(i);
			if (goodbag.indexOf(c) != -1) returnString += c;
		}
	
		return returnString;
	}
	
	function valnumbers (entry)
	{
		retval=true
		if (entry == " ")
			{
			retval=false;
			return retval;
			}
				for (var i=0; i<entry.length; i++)
				{
				if (entry.charAt(i) != " ")	
					{
					if ( !parseFloat(entry.charAt(i)) && entry.charAt(i)!="." && entry.charAt(i)!="0" )
						{
						retval=false;
						break;
						}
					}
				}
		return retval;
	}
	
	
	
	




