// Key Symbols new window
function load()
{
  var load = window.open('201_key.html','','scrollbars=no,menubar=no,height=650,width=220,resizable=no,toolbar=no,location=no,screenX=100,left=100,screenY=30,top=30",status=no');
}

function submitSearchForm()
{
  if ((document.searchDining.searchTown.options[document.searchDining.searchTown.selectedIndex].value == "") &&
      (document.searchDining.searchCuisine.options[document.searchDining.searchCuisine.selectedIndex].value == "") &&
      (document.searchDining.restName.value == ""))
  {
    alert("Please select a town, cuisine or enter\na restaurant name - then press 'GO'");
    return false;
  }
  else
  {
    document.searchDining.submit();
  }
}

function popUpReview(URL)
{
  day = new Date();
  id = day.getTime();
  eval("page" + id + " = window.open(URL, '" + id + "', 'toolbar=0,scrollbars=1,location=0,statusbar=0,menubar=0,resizable=1,width=482,height=482,left=120,top=175');");
}

function popUpCatKey(URL)
{
  day = new Date();
  id = day.getTime();
  eval("page" + id + " = window.open(URL, '" + id + "', 'toolbar=0,scrollbars=0,location=0,statusbar=0,menubar=0,resizable=0,width=220,height=700,screenX=100,left=100,screenY=30,top=30,status=0');");
}

function popUpRestMap(URL)
{
  day = new Date();
  id = day.getTime();
  eval("page" + id + " = window.open(URL, '" + id + "', 'toolbar=0,scrollbars=0,location=0,statusbar=0,menubar=0,resizable=0,width=540,height=655,left=120,top=175');");
}

function clearInput(field)
{
  field.value = "";
  return true;
}

function viewMoreImg(field, imgSrc)
{
  document[field].src = imgSrc;
}

function verifyAdvSearchForm()
{
  var valid = true;
  var form = document.advSearchForm;

  if (((form.advSearchName == "") || (form.advSearchName == "By Name    (optional)")) && (form.advSearchTown.value == ""))
  {
    if ((form.advSearchCuisine.value == "") && (form.advSearchPrice.value == "") && (form.advSearchLiquor.value == "") &&
        (form.alfresco.checked == false) && (form.brunch.checked == false) && (form.creditCard.checked == false) &&
        (form.dancing.checked == false) && (form.delivery.checked == false) && (form.entertainment.checked == false) &&
        (form.familyFriendly.checked == false) && (form.handicapAccess.checked == false) && (form.jacketRequired.checked == false) &&
        (form.lunch.checked == false) && (form.privateRoom.checked == false) && (form.noReservations.checked == false) &&
        (form.smoking.checked == false) && (form.takeout.checked == false) && (form.valetParking.checked == false))
    {
      errMsg = "Please select a cuisine, price range, liquor policy\n";
      errMsg += "or category when not searching by name or town.";
      alert(errMsg);
      valid = false;
    }
  }

  if (form.advSearchTown.value != "")
  {
    var checked = false;

    for (idx = 0; idx < form.mileRadius.length; idx++)
    {
      if (form.mileRadius[idx].checked)
      {
        checked = true;
      }
    }

    if (checked == false)
    {
      errMsg = "Please select a radius around\n" + form.advSearchTown.options[form.advSearchTown.selectedIndex].text + "\nwithin which to search.";
      alert(errMsg);
      valid = false;
    }
  }

  return valid;
}

function chkAlphaNum(field)
{
  var regexpress = /[^0-9A-Za-z]+/g;

  if (regexpress.test(field.value))
  {
    field.value = field.value.replace(regexpress, "");
    return false;
  }
  return true;
}

function onTownSelect()
{
  var form = document.signupForm;

  if (form.restTown.options[form.restTown.selectedIndex].value != "")
  {
    form.submit();
  }
}

