var xmlHttp;

function httpRequest()
  {
  var xmlHttp;
  try
    {
    // Firefox, Opera 8.0+, Safari
    xmlHttp=new XMLHttpRequest();
    }
  catch (e)
    {
    // Internet Explorer
    try
      {
      xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
      }
    catch (e)
      {
      try
        {
        xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
        }
      catch (e)
        {
        alert("Your browser does not support AJAX!");
        return false;
        }
      }
    }

  return xmlHttp;
  }

function validateRightForm(thisform)
  {
    xmlHttp = httpRequest();
    var params="";
    var errFlag= false;
    //var moreInfoExists=false;
    with(thisform)
      {
      if(checkField(fullname) && errFlag == false )
        errFlag = true;

      if(checkField(email) && errFlag == false )
        errFlag = true;

      if(checkField(telephone) && errFlag == false )
        errFlag = true;

      if(document.getElementById("moreInfo"))
        {
        if(checkField(moreInfo) && errFlag == false )
          errFlag = true;
        }

      //if there is an error with the form, STOP!
      if(errFlag)
        return false;

      params="fname="+fullname.value+
             "&email="+email.value+
             "&phone="+telephone.value;

      if(document.getElementById("comments"))
        params += "&comments="+comments.value;

      if(document.getElementById("company"))
        params += "&company="+company.value;

      if(document.getElementById("moreInfo"))
        params += "&moreInfo="+moreInfo.value;
  
      params += "&web_referral="+web_referral.value;
      }

    var url="http://www.kellymediagroup.com/requests/process-requests.php?"+params;

    xmlHttp.onreadystatechange=handleValidateRightForm;
    xmlHttp.open("GET",url,true);
    xmlHttp.send(null);
    thisform.reset();
    return false;
  }

function handleValidateRightForm()
  {
  if(xmlHttp.readyState==4 )
    {
    //alert(xmlHttp.responseText);
    document.getElementById("thank-you-box").style.display="block";
    setTimeout("document.getElementById(\"thank-you-box\").style.display=\"none\"",10000);
    }
  }


//checks all fields
//inserts error messages if it fails
function checkField(field)
  {
  var errstr = field.name+"err";

  var errmsg = new Array();
  errmsg['fullname'] = "Enter First and Last Name";
  errmsg['email'] = "Enter valid Email";
  errmsg['telephone'] = "Enter valid Phone Number";
  errmsg['moreInfo'] = "Select Service Inquiry";
  errmsg['service']  = "Select at least 1 Service Inquiry";
  errmsg['fname']  = "Enter First Name";
  errmsg['lname']  = "Enter Last Name";
  errmsg['zip']  = "Enter Valid Zip";
  errmsg['amount']  = "Enter Valid Zip";
  errmsg['none'] = "";


  if(field.name=="fullname")
    return errorCheck(!checkFullname(field),errstr,errmsg[field.name],field);

  else if(field.name=="email")
    return errorCheck(!checkEmail(field),errstr,errmsg[field.name],field);

  else if(field.name=="telephone")
    return errorCheck(!checkTelephone(field),errstr,errmsg[field.name],field);

  else if(field.name=="moreInfo")
    return errorCheck(checkIsEmpty(field),errstr,errmsg[field.name],field);

  else if(field.name=="zip")
    return errorCheck(!checkUSZip(field),errstr,errmsg[field.name],field);

  else if(field.name=="amount")
    return errorCheck(!checkDollarAmount(field),errstr,errmsg[field.name],field);

  else if(field.name=="fname" || field.name=="lname")
    return errorCheck(!isAlpha(field),errstr,errmsg[field.name],field);


  else if(field.name=="cc1" || field.name=="cc2" || field.name=="cc3" || field.name=="cc4" || field.name=="csc")
    return errorCheck(!isDigit(field),errstr,errmsg["none"],field);


  //if(checkIsEmpty(field))
  if(field.name != "street2")
    return errorCheck(checkIsEmpty(field),errstr,errmsg["none"],field);
  else
    return false;
  }

