/*
    Behaviours for the This Month Feature
*/

Site.Pages.This_Month = Class.create
(
    Site.Page,
    {
        
        domOnLoad: function($super, event)
        {
            $super(event);
            
            
            if ($('grid-index')) {
            
                this.setupRolloverController();
            }
            
            this.addObservers("navItemOnClick", "indexItemOnClick", "upcomingSaleOnMouseover", "upcomingSaleOnMouseout");
            
            
            if ($('this-month-bottom-nav')) {
                $('this-month-bottom-nav').select("a").each
                (
                    function(link)
                    {
                        addEvent(link, "click", this.observers.navItemOnClick);
                    },
                    this
                );
            }
            
            $('panel-1').select("a").each
            (
                function(link)
                {
                    addEvent(link, "click", this.observers.indexItemOnClick);
                },
                this
            );
            
            if ($('upcoming-sale-1')) {
                addEvent($('upcoming-sale-1'), "mouseover", this.observers.upcomingSaleOnMouseover);
                addEvent($('upcoming-sale-1'), "mouseout", this.observers.upcomingSaleOnMouseout);
            } 
            if ($('upcoming-sale-2')) {    
                addEvent($('upcoming-sale-2'), "mouseover", this.observers.upcomingSaleOnMouseover);
                addEvent($('upcoming-sale-2'), "mouseout", this.observers.upcomingSaleOnMouseout);
            }
            if ($('upcoming-sale-3')) {
                addEvent($('upcoming-sale-3'), "mouseover", this.observers.upcomingSaleOnMouseover);
                addEvent($('upcoming-sale-3'), "mouseout", this.observers.upcomingSaleOnMouseout);      
            }
            if ($('upcoming-sale-4')) {
                addEvent($('upcoming-sale-4'), "mouseover", this.observers.upcomingSaleOnMouseover);
                addEvent($('upcoming-sale-4'), "mouseout", this.observers.upcomingSaleOnMouseout);
            }
            if ($('upcoming-sale-5')) {
                addEvent($('upcoming-sale-5'), "mouseover", this.observers.upcomingSaleOnMouseover);
                addEvent($('upcoming-sale-5'), "mouseout", this.observers.upcomingSaleOnMouseout);
            }
            if ($('upcoming-sale-6')) {
                addEvent($('upcoming-sale-6'), "mouseover", this.observers.upcomingSaleOnMouseover);
                addEvent($('upcoming-sale-6'), "mouseout", this.observers.upcomingSaleOnMouseout);
            }
            if ($('upcoming-sale-7')) {
                addEvent($('upcoming-sale-7'), "mouseover", this.observers.upcomingSaleOnMouseover);
                addEvent($('upcoming-sale-7'), "mouseout", this.observers.upcomingSaleOnMouseout);
            }
            if ($('upcoming-sale-8')) {
                addEvent($('upcoming-sale-8'), "mouseover", this.observers.upcomingSaleOnMouseover);
                addEvent($('upcoming-sale-8'), "mouseout", this.observers.upcomingSaleOnMouseout);
            }
            if ($('upcoming-sale-9')) {
                addEvent($('upcoming-sale-9'), "mouseover", this.observers.upcomingSaleOnMouseover);
                addEvent($('upcoming-sale-9'), "mouseout", this.observers.upcomingSaleOnMouseout);
            }
            if ($('upcoming-sale-10')) {
                addEvent($('upcoming-sale-10'), "mouseover", this.observers.upcomingSaleOnMouseover);
                addEvent($('upcoming-sale-10'), "mouseout", this.observers.upcomingSaleOnMouseout);
            } 
            
            if ($('upcoming-sale-11')) {
                addEvent($('upcoming-sale-11'), "mouseover", this.observers.upcomingSaleOnMouseover);
                addEvent($('upcoming-sale-11'), "mouseout", this.observers.upcomingSaleOnMouseout);
            }
            if ($('upcoming-sale-12')) {
                addEvent($('upcoming-sale-12'), "mouseover", this.observers.upcomingSaleOnMouseover);
                addEvent($('upcoming-sale-12'), "mouseout", this.observers.upcomingSaleOnMouseout);
            } 
            
                        
            
            //addEvent(window, "onload", this.observers.queryStringOnParse);
            
        },
            
        windowOnLoad: function($super, event, scroller)
        {
            $super(event);

            var thisMonthPanelWidth = $$('#this-month-scroller-panel>div').inject(0, function(acc, el) { return acc + el.offsetWidth + 20 }) - 20;

            this.thisMonthScroller = new Site.Widgets.Scroller
            (
                $('this-month-scroller-container'),
                {
                    direction: "horizontal",
                    increment: 808,
                    method: "click",
                    scrollDuration: .3,
                    panelWidth: thisMonthPanelWidth
                }
            )                      
  
            
            
          function Querystring(qs) { // optionally pass a querystring to parse
            this.params = {};
            
            if (qs == null) qs = location.search.substring(1, location.search.length);
            if (qs.length == 0) return;

          // Turn <plus> back to <space>
          // See: http://www.w3.org/TR/REC-html40/interact/forms.html#h-17.13.4.1
            qs = qs.replace(/\+/g, ' ');
            var args = qs.split('&'); // parse out name/value pairs separated via &
            
          // split out each name=value pair
            for (var i = 0; i < args.length; i++) {
              var pair = args[i].split('=');
              var name = decodeURIComponent(pair[0]);
              
              var value = (pair.length==2)
                ? decodeURIComponent(pair[1])
                : name;
              
              this.params[name] = value;
            }
          }

          Querystring.prototype.get = function(key, default_) {
            var value = this.params[key];
            return (value != null) ? value : default_;
          }

          Querystring.prototype.contains = function(key) {
            var value = this.params[key];
            return (value != null);
          }
          
          var qs = new Querystring()
          
          //var panel = 'panel-'+qs.get('p')
          var arrPanels = $('this-month-scroller-panel').immediateDescendants();
          var numPanels = arrPanels.size();
          var panel = qs.get('p')
          if (panel > numPanels) {
              panel = 1;
          }
          if (panel) {  
              //alert(panel);    
          
              var offset = -808*(panel-1);
              //alert(offset);
              
              $('this-month-scroller-panel').setStyle({
                left: offset+'px'
              });
              
              var i=1;
              //alert(numPanels);
              var left = $('this-month-scroller-panel').getStyle('left');
              //alert(left);

              for (i=1; i<=numPanels ;i++)
              {
                  $('panel-'+i+'-link').className = '';           
              }

              $('panel-'+panel+'-link').className = 'active';
                
              
              if ( offset < 0 ) {
                $('back').removeClassName('bt-limit');
              }
              
              if ( offset == -808*(numPanels-1) ) {
                $('forward').addClassName('bt-limit');
              }

                
          }


        },

        handleNavItemClick: function(event, scroller)
        {
            var element = Event.element(event);
            var a = element.matchUp("a");
            
            if (!a.hasClassName("disabled"))
            {
                var parts = a.href.split('#');
                //alert(parts);
                
                if (parts.length > 1)
                {
                    var panel = $(parts[1]);
            
                    if (panel)
                        scroller.scrollToElementId(panel.id, true);   
                }

            }
            
            Event.stop(event);
        },
        
        handleIndexItemClick: function(event, scroller)
        {
            var element = Event.element(event);
            var a = element.matchUp("a");
            
            if (!a.hasClassName("disabled"))
            {
                var parts = a.href.split('#');
                //alert(parts);
                
                if (parts.length > 1)
                {
                    var panel = $(parts[1]);
            
                    if (panel)
                        scroller.scrollToElementIdFromIndex(panel.id, true);   
                }

            }
            
            Event.stop(event);
        },
        
        navItemOnClick: function(event)
        {
            this.handleNavItemClick(event, this.thisMonthScroller);
        },
        
        indexItemOnClick: function(event)
        {
            this.handleIndexItemClick(event, this.thisMonthScroller);
        },
        
                
        handleQueryString: function(panel, scroller)
        {
                        
            scroller.scrollToElementId(panel, true);   
           
            Event.stop(event);
        },
        
        queryStringOnParse: function(event)
        {
            alert('parsed!');
            this.handleQueryString(event, this.thisMonthScroller);
        },
        
        
        upcomingSaleOnMouseover: function(event)
        {
            var sale = Event.element(event).id;
            
            $(sale+'-blurb').show(); 
                  
            Event.stop(event);                 

        },
        
        upcomingSaleOnMouseout: function(event)
        {
            var sale = Event.element(event).id;
            //alert(sale+'-blurb');
            
            $(sale+'-blurb').hide();       
            Event.stop(event);   

        },
        
            
        destroy: function($super)
        {
            
            this.thisMonthScroller.destroy();
          
            $super();
        },
        
        destroyRolloverController: function()
        {
            if ($('grid-index')) {
                this.rolloverController.destroy();         
            }        
            
        },
        
        setupRolloverController: function()
        {
            if ($('grid-index')) {
                this.rolloverController = new Site.Controllers.Rollover($('grid-index'), 'li.trigger', 'div.rollover');
            }
        }
        
    }
);