var URL = "";
var Features = "";
var listingId = "";
var MLSListingId = "";
var addressTemp = "";
var bContinue = true;

function GetHttpRequest()
{
	var xmlhttp = false;

    // IE
    try {
        
        xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
    } catch (e) {
        
        try {
             xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
        } catch (E) {
             xmlhttp = false;
        }
    }

    // Non IE
    if (!xmlhttp && typeof XMLHttpRequest != 'undefined') {
             xmlhttp = new XMLHttpRequest();
    }
    
    if (xmlhttp==null)
        {
          alert ("Your browser does not support AJAX!");
          return;
        }
         
    return xmlhttp;
}

function Search(ActionType, bPageLoad) {

    //  var bContinue = true;
    var bValidSearch = true;
    bValidSearch = validateSearch(SearchType);

    if (bValidSearch) {
        showProgressBar();

        document.getElementById('btnSaveSearch').style.display = 'none';

        if (document.getElementById('EmailAlerts').style.display == '') {
            EmailAlerts = 'T';
            initEmailAlerts();
            setTimeout(function() { initSearch(ActionType, true, bPageLoad) }, timeout);
        } else {
            initSearch(ActionType, false, bPageLoad);
            hideProgressBar();
        }
    }
}

function initSearch(ActionType, bAlerts, bPageLoad) {

    if (!bAlerts) {
        execSearch(ActionType, bPageLoad);
    } else {
        if (bContinue) {
            execSearch(ActionType, bPageLoad);
        } 
    }
}

function execSearch(ActionType, bPageLoad) {

    if (ActionType == 0 || ActionType == 1) {

        document.getElementById("NewSearch").style.display = '';
        document.getElementById("ListingResult").className = '';
        SearchType = document.getElementById("lblActive").innerHTML.toUpperCase();
        

//        if (bContinue == true) {

            //document.getElementById("ListingResult").innerHTML = "";
            if (SearchType == "ADDRESS") {
                GetListingResult(1, ActionType, bPageLoad);
            } else if (SearchType == "CITY") {
                document.getElementById('btnSaveSearch').style.display = '';
                GetListingResult(2, ActionType, bPageLoad);
            } else if (SearchType == "ZIP") {
                document.getElementById('btnSaveSearch').style.display = '';
                GetListingResult(3, ActionType, bPageLoad);
            } else if (SearchType == "MLS") {
                GetListingResult(4, ActionType, bPageLoad);
            }
            resetFeatures();

        //}
    }
    hideProgressBar();
    
}

function validateSearch(SearchType) {
    var bContinue = true;
    var searchText = $("#tbSearchText");
    
    if (SearchType == "ADDRESS") {
        bContinue = bContinue && validateRegex(searchText, /[\w|\s]+,\s*[A-Za-z|\s]+,\s*[A-Za-z]{2},\s*\d{5}/, "Address should be like: " + formatAddress);
    } else if (SearchType == "CITY") {
        //bContinue = bContinue && validateRegex(searchText, /.*,\s*[A-Za-z]{2}/, "City should be like: " + formatCity);
        if (searchText == "") {
            //bContinue = bContinue && validateRegex(searchText, /\d{5},\s*[A-Za-z]{2}/, "Zip should be like: " + formatZip);
            document.getElementById("ListingResult").innerHTML = "City should be like: " + formatCity;
            document.getElementById("ListingResult").className = 'Error';
            bContinue = false;
        } 
    } else if (SearchType == "ZIP") {
        if (searchText == "") {
            //bContinue = bContinue && validateRegex(searchText, /\d{5},\s*[A-Za-z]{2}/, "Zip should be like: " + formatZip);
            document.getElementById("ListingResult").innerHTML = "Zip should be like: " + formatZip;
            document.getElementById("ListingResult").className = 'Error';
            bContinue = false;
        } 
    } else if (SearchType == "MLS") {
    }
     
    return bContinue;
}

function GetListingResult(RequestType, ActionType, bPageLoad) {
    SendListingResultRequest(getRequestURL(RequestType, ActionType), 1, bPageLoad);
    tablePaginater.init("theTable");
}

function validateRegex(o, regexp, message) {
    if (!(regexp.test(o.val()))) {
        document.getElementById("ListingResult").innerHTML = message;
        document.getElementById("ListingResult").className = 'Error';
        return false;
    } else {
        return true;
    }
}

/*
function GetListingByAddress(ActionType)
{
    SendListingResultRequest(getRequestURL(1, ActionType), 1);
    tablePaginater.init("theTable");
}

function GetListingByCity(ActionType)
{
    SendListingResultRequest(getRequestURL(2, ActionType), 1);
    tablePaginater.init("theTable");
}

function GetListingByZip(ActionType)
{
    SendListingResultRequest(getRequestURL(3, ActionType), 1);
    tablePaginater.init("theTable");
}
*/