function errorCheck(isErr,errstr,errmsg,field)
  {
  if(isErr)
      {
      if(document.getElementById(errstr))
        document.getElementById(errstr).innerHTML=errmsg;
      field.style.backgroundColor="#f0c1c1";
      return true;
      }
    else
      {
      if(document.getElementById(errstr))
        document.getElementById(errstr).innerHTML="";
      field.style.backgroundColor="#ffffff";
      return false;
      }
  }

//checks that full name is present first and last
// returns false if it failed test
function checkFullname(field)
  {
  var filter = /^\w+ [\w ]+$/
  return filter.test(field.value);
  }
//checks email format returns false if it failed test
function checkEmail(field)
  {
  var filter = /^[\w]+[\w\._-]*@[\w]+[\w\._-]*.([\w]{2,4})+$/
  return filter.test(field.value);
  }

//checks telephone format returns false if it failed test
function checkTelephone(field)
  {
  var filter = /^((\([0-9]{3}\))|([0-9]{3}))[ -]?[0-9]{3}[- ]?[0-9]{4}$/
  return filter.test(field.value);
  }

function checkUSZip(field)
  {
  var filter = /^[0-9]{5}$/
  return filter.test(field.value);
  }
  
function isDigit(field)
  {
  var filter = /^[0-9]+$/
  return filter.test(field.value);
  }
  
function isAlpha(field)
  {
  var filter = /^[a-zA-Z ]+$/
  return filter.test(field.value);
  }

  
//checks for dollar amount and format for US
function checkDollarAmount(field)
  {
  field.value = field.value.replace(/\$/g,"");
  var filter = /^(([0-9]+)|([0-9]+\.)|([0-9]+\.[0-9]{2}))$/

  if(filter.test(field.value))
    {
    var temp = field.value.split(".");
    
    if(temp.length==2 && temp[1].length==0)
      {
      field.value += "00";
      }
    else if(temp.length==1)
      {
      field.value += ".00";
      }
    return true;
    }
  }

//checks if field is empty. if it is background of element changes to red
//returns true if it is empty
function checkIsEmpty(str)
  {
  if(str.value == "" || str.value == null )
    return true;
  else
    return false;
  }

function validateRequestForm(thisform)
  {
    xmlHttp = httpRequest();
    var params="";
    var errFlag= false;

    with(thisform)
      {
      if(checkField(fname) && errFlag == false )
        errFlag = true;

      if(checkField(lname) && errFlag == false )
        errFlag = true;

      if(checkField(email) && errFlag == false )
        errFlag = true;

      if(checkField(telephone) && errFlag == false )
        errFlag = true;

      //check if its checked
      if(public_relations.checked || direct_mail.checked || phone_center.checked || event_planning.checked ||
         tv_radio.checked || consulting.checked || media_training.checked || supply_management.checked ||
         advertising.checked || internet.checked || package_deals.checked)
        document.getElementById("serviceerr").innerHTML="";
      else
        {
        errFlag = true;
        document.getElementById("serviceerr").innerHTML="At least 1 service must be selected.";
        }

      //if there is an error with the form, STOP!
      if(errFlag)
        return false;

      params="fname="+fname.value+
             "&lname="+lname.value+
             "&email="+email.value+
             "&phone="+telephone.value +
             "&street="+street.value+"%20"+street2.value+
             "&city="+city.value +
             "&state="+state.value +
             "&zip="+zip.value +
             "&country="+country.value +
             "&employee_num="+employee_num.value +
             "&industry="+industry.value +
             "&capture_location="+location_2_capture.value;

      if(public_relations.checked)
        params += "&public_relations=1";
      if(direct_mail.checked)
        params += "&direct_mail=1";
      if(phone_center.checked)
        params += "&phone_center=1";
      if(tv_radio.checked)
        params += "&tv_radio=1";
      if(consulting.checked)
        params += "&consulting=1";
      if(media_training.checked)
        params += "&media_training=1";
      if(supply_management.checked)
        params += "&supply_management=1";
      if(advertising.checked)
        params += "&advertising=1";
      if(internet.checked)
        params += "&internet=1";
      if(package_deals.checked)
        params += "&package_deals=1";
      if(event_planning.checked)
        params += "&event_planning=1";

      if(document.getElementById("comments"))
        params += "&comments="+comments.value;

      if(document.getElementById("company"))
        params += "&company="+company.value;
        
      params += "&web_referral="+web_referral.value;
      }
      params += "&referal=info-request";
    var url="http://www.kellymediagroup.com/requests/process-requests.php?"+params;
    xmlHttp.onreadystatechange=handleValidateForm;
    xmlHttp.open("GET",url,true);
    xmlHttp.send(null);

    thisform.reset();
    return false;
  }

