//
//  @(#)gui8fa:validate.js 2.26 10/25/10 10:56:35
//
//  Copyright (c) 2008.  CSF Corporation.  All rights reserved.
//

function ClearField(form, field, value) {
  if (this.document.forms[form].elements[field].value == value)
  {
    this.document.forms[form].elements[field].value = '';
  }
}

function EnterDefault(form, field, value) {
  if (this.document.forms[form].elements[field].value == '')
  {
    this.document.forms[form].elements[field].value = value;
  }
}

/*
** Does the processing for 'Check All' in the NPA check boxes of the
** spares form. It operates as a toggle. When 'all' is checked, the
** npa's are not.
*/
function CheckAllNpa() {
  this.document.SearchForm.npa800.checked = false;
  this.document.SearchForm.npa855.checked = false;
  this.document.SearchForm.npa866.checked = false;
  this.document.SearchForm.npa877.checked = false;
  this.document.SearchForm.npa888.checked = false;
}

/*
** Does the processing for 'Check One Npa' in the NPA check boxes of the
** spares form. If any particular NPA is checked, uncheck 'all'.
*/
function CheckOneNpa() {
  this.document.SearchForm.npaall.checked = false;
}

/*
** Make sure the feedback form is filled out correctly.
*/
function ValidateFeedbackForm()
{
  var form = this.document.FeedbackForm;
  if (form.name.value == '' ||
    form.name.value == 'Your Name')
  {
    alert('You must fill in the \'Name\' field.');
  }
  else
  if (!form.phone.value.match(/^$| +|Your Phone|^[2-9]([0-9]){2}-([0-9]){3}-([0-9]){4}( x([0-9])+)*$/))
  {
    alert('\'Phone\' appears to be invalid.  It must be formatted as follows: 999-999-9999 x9999.  The first digit cannot be a 0 or 1.  The extension is optional.');
  }
  else
  if (form.email.value == '' ||
    form.email.value == 'Your Email Address')
  {
    alert('You must fill in the \'Email\' field.');
  }
  else
  if (form.comments.value.match(/^$|^[ ]*$/))
  {
    alert('You must fill in the \'Comments\' field.');
  }
  else
  {
    form.submit();
    return true;
  }

  return false;
}

/*
** Make sure the search form is filled in correctly.
*/
function ValidateSearchForm(caller)
{
  var form = this.document.SearchForm;
  var  npa800Checked = false;

  v = form.telnumber.value;

  if (form.npa800 && form.npa800.checked && !form.npa855.checked && !form.npa866.checked && !form.npa877.checked && !form.npa888.checked)
  {
    npa800Checked = true;
  }

  if (v == 'word or number' || v == '' || v.match(/^[ ]+$/))
  {
    alert('You must enter a value in the \'Number\' field.');
    return false;
  }
  else
  if (!npa800Checked && v.match(/^[*]+$/))
  {
    alert('Incorrect format for number field. At least 3 significant digits required.');
    return false;
  }
  else
  if (!v.match(/^(\^){0,1}([a-zA-Z0-9*&%]){3,7}(\$){0,1}$/))
  {
    alert('Incorrect format for number field. Must be at least 3 characters, but no more than 7 characters containing letters, numbers, or the characters *, & and/or %.');
    return false;
  }
  else
  if (v.match(/\&/) && !v.match(/\&.*\&/))
  {
    alert('Since & is a repeating number search, it doesn\'t make sense to specify a search pattern with only 1 &.');
    return false;
  }
  else
  if (v.match(/\%/) && !v.match(/\%.*\%/))
  {
    alert('Since % is a repeating number search, it doesn\'t make sense to specify a search pattern with only 1 %.');
    return false;
  }
  else
  if (v.match(/\%.*\%/) && !v.match(/\&.*\&/))
  {
    alert('Since % is a secondary repeating number search, it doesn\'t make sense to specify a search pattern with % and not &.');
    return false;
  }
  else
  {
    if (caller == 'index')
    {
      form.submit();
      return true;
    }
    else
    {
      Call8fa(form, "dosearch.php");
      return true;
    }
  }
}

