﻿var mlsid = null;
var selected = -1;
// if this key isn't one of the ones we care about, just return
var KEYUP = 38;
var KEYDOWN = 40;
var KEYENTER = 13;
var KEYTAB = 9;

function testBrowser() {
    //if safari, break out
    var bSafari = $.browser.safari;
    if (bSafari) {
        if (top.location != location) {
            top.location.href = document.location.href;
        }
    }
}

function setid(id) {
    mlsid = id;
}
//Gets the browser specific XmlHttpRequest Object
function getXmlHttpRequestObject() {
	if (window.XMLHttpRequest) {
		return new XMLHttpRequest();
	} else if(window.ActiveXObject) {
		return new ActiveXObject("Microsoft.XMLHTTP");
	} else {
		alert("Upgrade your browser to one that supports Javascript!");
	}
}

//Our XmlHttpRequest object to get the auto suggest
var searchReq = getXmlHttpRequestObject();

//Called from keyup on the search textbox.
//Starts the AJAX request.
function searchSuggest(evt) {
    // make sure we have a valid event variable
    if(!evt && window.event) {
        evt = window.event;
    }
    var key = evt.keyCode;
    if ((key == KEYUP) || (key == KEYDOWN)  || (key == KEYENTER))
    {
        return true;
    }

	if (searchReq.readyState == 4 || searchReq.readyState == 0) {
		var str = escape(document.getElementById('txtCityStateZipMLS').value);
		var listtypeid = escape(document.getElementById('ddListType').value);
		if (str.length > 0 ) {
		    searchReq.open("GET", 'autocomplete.asmx/GetCompletionList?sid='+mlsid+'&searchtext=' + str + '&listtypeid=' + listtypeid, true);
		    searchReq.onreadystatechange = handleSearchSuggest; 
		    searchReq.send(null);		
		} else {
		   suggestClose();
		}

	}		
}

//Called from keyup on the search textbox.
//Starts the AJAX request.
function searchSuggestLocation(evt) {
    // make sure we have a valid event variable
    if (!evt && window.event) {
        evt = window.event;
    }
    var key = evt.keyCode;
    if ((key == KEYUP) || (key == KEYDOWN) || (key == KEYENTER)) {
        return true;
    }

    if (searchReq.readyState == 4 || searchReq.readyState == 0) {
        var str = escape(document.getElementById('txtLocation').value);
        var listtypeid = escape(document.getElementById('ddPropertyType').value);
        if (str.length > 0) {
            searchReq.open("GET", 'autocomplete.asmx/GetCompletionList?sid=' + mlsid + '&searchtext=' + str + '&listtypeid=' + listtypeid, true);
            searchReq.onreadystatechange = handleSearchSuggestLocation;
            searchReq.send(null);
        } else {
            suggestClose();
        }

    }
}

//Called when the AJAX response is returned.
function handleSearchSuggest() {
	if (searchReq.readyState == 4) {
		var ss = document.getElementById('search_suggest')
		ss.innerHTML = '';
		//alert(searchReq.responseText);
		//Load XMLDom
		try //Internet Explorer
          {
          xmlDoc=new ActiveXObject("Microsoft.XMLDOM");
          xmlDoc.async="true";
          xmlDoc.loadXML(searchReq.responseText);
          }
        catch(e)
          {
          try //Firefox, Mozilla, Opera, etc.
            {
            parser=new DOMParser();
            xmlDoc=parser.parseFromString(searchReq.responseText,"text/xml");
            }
          catch(e) {alert(e.message)}
          }
		var x=xmlDoc.getElementsByTagName('string');
		if (x.length > 0) {
		    for(i=0; i < x.length; i++) {
		        var suggestitem = x[i].childNodes[0].nodeValue.split("|");
		        document.getElementById('search_suggest').style.display = "block";
			    //Build our element string.  This is cleaner using the DOM, but
			    //IE doesn't support dynamically added attributes.
			    var suggest = '<div id="suggest' + i + '" width="400px" onmouseover="javascript:suggestOver(this);" suggestvalue="' + suggestitem[0] + '" ';
			    suggest += 'onmouseout="javascript:suggestOut(this);" ';
			    suggest += 'onclick="javascript:setSearch(this);" ';
			    suggest += 'class="suggest_link"><table width="100%"><tr class="SmallGreyText"><td>' + suggestitem[0] + '</td><td align="right">' + suggestitem[1] + ' Listings</td></tr></table></div>';
			    ss.innerHTML += suggest;
		    }
		    //add Close Button
		    var closeitem = '<div width="400px" class="suggest_link"><table width="100%"><tr><td></td><td align="right"><div class="suggest_close" onclick="suggestClose();">Close</div></td></tr></table></div>'
		    ss.innerHTML += closeitem;		
		} else {
		    suggestClose();
		}
	}
}