function GetListingDetail(OB_ID_PROP, MlsListingID) {

    //document.getElementById("ListingResult").innerHTML = "";
    showProgressBar();
    document.getElementById("NewSearch").style.display = '';
    listingId = OB_ID_PROP;
    MLSListingId = MlsListingID;
    SendListingResultRequest(getDetailURL(OB_ID_PROP), 5);
    showCommunitySchool();
    hideProgressBar();
}

function GetListingByListingID(OB_ID_PROP) {

    //document.getElementById("ListingResult").innerHTML = "";
    showProgressBar();
    document.getElementById("NewSearch").style.display = '';
    //listingId = OB_ID_PROP;
    //MLSListingId = MlsListingID;
    SendListingResultRequest(GetListingByListingIDURL(OB_ID_PROP), 6);
    //showCommunitySchool();
    tablePaginater.init("theTable");
    hideProgressBar();
}

function SendListingResultRequest(sUrl,RequestType,bPageLoad,oCallback,oPostData) {

    document.getElementById("lblDescription").style.display = 'none';
    if (bPageLoad == false)
        document.getElementById("lblTitle").innerHTML = "Property Search Results";
    else { 
        if (document.getElementById("lblTitle").innerHTML == "")
            document.getElementById("lblTitle").innerHTML = "Property Search Results";
            
    }
   
    document.getElementById('EmailAlerts').style.display = 'none';
    document.getElementById('btnEmailAlerts').style.display = 'none';
    document.getElementById('AddressMLS').style.display = '';


	var oReq = GetHttpRequest();
	//var proxyURL = "proxy.asp?url=" + encodeURIComponent(sUrl)
	if (!oReq) return;
	oReq.open("GET", sUrl, false);
	oReq.setRequestHeader('Content-type','application/x-www-form-urlencoded');

	oReq.onreadystatechange = function ()
	{
		if (oReq.readyState != 4) return;
		if (oReq.status != 200 && oReq.status != 304) return;
		//oCallback(oReq); No need for this, this is for the response call back since it is being done below
	}

	
	if (oReq.readyState == 4) return;	
	oReq.send(oPostData);
	
	if (oReq.readyState == 4) 
	{
	    var ResponseText = oReq.responseText;

	    try 
	    {
            if (ResponseText != "")
            {
                var responseHTML = '';
                var responseXML = '';
                if (ResponseText.indexOf("|||") > -1) 
                {
                    responseHTML = ResponseText.substring(0, ResponseText.indexOf("|||"));
                    responseXML = ResponseText.substring(ResponseText.indexOf("|||") + 3, ResponseText.length);
                    if (RequestType == 1 || RequestType == 3 || RequestType == 6)
                    { responseTextXML = responseXML; }
                    
                } else {
                    responseHTML = ResponseText;
                    if (RequestType == 1 || RequestType == 3 || RequestType == 6)
                    { responseTextXML = ''; }
                }
                
                if (RequestType == 1 || RequestType == 3 || RequestType == 6) 
                {
                    if (RequestType == 1 || RequestType == 6) {

                        if (SearchType != "MLS") 
                        {
                            if (ResponseText.indexOf("table") > -1) 
                            {
                                document.getElementById('Footer').style.display = '';
                                document.getElementById('FilterSort').style.display = '';
                            } else {
                                document.getElementById('FilterSort').style.display = 'none';
                            }
                        }else{
                            document.getElementById('Footer').style.display = '';
                            document.getElementById('FilterSort').style.display = 'none';
                        }

                        if (RequestType == 6) {
                            document.getElementById('Footer').style.display = '';
                            document.getElementById('FilterSort').style.display = 'none';
                        }
                        
                    } else {
                        document.getElementById('Footer').style.display = '';
                        document.getElementById('FilterSort').style.display = '';
                    }
                
                    document.getElementById("divResult").style.height = '';
                    //document.getElementById("ListingResult").innerHTML = '';
                    document.getElementById("ListingResult").innerHTML = responseHTML;

                } else {
                    document.getElementById("divDetail").style.height = '';
                    //document.getElementById("ListingDetail").innerHTML = '';
                    document.getElementById("ListingDetail").innerHTML = responseHTML;
                    document.getElementById('Footer').style.display = '';
                }
               
                // alert(responseXML);
                var d = document.getElementById('pagination');
                if (d.childNodes.length > 0) {
                    d.removeChild(d.firstChild);
                }

                initListingPoint(responseXML);

                if (RequestType != 5) {
                    document.getElementById("ss_address").innerHTML = addressTemp;
                    document.getElementById("ir_address").innerHTML = addressTemp;
                }
                
            }
        } catch (e) {
            alert(e.message);
	        return;
        }
    }
    
}


