// form3.php - validation and misc. js functions for DirectBuy
//
// Created by: Steven Pinto @ DevTel.net
// Created on: 9/24/2009
//
// 10/19/2009 - Added phone number validation
// 10/19/2009 - Colored the errored text fields yellow for better usability


function validatePhone(fld) {
    var error = "";
    var stripped = fld.value.replace(/[\(\)\.\-\ ]/g, '');     

   if (fld.value == "") {
        error = "\"Phone Number\" is a required field\n";
        fld.style.background = 'Yellow';
    } else if (isNaN(parseInt(stripped))) {
        error = "The \"Phone Number\" contains invalid characters.\n";
        fld.style.background = 'Yellow';
    } else if (!(stripped.length == 10)) {
        error = "The \"Phone Number\" must be 10 digits.\n";
        fld.style.background = 'Yellow';
    } 
	return error;
}

function val_db_frm(formname)
	{
		var error_msg = "";
		{
			if (val_txt(document.forms[formname].elements["first"].value,50,true) == false)
				{
					error_msg += "\"First Name\" is a required field\n";
					document.forms[formname].elements["first"].style.background = 'Yellow';
				}
				
			if (val_txt(document.forms[formname].elements["last"].value,50,true) == false)
				{
					error_msg += "\"Last Name\" is a required field\n";
					document.forms[formname].elements["last"].style.background = 'Yellow';
				}
				
			if (val_txt(document.forms[formname].elements["address"].value,200,true) == false)
				{
					error_msg += "\"Address\" is a required field\n";
					document.forms[formname].elements["address"].style.background = 'Yellow';
				}
				
			if (val_txt(document.forms[formname].elements["city"].value,500,true) == false)
				{
					error_msg += "\"City\" is a required field\n";
					document.forms[formname].elements["city"].style.background = 'Yellow';
				}
				
			if (val_txt(document.forms[formname].elements["state"].value,2,true) == false)
				{
					error_msg += "\"State\" is a required field\n";
					document.forms[formname].elements["state"].style.background = 'Yellow';
				}
				
			if (val_number(document.forms[formname].elements["zip"].value,5,true) == false)
				{
					error_msg += "\"Zip Code\" is a required field\n";
					document.forms[formname].elements["zip"].style.background = 'Yellow';
				}
			
			var phoneerror = validatePhone(document.forms[formname].elements["phoneNumber"]);
			if (phoneerror != "")
				{
					error_msg += phoneerror;
					document.forms[formname].elements["phoneNumber"].style.background = 'Yellow';
				}
			if (document.forms[formname].elements["email"].value != "")
				{
					if (echeck(document.forms[formname].elements["email"].value) == false)
						{
							error_msg += "You entered an invalid \"E-mail\" address\n";
							document.forms[formname].elements["email"].style.background = 'Yellow';
						}
				}
						
			if (error_msg != "")
				{
					alert("Please correct the following fields:\n\n"+error_msg);
					return false;
				}
			else
				{
					return true;
				}
			}
	}
	
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){
		   return false
		}

		if (str.indexOf(at)==-1 || str.indexOf(at)==0 || str.indexOf(at)==lstr){
		   return false
		}

		if (str.indexOf(dot)==-1 || str.indexOf(dot)==0 || str.indexOf(dot)==lstr){
		    return false
		}

		 if (str.indexOf(at,(lat+1))!=-1){
		    return false
		 }

		 if (str.substring(lat-1,lat)==dot || str.substring(lat+1,lat+2)==dot){
		    return false
		 }

		 if (str.indexOf(dot,(lat+2))==-1){
		    return false
		 }
		
		 if (str.indexOf(" ")!=-1){
		    return false
		 }

 		 return true					
	}

function val_number(numval,numlen,isrequired)
	{
   var strValidChars = "0123456789";
   var strChar;
   var blnResult = true;

   if (numval.length == 0 && isrequired == true) return false;
   if (numval.length > numlen) return false;
   //  test strString consists of valid characters listed above
   for (i = 0; i < numval.length && blnResult == true; i++)
      {
      strChar = numval.charAt(i);
      if (strValidChars.indexOf(strChar) == -1)
         {
         blnResult = false;
         }
      }
   return blnResult;
   }

function val_txt(txtval,txtlen,isrequired)
{
	var strValidChars = ".ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789_- ";
   	var strChar;
   	var blnResult = true;
	
	if (txtval.length == 0 && isrequired == true) return false;
	if (txtval.length > txtlen) return false;
	
	for (i = 0; i < txtval.length && blnResult == true; i++)
      {
      strChar = txtval.charAt(i);
      if (strValidChars.indexOf(strChar) == -1)
         {
         blnResult = false;
         }
      }
   return blnResult;
   }

function Left(str, n){
	if (n <= 0)
	    return "";
	else if (n > String(str).length)
	    return str;
	else
	    return String(str).substring(0,n);
}






