var AutoComp;
var showSuggestions = 1;
var hideText = '<span id="searchSuggestionHide" onClick="toggleSuggestions(0)">Hide</span>';
var searchSuggestionHeader ='<div id="searchSuggestionHeader">Search Suggestions:'+hideText+'</div>';
var listItems;
var suggestionHideTimer;

function createCookie(name, value, days) {
    if(days) {
        var date = new Date();
        date.setTime(date.getTime()+(days*24*60*60*1000));
        var expires = "; expires="+date.toGMTString();
    }
    else {
        var expires = "";
    }
    document.cookie = name+"="+value+expires+"; path=/";
}

function eraseCookie(name) {
    createCookie(name, "", -1);
}

function hideShowSuggestions() {
	var animOut = new YAHOO.util.Anim( 'searchSuggestionsHidden', { opacity: { to: 0 } }, 0.25, YAHOO.util.Easing.easeOut);
	animOut.animate();
	animOut.onComplete.subscribe(function() { YAHOO.util.Dom.setStyle('searchSuggestionsHidden', 'display', 'none'); } );
}
function toggleSuggestions(show) {
    
    showSuggestions = show;
    if(!show) {
        AutoComp._toggleContainer(false);
        YAHOO.util.Dom.setStyle('searchSuggestionsHidden', 'opacity', 1); 
        YAHOO.util.Dom.setStyle('searchSuggestionsHidden', 'display', 'block');
 
        suggestionHideTimer = setTimeout(hideShowSuggestions, 1300);
        createCookie('disable_kw_suggest', 1, 14);
    }
    else if(show) {
        YAHOO.util.Dom.setStyle('searchSuggestionsHidden', 'display', 'none');
        if(listItems && (listItems.length > 0 )) {
            for(var i= listItems.length-1; i>=0; i--) {
                listItems[i].style.display = "block";
            }
        }
        AutoComp._initContainer();
        AutoComp._toggleContainer(true);
        
        eraseCookie('disable_kw_suggest')
    }
}
YAHOO.ACScriptNode = new function(){
    this.oACDS = new YAHOO.widget.DS_ScriptNode("/searchSuggestions.rpc.php?lang_id=en&market=US&ab_case_id=0&topcat_id=0&page_type=home", ["suggestions", "keyword", "clickthrus", "click_tracking"]);
    this.oACDS.scriptQueryParam = "keyword";
    this.oACDS.maxCacheEntries = 60;
    this.oAutoComp = AutoComp = new YAHOO.widget.AutoComplete("shopForInput","ysearchcontainer", this.oACDS);
    this.oAutoComp.animVert = true;
    this.oAutoComp.animHoriz = false;
    this.oAutoComp.animSpeed = 0.1;
    this.oAutoComp.autoHighlight = false;
    this.oAutoComp.useShadow = false;
    this.oAutoComp.maxResultsDisplayed = 12;
    this.oAutoComp.minQueryLength = 3;
    

    this.oAutoComp.doBeforeExpandContainer = function(elTextbox, elContainer, sQuery, aResults) {
        YAHOO.util.Dom.setStyle("ysearchcontainer", 'display', 'block');
        var containerXPos = YAHOO.util.Dom.getX('shopForInput');
        if( containerXPos  ) {
            YAHOO.util.Dom.setX('ysearchcontainer', containerXPos);
            YAHOO.util.Dom.setX('searchSuggestionsHidden', containerXPos);
            var searchButtonXPos = YAHOO.util.Dom.getX('sbar_submit');
            if(searchButtonXPos) {
                
                searchButtonXPos = (searchButtonXPos-0)-10;
                ss_width = searchButtonXPos - containerXPos;
                ss_width = ss_width + "px";
                YAHOO.util.Dom.setStyle("ysearchcontainer", 'width', ss_width);
                YAHOO.util.Dom.setStyle("searchSuggestionsHidden", 'width', ss_width);
            }

        }

        
        listItems = AutoComp.getListItems();
            
        this.setHeader(searchSuggestionHeader);
        if(showSuggestions) {
            return true;
        }
        if(!showSuggestions) {
            YAHOO.util.Dom.setStyle('searchSuggestionsHidden', 'opacity', 1);
            YAHOO.util.Dom.setStyle('searchSuggestionsHidden', 'display', 'block');
            return false;
        }
    };

    this.oAutoComp.itemSelectEvent.subscribe(
            function(type, args) {
                kw_suggest = document.getElementById("kw_suggest");
                if(kw_suggest) {
                    kw_suggest.value = 1;
                }
                
                var aData = args[2];
                var omCode = aData[2];
                if(omCode) {
                
                    eval(omCode);
                }
                document.mastsearch.st.value = 'query_suggestions';
                document.mastsearch.submit();
            });

    this.oAutoComp.containerCollapseEvent.subscribe(
            function(oSelf) {
            
                YAHOO.util.Dom.setStyle("ysearchcontainer", 'display', 'none');
            });

    this.oAutoComp.textboxKeyEvent.subscribe(
            function(oSelf, nKeycode) {
            
                if(!showSuggestions) {
                    clearTimeout(suggestionHideTimer);
                    YAHOO.util.Dom.setStyle('searchSuggestionsHidden', 'display', 'block');
                }
            });
    this.oAutoComp.textboxBlurEvent.subscribe(
            function(oSelf) {
                if(!showSuggestions) {
                    //Set a timeout so that the user has a chance to show suggestions before it's hidden
                    suggestionHideTimer = setTimeout("hideShowSuggestions()", 500);
                }
            });

    this.oAutoComp.formatResult = function(oResultItem, sQuery) {
        //Unhide search suggestions header, done here rather than using containerExpandEvent for quicker response
        var name = oResultItem[0];
        var clickTracking = oResultItem[2];
        var suggestion = '<div class="searchSuggestion"><span class="searchSuggestionKeyword">' + name + '</span></div>';
        return suggestion;
    };

};