/*
** Make sure the search form is filled in correctly.
*/
function ValidateTrnForm()
{
  var form = this.document.TrnForm;

  v = form.telnumber.value;

  if (v == '8nn-nnn-nnnn' || v == '' || v.match(/^[ ]+$/))
  {
    alert('You must enter a value in the \'Number\' field.');
    return false;
  }
  else
  if (!v.match(/^8(00|88|77|66|55)(-){0,1}([0-9]){3}(-){0,1}([0-9]){4}$|^8(00|88|77|66|55)(-){0,1}([a-zA-Z0-9]){3}(-){0,1}([a-zA-Z0-9]){4}$/))
  {
    alert('Incorrect format for number field. Must be a valid 10 digit phone number or vanity number.');
    return false;
  }
  else
  {
    DoTrnQuery(v);
    return true;
  }
}

function ReserveNow(tn, vanity)
{
  form = top.document.ReserveForm;
  form.tn.value = tn;
  form.vanity.value = vanity;
  Call8fa(form, "reserve.php");
  return true;
}

function ValidatePsuForm()
{
  form = top.document.PsuForm;

  if(form.whichButton.value == 'cancel')
  {
    form.submit();
    return true;
  }

  if (
    form.name.value.match(/^[ ]+$|^$/) ||
    form.phone.value.match(/^[ ]+$|^$/) ||
    form.address.value.match(/^[ ]+$|^$/) ||
    form.resporg.value.match(/^[ ]+$|^$/) ||
    form.contactname.value.match(/^[ ]+$|^$/) ||
    form.contactphone.value.match(/^[ ]+$|^$/) ||
    form.contactemail.value.match(/^[ ]+$|^$/) ||
    form.leadcost.value.match(/^[ ]+$|^$/) ||
    form.url.value.match(/^[ ]+$|^$/) ||
    form.title.value.match(/^[ ]+$|^$/) ||
    form.description1.value.match(/^[ ]+$|^$/) ||
    form.description2.value.match(/^[ ]+$|^$/) ||
    form.password.value.match(/^[ ]+$|^$/) ||
    form.cpassword.value.match(/^[ ]+$|^$/)
  )
  {
    alert("All fields must be filled in!");
  }
  else
  if (form.password.value != form.cpassword.value)
  {
    alert("Password does not match confirm password.");
  }
  else
  {
    form.submit();
    return true;
  }

  return false;
}

function ValidateContactForm()
{
  var emailFilter = /^([a-zA-Z0-9_\.-])+@(([a-zA-Z0-9-])+\.)+([a-zA-Z0-9]{2,4}){1}$/;
  var form = this.document.ContactForm;
  var reserveType = '';

  if (form.whichButton.value == 'cancel-purchase')
  {
    Call8fa(form, "purchase.php");
    return true;
  }
  else
  if (form.whichButton.value == 'purchase')
  {
    if (form.reservetype.length)
    {
      for (i = 0; i < form.reservetype.length; i++)
      {
        if (form.reservetype[i].checked)
        {
          reserveType = form.reservetype[i].value;
          break;
        }
      }
    }
    else
    {
      reserveType = form.reservetype.value;
    }

    if (reserveType == '')
    {
      alert('You must select a type.');
      return false;
    }
    else
    if (reserveType == 'rsvforprov' && form.provider.value == '')
    {
      alert('To reserve for provider, you must select a provider from the list of sponsored providers on the right.');
      return false;
    }
    else
    if (reserveType == 'rsvforresporg')
    {
      if (form.resporg.value == '' || form.resporg.value == 'Resporg')
      {
        alert('To transfer a number, you must enter a resporg.');
        return false;
      }
      else
      if (!form.resporg.value.match(/^([a-zA-Z]){2}([a-zA-Z0-9]){3}$/))
      {
        alert('\'Resporg\' appears to be invalid. It must be a valid resporg consisting of 2 alphabetic characters followed by 3 alphanumeric characters.');
        return false;
      }
    }
  }

  if (form.name.value == '' ||
    form.name.value == 'Your Name')
  {
    alert('You must fill in the \'Name\' field.');
  }
  else
  if (form.phone.value == '' ||
    form.phone.value == 'Your Phone')
  {
    alert('You must fill in the \'Phone\' field.');
  }
  else
  if (!form.phone.value.match(/^[2-9]([0-9]){2}-([0-9]){3}-([0-9]){4}( x([0-9])+)*$/))
  {
    alert('\'Phone\' appears to be invalid.  It must be formatted as follows: 999-999-9999 x9999.  The first digit cannot be a 0 or 1.  The extension is optional.');
  }
  else
  if (form.email.value == '' ||
    form.email.value == 'Your Email Address')
  {
    alert('You must fill in the \'Email\' field.');
  }
  else
  if (!emailFilter.test(form.email.value))
  {
    alert('Email address specified is not a valid email address.');
  }
  else
  {
    Call8fa(form, "purchase.php");
    return true;
  }

  return false;
}