function getRequestURL(RequestType, ActionType) 
{
    var method = "";
    if (RequestType == 1) {
        method = "GetListingByAddress";
        //URL = "ListingService.ashx?" + getQueryString(RequestType, ActionType);
        //return APPLICATION_URL + "GetListingByAddress.ashx?" + getQueryString(RequestType, ActionType);
    }else if(RequestType == 2) {
        method = "GetListingByCity";
        //URL = "ListingService.ashx?" + getQueryString(RequestType, ActionType);
        //return APPLICATION_URL + "GetListingByCity.ashx?" + getQueryString(RequestType, ActionType);
    }else if(RequestType == 3) {
        method = "GetListingByZip";
    } else if (RequestType == 4) {
        method = "GetListingByMLS";
    // return APPLICATION_URL + "GetListingByZip.ashx?" + getQueryString(RequestType, ActionType);
    } 
    
    URL = "ListingService.ashx?method=" + method + "&" + getQueryString(RequestType, ActionType);

    return URL;
}

function getDetailURL(OB_ID_PROP) {
    return "ListingService.ashx?method=GetListingDetail&AccessToken=" + AccessToken + "&listingID=" + OB_ID_PROP;
}

function GetListingByListingIDURL(OB_ID_PROP) {
    return "ListingService.ashx?method=GetListingByListingID&AccessToken=" + AccessToken + "&listingID=" + OB_ID_PROP;
}

function getQueryString(RequestType, ActionType) {
    if (ActionType == 0) {
        return QS;
    } else {
        QS = "";
        if (RequestType == 1) {
            var address = "";
            var city = "";
            var zip = "";
            var state = "";
            var SearchText = document.getElementById("tbSearchText").value.split(",");

            address = getArrayValue(SearchText, 0);
            city = getArrayValue(SearchText, 1);
            state = getArrayValue(SearchText, 2);
            zip = getArrayValue(SearchText, 3);

            QS += "&Address=" + address;
            QS += "&city=" + city;
            QS += "&zip=" + zip;
            QS += "&state=" + state;
        } else if (RequestType == 2) {
            QS += "&CityState=" + document.getElementById("tbSearchText").value;
        } else if (RequestType == 3) {
            QS += "&ZipState=" + document.getElementById("tbSearchText").value;
        } else if (RequestType == 4) {
            QS += "&MLSListingID=" + document.getElementById("tbSearchText").value;
        }

        QS += "&AccessToken=" + AccessToken; //document.getElementById("ddlPropertyType").text; 
        QS += "&PropertyType=" + document.getElementById("ddlPropertyType")[document.getElementById("ddlPropertyType").selectedIndex].value; //document.getElementById("ddlPropertyType").text; 
        QS += "&FeedID=" + FeedID;
        QS += "&radius=" + document.getElementById("ddlRadius")[document.getElementById("ddlRadius").selectedIndex].value;
        QS += "&Bed=" + document.getElementById("tbSliderBed").value;
        QS += "&baths=" + document.getElementById("tbSliderBath").value;
        QS += "&MinPrice=" + document.getElementById("tbSliderPR1").value;
        QS += "&MaxPrice=" + document.getElementById("tbSliderPR2").value;
        QS += "&minsquarefeet=" + document.getElementById("tbSliderSF1").value;
        QS += "&maxsquarefeet=" + document.getElementById("tbSliderSF2").value;
        QS += "&minfloor=" + document.getElementById("tbSliderFloor1").value;
        QS += "&maxfloor=" + document.getElementById("tbSliderFloor2").value;
        QS += "&minlotsize=" + document.getElementById("tbSliderLotSize1").value;
        QS += "&maxlotsize=" + document.getElementById("tbSliderLotSize2").value;
        QS += "&style=" + document.getElementById("ddlStyle")[document.getElementById("ddlStyle").selectedIndex].value; // document.getElementById("ddlStyle").text; 
        QS += "&sort=" + document.getElementById("ddlSort")[document.getElementById("ddlSort").selectedIndex].value;
        QS += "&subdivision=" + document.getElementById("ddlSubdivision")[document.getElementById("ddlSubdivision").selectedIndex].value;
        QS += "&subarea=" + document.getElementById("ddlSubarea")[document.getElementById("ddlSubarea").selectedIndex].value;
        if (document.getElementById("cbREO").checked == 1) {
            QS += "&reo=yes";
        }
        if (document.getElementById("cbView").checked == 1) {
            QS += "&View=yes";
        }
        if (document.getElementById("cbDOM").checked == 1) {
            QS += "&DOM=yes";
        }
        QS += "&Features=";
    }
    return QS;
}

