///Form Script

function openInParent(url)
{
   var parentWindow = window.opener;
   if (window.opener)
   {
       window.opener.top.location = url;
       window.close();
   }
}

var externalContactWindow;
function openExternal(url)
{
    var options = "toolbar=1,location=1,directories=0,status=1,menubar=1,scrollbars=1,width=650,height=400";
    if( window.screen ) {
      var xPos = ( screen.availWidth - 650 ) / 2;
      var yPos = ( ( screen.availHeight - 400 ) / 2 ) - 80;
      options += ",left=" + xPos + ",screenX=" + xPos;
      options += ",top=" + yPos + ",screenY=" + yPos;
    }
    if (navigator.appName != "Netscape") {
	if (externalContactWindow != null) externalContactWindow.close();
    }
    externalContactWindow = window.open(url, 'external', options);
    externalContactWindow.focus();
}

//For Vehicle Manuals link added by Compuware on 051203
function openExternalManuals (url)
{
    var options = "toolbar=1,location=1,directories=0,resizable,status=1,menubar=1,scrollbars=1,width=650,height=400";
    if( window.screen ) {
      var xPos = ( screen.availWidth - 650 ) / 2;
      var yPos = ( ( screen.availHeight - 400 ) / 2 ) - 80;
      options += ",left=" + xPos + ",screenX=" + xPos;
      options += ",top=" + yPos + ",screenY=" + yPos;
    }
    if (navigator.appName != "Netscape") {
	if (externalContactWindow != null) externalContactWindow.close();
    }
    externalContactWindow = window.open(url, 'external', options);
    externalContactWindow.focus();
}


//Form Script

function isMandatoryField(fieldName)
{
   mandatory = false ;
   for (var i = 0; i < mandatoryFields.length ; i++)
   {
	if (mandatoryFields[i] == fieldName)
        {
            mandatory = true ; 
	    break ;
        }
   }
   return mandatory ;
}


function isEmpty(field)
{
    if (field.type == "select-one" || field.type == "select-multiple") 
    {
        if (!field.options[field.selectedIndex].value)
            return true ;
    } 
    else if (fnTrim(field.value) == "") 
        return true ;

    return false ;
}


function fnTrim( str1 )
{
     if (str1.length == 0)
	 return str1 ;
     
     firstStr = new String(str1);
     var len1 = firstStr.length;
     var start1 = 0;
     var start2 = len1 ;
     var result = new String("");
		
     while( (start1 < len1)  )
     {
	 if( firstStr.charAt(start1) == ' ' )
	     start1++;
	 else
	     break;
     }

     while( ( start2 > 0 ) )
     {
	 if( firstStr.charAt(start2) == ' ' )
	     start2-- ;
	 else
	     break ;
     }
     return firstStr.substr(start1, start2) ;
}


function isVinRelatedForm(form) {
    if (form.vin_related == null)
	return false ;

    if (form.vin_related[0].checked)
      checkedValue = form.vin_related[0].value ;
    else
        checkedValue = form.vin_related[1].value ;

    if (checkedValue == "Yes")
	return true ;
    else
	return false ;
}

var customerSaidOk = false;
var theForm;

