/*
'+---------------------------------------------------------------+
'| Copyright 2001 MachroTech, LLC                                |
'| http://www.machrotech.com                                     |
'|                                                               |
'| This software contains confidential information which is the  |
'| property of Machrotech, LLC. This entire software package is  |
'| protected by the copyright laws of the United States and      |
'| elsewhere. All rights are reserved. No part of this software  |
'| may be copied, transcribed or used without express written    |
'| permission of MachroTech. This includes but is not limited to |
'| the source code, designs, concepts, interfaces and            |
'| documentation that are associated with this software and its  |
'| development.                                                  |
'+---------------------------------------------------------------+
*/


	function validate_PhoneNew(obj, sFieldName)
	{
		//Commented for Netscape Crash Error - Have to be replaced		
		//var exp = /^[0-9a-zA-Z()_-]+(\S|\s)[0-9a-zA-Z()_-]+$/		
		var exp = /^[0-9a-zA-Z()_-]+(\S|\s)[0-9a-zA-Z()_-]+(\S|\s)[0-9a-zA-Z()_-]+$/		
		return checkExp(exp, obj, "Please enter a valid " + sFieldName )
		return true;
	}


	function validate_URL(obj,sFieldName)
	{
		var exp = "^(((ht|f)tp(s?))\://)?(www.)?[a-zA-Z0-9\-\.\&]+\.(ac|as|be|biz|ca|cc|com|co.in|co.il|co.uk|co.nz|co.za|com.ru|com.ph|de|dk|edu|fm|gs|gov|il|info|jp|kz|lt|ms|mil|museum|nz|net|net.nz|name|org|org.il|org.nz|org.uk|ph|pro|ro|sh|st|tc|to|tv|uk|us|vg|vu|ws|za<b>[a-z][a-z]</b>)(\:[0-9]+)*(/($|[a-zA-Z0-9\.\,\?\'\\\+&%\$#\=~_\-]+))*$";
		var strRegExp = new RegExp(); 
		strRegExp.compile(exp); 
		if (!strRegExp.test(obj.value)) { 
                alert("Please enter a valid "+ sFieldName +"."); 
                obj.focus();
                return false; 
        } 
        return true;
	}


	function validate_TEXT(obj, sFieldName)
	{
		//Commented for Netscape Crash Error - Have to be replaced
		var exp = /^(\S|\s)+$/
		return checkExp(exp, obj, "The " + sFieldName + " must be filled out")
		return true;
	}

	function validate_NAME(obj, sFieldName)
	{
		//Commented for Netscape Crash Error - Have to be replaced
		var exp = /^[a-zA-Z]+(\S|\s)*[0-9a-zA-Z]+$/
		return checkExp(exp, obj, "Please enter a valid " + sFieldName )
		return true;
	}

	function validate_USERNAME(obj, sFieldName)
	{
		var exp = /^[a-zA-Z]+\w{4,}[0-9a-zA-Z]+$/
		return checkExp(exp, obj, "The username must be at least 6 characters long (it accepts a-zA-Z0-9 and _ only)")
	}

	function validate_CODE(obj, sFieldName)
	{
		var exp = /^[a-zA-Z]+[\w|\-]{4,}[0-9a-zA-Z]+$/
		return checkExp(exp, obj, "Please enter valid code")
	}

	function validate_ZIP(obj, sFieldName)
	{
		var exp = /^\d{5}$/
		return checkExp(exp, obj, "Please enter a valid ZIP code (5 digits only)")
	}

	function validate_PHONE(obj, sFieldName)
	{
		var exp = /^((\(\d{3}\) ?)|(\d{3}(-| )?))\d{3}(-| )?\d{4}$/
		return checkExp(exp, obj, "Please enter a valid US phone number (10 digits)")
	}
	
	function validate_EMAIL(obj, sFieldName)
	{
		var exp = /^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/
		return checkExp(exp, obj, "Please enter a valid email address")
	}
	
	function validate_UPC(obj, sFieldName)
	{
		var exp = /(^\d{6}$)|(^\d{12}$)/
		return checkExp(exp, obj, "Please enter a valid UPC code (6 or 12 digits)")
	}

	function validate_SSN(obj, sFieldName)
	{
		var exp = /^\d{3}-\d{2}-\d{4}$/
		return checkExp(exp, obj, "Please enter a valid tax ID or SSN in the format nnn-nn-nnnn")
	}

	function validate_WEIGHT(obj, sFieldName)
	{
		if (validate_DOUBLE(obj, sFieldName))
			if (obj.value <= 0)
			{
				alert("Please enter a number greater than zero for the weight")
				obj.focus();
				return false
			}
			else
				return true
		else
			return false
	}
	
	function validate_CURRENCY(obj, sFieldName)
	{
		obj.value = obj.value.replace("$", "")
		//obj.value = obj.value.replace(",", "")
		obj.value = strReplace(obj.value,",","")
		
		if (validate_DOUBLE(obj, sFieldName))
			if (obj.value < 0)
			{
				alert("Please enter a number greater or equal to zero for the " + sFieldName)
				obj.focus();	
				return false
			}
			else
			{
				obj.value = parseInt((parseFloat(obj.value) + 0.005) * 100) / 100
				return true
			}
		else
			return false		
	}	
	
	function validate_INTEGER(obj, sFieldName)
	{
		var val = parseInt(parseInt(obj.value) + 0.5)
		if (isNaN(val) || obj.value == "")
		{
			alert("Please enter a numeric " + sFieldName + " value")
			obj.focus();	
			return false
		}
		else
		{
			obj.value = val
			return true
		}
	}

	function validate_DOUBLE(obj, sFieldName)
	{
		var val = parseFloat(strReplace(obj.value,",",""))
		
		if (isNaN(val) || obj.value == "")
		{
			alert("Please enter a numeric value for the " + sFieldName)
			obj.focus();	
			return false
		}

		obj.value = val
		return true
	}
	
	function validate_DATE(obj, sFieldName)
	{
  		var testDate=new Date(Date.parse(obj.value));
		
		if(!testDate.getYear())
		{
		    alert("Please enter a valid " + sFieldName);
			obj.focus();
		    return false;
		}
		
		obj.value = testDate.getMonth() + 1 + "/" + testDate.getDate() + "/" + testDate.getYear()
		return true
	}
	
	function validate_DROPDOWN(obj, sFieldName)
	{	
		if (obj.selectedIndex == 0)
		{
			alert("Please select an option for the " + sFieldName)
			obj.focus();
			return false
		}
		
		return true
	}
	
	function validate_CUSTOM(obj)
	{
		return true
	}

	function validate_FILE(obj, sFieldName)
	{
		if (obj.value == "")
		{
			alert("Please browse for a file")
			obj.focus();
			return false
		}
		
		return true
	}

	function validate_TEXTAREA(obj, maxlen)
	{
		if (validate_TEXT(obj))
			if (obj.value.length > parseInt(maxlen))
			{
				alert("Please shorten your message.")
				obj.focus();
				return false
			}
			else
				return true
		else
			return false
	}

	function validate_CHECKBOX(obj, sFieldName)
	{
		return true
	}
	
	function validate_CUSTOM(obj)
	{
		return true
	}

	function validate_PASSWORD(obj)
	{
		var exp = /^([0-9a-zA-Z]){4,}$/
		return checkExp(exp, obj, "The password must be at least 4 characters long (letters and numbers only)")
	}
	
	function validate_CONFIRMPASSWORD(obj1,obj2)
	{
		if (obj1.value!=obj2.value)
		{
		alert("Please confirm your password");
		obj2.focus();
		return false;
		}
		return true;

	}

	function validate_HIDDEN(obj, sFieldName)
	{
		return true
	}		
	
	function trim(value)
	{
   		var exp = /^(\s*)(\S*)(\s*$)/;
   		if (exp.test(value)) 
   			value = value.replace(exp, '$2');
   			
   		return value;
   	}

	function checkExp(exp, obj, message)
	{
		obj.value = trim(obj.value)
				
		if (!exp.exec(obj.value))
		{
			alert(message);
			obj.focus();
			return false;
		}		
		
		return true;
	}

	function strReplace(strVal,strFrom,strTo)
	{
		var i;
		var strRes='';
		for(i=0;i<strVal.length;i++)
			{
			ch=strVal.substring(i,i+1);
			strRes+=ch==strFrom?strTo:ch
			}
		return strRes;
	}	
		//============= CREDIT CARD VALIDATION =====================//
	function validateCC(CCno,CCname) 
	// CCno is the card number
	// CCname is the name of the issuer of the card 
	{
	  Cno=CCno; 
	  Cno = Cno.split(' ').join('');
	  CCname = CCname.toLowerCase().split(' ').join();
	  
	  switch (CCname)
	  { 
	     case "visa" :
	        if (((Cno.length == 16) || (Cno.length == 13)) && (Cno.substring(0,1) == 4))
	        { 
	           return DOmod10(Cno); 
	        } 
	        return false; 
	     case "mastercard" : 
	          chr1 = Cno.substring(0,1); 
	          chr2 = Cno.substring(1,2); 
	          if ((Cno.length == 16) && (chr1 == 5) && ((chr2 >= 1) && (chr2 <= 5))) 
	         {
	             return DOmod10(Cno);
	         } 
	         return false; 
	      case "americanexpress" : 
	         chr1 = Cno.substring(0,1); 
	         chr2 = Cno.substring(1,2); 
	         if ((Cno.length == 15) && (chr1 == 3) && ((chr2 == 4) || (chr2 == 7))) 
	         {
	            return DOmod10(Cno); 
	         }
	         return false; 
	     case "dinersclub" : 
	        chr1 = Cno.substring(0,1); 
	        chr2 = Cno.substring(1,2); 
	        if ((Cno.length == 14) && (chr1 == 3) && ((chr2 == 0) || (chr2 == 6) || (chr2 == 8))) 
	        {
	            return DOmod10(Cno); 
	        }
	        return false; 
	     case "discover" : 
	        chr1to4 = Cno.substring(0,4); 
	        if ((Cno.length == 16) && (chr1to4 == "6011")) 
	       {
	           return DOmod10(Cno);
	       }
	       return false; 
	  }
	  return false; 
	} 

	function DOmod10(numstr) 
	{ 
	if (numstr.length > 19) 
	{
	  return (false); 
	}
	tot = 0;
	len = numstr.length; 
	mult = 1;
	Totval = 0;
	for (i = 0; i < len; i++)
	{ 
	  chrval = numstr.substring(len-i-1,len-i); 
	  Totval = parseInt(chrval ,10)*mult; 
	  if (Totval >= 10) 
	  {
	     tot += (Totval % 10) + 1; 
	  }
	  else 
	  {
	     tot += Totval; 
	  } 
	  if (mult == 1)
	  { 
	     mult++; 
	  }
	  else 
	  {
	     mult--; 
	  }
	} 
	if ((tot % 10) == 0) 
	{
	  return true; 
	}
	else
	{ 
	  return false; 
	} 
	}