function validateContactInfo(form) {
  if (form.name.value.length < 4) {
    alert("Please enter a name for your establishment");
    form.name.focus();
    return (false);
  }
  if (form.physicalAddress1.value.length < 4) {
    alert("Please enter a physical address for your establishment");
    form.physicalAddress1.focus();
    return (false);
  }
  if (form.physicalAddressPostalCode.value.length < 4) {
    alert("Please enter a postal code for your physical address");
    form.physicalAddressPostalCode.focus
    return (false);
  }
  if (form.contactPerson.value.length < 2) {
    alert("Please enter the name of the contact person for your establishment");
    form.contactPerson.focus();
    return (false);
  }
  if (form.contactPosition.value.length < 4) {
    alert("Please enter the position of the contact person for your establishment");
    form.contactPosition.focus();
    return (false);
  }
  if (form.telAreaCode.value.length == 0) {
    alert("Please enter an area code for your telephone number");
    form.telAreaCode.focus();
    return (false);
  }
  else {
    if (!validateNumber(form.telAreaCode.value)) {
      alert("Please enter only numbers for the telephone area code")
      form.telAreaCode.focus();
      return (false);
    }
  }
  if (form.telNumber.value.length == 0) {
    alert("Please enter a telephone number for your establishment");
    form.telNumber.focus();
    return (false);
  }
  else {
    if (!validateNumber(form.telNumber.value)) {
      alert("Please enter only numbers for the telephone number")
      form.telNumber.focus();
      return (false);
    }
  }
  if ((form.cellNumber.value.length > 0) || (form.receivingSMSs.checked)) {
    if (form.cellNumber.value.length < 8) {
      alert("Please enter your cellphone number");
      form.cellNumber.focus();
      return (false);
    }
    else {
      if (!validateNumber(form.cellNumber.value)) {
        alert("Please enter only numbers for your cellphone number")
        form.cellNumber.focus();
        return (false);
      }
    }
  }
  if (form.emailAddress.value.length < 7) {
    alert("Please enter a valid email address");
    form.emailAddress.focus();
    return (false);
  }
  return(true);
}

function validateGeneralInfo(form, signup) {
  if (form.countryID.value == -1) {
    alert("Please choose the country in which your establishment is located");
    form.countryID.focus();
    return (false);
  }
/*  if (form.locatedInTownRadio.checked) {
    if (form.provinceID.value == -1) {
      alert("Please choose the province in which your establishment is located");
      form.provinceID.focus();
      return (false);
    }
  }*/ 
  if (form.accommodationTypeID.value == 1) {
    alert("Please choose your accommodation type ");
    form.accommodationTypeID.focus();
    return (false);
  }
  if (form.numberOfRooms.value.length == 0) {
    alert("Please enter the number of rooms");
    form.numberOfRooms.focus();
    return (false);
  }
  else {
    if (!validateNumber(form.numberOfRooms.value)) {
      alert("Please enter only numbers for the number of rooms")
      form.numberOfRooms.focus();
      return (false);
    }
    else if (parseInt(form.numberOfRooms.value) <= 0) {
      alert("Please enter the number of rooms in your establishment");
      form.numberOfRooms.focus();
      return(false);
    }
  }
  if (form.minRate.value.length == 0) {
    alert("Please enter the minimum rate per person sharing");
    form.minRate.focus();
    return (false);
  }
  else {
    if (!validateNumber(form.minRate.value)) {
      alert("Please enter only numbers for minimum rate")
      form.minRate.focus();
      return (false);
    }
    else if (parseInt(form.minRate.value) <= 0) {
      alert("Please enter the minimum rate for your establishment");
      form.minRate.focus();
      return(false);
    }
  }
  if (form.maxRate.value.length == 0) {
    alert("Please enter the maximum rate per person sharing");
    form.maxRate.focus();
    return (false);
  }
  else {
    if (!validateNumber(form.maxRate.value)) {
      alert("Please enter only numbers for the maximum rate")
      form.maxRate.focus();
      return (false);
    }
    else if (parseInt(form.maxRate.value) <= 0) {
      alert("Please enter the maximum rate for your establishment");
      form.maxRate.focus();
      return(false);
    }
  }
  if (form.description.value.length == 0) {
    alert("Please enter a description for your establishment");
    form.description.focus();
    return (false);
  }
  if (form.taxesAndLeviesPolicies.value.length == 0) {
    alert("Please enter your taxes and levies policies");
    form.taxesAndLeviesPolicies.focus();
    return (false);
  }
  if (form.directions.value.length == 0) {
    alert("Please enter directions to your establishment");
    form.directions.focus();
    return (false);
  }
  if (form.vatRegistered.checked) {
    if (form.vatNumber.value.length < 6) {
      alert("Please enter your VAT number");
      form.vatNumber.focus();
      return (false);
    }
    else {
      if (!validateNumber(form.vatNumber.value)) {
        alert("Please enter only numbers for your VAT number")
        form.vatNumber.focus();
        return (false);
      }
    }
  }
  // see LatitudeLongitude for min and max values 
  if (form.decimalRadio.checked) {
    if ((form.latitude.value == null) || (form.latitude.value == "") || !validateNumber(form.latitude.value)) {
      alert("Please enter a valid decimal degrees coordinte for latitude");
      form.latitude.focus();
      return (false);
    }
    if ((form.longitude.value == null) || (form.longitude.value == "") || !validateNumber(form.longitude.value)) {
      alert("Please enter a valid decimal degrees coordinate for longitude");
      form.longitude.focus();
      return (false);
    }
    // Allow both lat and lng to be 0 for ignoring purposes 
    if ((form.latitude.value == 0) && (form.longitude.value == 0)) {
      return (true);
    }
    if ((form.latitude.value < -35) ||(form.latitude.value > 5)) {
      alert("Please enter a valid decimal degrees coordinte for latitude");
      form.latitude.focus();
      return (false);
    }
    if ((form.longitude.value < 11) ||(form.longitude.value > 58)) {
      alert("Please enter a valid decimal degrees coordinate for longitude");
      form.longitude.focus();
      return (false);
    }
  } else {
    if (!validateNumber(form.latitudeDegrees.value) || (form.latitudeDegrees.value < -35) ||(form.latitudeDegrees.value > 5) || 
      (form.latitudeDegrees.value != parseInt(form.latitudeDegrees.value))) {
      alert("Please enter a valid degrees value for latitude - an integer between 90 and -90");
      form.latitudeDegrees.focus();
      return (false);
    } 
    if (!validateNumber(form.latitudeMinutes.value) || (form.latitudeMinutes.value < 0) || (form.latitudeMinutes.value >= 60) || 
      (form.latitudeMinutes.value != parseInt(form.latitudeMinutes.value))) {
      alert("Please enter a valid minutes value for latitude - an integer between 0 and 60");
      form.latitudeMinutes.focus();
      return (false);
    } 
    if (!validateNumber(form.latitudeSeconds.value) || (form.latitudeSeconds.value < 0) || (form.latitudeSeconds.value >= 60)) {
      alert("Please enter a valid seconds value for latitude - a number between 0 and 60");
      form.latitudeSeconds.focus();
      return (false);
    } 
    if (!validateNumber(form.longitudeDegrees.value) || (form.longitudeDegrees.value < 11) ||(form.longitudeDegrees.value > 58) || 
      (form.longitudeDegrees.value != parseInt(form.longitudeDegrees.value))) {
      alert("Please enter a valid degrees value for longitude - an integer between 180 and -180");
      form.longitudeDegrees.focus();
      return (false);
    } 
    if (!validateNumber(form.longitudeMinutes.value) || (form.longitudeMinutes.value < 0) || (form.longitudeMinutes.value >= 60) || 
      (form.longitudeMinutes.value != parseInt(form.longitudeMinutes.value))) {
      alert("Please enter a valid minutes value for longitude - an integer between 0 and 60");
      form.longitudeMinutes.focus();
      return (false);
    } 
    if (!validateNumber(form.longitudeSeconds.value) || (form.longitudeSeconds.value < 0) || (form.longitudeSeconds.value >= 60)) {
      alert("Please enter a valid seconds value for longitude - a number between 0 and 60");
      form.longitudeSeconds.focus();
      return (false);
    } 
  }
  return(true);
}