function validateFields(form)
{
   theForm = form;
   error = false ;
   empty_fields = "" ;
   con_error = false ;
   con_msg = "" ;
   msg = "";
   field = null;
   fieldDesc = "";

   for (var i = 0; i < form.elements.length; i++) 
   {
      field = form.elements[i];

      switch (field.name)
      {
      case "sub_menu": 
	  fieldDesc = "Subject Category";
	  if (isEmpty(field))
	  {	
	      if (isMandatoryField(field.name))
	      {
		  empty_fields += fieldDesc + ", " ;
		  error = true ;
	      }
	  }
	  break;
      

	   case "description" :
	       syncValue(form, field);
	       fieldDesc = "Brief Description (at the top of the page)" ;
                if (isEmpty(field))
		{	
		    if (isMandatoryField(field.name))
		    {
		       empty_fields += fieldDesc + ", " ;
		       error = true ;
                    }
      		}
		break ;
	

	   case "vin_number" :
	       fieldDesc = "Vin Number" ;
	       vin_message = "\nPlease enter a valid VIN Number." ;
	       
	       if (isEmpty(field))
	       {	
		   if ((isMandatoryField(field.name)) || isVinRelatedForm(form))
		   {
		       empty_fields += fieldDesc + ", " ;
		       error = true ;
		   }
	       }
	       else
	       {
		   if (field.value.length != 8)
		   {
		       con_error = true;
		       con_msg += vin_message ;
		   }
		   else if (! (isVin(field.value)))
		   {   
		       con_error = true;
		       con_msg += vin_message ;
		   }
	       }
	       break;
	       
      case "mileage" :
	       fieldDesc = "Current Mileage" ;
	       message = "\nMileage: Please enter a number less than 1,000,000." ;
	       
	       if (isEmpty(field))
	       {	
		   if ((isMandatoryField(field.name)) || isVinRelatedForm(form))
		   {
		       empty_fields +=  fieldDesc + ", " ;
		       error = true ;
		   }
	       }
	       else
	       {
	            if (!(isMileage(field.value)) || field.value.length > 6)
                    {
	         	con_error = true;
	       		con_msg += message;
	      	    }
	       }
	       break;
	       
	       
	   case "first_name" :
	       fieldDesc = "First Name" ;
	       if (isEmpty(field))
	       {	
		   if (isMandatoryField(field.name))
		   {
		       empty_fields +=  fieldDesc + ", " ;
		       error = true ;
		   }
	       }
	       break;
	       
	   case "last_name" :
	       fieldDesc = "Last Name" ;
	       if (isEmpty(field))
	       {	
		   if (isMandatoryField(field.name))
		   {
		       empty_fields +=  fieldDesc +  ", " ;
		       error = true ;
		   }
      		}
	       break;
	       
	   case "address_1" :
	       fieldDesc = "Address 1" ;
	       if (isEmpty(field))
	       {	
		   if (isMandatoryField(field.name))
		   {
		       empty_fields +=  fieldDesc + ", " ;
		       error = true ;
		   }
	       }
	       break;
		
		
	   case "city" :
	       fieldDesc = "City" ;
	       if (isEmpty(field))
	       {	
		   if (isMandatoryField(field.name))
		   {
		       empty_fields +=  fieldDesc + ", " ;
		       error = true ;
		   }
	       }
	       break;
	       
	       
	   case "state" :
		fieldDesc = "State" ;
                if (isEmpty(field))
		{	
		    if (isMandatoryField(field.name))
		    {
		       empty_fields +=  fieldDesc + ", " ;
		       error = true ;
                    }
      		}
		break ;


      case "zip" :
	       fieldDesc =  "Zip" ;
	   message = "\nPlease enter a valid Zip." ;

	       if (isEmpty(field))
	       {	
		   if (isMandatoryField(field.name))
		   {
		       empty_fields +=  fieldDesc + ", " ;
		       error = true ;
		   }
	       }
	       else
	       {
		   if (field.value.length < 5 || (! isZip(field.value)))
		       
		   {
		       con_error = true;
		       con_msg += message ;
		   }
	       }
	       break ;
	       
      case "from" :
	  emailAddress = field.value ;
	  fieldDesc =  "Email" ;
	  message = "\nPlease enter a valid E-mail Id." ;
	  if (isEmpty(field))
	  {
	      if (isMandatoryField(field.name))
	      {
		  empty_fields +=  fieldDesc + ", " ;
		  error = true ;
	      }
	  }
	  else
	  {
	      if (!isEmail(field.value)) 
	      {
		  con_error = true;
		  con_msg += message;
	      }
	  
	  }
	  break;
	  
      case "area" :
	  fieldDesc =  "Telephone Number" ;
	  message = "\nPlease enter a valid Telephone Number." ;
	  if (!form.area.value & !form.phone_1.value & !form.phone_2.value) 
	  {
	      if (isMandatoryField(field.name))
	      {
		  empty_fields += fieldDesc + ", " ;
		  error = true;
	      }
	  } 
	  else 
	  {
	      if(!isNumeric(form.area.value) || form.area.value.length != 3 
		 || !isNumeric(form.phone_1.value) || form.phone_1.value.length != 3 
		 || !isNumeric(form.phone_2.value) || form.phone_2.value.length != 4) 
	      {
		  con_error = true;
		  con_msg += message ;
	      }
	  }
	  
	  break;
	  
      case "comments" :
	  syncValue(form, field);
	  fieldDesc =  "Comments" ;
	  message = "\nThe Comments area is limited to 10,000 characters." ;
	  if (isEmpty(field))
	  {	
	      if (isMandatoryField(field.name))
	      {
		  empty_fields += fieldDesc + ", " ;
		  error = true ;
	      }
	  }
	  else
	  {
	      if (field.value.length > 10000)
	      {
		  con_error = true;
		  con_msg += message;
	      }
	  }
	  break ; 
	  
      } //End switch
   } //End For loop


   // display errors //
   if(error || con_error) 
   {
      if (error) 
      {
      	 empty_fields = empty_fields.substr(0,empty_fields.length -2) + ".";

	 msg += "The following field(s) are required to continue:\n\n";

         if (empty_fields.lastIndexOf(",") != -1)
         {
             msg += empty_fields.substr(0, empty_fields.lastIndexOf(","));
             msg += " & ";
             msg += empty_fields.substr(empty_fields.lastIndexOf(",") +2, empty_fields.length);
         } 
         else msg += empty_fields;
      }

      if(con_error) 
      {
         if(error) msg += "\n";
      	 msg += con_msg;
      }

      alert(msg);
      return false;
    }

   // Customer has to OK address from popup. Form will be submitted
   // by the hitOk function when customer OKs address in popup
    confirmEmail(form.from.value);

    // This function should not be allowed to do the submit.
    // always return false.
    return false;

} //End function