function handleValidateForm()
  {
  if(xmlHttp.readyState==4 )
    {
    //alert(xmlHttp.responseText);

    document.getElementById("thank-you-box").style.display="block";
    setTimeout("document.getElementById(\"thank-you-box\").style.display=\"none\"",10000);
    }
  }

function allRequired(thisform)
  {
  var params="";
  xmlHttp = httpRequest();

  var count = thisform.elements.length;
  var errFlag = false;
  var invoice_count=0;
  var MAX_invoices = 10;

  for(var i=0; i < count; i++)
    {
    if(thisform.elements[i].type != "submit" && thisform.elements[i].type != "reset" && thisform.elements[i].disabled!=true
       && thisform.elements[i].style.visibility!="hidden")
      {
      if(thisform.elements[i].name.match("invoice"))
        {
        if(!checkIsEmpty(thisform.elements[i]))
          {
          invoice_count++;
          params += "&invoice"+invoice_count+"="+thisform.elements[i].value;
          }
        }
      else
        {
        thisform.elements[i].value = trim(thisform.elements[i].value);
        if(checkField(thisform.elements[i]) && errFlag == false )
          {
          //alert("SETTING errflag: TRUE "+thisform.elements[i].name)
          errFlag = true;
          }

        params +="&"+thisform.elements[i].name+"="+encodeURIComponent(thisform.elements[i].value);
        }
      }
    }

  if(invoice_count==0)
    document.getElementById("invoiceerr").innerHTML="At least 1 invoice # must be entered."
  else
    document.getElementById("invoiceerr").innerHTML=""

  //if there is an error with the form, STOP!
  if(errFlag)
    {
    //alert(errFlag);
    return false;
    }
  //PUT AJAX CODE IN
  params = params.replace("&","");
  params = params.replace("#","\#");

  var url="http://www.kellymediagroup.com/requests/process-payment.php?"+params;
  xmlHttp.onreadystatechange=handleValidateAllForm;
  xmlHttp.open("GET",url,true);
  xmlHttp.send(null);
  //(params);

  //thisform.reset();
  return false;
  }

function handleValidateAllForm()
  {
  if(xmlHttp.readyState==4 )
    {
    document.getElementById("thank-you-box").style.display="block";
    document.getElementById("thank-you-header").innerHTML="<strong>Payment Result</strong>";
    document.getElementById("thank-you-content").innerHTML="<p>"+xmlHttp.responseText+"</p>";

    var search_str = /<strong>Success:<\/strong>/;
    var found_str = xmlHttp.responseText.search(search_str);
    if(found_str != -1)
      {
      //reset form
      document.getElementById("payment_form").reset();
      }

    }
  }

function clearErrors(thisform)
  {
  var tagarr = new Array();
  tagarr[0] = "serviceerr";
  tagarr[1] = "invoiceerr";
  tagarr[2] = "fullnameerr";
  tagarr[3] = "emailerr";
  tagarr[4] = "telephoneerr";
  tagarr[5] = "moreInfoerr";

  var count = thisform.elements.length;
   for(var i=0; i < count; i++)
    {
    if(thisform.elements[i].type != "submit" && thisform.elements[i].type != "reset" && thisform.elements[i].disabled != true)
      thisform.elements[i].style.backgroundColor="#ffffff";
    }

  for(var i=0; i < tagarr.length; i++)
    if(document.getElementById(tagarr[i]))
      document.getElementById(tagarr[i]).innerHTML="";

  }

// trims all spaces at the front, end and multiple spaces in the center
function trim(s) {
	s = s.replace(/(^\s*)|(\s*$)/gi,"");
	s = s.replace(/[ ]{2,}/gi," ");
	s = s.replace(/\n /,"\n");
	return s;
}