//Called when the AJAX response is returned.
function handleSearchSuggestLocation() {
    if (searchReq.readyState == 4) {
        var ss = document.getElementById('search_suggestLocation')
        ss.innerHTML = '';
        //alert(searchReq.responseText);
        //Load XMLDom
        try //Internet Explorer
          {
            xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
            xmlDoc.async = "true";
            xmlDoc.loadXML(searchReq.responseText);
        }
        catch (e) {
            try //Firefox, Mozilla, Opera, etc.
            {
                parser = new DOMParser();
                xmlDoc = parser.parseFromString(searchReq.responseText, "text/xml");
            }
            catch (e) { alert(e.message) }
        }
        var x = xmlDoc.getElementsByTagName('string');
        if (x.length > 0) {
            for (i = 0; i < x.length; i++) {
                var suggestitem = x[i].childNodes[0].nodeValue.split("|");
                document.getElementById('search_suggestLocation').style.display = "block";
                //Build our element string.  This is cleaner using the DOM, but
                //IE doesn't support dynamically added attributes.
                var suggest = '<div id="suggest' + i + '" width="400px" onmouseover="javascript:suggestOver(this);" suggestvalue="' + suggestitem[0] + '" ';
                suggest += 'onmouseout="javascript:suggestOutLocation(this);" ';
                suggest += 'onclick="javascript:setSearchLocation(this);" ';
                suggest += 'class="suggest_link"><table width="100%"><tr class="SmallGreyText"><td>' + suggestitem[0] + '</td><td align="right">' + suggestitem[1] + ' Listings</td></tr></table></div>';
                ss.innerHTML += suggest;
            }
            //add Close Button
            var closeitem = '<div width="400px" class="suggest_link"><table width="100%"><tr><td></td><td align="right"><div class="suggest_close" onclick="suggestLocationClose();">Close</div></td></tr></table></div>'
            ss.innerHTML += closeitem;
        } else {
            suggestLocationClose();
        }
    }
}

//Mouse over function
function suggestOver(div_value) {
	div_value.className = 'suggest_link_over';
}
//Mouse out function
function suggestOut(div_value) {
	if (div_value != null) {
	div_value.className = 'suggest_link';
	}
}
//Mouse out function
function suggestOutLocation(div_value) {
    if (div_value != null) {
        div_value.className = 'suggest_link';
    }
}
//Click function
function setSearch(obj) {
    if (obj != null)  {
        var value = obj.getAttribute("suggestvalue");
	    document.getElementById('txtCityStateZipMLS').value = value;
	    document.getElementById('search_suggest').innerHTML = '';
	    document.getElementById('search_suggest').style.display = "none";
    }
}
//Click function
function setSearchLocation(obj) {
    if (obj != null) {
        var value = obj.getAttribute("suggestvalue");
        document.getElementById('txtLocation').value = value;
        document.getElementById('search_suggestLocation').innerHTML = '';
        document.getElementById('search_suggestLocation').style.display = "none";
    }
}

function suggestClose() {
    document.getElementById('search_suggest').style.display = "none";
}
function suggestLocationClose() {
    document.getElementById('search_suggestLocation').style.display = "none";
}

    function keypressHandler(evt)
    {
        // don't do anything if the div is hidden
        var div = document.getElementById('search_suggest');
        
        if (div.style.display == "none")
        return true;
        
        // make sure we have a valid event variable
        if(!evt && window.event) {
            evt = window.event;
        }
        var key = evt.keyCode;
        if ((key != KEYUP) && (key != KEYDOWN)  && (key != KEYENTER))
        {
            return true;
        }
        
        if (key == KEYUP){
            if ((selected-1) >= 0) {
                selected = selected -1;
            } else {
                selected = 0
            }
        }
        
        if (key == KEYDOWN) {
            if ((selected+1) < 10) {
                selected = selected +1;
            } else {
                selected = 9
            }
        }
        
        if (key == KEYENTER) {
            setSearch(document.getElementById("suggest"+selected));  
            return false;
        }
        var divelements = div.childNodes.length;
        if (selected <= divelements - 2) {
            var selectedobj = document.getElementById("suggest"+selected);
            if (selectedobj != null) {
                suggestOut(document.getElementById("suggest"+(selected-1)));
                suggestOut(document.getElementById("suggest"+(selected+1)));
                suggestOver(selectedobj);
            }        
        }

        return true;
    }
    
    function eventTrigger (e) //returns event source as object for IE/Safari or FireFox
    {
        if (! e)
        e = event;
        return e.target || e.srcElement;
    }

    function confirmListingDelete() {
        if (confirm("Are you sure you want to remove this listing?") == true)
            return true;
        else
            return false;
    }
    function confirmSavedSearchDelete() {
        if (confirm("Are you sure you want to delete this search?") == true)
            return true;
        else
            return false;
    }    