function hitOk()
{
    customerSaidOk = true;
    // Submit the form again here
    theForm.submitted.value = "true" ;
    theForm.visible_description.value = "";
    theForm.visible_comments.value = "";
    theForm.submit();
}

function getEmailAddress()
{
    return theForm.from.value;
}

var popup;
var wwwFound = false;

function confirmEmail(emailAddress)
{
    wwwInEmail(emailAddress);
    if (wwwFound == true) {
	return;
    }
    var options = "toolbar=0,location=0,directories=0,status=0,menubar=0,scrollbars=0,width=466,height=200";
    if( window.screen ) {
      var xPos = ( screen.availWidth - 466 ) / 2;
      var yPos = ( ( screen.availHeight - 200 ) / 2 ) - 40;
      options += ",left=" + xPos + ",screenX=" + xPos;
      options += ",top=" + yPos + ",screenY=" + yPos;
    }
    if (navigator.appName != "Netscape") {
	if (popup != null) popup.close();
    }
    popup = window.open('', 'emailCfm', options);

    var htmlString = 
		'<html>' +
		'<head><title>Confirm your E-mail address</title>' +
		'</head>' +
		'<body onBlur="window.focus()"> ' +
		'<center>' +
		'<form>' +
		'<table>' +
	// '<tr> <td align=right><font face="verdana" size=2>Your E-mail address : </font></td> <td align=center bgcolor=black> <b><font face="verdana" size=2 color="white">' + emailAddress + '</font></b></td></tr>' +
	        '<tr> <td align=center><font face="verdana" size=2>Your E-mail address : </font> <b><font face="verdana" size=2 color="blue">' + emailAddress + '</font></b></td></tr>' +
		'<tr> <td align=center valign=bottom><font face="verdana" size=2><br>Do you see any errors in the E-mail address listed above? </font><font color=maroon size=1>&#042</font><br></td></tr>' +
		'<tr> <td align=center><br><input type="button" value="Let me correct my E-mail address" onClick="window.opener.theForm.from.focus();window.close()"> </br></br>' +
		'				 <input type="button" value="E-mail address is correct" onClick="window.opener.hitOk();window.close()"> </td>' + 
		'</tr>' +
		'<tr> <td align=center><font face="verdana" size=1 color=maroon>' +
		'<br><nobr>&#042 If your E-mail address is incorrect, we will be unable to respond to your request.</nobr>' +
		'</table>' +
		'</form>' +
		'</center></body></html>';

    popup.document.writeln(htmlString);
}

