﻿var ie=false;
var client;
var priceRange = -1;
var bedrooms = -1;
var propertyType = '';
var doCluster = true;

function CallWebService(webService,zoomLevel,width,height,topLeft,bottomRight,qs) {
    client = GetXmlHttp();
    
    client.onreadystatechange = function() { HttpResponseHandler(webService); };
    client.open("POST", "/gw/webservices/pins.asmx?" + qs);
    client.setRequestHeader("Content-Type", "text/xml; charset=utf-8");
    client.setRequestHeader("SOAPAction", "http://tempuri.org/" + webService);
    
    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>"+
    "<" + webService + " xmlns=\"http://tempuri.org/\">"+
    "  <zoomLevel>"+zoomLevel+"</zoomLevel>"+
    "  <w>"+width+"</w>"+
    "  <h>"+height+"</h>"+
    "  <topLeft>"+topLeft+"</topLeft>"+
    "  <bottomRight>"+bottomRight+"</bottomRight>"+
    "  <qs>"+ escape(qs) +"</qs>" +
    "  <priceRange>"+ priceRange +"</priceRange>" +
    "  <bedrooms>"+ bedrooms +"</bedrooms>" +
    "  <propertyType>"+ propertyType +"</propertyType>" +
    "  <cluster>"+ doCluster +"</cluster>" +
    "</" + webService + ">"+
    "</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(webService) {    
    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(webService + "Result")[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);
    }
}