function verifySignUpForm()
{
  var errMsg = "The following fields are required:\n\n";
  var valid = true;
  var thisForm = document.signupForm;

  if (thisForm.firstName.value == "")
  {
    errMsg += "First Name\n";
    valid = false;
  }

  if (thisForm.lastName.value == "")
  {
    errMsg += "Last Name\n";
    valid = false;
  }

  if ((thisForm.email.value == "") || (thisForm.email.value.indexOf('@') == -1))
  {
    errMsg += "Email Address\n";
    valid = false;
  }

  if (thisForm.phone.value.length != 12)
  {
    errMsg += "Phone Number\n";
    valid = false;
  }

  if (thisForm.restTown.options[thisForm.restTown.selectedIndex].value == "")
  {
    errMsg += "Restaurant's Town\n";
    valid = false;
  }

  if (thisForm.restId.options[thisForm.restId.selectedIndex].value == "")
  {
    errMsg += "Restaurant's Name\n";
    valid = false;
  }

  if (thisForm.userName.value == "")
  {
    errMsg += "Login User Name\n";
    valid = false;
  }

  if (thisForm.password.value == "")
  {
    errMsg += "Login Password\n";
    valid = false;
  }

  if (valid == false)
  {
    alert(errMsg);
    return false;
  }
  else
  {
    if ((thisForm.userName.value.length < 6) || (thisForm.userName.value.length > 16))
    {
      errMsg = "Your User Name must be 6 to 16 characters long";
      valid = false;
    }
    else if ((thisForm.password.value.length < 6) || (thisForm.password.value.length > 16))
    {
      errMsg = "Your Password must be 6 to 16 characters long";
      valid = false;
    }

    if (valid == false)
    {
      alert(errMsg);
      return false;
    }
  }

  return true;
}

function toggleAddChangeForm(whichBtn)
{
  switch (whichBtn)
  {
    case "closedRest":
      document.getElementById('closedRestFormId').style.display = 'block';
      document.getElementById('newRestFormId').style.display = 'none';
      document.getElementById('changeRestFormId').style.display = 'none';
      document.getElementById('closedRestId').checked = true;
      document.getElementById('newRestId').checked = false;
      document.getElementById('changeRestId').checked = false;
      document.closedRestForm.closedUName.focus();
    break;

    case "newRest":
      document.getElementById('closedRestFormId').style.display = 'none';
      document.getElementById('newRestFormId').style.display = 'block';
      document.getElementById('changeRestFormId').style.display = 'none';
      document.getElementById('closedRestId').checked = false;
      document.getElementById('newRestId').checked = true;
      document.getElementById('changeRestId').checked = false;
      document.newRestForm.newUName.focus();
    break;

    case "changeRest":
      document.getElementById('closedRestFormId').style.display = 'none';
      document.getElementById('newRestFormId').style.display = 'none';
      document.getElementById('changeRestFormId').style.display = 'block';
      document.getElementById('closedRestId').checked = false;
      document.getElementById('newRestId').checked = false;
      document.getElementById('changeRestId').checked = true;
      document.changeRestForm.changeUName.focus();
    break;

    default:
    break;
  }
}

function toggleMenuPreview()
{
  var form = document.submitMenuForm;

  switch (form.menuSelect.options[form.menuSelect.selectedIndex].value)
  {
    case "1":
      form.menu1Sm.style.display='block';
      form.menu2Sm.style.display='none';
      form.menu3Sm.style.display='none';
    break;
    case "2":
      form.menu1Sm.style.display='none';
      form.menu2Sm.style.display='block';
      form.menu3Sm.style.display='none';
    break;
    case "3":
      form.menu1Sm.style.display='none';
      form.menu2Sm.style.display='none';
      form.menu3Sm.style.display='block';
    break;
    default:
      form.menu1Sm.style.display='block';
      form.menu2Sm.style.display='none';
      form.menu3Sm.style.display='none';
    break;
  }
}

function verifyRestMenuForm()
{
  var form = document.submitMenuForm;
  var delArray = new Array();

  for (idx = 0; idx < 6; idx++)
  {
    var key = MenuKeyArray[idx][0];
    var hasCategories = "";

    if (form.elements[key + "Title"].value == "")
    {
      document.submitMenuForm.elements[key + "Title"].value = MenuKeyArray[idx][1];
    }

    for (cntr = 1; cntr <= 5; cntr++)
    {
      var name = form.elements[key + "Name" + cntr].value;
      var subCat = form.elements[key + "SubCat" + cntr].value;
      var price = form.elements[key + "Price" + cntr].value;
      var description = form.elements[key + "Desc" + cntr].value;

      if ((form.elements[key + "Del" + cntr]) && (form.elements[key + "Del" + cntr].checked))
      {
        delArray[delArray.length] = name;
      }


      if (name != "")
      {
        if (subCat != "")
        {
          if (hasCategories == "")
          {
            hasCategories = true;
          }
          else if (hasCategories == false)
          {
            errMsg = "If categories are to be used then each item\n";
            errMsg += "in a section must be placed in a category.";
            alert(errMsg);
            return false;
          }
        }
        else
        {
          if (hasCategories == "")
          {
            hasCategories = false;
          }
          else if (hasCategories == true)
          {
            errMsg = "If categories are to be used then each item\n";
            errMsg += "in a section must be placed in a category.";
            alert(errMsg);
            return false;
          }
        }
      }

      if ((name == "") && ((subCat != "") || (price != "") || (description != "")))
      {
        errMsg = "Each menu item submitted must have a name.";
        alert(errMsg);
        document.submitMenuForm.elements[key + "Name" + cntr].focus();
        return false;
      }

      if (isNaN(price))
      {
        errMsg = "Please enter a valid price for the item.";
        alert(errMsg);
        document.submitMenuForm.elements[key + "Price" + cntr].value = "";
        document.submitMenuForm.elements[key + "Price" + cntr].focus();
        return false;
      }
    }
  }
  if (delArray.length > 0)
  {
    confirmMsg = "Are you sure you want to delete the following items:\n";
    for (i = 0; i < delArray.length; i++)
    {
      confirmMsg += delArray[i] + "\n";
    }
    if (confirm(confirmMsg) == false)
    {
      return false;
    }
  }
  form.submit();
}

