
YAHOO.namespace('USANA.ProductFinder');
var  Dom = YAHOO.util.Dom;

function ingredientClick(ingredient, ingName){
    var div = document.getElementById('tab3Items');
    var tab3Subtitle = document.getElementById('tab3Subtitle');
    tab3Subtitle.innerHTML = ingName;
    div.style.display = 'block';
    var handleSuccess = function(o){
        if(o.responseText != undefined && (o.responseText.indexOf('##error')==-1)){
//            div.innerHTML = "<li>Transaction id: " + o.tId + "</li>";
//            div.innerHTML += "<li>HTTP status: " + o.status + "</li>";
//            div.innerHTML += "<li>Status code message: " + o.statusText + "</li>";
//            div.innerHTML += "<li>HTTP headers: <ul>" + o.getAllResponseHeaders + "</ul></li>";
            div.innerHTML = "" + o.responseText + "";
//            div.innerHTML += "<li>Argument object: Object ( [foo] => " + o.argument.foo +
//                             " [bar] => " + o.argument.bar +" )</li>";
            var tab3Search = document.getElementById('tab3Search');

            div.style.display = 'block';
            tab3Search.style.display='none';
        }else if(o.responseText.indexOf('##error')>-1){
            window.location = '/shop/jsp/onlineServices/shop/sessiontimeout.jsp';   
        }
    }

    var handleFailure = function(o){
        if(o.responseText !== undefined){
            div.innerHTML = "<li>Transaction id: " + o.tId + "</li>";
            div.innerHTML += "<li>HTTP status: " + o.status + "</li>";
            div.innerHTML += "<li>Status code message: " + o.statusText + "</li>";
        }
    }

    var callback =
    {
      success:handleSuccess,
      failure: handleFailure,
      argument: { foo:"foo", bar:"bar" }
    };
    YAHOO.USANA.ProductFinder.lastIngredient = ingredient;
    var sUrl = "/shop/cart/ProductCubeAjax?whichOne="+ingredient+"&selectedSort=0&hideTop=1&whichListToGet=ingredients";
    var request = YAHOO.util.Connect.asyncRequest('GET', sUrl, callback);
}
function bodyClick(system,ele){
    var div = document.getElementById('tab2Items');
    var tab2Subtitle = document.getElementById('tab2Subtitle');
    tab2Subtitle.innerHTML = ele.innerHTML;
    div.style.display = 'block';
    var handleSuccess = function(o){
        if(o.responseText != undefined && o.responseText.indexOf('##error')==-1){
//            div.innerHTML = "<li>Transaction id: " + o.tId + "</li>";
//            div.innerHTML += "<li>HTTP status: " + o.status + "</li>";
//            div.innerHTML += "<li>Status code message: " + o.statusText + "</li>";
//            div.innerHTML += "<li>HTTP headers: <ul>" + o.getAllResponseHeaders + "</ul></li>";
            div.innerHTML = "" + o.responseText + "";
//            div.innerHTML += "<li>Argument object: Object ( [foo] => " + o.argument.foo +
//                             " [bar] => " + o.argument.bar +" )</li>";
            var tab2Search = document.getElementById('tab2Search');

            div.style.display = 'block';
            tab2Search.style.display='none';
        }else if(o.responseText.indexOf('##error')>-1){
            window.location = '/shop/jsp/onlineServices/shop/sessiontimeout.jsp';
        }
    }

    var handleFailure = function(o){
        if(o.responseText !== undefined){
            div.innerHTML = "<li>Transaction id: " + o.tId + "</li>";
            div.innerHTML += "<li>HTTP status: " + o.status + "</li>";
            div.innerHTML += "<li>Status code message: " + o.statusText + "</li>";
        }
    }

    var callback =
    {
      success:handleSuccess,
      failure: handleFailure,
      argument: { foo:"foo", bar:"bar" }
    };
    YAHOO.USANA.ProductFinder.lastSystem = system;
    var sUrl = "/shop/cart/ProductCubeAjax?whichOne="+system+"&selectedSort=0&hideTop=1&whichListToGet=bodySystems";
    var request = YAHOO.util.Connect.asyncRequest('GET', sUrl, callback);
}
function specialsReset(){
    var div = document.getElementById('tab1Items');
    div.style.display = 'block';
    var handleSuccess = function(o){
        if(o.responseText != undefined &&  o.responseText.indexOf('##error')==-1){
            div.innerHTML = "" + o.responseText + "";

            div.style.display = 'block';
        }else if(o.responseText.indexOf('##error')>-1){
            window.location = '/shop/jsp/onlineServices/shop/sessiontimeout.jsp';
        }
    }

    var handleFailure = function(o){
        if(o.responseText !== undefined){
            div.innerHTML = "<li>Transaction id: " + o.tId + "</li>";
            div.innerHTML += "<li>HTTP status: " + o.status + "</li>";
            div.innerHTML += "<li>Status code message: " + o.statusText + "</li>";
        }
    }

    var callback =
    {
      success:handleSuccess,
      failure: handleFailure,
      argument: { foo:"foo", bar:"bar" }
    };
    var sUrl = "/shop/cart/ProductCubeAjax?whichOne=0&selectedSort=0&hideTop=1&mostpop=0&whichListToGet=specialsOrMostPop";
    var request = YAHOO.util.Connect.asyncRequest('GET', sUrl, callback);
}
function mostPopularReset(){
    var div = document.getElementById('tab4Items');
    div.style.display = 'block';
    var handleSuccess = function(o){
        if(o.responseText != undefined &&  o.responseText.indexOf('##error')==-1){
            div.innerHTML = "" + o.responseText + "";

            div.style.display = 'block';
        }else if(o.responseText.indexOf('##error')>-1){
            window.location = '/shop/jsp/onlineServices/shop/sessiontimeout.jsp';
        }
    }

    var handleFailure = function(o){
        if(o.responseText !== undefined){
            div.innerHTML = "<li>Transaction id: " + o.tId + "</li>";
            div.innerHTML += "<li>HTTP status: " + o.status + "</li>";
            div.innerHTML += "<li>Status code message: " + o.statusText + "</li>";
        }
    }

    var callback =
    {
      success:handleSuccess,
      failure: handleFailure,
      argument: { foo:"foo", bar:"bar" }
    };
    var sUrl = "/shop/cart/ProductCubeAjax?whichOne=0&selectedSort=0&hideTop=1&mostpop=1&whichListToGet=specialsOrMostPop";
    var request = YAHOO.util.Connect.asyncRequest('GET', sUrl, callback);
}


