// Advanced Search:
        function cleanSubmit(theForm)
        {
                theRealForm = document.createElement("form");
                theRealForm.style.display = "none";
                document.body.appendChild(theRealForm);
                for(var i = 0; i < theForm.elements.length; i++)
                {
                        var currentElement = theForm.elements[i];
                        if(currentElement.name != "" && ((currentElement.type != "checkbox" && currentElement.value != "") || (currentElement.type == "checkbox" && currentElement.checked != false)))
                        {
                                if(currentElement.type != "select-multiple")
                                {
                                        var newElement = document.createElement("input");
                                        newElement.value = currentElement.value;
                                        newElement.name = currentElement.name;
                                        theRealForm.appendChild(newElement);
                                }
                                else
                                {
                                        for(var i = 0; i < currentElement.options.length; i++)
                                        {
                                                if(currentElement.options[i].selected == true)
                                                {
                                                        var newElement = document.createElement("input");
                                                        newElement.value = currentElement.options[i].value;
                                                        newElement.name = currentElement.name;
                                                        theRealForm.appendChild(newElement);
                                                }
                                        }
                                }
                        }
                }
                theRealForm.action = theForm.action;
                theRealForm.method = theForm.method;
                theRealForm.target = theForm.target;
                theRealForm.submit();
        }

        function selectNewTab(newSelectedTabID, newSelectedSectionID)
        {
          // Deselect all tabs and hide all sections:
            for(var i = 0; i < document.getElementById("tabs").childNodes.length; i++)
            {
              if(document.getElementById("tabs").childNodes[i].nodeName == "A")
              {
                var currentElement = document.getElementById(document.getElementById("tabs").childNodes[i].id);
                if(i != 1)
                {
                        currentElement.className = "";
                }
                else
                {
                        currentElement.className = "first";
                }
              }
            }
            for(var i = 0; i < document.getElementById("parent_div").childNodes.length; i++)
            {
              if(document.getElementById("parent_div").childNodes[i].nodeName == "DIV")
              {
                var currentElement = document.getElementById(document.getElementById("parent_div").childNodes[i].id);
                currentElement.style.display = "none";
              }
            }
          document.getElementById(newSelectedTabID).className = "selected";
          document.getElementById(newSelectedTabID).blur();
          document.getElementById(newSelectedSectionID).style.display = "block";
        }

// Mortgage Calculator:
        function floor(number)
        {
                return Math.floor(number*Math.pow(10,2))/Math.pow(10,2);
        }
        function dosum()
        {
                var mi = Number(String(document.temps.IR.value).replace(/%/g,'')) / 1200;
                var base = 1;
                var mbase = 1 + mi;
                for (i=0; i<document.temps.YR.value * 12; i++)
                {
                        base = base * mbase;
                }
                var LA = Number(String(document.temps.HP.value).replace(/\$|,/g,'')) - Number(String(document.temps.DP.value).replace(/\$|,/g,''));
                var output = String(floor(LA * mi / ( 1 - (1/base))));
                if(output.indexOf(".") != -1 && output.length == output.indexOf(".") + 2)
                {
                                                                  output = output + "0";
                }
                document.getElementById("mortgage_calculator_output").innerHTML = "$" + output;
        }

// General Functions:
        function setCookieValue(cookieName, cookieValue, cookiePath, cookieExpires)
  {
                cookieValue = escape(cookieValue);
    if(cookieExpires == "")
                {
                        var nowDate = new Date();
      nowDate.setMonth(nowDate.getMonth() + 6);
      cookieExpires = nowDate.toGMTString();
    }
    if(cookiePath != "")
    {
      cookiePath = ";Path=" + cookiePath;
    }
    document.cookie = cookieName + "=" + cookieValue + ";expires=" + cookieExpires + cookiePath;
  }
  function getCookieValue(cookieName)
  {
    var cookieValue = document.cookie;
    var cookieStartsAt = cookieValue.indexOf(" " + cookieName + "=");
    if(cookieStartsAt == -1)
    {
      cookieStartsAt = cookieValue.indexOf(cookieName + "=");
    }
    if(cookieStartsAt == -1)
    {
      cookieValue = null;
    }
    else
    {
      cookieStartsAt = cookieValue.indexOf("=", cookieStartsAt) + 1;
      var cookieEndsAt = cookieValue.indexOf(";", cookieStartsAt);
      if(cookieEndsAt == -1)
      {
        cookieEndsAt = cookieValue.length;
      }
      cookieValue = unescape(cookieValue.substring(cookieStartsAt, cookieEndsAt));
    }
    return cookieValue;
  }
  function openPopupWindow(theAnchorTag, width, height)
  {
    window.open(theAnchorTag.href, "", "width=" + width + ", height=" + height + ", scrollbars=no");
    return false;
  }

// Email A Listing and Email Inquiry To Agent:
  function validateForm(senderEmail, senderPurchasePlans, sendingMessage)
  {
    if(senderEmail.value == '')
    {
      senderEmail.focus();
      senderEmail.style.backgroundColor = 'pink';
      alert("Please enter your email address.");
      return false;
    }
    else if(senderEmail.value.indexOf('.') == -1 || senderEmail.value.indexOf('@') == -1)
    {
      senderEmail.focus();
      senderEmail.style.backgroundColor = 'pink';
      alert("Please enter a valid email address.");

      return false;
    }
    if(senderPurchasePlans.value == '')
    {
      senderPurchasePlans.focus();
      alert("Please choose a purchase plan.");
      return false;
    }
      sendingMessage.style.display = "block";
      return true;
  }