function popUpMenuPreview(URL)
{
  var menuSelect = document.submitMenuForm.menuSelect;
  var which = menuSelect.options[menuSelect.selectedIndex].value;

  if (which == "0")
  {
    which = "1";
  }

  URL += "?which=" + which;
  day = new Date();
  id = day.getTime();
  eval("page" + id + " = window.open(URL, '" + id + "', 'toolbar=0,scrollbars=1,location=0,statusbar=0,menubar=0,resizable=0,width=550,height=700,left=120,top=175');");
}

function popUpRestMenu(URL)
{
  day = new Date();
  id = day.getTime();
  eval("page" + id + " = window.open(URL, '" + id + "', 'toolbar=0,scrollbars=1,location=0,statusbar=0,menubar=0,resizable=0,width=600,height=600,left=120,top=175');");
}

function verifyClosedRestForm()
{
  var errMsg = "The following fields are required:\n";
  var valid = true;
  var form = document.closedRestForm;

  if (form.closedUName.value == "")
  {
    errMsg += "Your Name\n";
    valid = false;
  }

  if (form.closedUEmail.value == "")
  {
    errMsg += "Your Email\n";
    valid = false;
  }

  if (form.closedRestName.value == "")
  {
    errMsg += "Restaurant Name\n";
    valid = false;
  }

  if (form.closedTown.value == "")
  {
    errMsg += "Location (Town)\n";
    valid = false;
  }

  if (!valid)
  {
    alert(errMsg);
  }
  return valid;
}

function verifyNewRestForm()
{
  var errMsg = "The following fields are required:\n";
  var valid = true;
  var form = document.newRestForm;

  if (form.newUName.value == "")
  {
    errMsg += "Your Name\n";
    valid = false;
  }

  if (form.newUEmail.value == "")
  {
    errMsg += "Your Email\n";
    valid = false;
  }

  if (form.newRestName.value == "")
  {
    errMsg += "Restaurant Name\n";
    valid = false;
  }

  if (form.newTown.value == "")
  {
    errMsg += "Location (Town)\n";
    valid = false;
  }

  if (!valid)
  {
    alert(errMsg);
  }
  return valid;
}

function verifyChangeRestForm()
{
  var errMsg = "The following fields are required:\n";
  var valid = true;
  var form = document.changeRestForm;

  if (form.changeUName.value == "")
  {
    errMsg += "Your Name\n";
    valid = false;
  }

  if (form.changeUEmail.value == "")
  {
    errMsg += "Your Email\n";
    valid = false;
  }

  if (form.changeRestName.value == "")
  {
    errMsg += "Restaurant Name\n";
    valid = false;
  }

  if (form.changeTown.value == "")
  {
    errMsg += "Location (Town)\n";
    valid = false;
  }

  if (form.changeDescription.value == "")
  {
    errMsg += "Description of change\n";
    valid = false;
  }

  if (!valid)
  {
    alert(errMsg);
  }
  return valid;
}

function toggleEntertainmentDetails()
{
  var form = document.newRestForm;

  if (form.entertainSelect.options[form.entertainSelect.selectedIndex].text == "Other")
  {
    form.entInformation.style.display='block';
    form.entInformation.focus();
  }
  else
  {
    form.entInformation.style.display='none';
  }
}

// Code for use with tooltips
var DH = 0;
var an = 0;
var al = 0;
var ai = 0;
var ie = 0;

if (document.getElementById)
{
  ai = 1;
  DH = 1;

  if (navigator.appVersion.indexOf("MSIE") != -1)
  {
    ie = 1;
  }
}
else
{
  if (document.all)
  {
    al = 1;
    DH = 1;
  }
  else
  {
    browserVersion = parseInt(navigator.appVersion);

    if ((navigator.appName.indexOf('Netscape') != -1) && (browserVersion == 4))
    {
      an = 1;
      DH = 1;
    }
  }
}

