if(typeof Product=='undefined') {
    var Product = {};
}
Product.Config = Class.create();
Product.Config.prototype = {
    initialize: function(config){
        this.config     = config;
        this.settings   = $$('.super-attribute-select');
        this.state      = new Hash();
        this.priceTemplate = new Template(this.config.template);
        this.prices     = config.prices;
        var obj=this.ccObject(config);
        this.vector=config.attributes;
        this.displayObject(571); // gender
        this.displayObject(574); // width
        this.displayObject(598); // size
        this.displayObject(573); // shoe_size (deprecated)
        this.displayObject(581); // shoe_size_unisex (deprecated)

        /*
         * shoe_size
         */
        jQuery("#activeDiv"+598+" div").each(function(){
            jQuery(this).bind("click",function(){
                jQuery("#activeDiv"+571+" div").removeClass("viewPickGrey").removeClass("viewPickHi").addClass("viewPickLow");                                                                  jQuery("#activeDiv"+598+" div").removeClass("viewPickGrey").removeClass("viewPickHi").addClass("viewPickLow");
                jQuery("#activeDiv"+574+" div").removeClass("viewPickGrey").removeClass("viewPickHi").addClass("viewPickLow");
                var id=this.id;
                var namel=this.title;
                var levalz=jQuery("#activeDiv"+581+" div[title="+namel+"] input").attr("id");
                if (levalz) //this means is a bisexual shoe
                {

                    levalzvec=levalz.split("vec");
                    jQuery("#attribute581").val(levalzvec[1]);
                }

                if (jQuery(this).hasClass('longViewPickLow')) //it's unisex shoe
                    {

                var gender=jQuery(".product-name span").text();
                if (gender.indexOf("| Kids")>-1)
                    {var prefix='y'; }
                    else
                    {
                        var prefix='long';
                        }
                jQuery("#activeDiv"+571+" div").removeClass("viewPickLow").removeClass("longViewPickGrey").removeClass(prefix+"ViewPickHi").addClass(prefix+"ViewPickLow");
                jQuery("#activeDiv"+598+" div").removeClass("viewPickLow").removeClass("longViewPickGrey").removeClass(prefix+"ViewPickHi").addClass(prefix+"ViewPickLow");
                jQuery("#activeDiv"+574+" div").removeClass("viewPickLow").removeClass("longViewPickGrey").removeClass(prefix+"ViewPickHi").addClass(prefix+"ViewPickLow");
                var id=this.id;
                var mvec=id.split("/");
                var mvalue=mvec[0]; var mname=mvec[1]; var mprod=mvec[2];
                mprod=mprod.replace(/^\s+|\s+$/g,"");
                mvalue=mvalue.replace(/^\s+|\s+$/g,"");
                mname=mname.replace(/^\s+|\s+$/g,"");
                jQuery("#product").val(mprod);
                jQuery("#attribute"+598).val(mvalue);
                jQuery("#activeDiv"+598+" div").addClass(prefix+"ViewPickLow");
                jQuery(this).addClass("longViewPickHi").removeClass(prefix+"ViewPickLow");
                jQuery("#activeDiv"+574+ " div input").each(function(){
                    if (this.value.indexOf(mprod)>-1)
                    {
                        var leval=this.id;
                        leval=leval.split("vec");
                        mvv=leval[1];
                        mvv=mvv.replace(/^\s+|\s+$/g,"");
                        jQuery("#attribute"+574).val(mvv);
                        jQuery(this).parent().addClass("viewPickHi").removeClass("viewPickLow");
                        jQuery(this).parent().siblings().addClass("viewPickLow").removeClass("viewPickHi");
                        jQuery("#activeDiv"+571+ " div input").each(function(){
                            if (this.value.indexOf(mprod)>-1)
                            {
                                var leval=this.id;
                                leval=leval.split("vec");
                                lval=leval[1];
                                lval=lval.replace(/^\s+|\s+$/g,"");
                                jQuery("#attribute"+571).val(lval);
                                jQuery(this).parent().addClass("viewPickHi").removeClass("viewPickLow");
                                jQuery(this).parent().siblings().addClass("viewPickLow").removeClass("viewPickHi");
                            }
                        })
                    }

            });

                }
                else

                {



                var mvec=id.split("/");
                var mvalue=mvec[0];
                var mname=mvec[1];
                var mprod=mvec[2];
                mprod=mprod.replace(/^\s+|\s+$/g,"");
                mvalue=mvalue.replace(/^\s+|\s+$/g,"");
                mname=mname.replace(/^\s+|\s+$/g,"");
                jQuery("#product").val(mprod);
                jQuery("#attribute"+598).val(mvalue);
                if (mprod.indexOf(",")>-1)
                {
                    if (jQuery("#attribute"+574).val()!='')
                    {
                        var lid=jQuery("#attribute"+574).val()  ;
                        var valorz=jQuery("#vec"+lid).val();
                        jQuery("#vec"+lid).parent().addClass("viewPickHi").removeClass("viewPickLow");
                        var vecvalorz=valorz.split(",");
                        var vecprodz=mprod.split(",");
                        var n=0;
                        for (n=0;n<=vecvalorz.length-1;n++)
                        {
                          for (m=0;m<=vecprodz.length-1;m++)
                            if (vecvalorz[n]==vecprodz[m])
                            {
                                jQuery("#product").val(vecvalorz[n]);
                                break;
                            }
                        }
                    }
                }
                jQuery("#activeDiv"+598+" div").addClass("viewPickLow");
                jQuery(this).addClass("viewPickHi").removeClass("viewPickLow");
                if (jQuery("#activeDiv571").text()!='')
                if ((jQuery("#activeDiv574").text()=='')){
                    jQuery("#activeDiv"+571+ " div input").each(function(){
                        if (this.value.indexOf(mprod)>-1)
                        {
                            var leval=this.id;
                            leval=leval.split("vec");
                            lval=leval[1];
                            lval=lval.replace(/^\s+|\s+$/g,"");
                            jQuery("#attribute"+571).val(lval);
                            jQuery(this).parent().addClass("viewPickHi").removeClass("viewPickLow");
                            jQuery(this).parent().siblings().addClass("viewPickLow").removeClass("viewPickHi");
                        }
                    })
                }else
                {
                    jQuery("#activeDiv"+574+ " div input").each(function(){
                        if (this.value.indexOf(mprod)>-1)
                        {
                            var leval=this.id;
                            leval=leval.split("vec");
                            mvv=leval[1];
                            mvv=mvv.replace(/^\s+|\s+$/g,"");
                            jQuery("#attribute"+574).val(mvv);
                            jQuery(this).parent().addClass("viewPickHi").removeClass("viewPickLow");
                            jQuery(this).parent().siblings().addClass("viewPickLow").removeClass("viewPickHi");
                            jQuery("#activeDiv"+571+ " div input").each(function(){
                                if (this.value.indexOf(mprod)>-1)
                                {
                                    var leval=this.id;
                                    leval=leval.split("vec");
                                    lval=leval[1];
                                    lval=lval.replace(/^\s+|\s+$/g,"");
                                    jQuery("#attribute"+571).val(lval);
                                    jQuery(this).parent().addClass("viewPickHi").removeClass("viewPickLow");
                                    jQuery(this).parent().siblings().addClass("viewPickLow").removeClass("viewPickHi");
                                }
                            })
                        }
                    })
                } else {
                    jQuery("#activeDiv"+574+ " div input").each(function(){
                        if (this.value.indexOf(mprod)>-1)
                        {
                            var leval=this.id;
                            leval=leval.split("vec");
                            mvv=leval[1];
                            mvv=mvv.replace(/^\s+|\s+$/g,"");
                            jQuery("#attribute"+574).val(mvv);
                            jQuery(this).parent().addClass("viewPickHi").removeClass("viewPickLow");
                            jQuery(this).parent().siblings().addClass("viewPickLow").removeClass("viewPickHi");
                        }
                    })
                } }
            });
        });

        // If we only have one size, let's pre-select it.
        // First make sure we have a size...
        if(this.vector[598]!=undefined) {
            // Get the array of sizes and count it.
            var sizes = this.vector[598]["options"];
            if(sizes.length == 1) {
                // Get our size variables.
                var sizeId = sizes[0]["id"];
                var productId = sizes[0]["products"];
                // Determine whether to use the long box or normal box by checking if "unisexBg" is set.  Note that we can't get the div by ID, because there's a span with the same ID.  Stupid.
                var className = 'view';
                if(jQuery("#activeDiv598").children("div").hasClass("unisexBg")) {
                    className = 'longView';
                }
                // Remove the "low" pick and activate the "hi" pick.
                jQuery("#activeDiv598").children("div").removeClass(className + 'PickLow').addClass(className + 'PickHi');
                // Fill in the product ID
                jQuery("#product").val(productId);
                // Fill in the attribute (size) ID
                jQuery("#attribute598").val(sizeId);
            }
        }
        /*
         * shoe_size_unisex
         */
        jQuery("#activeDiv"+581+" div").each(function(){
            jQuery(this).bind("click",function(){
                var gender=jQuery(".product-name span").text();
                if (gender.indexOf("| Kids")>-1)
                    {var prefix='y'; }
                    else
                    {var prefix='long';}
                jQuery("#activeDiv"+571+" div").removeClass("longViewPickGrey").removeClass(prefix+"ViewPickHi").addClass(prefix+"ViewPickLow");                                                                    jQuery("#activeDiv"+581+" div").removeClass("longViewPickGrey").removeClass(prefix+"ViewPickHi").addClass(prefix+"ViewPickLow");
                jQuery("#activeDiv"+574+" div").removeClass("longViewPickGrey").removeClass(prefix+"ViewPickHi").addClass(prefix+"ViewPickLow");
                var id=this.id;
                var mvec=id.split("/");
                var mvalue=mvec[0]; var mname=mvec[1]; var mprod=mvec[2];
                mprod=mprod.replace(/^\s+|\s+$/g,"");
                mvalue=mvalue.replace(/^\s+|\s+$/g,"");
                mname=mname.replace(/^\s+|\s+$/g,"");
                jQuery("#product").val(mprod);
                jQuery("#attribute"+581).val(mvalue);
                jQuery("#activeDiv"+581+" div").addClass(prefix+"ViewPickLow");
                jQuery(this).addClass("longViewPickHi").removeClass(prefix+"ViewPickLow");
                jQuery("#activeDiv"+574+ " div input").each(function(){
                    if (this.value.indexOf(mprod)>-1)
                    {
                        var leval=this.id;
                        leval=leval.split("vec");
                        mvv=leval[1];
                        mvv=mvv.replace(/^\s+|\s+$/g,"");
                        jQuery("#attribute"+574).val(mvv);
                        jQuery(this).parent().addClass("viewPickHi").removeClass("viewPickLow");
                        jQuery(this).parent().siblings().addClass("viewPickLow").removeClass("viewPickHi");
                        jQuery("#activeDiv"+571+ " div input").each(function(){
                            if (this.value.indexOf(mprod)>-1)
                            {
                                var leval=this.id;
                                leval=leval.split("vec");
                                lval=leval[1];
                                lval=lval.replace(/^\s+|\s+$/g,"");
                                jQuery("#attribute"+571).val(lval);
                                jQuery(this).parent().addClass("viewPickHi").removeClass("viewPickLow");
                                jQuery(this).parent().siblings().addClass("viewPickLow").removeClass("viewPickHi");
                            }
                        })
                    }
                })
            });
        });

        /*
         * width
         */
        jQuery("#activeDiv"+574+" div").each(function(){
            jQuery(this).bind("click",function(){
                var llval= this.id;
                var mvel=llval.split('/');
                jQuery("#attribute574").val(mvel[0]);
                if (jQuery("#attribute598").val()!='')
                {
                    var wid=jQuery("#attribute574").val();
                    var wstr=jQuery("#vec"+wid).val();
                    var wvec=wstr.split(",");
                    var sid=jQuery("#attribute598").val();
                    var sstr=jQuery("#vec"+sid).val();
                    var svec=sstr.split(",");
                    for (u=0;u<=wvec.length-1;u++)
                    for (v=0;v<=svec.length-1;v++)
                    {
                        if (wvec[u]==svec[v])
                        {
                            jQuery("#product").val(wvec[u]);
                            break;
                        }
                    }
                }
                jQuery(this).siblings().removeClass("viewPickHi").addClass("viewPickLow");
                jQuery(this).removeClass("viewPickLow").addClass("viewPickHi");
                var leval=jQuery(this).children("input").val();
                var levec=leval.split(",");
                jQuery("#activeDiv"+598+" div").addClass("viewPickGrey");
                for (var i=0; i<= levec.length-1; i++)
                {
                    jQuery("#activeDiv"+598+" div").each(function(e){
                        var items=levec[i];
                        items=items.replace(/^\s+|\s+$/g,"");
                        var lid=this.id;
                        if (lid.indexOf(items)>-1 )
                        {
                            jQuery(this).removeClass("viewPickGrey").addClass("viewPickLow");
                        }
                    })
                }
                jQuery("#activeDiv"+571+" div").addClass("viewPickGrey");
                for (var i=0; i<= levec.length-1; i++)
                {
                    jQuery("#activeDiv"+571+" div input").each(function(b){
                        var items=levec[i];
                        items=items.replace(/^\s+|\s+$/g,"");
                        var lid=this.value;
                        if (lid.indexOf(items)>-1 )
                        {
                            jQuery(this).parent().removeClass("viewPickLow").removeClass("viewPickGrey").addClass("viewPickHi");
                        }
                    })
                }
            })
        });

        /*
         * gender
         */
        jQuery("#activeDiv"+571+" div").each(function(){
            jQuery(this).bind("click",function(){
                jQuery(this).siblings().removeClass("viewPickHi").removeClass("viewPickGrey").addClass("viewPickLow");
                jQuery(this).removeClass("viewPickLow").addClass("viewPickHi");
                var leval=jQuery(this).children("input").val();
                var levec=leval.split(",");
                jQuery("#activeDiv"+598+" div").addClass("viewPickGrey");
                for (var i=0; i<= levec.length-1; i++)
                {
                    jQuery("#activeDiv"+598+" div").each(function(e){
                        var items=levec[i];
                        items=items.replace(/^\s+|\s+$/g,"");
                        var lid=this.id;
                        if (lid.indexOf(items)>-1 )
                        {
                            jQuery(this).removeClass("viewPickGrey").addClass("viewPickLow");
                        }
                    })
                }
                jQuery("#activeDiv"+574+" div").addClass("viewPickGrey");
                for (var i=0; i<= levec.length-1; i++)
                {
                    jQuery("#activeDiv"+574+" div input").each(function(b){
                        var items=levec[i];
                        items=items.replace(/^\s+|\s+$/g,"");
                        var lid=this.value;
                        if (lid.indexOf(items)>-1 )
                        {
                            jQuery(this).parent().removeClass("viewPickLow").removeClass("viewPickGrey").addClass("viewPickHi");
                        }
                    })
                }
            })
        });
    },

    verifySizeGender: function(value,param,label)
    {
        var bgcolor = 'unisexBg';
        var gender=jQuery(".product-name span").text();
        if (gender.indexOf("| Men")>-1)
            {bgcolor="mensBg";}
            else
        if (gender.indexOf("| Women")>-1)
            {bgcolor="womensBg";}
            else
        if (gender.indexOf("| Kids")>-1)
            {bgcolor="kidsBg";}
        if (gender.indexOf("| Infant")>-1)
            {bgcolor="infantBg";}
        if (gender.indexOf("| Toddler")>-1)
            {bgcolor="toddlerBg";}
        var men=jQuery("#vec86").val();
        if (men)
        {
            var menvec=men.split(",");
            if (menvec)
            if (param==598)
            {
                for (var i=0;i<=menvec.length-1;i++)
                {
                    if (value==menvec[i])
                        bgcolor="mensBg";
                }
            }
        }
        var kids=jQuery("#vec83").val();
        if (kids)
        {
            var kidsvec=kids.split(",");
            if (param==598)
            {
                for (var i=0;i<=kidsvec.length-1;i++)
                {
                    if (value==kidsvec[i])
                        bgcolor="kidsBg";
                }
            }
        }
        if (param==574)
        {
            if (menvec)
                for (var i=0; i<=value.length-1; i++)
                    for (var j=0; j<=menvec.length-1; j++)
                        if (value[i]==menvec[j]){ bgcolor="mensBg"}
            if (kidsvec)
                for (var i=0; i<=value.length-1; i++)
                    for (var j=0; j<=kidsvec.length-1; j++)
                        if (value[i]==kidsvec[j]){ bgcolor="kidsBg"}
        }
        if (param==571)
        {
            if (label.indexOf("Men")>-1)
                { bgcolor="mensBg"} else
            if (label.indexOf("Kids")>-1)
                { bgcolor="kidsBg"}
        }
        return bgcolor;
    },

    displayObject:function(param)
    {
        if (param==598)
        {
            var flag=jQuery("#activeDiv581").text();
            if (flag!='')
            jQuery("#activeDiv581").parent("td").siblings("td").show();
            //jQuery("#activeDiv581").parent("td").siblings("td").hide();
            //jQuery("#activeDiv581").parent("td").hide();
        }
        if (this.vector[param])
        {
            var txt='';
            var ind=1;
            var limit=this.vector[param]['options'].length-1;
            for (var h=0; h<=this.vector[param]['options'].length-1; h++)
            {
                var leId;
                var label=this.vector[param]['options'][h]['label'];
                var biglabel=label;
                var id=this.vector[param]['options'][h]['id'];
                id=id.replace(/ /,"");
                var vec=this.vector[param]['options'][h]['products'];
                bgcolor=this.verifySizeGender(vec,param,label);
                var myclass="viewPickLow";
                if (param==598 || param==581) {
                    leId=id+"/"+param+"/"+vec;
                } else {
                    leId=id+"/"+param;
                }
                //<input type=\"hidden\" value=\""+id+" \" />
                if (label.indexOf("Men's")>-1) {
                    label="<table width=\"98\" border=\"0\"><tr><td><table width='46px'><tr><td>"+label;
                    label=label.replace(/\//,"");
                    label=label.replace(/Men's /,"Men's</td><td></tr><tr><td>");
                    label=label.replace(/Women's /,"</td></tr></table></td><td><table width='46px'><tr><td>Women's</td><tr><td>");
                    label=label+"</td></tr></table></td></tr></table>";
                    if (param==581 || param==598){
                        myclass="longViewPickLow";
                        sty="style=\"vertical-align:middle; width:100px; font-size:9px;\"";
                    }
                }else
                if (label.indexOf("M ")>-1) {
                    label="<table width=\"98\" border=\"0\"><tr><td><table width='46px'><tr><td>"+label;
                    label=label.replace(/\//,"");
                    label=label.replace(/M /,"Men's</td><td></tr><tr><td>");
                    label=label.replace(/W /,"</td></tr></table></td><td><table width='46px'><tr><td>Women's</td><tr><td>");
                    label=label+"</td></tr></table></td></tr></table>";
                    if (param==581 || param==598){
                        myclass="longViewPickLow";
                        sty="style=\"vertical-align:middle; width:100px; font-size:9px;\"";
                    }
                }else
                if (label.indexOf("Boys")>-1) {
                    label="<table width=\"98\" border=\"0\"><tr><td><table width='46px'><tr><td>"+label;
                    label=label.replace(/\//,"");
                    label=label.replace(/Boys /,"Boys</td><td></tr><tr><td>");
                    label=label.replace(/Girls /,"</td></tr></table></td><td><table width='46px'><tr><td>Girls</td><tr><td>");
                    label=label+"</td></tr></table></td></tr></table>";
                    if (param==581 || param==598){
                        myclass="longViewPickLow";
                        sty="style=\"vertical-align:middle; width:100px; font-size:9px;\"";
                    }
                }else
                if (id=='649' || id=='705' || id=='753' || id=='830' || id=='678' || id=='698' || id=='699')
                {
                    label="<table width=\"98\" height=\"30\" border=\"0\"><tr><td valign=\"middle\">"+label+"</td></tr></table></td></tr></table>";
                    sty="style=\"vertical-align:middle; width:100px; font-size:9px;\"";
                    myclass="longViewPickLow";
                }

                txt=txt+"<div title=\""+biglabel+"\" class=\""+myclass+" "+bgcolor+"\" id=\""+leId+"\"><input type=\"hidden\" id=\"vec"+id+"\" value=\""+vec+"\" /><span label=\""+biglabel+"\" id=\""+leId+"\" >"+label+"</span></div>";
            }
            jQuery("#activeDiv"+param).html(txt);
        }
    },
    ccObject: function(obj) {
        var str='';
        for(prop in obj)
        {
            str+=prop + " value :"+ obj[prop]+"\n";
        }
        return(str);
    }
}


/**************************** SUPER PRODUCTS ********************************/

Product.Super = {};
Product.Super.Configurable = Class.create();

Product.Super.Configurable.prototype = {
    initialize: function(container, observeCss, updateUrl, updatePriceUrl, priceContainerId) {
        this.container = $(container);
        this.observeCss = observeCss;
        this.updateUrl = updateUrl;
        this.updatePriceUrl = updatePriceUrl;
        this.priceContainerId = priceContainerId;
        this.registerObservers();
    },
    registerObservers: function() {
        var elements = this.container.getElementsByClassName(this.observeCss);
        elements.each(function(element){
            Event.observe(element, 'change', this.update.bindAsEventListener(this));
        }.bind(this));
        return this;
    },
    update: function(event) {
        var elements = this.container.getElementsByClassName(this.observeCss);
        var parameters = Form.serializeElements(elements, true);

        new Ajax.Updater(this.container, this.updateUrl + '?ajax=1', {
                parameters:parameters,
                onComplete:this.registerObservers.bind(this)
        });
        var priceContainer = $(this.priceContainerId);
        if(priceContainer) {
            new Ajax.Updater(priceContainer, this.updatePriceUrl + '?ajax=1', {
                parameters:parameters
            });
        }
    }
}