function validateFacilities(form) {
  totalElements = form.elements.length;
  for (count=0; count<totalElements; count++) {
    if(form.elements[count].type == "text") {
      inputName = form.elements[count].name;
      distanceIndex = inputName.indexOf('localAttractionDistance');
      if (distanceIndex != -1)
      {
        if (!validateNumber(form.elements[count].value))
        {
          alert("Please enter only numbers for the local attraction distance");
          form.elements[count].focus();
          return (false);
        }
        else if (!checkNumberPositive(form.elements[count].value))
        {
          alert("Please enter only positive numbers for the local attraction distance");
          form.elements[count].focus();
          return (false);
        }
      }
    }
  }
  
  return(true);
}

function validateRoomTypes(form) {
  totalElements = form.elements.length;
  for (count=0; count<totalElements; count++) {
    if(form.elements[count].type == "text") {
      inputName = form.elements[count].name;
      firstIndex = inputName.indexOf('[') + 1;
      secondIndex = inputName.indexOf(']') - 1;
      nameIndex = inputName.indexOf('name');
      if (nameIndex != -1)
      {
        if (form.elements[count].value.length == 0) {
          roomTypeNumber = inputName.substring(firstIndex, secondIndex);
          roomTypeNumber ++;
          alert("Please enter the name for room type " + roomTypeNumber);
          form.elements[count].focus();
          return (false);
        }
      }
      else
      {
        if (!validateNumber(form.elements[count].value))
        {
          alert("Please enter valid numbers in numeric fields");
          form.elements[count].focus();
          return (false);
        }
        else if (!checkNumberPositive(form.elements[count].value))
        {
          alert("Please enter only positive numbers in numeric fields");
          form.elements[count].focus();
          return (false);
        }
      }
    }
  }

  return(true);
}

function validateNumber(value) {
  for (i=value.length-1; i>=0; i--)
  {
    if (value.charAt(i) == ' ')
    {
      if (i == value.length-1)
      {
        value = value.substring(0, i);
      }
      else if (i == 0)
      {
        value = value.substring(1, value.length);
      }
      else
      {
        value = value.substring(0, i) + value.substring(i+1, value.length);
      }
    }
  }
  if (value.length > 0) {
    if (isNaN(value)) {
      return(false);
    }
  }
  return(true);
}

function checkNumberPositive(value) {
  if (parseInt(value) < 0) {
    return(false);
  }
  return(true);
}

function removeSpaces(e) 
{
  if (e.keyCode)
  {
    code = e.keyCode;
  }
  else 
  {
    if (e.which)
    { 
      code = e.which;  
    }
  }
  if (code == 32)
  {
    return false;
  }
  return true;
}