function fd(oi, wS)
{
  if (ai)
  {
    return wS ? document.getElementById(oi).style : document.getElementById(oi);
  }
  if (al)
  {
    return wS ? document.all[oi].style : document.all[oi];
  }
  if (an)
  {
    return document.layers[oi];
  }
}

function pw()
{
  return window.innerWidth != null ? window.innerWidth : document.body.clientWidth != null ? document.body.clientWidth : null;
}

function mouseX(evt)
{
  if (evt.pageX)
  {
    return evt.pageX;
  }
  else if (evt.clientX)
  {
    return evt.clientX + (document.documentElement.scrollLeft ?  document.documentElement.scrollLeft : document.body.scrollLeft);
  }
  else
  {
    return null;
  }
}

function mouseY(evt)
{
  if (evt.pageY)
  {
    return evt.pageY;
  }
  else if (evt.clientY)
  {
    return evt.clientY + (document.documentElement.scrollTop ? document.documentElement.scrollTop : document.body.scrollTop);
  }
  else
  {
    return null;
  }
}

function popUp(evt, oi)
{
  if (DH)
  {
    var wp = pw();
    ds = fd(oi,1);
    dm = fd(oi,0);
    st = ds.visibility;

    if (dm.offsetWidth)
    {
      ew = dm.offsetWidth;
    }
    else if (dm.clip.width)
    {
      ew = dm.clip.width;
    }
    if (st == "visible" || st == "show")
    {
      ds.visibility = "hidden";
    }
    else
    {
      if (ie)
      {
//        tv = mouseY(evt) - 145;
        tv = mouseY(evt) - 20;
      }
      else
      {
        tv = mouseY(evt) - 20;
      }
      lv = mouseX(evt) + 10; // - (ew/4);

//      if (lv < 2)
//      {
//        lv = 2;
//      }
//      else if (lv + ew > wp)
//      {
//        lv -= ew/2;
//      }

      if (!an)
      {
        lv += 'px';
        tv += 'px';
      }
      ds.left = lv;
      ds.top = tv;
      ds.visibility = "visible";
    }
  }
}

// Number masking utility which allows data entry consisting of number patterns
// to be formatted as the user types in the numbers
var position

function DistillNumber(tmpStr, strMask)
{
  strMask = Replace(strMask, '#', '');
  for (position = 0; position < strMask.length++; position++)
  {
    tmpStr = Replace(tmpStr, strMask.substring(position, (position + 1)), '');
  }
  return tmpStr;
}

function LenNumStr(strMask)
{
  tmpStr = strMask;
  for (position = 0; position < (strMask.length + 1); position++)
  {
    if (strMask.charAt(position) != '#')
    {
      tmpStr = Replace(tmpStr, strMask.charAt(position), '');
    }
  }
  return tmpStr.length;
}

function FormatNumber(key, textbox, strMask)
{
  numStr = DistillNumber(textbox.value, strMask);

  if (key == 9)
  {
    return true;
  }
  else if ((key == 8) && (numStr.length != 0))
  {
    numStr = numStr.substring(0, numStr.length - 1);
  }
  else if ((((key > 47) && (key < 58)) || ((key > 95) && (key < 106))) && (numStr.length < LenNumStr(strMask)))
  {
    numStr = numStr + String.fromCharCode(key);
  }

  var formattedStr='';
  for (position = 0; position < strMask.length; position++)
  {
    if (strMask.charAt(position) == '#')
    {
      if (numStr.length != 0)
      {
        formattedStr = formattedStr + numStr.charAt(0);
        numStr = numStr.substring(1, numStr.length);
      }
      else
      {
        formattedStr = formattedStr + "";
      }
    }
    else if (strMask.charAt(position) != '#')
    {
      formattedStr = formattedStr + strMask.charAt(position);
    }
//    tmpStr = Replace(tmpStr, strMask.substring(position, position + 1), '');
  }

  textbox.value = formattedStr;
  return false;
}

function Replace(fullString, text, by)
{
  // Replaces text with by in string
  var strLength = fullString.length;
  var txtLength = text.length;

  if ((strLength == 0) || (txtLength == 0))
  {
    return fullString;
  }

  var i = fullString.indexOf(text);
  if ((!i) && (text != fullString.substring(0, txtLength)))
  {
    return fullString;
  }

  if (i == -1)
  {
    return fullString;
  }

  var newstr = fullString.substring(0, i) + by;

  if ((i + txtLength) < strLength)
  {
    newstr += Replace(fullString.substring(i + txtLength, strLength), text, by);
  }

  return newstr;
}

