// <script type="text/javascript" src="http://mnstat.com/js/search-suggest.js?v5"></script>
// <script type="text/javascript" src="/js/topsearches.gzip.js?v321"></script>


var searchfield = document.getElementById("search");
var postcode = document.getElementById("postcode");
var sugbox = document.getElementById("searchsuggestions");
var queries = new Array();
var suggestions = new Array();
var searchValue;
var hoveredSuggestion = -1;
var cookieQueries = new Array();

function realOffset(B, A) {
    var C = 0;
    while (B) {
        C += B[A];
        B = B.offsetParent
    }
    return C
}

function setSuggestionsList(E) {    queries = E;  }

function buildSearch(E) {
    setSuggestionsList(E)
    
    searchfield.setAttribute("autocomplete", "off");
    searchfield.onkeydown = function(F) {
        clearTimeout(timer); timer = null;
        try {
            searchKeyDown(event.keyCode)
        } catch (G) {
            searchKeyDown(F.keyCode)
        }
    };
    searchfield.onkeyup = function(F) {
        try {
            searchKeyUp(event.keyCode)
        } catch (G) {
            searchKeyUp(F.keyCode)
        }
    };
    searchfield.onblur = function() {
        setTimeout(hideSugbox, 250)
    };
}

function hoverSuggestion(A, S_INDEX) {
    if(typeof S_INDEX === "undefined"){}else;{main_array_index = S_INDEX} //makes the param optional
    
    for (var B = 0; B < suggestions.length; B++) {
        sugbox.getElementsByTagName("a")[B].className = sugbox.getElementsByTagName("a")[B].rel
    }
    if (A != -1) {
        sugbox.getElementsByTagName("a")[A].className = "hovered";
        hoveredSuggestion = A
    }
}

function searchKeyDown(A) {
   
    if (sugbox.style.display == "block") {
        if (A != 38 && A != 40) {
            hoveredSuggestion = -1
        }
        if (A == 38 && hoveredSuggestion != -1) {
            hoveredSuggestion--;
            hoverSuggestion(hoveredSuggestion);
            searchfield.value = suggestions[hoveredSuggestion]
        }
        
        if (A == 40 && hoveredSuggestion < suggestions.length - 1) {
            hoveredSuggestion++;
            hoverSuggestion(hoveredSuggestion);
            searchfield.value = suggestions[hoveredSuggestion]
        }
        if (A == 38 && hoveredSuggestion == -1) {
            searchfield.value = searchValue
        }
    }
}

function searchKeyUp(A) {
    if (A != 38 && A != 40) {
        searchValue = searchfield.value;
    }
    if (searchfield.value != "" && A != 13 && A != 27 && A != 38 && A != 40 && A != 39 && A != 37) {
        startSearch();
        //giveSuggestions();
    }
    if ((searchfield.value == "" || A == 27) && sugbox.style.display == "block") {
        hideSugbox()
    }
}

function giveSuggestions() {
    suggestions = new Array();
    var suggestions_index = new Array();
    for (var A = 0; A < queries.length && suggestions.length < 25; A++) {  //search start of word
        var s = searchfield.value.toLowerCase();
        var t = "";
        var pushout = "";
        
        if (isNaN(s)) {//we search by suburb
            t = queries[A].suburb.toString().toLowerCase();
            pushout = queries[A].suburb + ", " + queries[A].postcode + ", " + queries[A].state
        } else {//we search by postcode
            t = queries[A].postcode.toString().toLowerCase();
            pushout = queries[A].postcode + ", " + queries[A].suburb + ", " + queries[A].state 
        }

        //if (t.indexOf(searchfield.value.toLowerCase()== 0)) { suggestions.push(pushout); }
        if (t.substr(0, s.length) == s) { suggestions.push(pushout); suggestions_index.push(A) }
    }

    
    if (suggestions.length == 0) {
        hideSugbox()
    }else {
        showSugbox()
    }
    
    sugbox.innerHTML = "";
    for (var A = 0; A < suggestions.length; A++) {
        if (isEven(A)) {
            sugbox.innerHTML += '<a onclick="javascript:submitFYNB(' + suggestions_index[A] + ',' + A + ');" href = "javascript:void(0);" style = "width:' + (searchfield.offsetWidth - 6) + 'px;" onmouseover = "hoverSuggestion(' + A + ')" >' + suggestions[A] + "</a>"
        } else {
            sugbox.innerHTML +=     '<a onclick="javascript:submitFYNB(' + suggestions_index[A] + ',' + A + ');" rel = "alternate"  class = "alternate" href = "javascript:void(0);" style = "width:' + (searchfield.offsetWidth - 6) + 'px;" onmouseover = "hoverSuggestion(' + A + ')" >' + suggestions[A] + "</a>"
        }
    }
}

function isEven(num) {
    return !(num % 2);
}

function showSugbox() {
    sugbox.style.top = (realOffset(searchfield, "offsetTop") + searchfield.offsetHeight - 1) + "px";
    sugbox.style.left = realOffset(searchfield, "offsetLeft") + "px";
    sugbox.style.width = (searchfield.offsetWidth - 2) + "px";
    sugbox.style.display = "block"

}

function hideSugbox() {
    sugbox.style.display = "none"
};


