﻿var ie=false;
var client;
var queryStringID = "ctl00_MainPlaceholder_SearchResults_QueryStringHolder";
//Ajax search results change the structure of the page resulting in a different id for this div
var altQueryStringID = "SearchResults_QueryStringHolder";

function CallWebService(zoomLevel,width,height,topLeft,bottomRight) {
    client = GetXmlHttp();
    
    client.onreadystatechange = HttpResponseHandler;
    client.open("POST", "/gw/WebServices/Pins.asmx");
    client.setRequestHeader("Content-Type", "text/xml; charset=utf-8");
    client.setRequestHeader("SOAPAction", "http://tempuri.org/GetMapPins");

    //get the div which exists
    var queryStringElement = document.getElementById(queryStringID) || document.getElementById(altQueryStringID);
    
    //get the inner html of div
    var queryString = escape(queryStringElement.innerHTML);

    var soapRequest = 
    "<?xml version=\"1.0\" encoding=\"utf-8\"?>"+
    "<soap:Envelope xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\">"+
    "<soap:Body>"+
    "<GetMapPins xmlns=\"http://tempuri.org/\">"+
    "  <zoomLevel>"+zoomLevel+"</zoomLevel>"+
    "  <w>"+width+"</w>"+
    "  <h>"+height+"</h>"+
    "  <topLeft>"+topLeft+"</topLeft>"+
    "  <bottomRight>"+bottomRight+"</bottomRight>"+
    "  <qs>"+ queryString +"</qs>" +
    "</GetMapPins>"+
    "</soap:Body>"+
    "</soap:Envelope>";
    
    client.setRequestHeader("Content-Length", soapRequest.Length);
    client.send(soapRequest);
}


function GetXmlHttp()
{
  ie = true; 
  var x = null;
  try
  {
    x = new ActiveXObject("Msxml2.XMLHTTP");
  }
  catch (e)
  {
    try
    {
      x = new ActiveXObject("Microsoft.XMLHTTP");
    }
    catch (e)
    {
      x = null;
    }      
  }
  if (!x && typeof XMLHttpRequest != "undefined")
  {
    x = new XMLHttpRequest();      
    ie=false;
  }
  return x;
}


function HttpResponseHandler() {
    if(client.readyState == 4 && client.status == 200) {
        // so far so good
        if(client.responseXML != null && client.responseXML.firstChild!=null)
        {// success!
           if(ie) { 
                IncomingPinsJson(client.responseXML.lastChild.text);
           }
           else
           {
                var xmlNode = client.responseXML.getElementsByTagName('GetMapPinsResult')[0];
                
                if(typeof(xmlNode.textContent) != undefined)
                {
                    IncomingPinsJson(xmlNode.textContent);
                }
                else
                {
                    IncomingPinsJson(xmlNode.firstChild.nodeValue);
                }
           }
        }
        else
        {
            IncomingPinsJson(null);
        }
    }
    else if (client.readyState == 4 && client.status != 200) {
        // fetched the wrong page or network error...
        IncomingPinsJson(null);
    }
}