function ValidateBuyerXferForm()
{
  var form = this.document.BuyerXferForm;

  if (form.whichButton.value == 'cancel-transfer')
  {
    Call8fa(null, "xfertelnumber.php");
    return true;
  }
  
  if (form.tn.value == '' ||
    form.tn.value == 'Toll Free Number')
  {
    alert('You must fill in the \'Toll Free Number\' field.');
  }
  else
  if (!form.tn.value.match(/^8(00|88|77|66|55)(-){0,1}([0-9]){3}(-){0,1}([0-9]){4}$|^8(00|88|77|66|55)(-){0,1}([a-zA-Z0-9]){3}(-){0,1}([a-zA-Z0-9]){4,6}$/))
  {
    alert('Incorrect format for number field. Must be a valid phone number or vanity number.');
    return false;
  }
  else
  if (form.email.value == '' ||
    form.email.value == 'Email Address used to purchase the number')
  {
    alert('You must fill in the \'Email Address\' field.');
  }
  else
  if (form.resporg.value == '' || form.resporg.value == 'Resporg to transfer to')
  {
    alert('To transfer a number, you must enter a resporg.');
    return false;
  }
  else
  if (!form.resporg.value.match(/^([a-zA-Z]){2}([a-zA-Z0-9]){3}$/))
  {
    alert('\'Resporg\' appears to be invalid. It must be a valid resporg consisting of 2 alphabetic characters followed by 3 alphanumeric characters.');
    return false;
  }
  else
  if (form.confcode.value == '' || form.confcode.value == 'Purchase Confirmation Code')
  {
    alert('You must provide the purchase confirmation code sent to you when you purchased this number.');
    return false;
  }
  else
  if (!form.agreement.checked)
  {
    alert('You must agree to the terms of service before transferring a number.');
    return false;
  }
  else
  {
    Call8fa(form, "xfertelnumber.php");
    return true;
  }

  return false;
}

function KeepTrying()
{
  form = top.document.KeepTryingForm;
  if (form.whichButton.value == 'keeptrying')
  {
    Call8fa(form, "reserve.php");
  }
  else
  {
    Call8fa(form, "giveup.php");
  }
  return true;
}

function SelectProvider(name, id)
{
  var form = this.document.ContactForm;

  document.getElementById('providerdiv').innerHTML = '<b>'+name+'</b>';
  form.provider.value = name;
  form.providerid.value = id;

  SelectReserveType('rsvforprov');

  return true;
}

function SelectReserveType(t)
{
  var form = this.document.ContactForm;

  for (i = 0; i < form.reservetype.length; i++)
  {
    if (form.reservetype[i].value == t)
    {
      form.reservetype[i].checked = true;
    }
    else
    {
      form.reservetype[i].checked = false;
    }
  }

  if (t == 'rsvonly' || t == 'rsvonly1yr')
  {
    form.resporg.value = 'Resporg';
    form.resporg.readOnly = true;
    if (form.reservetype.length == 4)
    {
      document.getElementById('providerdiv').innerHTML = 'a sponsored provider.';
      form.provider.value = '';
      form.providerid.value = 0;
    }
  }
  else
  if (t == 'rsvforprov')
  {
    form.resporg.value = 'Resporg';
    form.resporg.readOnly = true;
  }
  else
  if (t == 'rsvforresporg')
  {
    if (form.reservetype.length == 4)
    {
      document.getElementById('providerdiv').innerHTML = 'a sponsored provider.';
      form.provider.value = '';
      form.providerid.value = 0;
    }
    form.resporg.readOnly = false;
    form.resporg.focus();
  }

  return true;
}