function getArrayValue(SearchText,index)
{
    var s="";
    try
    {
        s = SearchText[index].trim();
    }catch(e){
        s = "";
    }
    return s;
}

function resetFeatures() {
    var images = document.getElementById('FilterSort').getElementsByTagName('img');
    var i = 0;
    for (i = 0; i < images.length; i++) {
        if (images[i].src.indexOf("Gray") > -1) {
            images[i].src = images[i].src.replace("_Gray","");
        }
    }
}

function initFeatures() {
    Features = "";
    var images = document.getElementById('FilterSort').getElementsByTagName('img');
    var i = 0;
    for (i = 0; i < images.length;i++)
    {
        if (images[i].src.indexOf("Gray") > -1)
        {
            Features += images[i].getAttribute('alt') + "|";
        }
    }
}

function toggleFeatures(objid) {
    var obj = document.getElementById(objid);
    if (obj.src.indexOf("_Gray") > -1) {
        obj.src = "images/" + objid.replace("img", "") + ".jpg";
    } else {
        obj.src = "images/" + objid.replace("img", "") + "_Gray.jpg";
    }

//    var images = document.getElementById('FilterSort').getElementsByTagName('img');
//    var i = 0;
//    for (i = 0; i < images.length;i++)
//    {
//        if (objid == images[i].id) {
//            if (images[i].getAttribute('src').indexOf("_Gray") > -1) {
//                images[i].src = objid.replace("img", "") + ".jpg";
//            } else {
//                images[i].src = objid.replace("img", "") + "_Gray.jpg";
//            }
//        }
//    }
}

function FilterResult(objid) {
    showProgressBar();
    toggleFeatures(objid);
    initFeatures();
    var tempURL = "";
    tempURL = replaceQueryString(URL, "Features", Features);
    URL = tempURL;
   // alert(URL);
    SendListingResultRequest(URL, 3);
    hideProgressBar();
    tablePaginater.init("theTable");
}

function SortResult() {
    showProgressBar();
    var tempURL = "";
    tempURL = replaceQueryString(URL, "sort", document.getElementById("ddlSortResult")[document.getElementById("ddlSortResult").selectedIndex].value);
    URL = tempURL;
    SendListingResultRequest(URL, 3);
    hideProgressBar();
    tablePaginater.init("theTable");
}

function replaceQueryString(url, param, value) {
     preURL = "";
     postURL = "";
     newURL = "";

      start = url.indexOf(param+"=");
      if(start > -1){
       end = url.indexOf("=", start);
       preURL=url.substring(0,end) +"="+value;

       startRest = url.indexOf("&",start);
       postURL="";
       if(startRest > -1){
                  postURL=url.substring(startRest);
       }

      }else{
        preURL=url;
        postURL="&"+param+"="+value;
      }
      newURL = preURL+postURL;

      return newURL;

  }


  function LoadXML(sXmlText) {
      var oXmlDoc = null;

      // IE
      if (window.ActiveXObject) {
          oXmlDoc = new ActiveXObject("Microsoft.XMLDOM");
          oXmlDoc.async = false;
          oXmlDoc.loadXML(sXmlText);
          return oXmlDoc;
      }
      // others
      else if (document.implementation && document.implementation.createDocument) {
          var parser = new DOMParser();
          oXmlDoc = document.implementation.createDocument("", "", null);
          oXmlDoc = parser.parseFromString(sXmlText, "text/xml");
          return oXmlDoc;
      }
      else

          return null;
  }

  function showCommunitySchool() {

      var com_url = "";
      var sch_url = "";
      var address = "";
      var city = "";
      var zip = "";
      var state = "";
      var addressSplit = addressTemp.split(",");

      address = getArrayValue(addressSplit, 0);
      city = getArrayValue(addressSplit, 1);
      state = getArrayValue(addressSplit, 2);
      zip = getArrayValue(addressSplit, 3);

      com_url = community_url + "&address=" + address + "&city=" + city + "&state=" + state + "&zip=" + zip + "&agentid=" + AgentId;
      sch_url = school_url + "&address=" + address + "&city=" + city + "&state=" + state + "&zip=" + zip + "&agentid=" + AgentId;

      var frameCom = document.getElementById("fCommunity");
      frameCom.src = com_url;

      var frameSch = document.getElementById("fSchool");
      frameSch.src = sch_url;
  
  }