function updateCart(){
    var tab, type;
    tab = YAHOO.USANA.ProductFinder.currentTab;
    if(tab == 'body'){
        var lastSystem =YAHOO.USANA.ProductFinder.lastSystem;
        var ele = document.getElementById("button"+lastSystem);
        bodyClick(lastSystem,ele);
    }else if(tab == 'ingredient'){
        var lastIngredient =YAHOO.USANA.ProductFinder.lastIngredient;
        var ele = document.getElementById("ing_"+lastIngredient);
        ingredientClick(lastIngredient,ele.innerHTML);
    }else if(tab == 'mostpop'){
        mostPopularReset();
    }else{
        specialsReset();
    }
}

(function() {
    function clickBody(ev, obj){
        obj.clickBody(ev,this);
        Event.preventDefault(ev);
    }
    function clickIngredient(ev, obj){
        obj.clickIngredient(ev,this);
        Event.preventDefault(ev);
    }
    function clickSpecial(ev, obj){
        obj.clickSpecial(ev,this);
        Event.preventDefault(ev);
    }
    function clickMostPopular(ev, obj){
        obj.clickMostPopular(ev,this);
        Event.preventDefault(ev);
    }
    YAHOO.USANA.ProductFinder = function(el, userConfig) {
        /*YAHOO.log("in constructor", "info", WidgetName);*/
        YAHOO.USANA.ProductFinder.superclass.constructor.call(this, el, userConfig);
    };

    var ProductFinder = YAHOO.USANA.ProductFinder,
            Dom = YAHOO.util.Dom,
            Event = YAHOO.util.Event,
            JS = YAHOO.lang;
    YAHOO.extend(ProductFinder, YAHOO.util.Element, {
        _instance:null,
        _bodyPane:{},
        _ingredientPane:{},
        _specialPane:{},
        _mostPopPane:{},
        currentTab:null,
        lastSystem:null,
        lastIngredient:null,
        defaultTab:'body',
        init:function (el, attrs) {
            var finder = this;
            this.setDefaultTab();
            this._createPane('body',this._bodyPane);
            this._createPane('ingredient',this._ingredientPane);
            this._createPane('special',this._specialPane);
            this._createPane('mostpopular',this._mostPopPane);

            YAHOO.util.Event.on(this._bodyPane.tab, "click", this.clickBody,finder);
            YAHOO.util.Event.on(this._ingredientPane.tab, "click", this.clickIngredient,finder);
            YAHOO.util.Event.on(this._specialPane.tab, "click", this.clickSpecial,finder);
            YAHOO.util.Event.on(this._mostPopPane.tab, "click", this.clickMostPopular,finder);
            this.reset();

        },
        setDefaultTab:function(){
            var tabs = Dom.getElementsByClassName("tab_00");
            if(tabs.length>0 ){
                for(i=0;i<tabs.length;i++){
                    if(! Dom.hasClass(tabs[i],'hideTab')){
                        Dom.addClass(tabs[i],"first_tab");
                        if(Dom.hasClass(tabs[i],'body')){
                            this.defaultTab = 'body';
                        }else if(Dom.hasClass(tabs[i],'ingredient')){
                            this.defaultTab = 'ingredient';
                        }else if(Dom.hasClass(tabs[i],'special')){
                            this.defaultTab = 'special';
                        }else if(Dom.hasClass(tabs[i],'mostpopular')){
                            this.defaultTab = 'mostpopular';
                        }
                        break;
                    }
                }
            }
        },
        reset:function(){
            var finder = this;
            var triggedClick = false;
            if(this.defaultTab=='body' && ! Dom.hasClass(this._bodyPane.tab, 'hideTab')){
                this.clickBody (null,finder);
                triggedClick = true;
            }else if(this.defaultTab=='ingredient'&& ! Dom.hasClass(this._ingredientPane.tab, 'hideTab')){
                this.clickIngredient(null,finder);
                triggedClick = true;
            }else if(this.defaultTab=='special'&& ! Dom.hasClass(this._specialPane.tab, 'hideTab')){
                this.clickSpecial(null,finder);
                triggedClick = true;
            }else if(this.defaultTab=='mostpopular'&& ! Dom.hasClass(this._mostPopPane.tab, 'hideTab')){
                this.clickMostPopular(null,finder);
                triggedClick = true;
            }
            if(!triggedClick){
                this.setDefaultTab();
            }
        },
        _createPane: function (type,pane) {
            var elements = Dom.getElementsByClassName(type);
            for(i=0;i<elements.length;i++){
                if(Dom.hasClass(elements[i],"tabPanel")){
                    pane.panel=elements[i];
                }else if(Dom.hasClass(elements[i],"tabTitle")){
                    pane.title = elements[i];
                }else if(Dom.hasClass(elements[i],"tab_00")){
                    pane.tab = elements[i];
                }
            }
        },
        clickBody: function(ev, element){
            element.hidePanels(element);
            var tab2Search = document.getElementById('tab2Search');
            tab2Search.style.display='block';
            var tab2Subtitle = document.getElementById('tab2Subtitle');
            tab2Subtitle.innerHTML ="";
            var tab2Items = document.getElementById('tab2Items');
            tab2Items.innerHTML="";
            tab2Items.style.display='none';
            Dom.addClass(element._bodyPane.title,"selected");
            Dom.addClass(element._bodyPane.panel,"selected");
            Dom.addClass(element._bodyPane.tab,"tab_01");
            YAHOO.USANA.ProductFinder.currentTab = 'body';
        },
        clickIngredient: function(ev, element){
            element.hidePanels(element);
            var tab3Search = document.getElementById('tab3Search');
            tab3Search.style.display='block';
            var tab3Subtitle = document.getElementById('tab3Subtitle');
            tab3Subtitle.innerHTML ="";
            var tab3Items = document.getElementById('tab3Items');
            tab3Items.innerHTML="";
            tab3Items.style.display='none';
            Dom.addClass(element._ingredientPane.title,"selected");
            Dom.addClass(element._ingredientPane.panel,"selected");
            Dom.addClass(element._ingredientPane.tab,"tab_01");
            YAHOO.USANA.ProductFinder.currentTab = 'ingredient';

        },
        clickSpecial: function(ev, element){
            element.hidePanels(element);
            Dom.addClass(element._specialPane.title,"selected");
            Dom.addClass(element._specialPane.panel,"selected");
            Dom.addClass(element._specialPane.tab,"tab_01");
            YAHOO.USANA.ProductFinder.currentTab = 'specials';
        },
        clickMostPopular: function(ev, element){
            element.hidePanels(element);
            Dom.addClass(element._mostPopPane.title,"selected");
            Dom.addClass(element._mostPopPane.panel,"selected");
            Dom.addClass(element._mostPopPane.tab,"tab_01");

            YAHOO.USANA.ProductFinder.currentTab = 'mostpop';

        },
        hidePanels: function (element){
            Dom.removeClass( element._bodyPane.title, "selected");
            Dom.removeClass( element._ingredientPane.title, "selected");
            Dom.removeClass( element._specialPane.title, "selected");
            Dom.removeClass( element._mostPopPane.title, "selected");
            Dom.removeClass(element._bodyPane.panel, "selected");
            Dom.removeClass(element._ingredientPane.panel, "selected");
            Dom.removeClass(element._specialPane.panel, "selected");
            Dom.removeClass(element._mostPopPane.panel, "selected");
            Dom.removeClass(element._bodyPane.tab, "tab_01");
            Dom.removeClass(element._ingredientPane.tab, "tab_01");
            Dom.removeClass(element._specialPane.tab, "tab_01");
            Dom.removeClass(element._mostPopPane.tab, "tab_01");
        }
    });
})();
YAHOO.register("ProductFinder", YAHOO.USANA.ProductFinder, {version: "2.7.0", build: "1"});