﻿// Create a new function for cross browser adding of events
window.addEvent = function(event, target, method) 
{
    if (target.addEventListener) {
	    target.addEventListener(event, method, false);
    } else if (target.attachEvent) {
	    target.attachEvent("on" + event, method);
    }
}                                                    


function AjaxMultiSearchToolObj(id, searchToolTextBox, searchToolSelectedValue, searchToolSelectedData, searchResultsHolder, searchType, pageNumber) {
    var ID = id;
    var SearchToolTextBox = searchToolTextBox;
    var txtAjaxSearchToolSelectedValue = searchToolSelectedValue;
    var txtAjaxSearchToolSelectedData = searchToolSelectedData;
    var divSearchResultsHolder = searchResultsHolder;
    var SearchType = searchType;
    var PageNumber = pageNumber;
    
    var timeoutID = null;
    var LastTextValue;
    
    var LastKeyPress;
    var CurrentElement;
    
    var mouseIn = false;

    this.StartSearch = StartSearch;
    this.PrepareForSearch = PrepareForSearch;
    this.SelectionClicked = SelectionClicked;
    this.SearchTypeChanged = SearchTypeChanged;
    this.Close = Close;
    this.ChangePage = ChangePage;
    this.get_text = get_text;
    this.get_value = get_value;
    this.get_data = get_data;

    document.getElementById(SearchToolTextBox).onfocus = function(){
                                                            document.getElementById(SearchToolTextBox).select();
                                                        }    
    return;

    function StartSearch(e, element)
    {
        var evt = e || window.event;
        var keyPressed = evt.which || evt.keyCode
    
        if (timeoutID)
            clearTimeout(timeoutID);
    
        if(keyPressed == 13)
        {
		    return false;
        }
        StartSearchInit(element);
    }    


    function StartSearchInit(element)
    {
	    // Key has been pressed so reset the values
	    document.getElementById(txtAjaxSearchToolSelectedValue).value = "";
	    mouseIn = false;

        if (element.value != "" && element.value.length > 1)
        {
            var d = new Date();
            LastKeyPress = d.getTime();
            CurrentElement = element;
            timeoutID = setTimeout(function () {CheckToExecuteSearch(LastKeyPress)},500);
        }
        else
        {
            document.getElementById(divSearchResultsHolder).innerHTML = "";
            document.getElementById(divSearchResultsHolder).style.display = "none";
        }
    }
    
    function Close()
    {
        document.getElementById(divSearchResultsHolder).innerHTML = "";
        document.getElementById(divSearchResultsHolder).style.display = "none";
    }

    function CheckToExecuteSearch(DateStamp)
    {
        if(PrepareForSearch(DateStamp))
        { 
            AjaxMultiSearchTool.DoSearch(ID, CurrentElement.value, SearchType, PageNumber, Search_Response, AjaxSearchToolError, DateStamp);
        }
    }
    
    function PrepareForSearch(DateStamp)
    {
        if (LastKeyPress == DateStamp && CurrentElement.value != "")
        {
            var l = Sys.UI.DomElement.getLocation(document.getElementById(SearchToolTextBox));
            var x = l.x;
            var y = l.y;
            Sys.UI.DomElement.setLocation(document.getElementById(divSearchResultsHolder), l.x - 1040, l.y - 25);
            document.getElementById(divSearchResultsHolder).innerHTML = "<div class='Wait'><img src='" + AjaxImageRoot + "images/loading.gif'><br>Please wait, fetching results...</div>";
            document.getElementById(divSearchResultsHolder).style.display = "block";
            return true;
        }
        return false;
    }
    
    function SearchTypeChanged(element, searchType)
    {
        // Set our new search type and reset the page
        SearchType = searchType;
        PageNumber = 1;
        
        StartSearchInit(CurrentElement)
        mouseIn = true;
    }

    function ChangePage(element, page)
    {
        // Set our new search type and reset the page
        PageNumber = page;
        
        StartSearchInit(CurrentElement)
        mouseIn = true;
    }

    function Search_Response(Result, DateStamp)
    {
        if (DateStamp == LastKeyPress)
        {
            document.getElementById(divSearchResultsHolder).innerHTML = Result;
        }
    }


    function SelectionClicked(element, id, Name, data)
    {
        document.getElementById(divSearchResultsHolder).innerHTML = "";
        document.getElementById(divSearchResultsHolder).style.display = "none";
        document.getElementById(SearchToolTextBox).value = Name;
        document.getElementById(txtAjaxSearchToolSelectedValue).value = id;
        document.getElementById(txtAjaxSearchToolSelectedData).value = data;
        LastTextValue = Name;
    }




    function AjaxSearchToolError(e)
    {
        alert("Sorry, but an error occured: " + e.get_message());
    }

    
    
    function get_text(){
        return document.getElementById(SearchToolTextBox).value;
    }
    
    function get_value(){
        return document.getElementById(txtAjaxSearchToolSelectedValue).value;
    }
    
    function get_data(){
        return document.getElementById(txtAjaxSearchToolSelectedData).value;
    }
    
}