// AJAX Setup Functions:
  function createRequestObject()
  {
    var ro;
    var browser = navigator.appName;
    if(browser == "Microsoft Internet Explorer")
    {
      ro = new ActiveXObject("Microsoft.XMLHTTP");
    }
    else
    {
      ro = new XMLHttpRequest();
    }
    return ro;
  }

  function sndReq(url,outputContainer)
  {
                // Instantiate the XML HTTP request object:
                        var http = createRequestObject();
    http.open('get', url);
    http.onreadystatechange = function()
    {
      if(http.readyState == 4 && document.getElementById(outputContainer) != undefined)
      {
        document.getElementById(outputContainer).innerHTML = http.responseText;
      }
    };
    http.send(null);
  }


// Results:
  // This is used to change the "saved" label to "save listing"
  // if the favorites list is cleared.
  function clearSavedListings()
  {
                var favoritesList = getCookieValue("favorites_list").split(",");
                for(var i = 0; i < favoritesList.length; i++)
    {
      if(favoritesList[i] > 0 && document.getElementById("compare_link_" + favoritesList[i]) != undefined)
      {
        document.getElementById("compare_link_" + favoritesList[i]).style.display = "none";
      }
      if(favoritesList[i] > 0 && document.getElementById("save_link_" + favoritesList[i]) != undefined)
      {
        document.getElementById("save_link_" + favoritesList[i]).style.display = "block";
      }
    }
    clearFavorites();
  }
  function clearFavorites()
  {
    setCookieValue("favorites_list", "", "", "");
  }
  function addFavorite(listingId, url, favoritesString)
  {
    var currentList = getCookieValue("favorites_list");
    if(currentList != "null" && currentList != undefined)
    {
      if(currentList.indexOf(listingId) == -1)
      {
         setCookieValue("favorites_list", currentList + "," + listingId, "", "");
         var favoritesDiv = document.getElementById("favorites");
         if(favoritesDiv != undefined)
         {
                                        favoritesDiv.style.display = "block";
                 favoritesDiv.innerHTML = favoritesDiv.innerHTML + "<a href=\"" + url + "\"" + favoritesString + "</a><br />";
          document.getElementById("favorites_buttons").style.display = "block";
          document.getElementById("no_listings_message").style.display = "none";
         }
      }
    }
    else
    {
      setCookieValue("favorites_list", listingId, "", "");
      var favoritesDiv = document.getElementById("favorites");
                  if(favoritesDiv != undefined)
      {
              favoritesDiv.innerHTML = "<a href=\"" + url + "\"" + favoritesString + "</a><br />";
              document.getElementById("favorites_buttons").style.display = "block";
              document.getElementById("no_listings_message").style.display = "none";
      }
    }
  }
  function selectNewSection(newSectionNumber, newSectionName)
  {
    // De-select all tabs:
    for(var i = 0; i < document.getElementById("tabs").childNodes.length; i++)
    {
      if(document.getElementById("tabs").childNodes[i].nodeName == "A")
      {
        var currentElement = document.getElementById(document.getElementById("tabs").childNodes[i].id);
        if(i != 1)
        {
                currentElement.className = "";
        }
        else
        {
                currentElement.className = "first";
        }
      }
    }
    // Hide all sections:
    for(var i = 0; i < document.getElementById("parent_div").childNodes.length; i++)
    {
      if(document.getElementById("parent_div").childNodes[i].nodeName == "DIV")
      {
        var currentElement = document.getElementById(document.getElementById("parent_div").childNodes[i].id);
        currentElement.style.display = "none";
      }
    }
    // Select the new tab:
      document.getElementById("results_tab_" + newSectionNumber).className = "selected";
      document.getElementById("results_tab_" + newSectionNumber).blur();
    // If the new section already exists then display it; otherwise, render it and its first page:
      var sectionToDisplayID = "results_section_" + newSectionNumber;


      if(document.getElementById(sectionToDisplayID) == undefined)
      {
        document.getElementById("parent_div").innerHTML = document.getElementById("parent_div").innerHTML + "<div id=\"results_section_" + newSectionNumber + "\"></div>";
        displayPage(newSectionNumber, newSectionName, 1);
      }
      else
      {
        document.getElementById(sectionToDisplayID).style.display = "block";
      }
  }


// Details:
  function showThumbnailSet(setNumber, listingId)
  {
    // Hide all thumbnail sets while finding the one to display next:
      var indexToShow = 0;
      for(var i = 0; i < document.getElementById("thumbnail_set_parent_" + listingId).childNodes.length; i++)
      {
        if(document.getElementById("thumbnail_set_parent_" + listingId).childNodes[i].nodeName == "DIV")
        {
          var currentElement = document.getElementById(document.getElementById("thumbnail_set_parent_" + listingId).childNodes[i].id);
          currentElement.style.display = "none";
        }
      }
      document.getElementById("thumbnail_set_" + setNumber + "_" + listingId).style.display = "block";
      document.getElementById("current_thumbnail_set_" + listingId).innerHTML = setNumber;

  }

  function selectThumbnail(newImageURL, thumbnailCount, listingId)
  {
    // Deselect all thumbnails:
      for(var i = 1; i <= thumbnailCount; i++)
      {
        document.getElementById("thumbnail_" + i + "_" + listingId).className = "number";
      }
      document.getElementById("home-photo-main-1_" + listingId).src = newImageURL;
      document.getElementById("home-photo-main-1_link_" + listingId).href = newImageURL;
  }