function wwwInEmail(emailAddress)
{
    var wwwLoc = emailAddress.indexOf("www.");
    if (wwwLoc == -1) {
	wwwFound = false;
	return;
    }

    badAddress = emailAddress;
    goodAddress = emailAddress.substr(4);
    var options = "toolbar=0,location=0,directories=0,status=0,menubar=0,scrollbars=0,width=450,height=280";
    if( window.screen ) {
      var xPos = ( screen.availWidth - 450 ) / 2;
      var yPos = ( ( screen.availHeight - 280 ) / 2 ) - 40;
      options += ",left=" + xPos + ",screenX=" + xPos;
      options += ",top=" + yPos + ",screenY=" + yPos;
    }
    if (navigator.appName != "Netscape") {
	if (popup != null) popup.close();
    }
    popup = window.open('', 'emailCfm', options);

    var htmlString = 
		'<html>' +
		'<head><title>Confirm E-mail address</title>' +
		'</head>' +
		'<body onBlur="window.focus()"> ' +
		'<center>' +
		'<form>' +
		'<table>' +
		'<tr> <td align=center> <font face="verdana" size=2>You entered E-mail address ' +
		'      <font color=blue><b>' + badAddress + '</b></font>. <br>' + 
		'      Please note that E-mail addresses typically do not have a <b>"www."</b> at the start. If your address is incorrect, we will not be able to respond to your request. </br></br>Perhaps you meant your E-mail address to be ' +
		'      <b><font color="blue">' + goodAddress + '</font></b></td></tr>' +
		'<tr> <td align=center> <br><br><input type="button" value="Let me correct it" onClick="window.close()"> </br></br>' +
		'				 <input type="button" value="I entered my address correctly" onClick="window.opener.hitOk();window.close()"> </td>' + 
		'</tr>' +
		'</table>' +
		'</form>' +
		'</center></body></html>';
    popup.document.writeln(htmlString);
    // return true; // do not continue with regular confirm
    wwwFound = true;
}

function isEmail(addr) 
{
    var at = false;
    var per = false;
    var chr;
    for (var i = 0; i < addr.length; i++)
    {
	chr = addr.charAt(i);
        if((chr == " ") || (chr == "\t") || (chr == "\n"))
	    return false;
        if (chr == "@")
	{
	    if (at)
		return false
            else
		at = true;
        }

	if ((chr == ".") && (at == true))
	    per = true;
    }
    
    if(!at || !per)
	return false;
    else
	return true;
}


function isNumeric(d) {
  var c;
  for(var i=0; i<d.length; i++) {
    c = d.charAt(i);
    if(!(c >= "0" && c <= "9")) return false;
  }
  return true;
}

function isLetter(d){ 
    var c;
    for(var i=0; i<d.length; i++) {
	c = d.charAt(i);
	if(!(c >= "A" && c <= "Z")) return false;
    }
    return true;
}

function isVin(d){ 
  var c;
  for(var i=0; i<d.length; i++) {
      c = d.charAt(i);
      if(!(c >= "A" && c <= "Z" || c >= "0" && c <= "9")) return false;
  }
  return true;
}

function isMileage(d)
{ 
  var c;
  for(var i=0; i<d.length; i++) 
  {
    c = d.charAt(i);
    if(!(c >= "0" && c <= "9" || c == ",")) return false;
  }
  return true;
}

function isZip(d)
{ 
  var c;
  for(var i=0; i<d.length; i++) {
    c = d.charAt(i);
    if(!(c >= "0" && c <= "9")) return false;
  }
  return true;
}


function stripComma(string) {
  if(string.indexOf(",") != -1) {
    x = string.indexOf(",");
    return string.substring(0, x) + string.substring(x +1, string.length);
  } else return string;
}

// Function will sync value from a visible_<field> to the actual field
// on the form before the field is validated.
function syncValue(form, field)
{
    field.value = form.elements['visible_' + field.name].value;
}

function goToEmailForm(catValue)
{
    top.document.forms['emailInput'].category.value = catValue;
    top.document.forms['emailInput'].submit();    
}

function enableVin(){

document.getElementById("vin_number").disabled = false;
document.getElementById("vin_number").className="FieldUnlocked";
document.getElementById("mileage").disabled = false;
document.getElementById("mileage").className="FieldUnlocked";
document.getElementById("service_center_name").disabled = false;
document.getElementById("service_center_name").className="FieldUnlocked";
}


function disableVin(){
alert('All the VIN related fields will be disabled since you have NO questions regarding your vehicle');
document.getElementById("vin_number").disabled = true;
document.getElementById("vin_number").className="FieldLocked";
document.getElementById("mileage").disabled = true;
document.getElementById("mileage").className="FieldLocked";
document.getElementById("service_center_name").disabled = true;
document.getElementById("service_center_name").className="FieldLocked";
}
