﻿

/*IMPORTANT: HASHES ON ANCHORS MUST BE AN INTEGER OR IE7 HAS MAJOR PROBLEMS.*/
    		
    	     /*   ============  DOCUMENT.READY  ==============  */

           $(document).ready(function(){
           
           
		            // Initialize history plugin.
		            // The callback is called at once by present location.hash. 
		            if(window.location.toString().indexOf('?')>10)
		                $.historyInit(pageload);
    	    });        //end document.READY
    		
    		
    		
    		      
          
          /*   ============  History/Back/Forward buttons management  ==============  */
          
         // PageLoad function
	    // This function is called when:
	    // 1. after calling $.historyInit();
	    // 2. after calling $.historyLoad();
	    // 3. after pushing "Go Back" button of a browser
	    function pageload(hash) {
		    // hash doesn't contain the first # character.
		    if(!hash) 
		        hash=1;
		        
            
		    if (hash < 100)   //the hash is a product thumbnail and not a swatch
		    {
		        Thumbnails.RenderContent(hash);
		        
		        if(hash == 8)    //magic number hash for swatches UI
		        {
		            //select the first swatch.
		            ProductDetails.RenderContent(100);   //100 is magic number for first thumbnail
		        }
		    }
		    else 
		    { 
		        
		        ProductDetails.RenderContent(hash);
		        		        
		        
                Thumbnails.RenderContent(8);    
		    }
		
	    }//end history managing 'pageload" function
    	
    	
    	
    	
          /*   ============  thumbnails namespace  ==============  */
	    var Thumbnails = function()
	    {
	        return {

	            handleThumbOver: function()
	            {
	                if (!$(this).hasClass('thumb_active'))
	                {
	                    $(this).addClass('thumb_on');
	                    $(this).removeClass('thumb_off');
	                }
	            },

	            handleThumbOff: function()
	            {
	                if (!$(this).hasClass('thumb_active'))
	                {
	                    $(this).addClass('thumb_off');
	                    $(this).removeClass('thumb_on');
	                }
	            },

	            MakeThumbActive: function(jqRef)
	            {
                    
                    
                    
                    $('.thumb_active').addClass('thumb_off');
                    $('.thumb_active').removeClass('thumb_active');                   
	                
	                
	                
	                jqRef.removeClass('thumb_off');
	                jqRef.removeClass('thumb_on');
	                jqRef.addClass('thumb_active');
	                
	            },


	            ShowSwatchesInterface: function(caller)
	            {
	                //show swatch interface
	                $('.can_toggle').css("display", "none");
	                $('#container_product_swatches').css("display", "block"); //("display", "block");

	                Thumbnails.MakeThumbActive($(caller));
	                
	            },

	            ShowSpecsImage: function(caller)
	            {
	                //show specs interface
	                $('.can_toggle').css("display", "none");
	                Thumbnails.MakeThumbActive($(caller));
	                
                    var thisID = caller.id;
	                var hiddenField = $('#' + thisID + ' input').get(0).value;

	                $('#container_product_spec').html('<img src="' + hiddenField + '" />');
	                $('#container_product_spec').css("display", "block");

	            },

	            ShowGalleryImage: function(caller)
	            {

	                //show picture interface
	                $('.can_toggle').css("display", "none");
	                


	                Thumbnails.MakeThumbActive($(caller));


	                //get the URL to show from the embedded hidden field
	                var thisID = caller.id;
	                var hiddenField = $('#' + thisID + ' input').get(0).value;
	                //alert(hiddenField);

	                //$('#container_product_image').css('background-image', 'url(' + hiddenField + ')'); //('<img src="' + hiddenField + '" alt="product image ' + hiddenField + '"/>');
	                //$('#product_image_large').get(0).src = hiddenField;
	                $('#container_product_image').html('<img src="' + hiddenField + '" />');
	                $('#container_product_image').show();


	            },

	            DetermineHandlerFromClass: function(callerID)
	            {

	                var caller = $('#' + callerID);

	                if (caller.hasClass('thumb_special_swatches'))
	                    return "Thumbnails.ShowSwatchesInterface";

	                if (caller.hasClass('thumb_special_specs'))
	                    return "Thumbnails.ShowSpecsImage";

	                if (caller.hasClass('thumb_special_gallery'))
	                    return "Thumbnails.ShowGalleryImage";

	            },

	            RenderContent: function(hash)
	            { 
	               var thumbnailID = 't' + hash.toString();
	               
	               //alert('render ' + thumbnailID);
	               

		            // restore ajax loaded state
		            var caller = $('#' + thumbnailID);
		            var handler = Thumbnails.DetermineHandlerFromClass(thumbnailID);
		            var callerDOM = caller.get(0);
		            
		            eval(handler + '(callerDOM)');
	            }

	        }; //end return

	    } (); //end Thumbnails namespace
        
            
        
        
        /*   ============  ProductDetails namespace  ==============  */
          var ProductDetails = function()
          {
              return {
              
                handleHoverOn: function()
                {
                    if (!$(this).hasClass('active'))
                    {
                        $(this).addClass('on');
	                    $(this).removeClass('off');
                    }
                    
                    
                 
                },
      
                handleHoverOff : function()
                {
                    if (!$(this).hasClass('active'))
                    {
                        $(this).addClass('off');
	                    $(this).removeClass('on');
                    }
                },
              
                  MakeSwatchActive: function(caller)
                  {             
	                
	                  $('.swatches_container .swatch_container').addClass('off');
                      $('.swatches_container .swatch_container').removeClass('active');
                      
                      var jqRef = $(caller);
                      jqRef.addClass('active');
                      jqRef.removeClass('off');
	                  jqRef.removeClass('on');
	                
                  },

                  RenderContent: function(hash)
                  { 
                        
                        var caller = $('#swatch_container_' + hash.toString());
                        
                        content = $('#swatch_container_' + hash.toString() + ' input').val();
                        
                        $('#container_product_image_med').html('<img src="' +content + '" />');
                        
                        
                        ProductDetails.MakeSwatchActive(caller.get(0));
                  }


              }; //end return

          } ();   //end namespace ProductDetails
