$(document).bind("ready",function(){
    var defaultSearch = $(".suggestion").val();
    $(".searchHolder").click(onClick)
    $(".suggestion")
        .click(onClick)
        .attr("autocomplete","off")
    $(".search")
        .click(onClick)
        .blur(onBlur)
        .val("")
        .focus()
        .attr("autocomplete","off")
        .keyup(function(e){
            setTimeout(showText,1);
        }).keydown(function(e){

            
            if (e.keyCode==13)
            {
                if ($(".search").val().length>2)
                {
                    $(".searchResults").hide();
                    $("#searchResultsHolder").html("");
                    $(document.createElement("div")).addClass("verticalSpacer").css("height","25px").appendTo($("#searchResultsHolder"));
                    $(document.createElement("div")).html("<b>"+searchingText+"</b>").addClass("searchResultsCategory").appendTo($("#searchResultsHolder"));
                    $(document.createElement("div")).addClass("clear").html("&nbsp").appendTo($("#searchResultsHolder"));
                    $(".searchResults").show();

                    callWebService("./WS.asmx/Find",{text:$(".search").val(), ver:version},function(data){
                        if (data==null)
                        {
                            alert("null returned");
                            return;
                        }
                        var searchHolder = $("#searchResultsHolder");
                        var count = 0;
                        for(category in data.Matched)
                            for(result in data.Matched[category])
                                count++;
                        for(category in data.Guessed)
                            for(result in data.Guessed[category])
                                count++;
                        if (count == 0)
                        {
                            $(".searchResults").hide();
                            $("#searchResultsHolder").html("");
                            $(document.createElement("div")).addClass("verticalSpacer").css("height","25px").appendTo($("#searchResultsHolder"));
                            $(document.createElement("div")).html("<b>"+notFoundText+"</b>").addClass("searchResultsCategory").appendTo($("#searchResultsHolder"));
                            $(document.createElement("div")).addClass("clear").html("&nbsp").appendTo($("#searchResultsHolder"));
                            $(".searchResults").show();                        
                        }
                        else
                        {
                            searchHolder.html("");
                            $(document.createElement("div")).addClass("verticalSpacer").css("height","25px").appendTo(searchHolder);
                            var BestResult = data.BestResult;
                            for(category in data.Matched)
                            {
                                $(document.createElement("div")).html("<b>"+category+"</b>").addClass("searchResultsCategory").appendTo(searchHolder);
                                $(document.createElement("div")).addClass("searchResultsSpacer").html("&nbsp;").appendTo(searchHolder);
                                $(document.createElement("div")).addClass("verticalSpacer").css("height","5px").appendTo(searchHolder);
                                var c = 0;
                                for(result in data.Matched[category])
                                    if (typeof(data.Matched[category][result])=="object")
                                    {
                                        if (c!=1) $(document.createElement("div")).addClass("verticalSpacer").css("height","5px").appendTo(searchHolder);
                                        appendSpotlightRow(data.Matched[category][result]);
                                    }
                                if (data.Guessed[category])
                                    for (guessedResult in data.Guessed[category])
                                    {
                                        var show = true;
                                        for(result in data.Matched[category])
                                            if (data.Matched[category][result].URL == data.Guessed[category][guessedResult].URL)
                                                show = false;
                                        if (show && typeof(data.Guessed[category][guessedResult])=="object"){
                                            $(document.createElement("div")).addClass("verticalSpacer").css("height","5px").appendTo(searchHolder);
                                            appendSpotlightRow(data.Guessed[category][guessedResult]);                                        
                                        }
                                    }
                            }
                            for(category in data.Guessed)
                            {
                                var show = true;
                                for (matchedCategory in data.Matched)
                                    if (matchedCategory == category)
                                        show = false;
                                if (show) {
                                    $(document.createElement("div")).html("<b>"+category+"</b>").addClass("searchResultsCategory").appendTo(searchHolder);
                                    $(document.createElement("div")).addClass("searchResultsSpacer").html("&nbsp;").appendTo(searchHolder);
                                    $(document.createElement("div")).addClass("verticalSpacer").css("height","5px").appendTo(searchHolder);
                                    var c = 0;
                                    for(result in data.Guessed[category])
                                        if (typeof(data.Guessed[category][result])=="object")
                                        {
                                            if (c!=1) $(document.createElement("div")).addClass("verticalSpacer").css("height","5px").appendTo(searchHolder);
                                            appendSpotlightRow(data.Guessed[category][result]);
                                        }
                                }
                            }                            
                            $(".searchResults").slideDown(500);
                            if (typeof(DD_belatedPNG)!="undefined") 
                                DD_belatedPNG.fix('.liveFix');
                        }
                    });
                }
                
                e.preventDefault();
            }
            if (e.keyCode==9 || e.keyCode==39 || e.keyCode==40)
            {
                var suggestion =  getSuggestion($(".search").val());
                if (suggestion != ""){
                    $(".search").val(suggestion)  
                    e.preventDefault();
                }
                showText();
            }
        }).keypress(function(e){
            setTimeout(showText,1);
        });


    function showText() {
        if ($(".search").val().length>0){
            var text = getSuggestion($(".search").val());
            if (text!=""){
                var second = text.slice($(".search").val().length);
                $(".suggestion").val($(".search").val()+second).show();
            }
            else
                $(".suggestion").val("");
        } else
            $(".suggestion").val("");
    }
    
    function onClick(){
        $(".search").focus();
        if ($(".search").val()=="")
            $(".suggestion").val("").fadeOut();
    }
    
    function onBlur(){
        if ($(".search").val()=="" && defaultSearch!= $(".suggestion").val())
            $(".suggestion").hide().val(defaultSearch).fadeIn();   
        setTimeout(hideSpotlight,100);
    }
    
    var spotlightClicked = false;
    function hideSpotlight(){
        if (spotlightClicked==false) $(".searchResults").slideUp(500)
    }
    
    $("#searchResultsHolder").click(function(e){
        if (e.target.href != null && e.target.href != "")
            spotlightClicked = true;
    });
    
    function getSuggestion(search) {
        var re = new RegExp("^"+search,"i");
        for (var i = keywords.length-1 ; i >= 0 ; i--)
            if (re.test(keywords[i])==true) return keywords[i];
        return "";
    }


    $(".headerButtonHolder").hover(function(){
        $(this).children(".accountOverlay, .accountOverlayShadow").show();
    },function(){
        $(this).children(".accountOverlay, .accountOverlayShadow").hide();
    
    });

});

var keywords = new Array();
var version = null;


function appendSpotlightRow(result)
{
    var searchHolder = $("#searchResultsHolder");
    var iconsHtml = "";
    if (result.Icon3 != null && result.Icon3 != "")
        iconsHtml += "<div class='stupacIcon3W1'><img width='24px' src='"+result.Icon3+"' alt='icon' class='liveFix' /></div>"
    if (result.Icon2 != null && result.Icon2 != "")
        iconsHtml += "<div class='stupacIcon2W1'><img width='24px' src='"+result.Icon2+"' alt='icon' class='liveFix' /></div>"
    if (result.Icon1 != null && result.Icon1 != "")
        iconsHtml += "<div class='stupacIcon1W1'><img width='24px' src='"+result.Icon1+"' alt='icon' class='liveFix' /></div>"
    $(document.createElement("div")).addClass("searchResultsIcons").html(iconsHtml).appendTo(searchHolder);
    
    
    $(document.createElement("a")).attr("href",result.URL).addClass("searchResultsText").text(result.Name).appendTo(searchHolder);
    $(document.createElement("div")).addClass("clear").html("&nbsp").appendTo(searchHolder);


}