var CMD_MAPCLICK      = 0;
var CMD_ZOOMFULL      = 1;
var CMD_ZOOMOUT       = 2;
var CMD_PANN          = 3;
var CMD_PANS          = 4;
var CMD_PANW          = 5;
var CMD_PANE          = 6;
var CMD_FIND          = 7;
var CMD_ZOOMTOLOC     = 8;
var CMD_ROUTETOLOC    = 9;
var CMD_PRINT         = 10;
var CMD_FINDROUTE     = 11;
var CMD_ZOOMFULLROUTE = 12;
var CMD_ZOOMSEGMENT   = 13;
var CMD_SETSFF        = 14;
var CMD_RELOAD        = 15;
var CMD_ZOOMIN        = 16;
var CMD_PANNW         = 20;
var CMD_PANSW         = 21;
var CMD_PANNE         = 22;
var CMD_PANSE         = 23;
var CMD_CHGZOOMLVL    = 24;
var CMD_UPDATEMAPRESULTS = 25;
var CMD_CHANGEMAPSIZE = 26;
var CMD_SEARCHBYCITY = 30;
var RunFun = true;

function pausecomp(millis)
{
date = new Date();
var curDate = null;

do { var curDate = new Date(); }
while(curDate-date < millis);
}

ImgLoader = new Image();
ImgLoader.src = '/mapsearch/YMLSMAPA2/images/Loading.gif';

var LoadingSrc = ImgLoader;

function Loading() {
  document.getElementById("mapimgid").innerHTML = '<img id="mapimgid" name="mapimg" src="/mapsearch/YMLSMAPA2/images/Loading.gif" height="' + iHeight + '" width="' + iWidth + '">';
/*   document.images.mapimg.src = '/mapsearch/YMLSMAPA2/images/Loading.gif'; */
/*   document.getElementById("mapimgid").innerHTML = '<img src="/mapsearch/YMLSMAPA2/images/Loading.gif" height="' + iHeight + '" width="' + iWidth + '">'; */
/*   pausecomp(250); */
}

function ListingAlert() {
  var selectBox = document.choiceForm.nmaxlistings;
  user_input = selectBox.options[selectBox.selectedIndex].value;
  if (user_input > 50) {
RunFun = confirm("Viewing more than 50 results on the map could cause minor delays.\n\nYou have chosen to view: " + user_input + ". Click OK to view " + user_input + " or CANCEL to cancel.");
  } else
RunFun = true;
}

function  ChangeZoomLvl(zoomlvl) {
  document.choiceForm.newzoomlvl.value = zoomlvl;
  document.choiceForm.action = "mls.search";
  document.choiceForm.mode.value = 24;
  Loading();
  document.choiceForm.submit();
}

function  ChangeMapSize(UserMapSize) {
  document.choiceForm.UserMapSize.value = UserMapSize;
  document.choiceForm.action = "mls.search";
  document.choiceForm.mode.value = 26;
  Loading();
  document.choiceForm.submit();
}

function ResetSearch() {
	window.location.href = "/mls.search?id=" + id + "&searchAction=MapSearch";
}

function onJSError() {
  return true;
}

function forwardPage(action)
{
  document.choiceForm.action = action;
  Loading();
  document.choiceForm.submit();
}

function sendReq(cmd)
{
	if (RunFun==true) {
  document.choiceForm.action = "mls.search";
  document.choiceForm.mode.value = cmd;
  Loading();
  document.choiceForm.submit();
  }
}

function ViewResults() {
  document.choiceForm.action = "full.search";
  Loading();
  document.choiceForm.submit();
}

function addParameter(url, name, value)
{
  url += url.indexOf("?") == -1 ? "?" : "&";
  url += name;
  url += "=";
  url += value;

  return url;
}

function addFormParameter(url, name)
{
  return addParameter(url, name, document.choiceForm[name].value);
}

function addMapParameters(url)
{
  return addFormParameter(url, "loc");
}

function _openLink(src) {
  window.location.href = addMapParameters(src);
}

////////////////////////////////////////////////////////////////////////
// Utilities

var JS_ESCAPE_CHARS = new Array(
    0x08, '\b',
    0x0C, '\f',
    0x0A, '\n',
    0x0D, '\r',
    0x09, '\t',
    0x27, '\'',
    0x22, '\"',
    0x5C, '\\',
    0x25, '%'
);

function getEscChar(code)
{
  for (var i = 0; i < JS_ESCAPE_CHARS.length; i+=2)
    if (JS_ESCAPE_CHARS[i] == code)
      return JS_ESCAPE_CHARS[i+1];

  return null;
}

function jsUnescape(inStr)
{
  var outStr = "";

  for (var i = 0; i < inStr.length; i++)
  {
    var ch = inStr.charAt(i);
    if (ch == '%' && i < inStr.length-2)
    {
      var code = parseInt(inStr.substring(i+1, i+3), 16);
      if (!isNaN(code))
      {
        var escChar = getEscChar(code);
        if (escChar != null)
        {
          outStr += escChar;
          i += 2;
        }
        else
          outStr += ch;
      }
      else
        outStr += ch;
    }
    else
      outStr += ch;
  }
  return outStr;
}
