dojo.require("dojo.NodeList-fx");
dojo.require("dojo.fx");

(function() {
	var site = window.site = {
		data : {
			// js data
		},
		//alert("hello");
		func : {
			setupThumbnailImages : function(settings) {
				var settings = dojo.mixin({
					largeImageSelector : "#largeImage",
					thumbnailImageSelector : ".thumbnailImage"
				}, settings);
				
				dojo.query(settings.thumbnailImageSelector).forEach(function(item) {
					dojo.query(item).connect("mouseover", function(e) {
						var newSRC = dojo.query(e.target).attr("src")[0].replace(/_(\d+)_t/, "_$1_l");
						dojo.query(settings.largeImageSelector).attr("src", newSRC);
					});
					dojo.query(item.parentNode).connect("click", function(e) { dojo.stopEvent(e); });
				});
			},
			/*
            setupWidthDropdownsForIE : function() {
				if(dojo.isIE) {
                	dojo.query("#home .js-ieWidthDropdown").forEach(function(elem) {
						var select = dojo.query(elem),
				   			selectWidth = select.style("width");
				   			
                        select.connect("mouseover", function(evt) {
                        	select.style({ width: "auto" });
                        });
                        select.connect("blur", function() {
                        	select.style({ width: selectWidth + "px" });
                        });
                    });
                }
            },
            */
			resizeHeightElements : function(selector) {
				var thisInterval = setInterval(function() {
					if( lib.image.isComplete(selector + " img") )
					{
						clearInterval(thisInterval);
						var maxH = 0;
						dojo.query(selector).forEach( function(element) {
							maxH = ( dojo.contentBox(element).h > maxH ) ? dojo.contentBox(element).h : maxH;
						});
						dojo.query(selector).style({ height : maxH + "px" });
					} 
				}, 100);
			},
			updateShoppingCartDisplay : function() {
				dojo.query(".cartItemsDisplay tr").forEach(function(row, i) {
					site.func.resizeHeightElements( ".cartItemsDisplay tr:nth-child(" + (i+1) + ") .cellContent");
				});
			},
			setupHeaderNavigation : function() {
				/* top nav hover */
				var menuTimer;
				dojo.query("#hdr-navigation-bin #nav > li").forEach( function(item, i) {
					dojo.connect(item, "mouseover", function() {
						if(menuTimer != "undefined")
						{ clearTimeout(menuTimer); }
						
						dojo.query("#hdr-navigation-bin li").removeClass("nav-highlight-1");
						dojo.query(item).addClass("nav-highlight-1");
						
						/* Add the menu to body, and setup hover */
						var wPos = lib.screen.position();
						var wSize = lib.screen.size();	
						var liPosition = lib.utils.getPosition(this)[0];
						var ulHTML = "<ul>" + dojo.query("ul", this)[0].innerHTML + "</ul>";	
						
						lib.layer.create("#hdrNavigationLayer", {
							defaultContent : ulHTML,
							xPos : liPosition[0],
							yPos : (liPosition[1]+20),
							nonModal : false
						});
						
						/* Update menu width if too small */
						if( dojo.coords(dojo.query("#hdrNavigationLayer")[0]).w < dojo.coords(item).w )
						{
							dojo.query("#hdrNavigationLayer").style({ width: dojo.coords(item).w + "px" });
							lib.layer.ie6Fix("#hdrNavigationLayer", "u");	
						}  
						/* ------------------- */
						
						/* Last item specific positioning */
						if( i == (dojo.query("#hdr-navigation-bin ul#nav > li").length-2) )
						{ 
							liPosition[0] = liPosition[0] - (dojo.coords(dojo.query("#hdrNavigationLayer")[0]).w - dojo.coords(item).w);
							dojo.query("#hdrNavigationLayer").style({ left: liPosition[0] + "px" });
							lib.layer.ie6Fix("#hdrNavigationLayer", "u");
						}
						/* ----------- */
						/* Q03113- Task 54 Navigation Subcats not completely clickable (code solution now works in IE6) Start*/
						/* Fix for Navigation in IE6 */
						if( lib.utils.isIE6() )
						{
						var ulWidth = dojo.coords(dojo.query("#hdrNavigationLayer > ul")[0]).w;
						            dojo.query("#hdrNavigationLayer > ul").style({ width: ulWidth + "px" });
						            dojo.query("#hdrNavigationLayer > ul > li").style({ width: "100%" });
						            dojo.query("#hdrNavigationLayer > ul > li > a").style({ width: "100%" });
						}
						/* ---------------- */
						/* End */
						
						dojo.query("#hdrNavigationLayer li").connect('mouseover', function() {
							if(menuTimer != "undefined")
							{ clearTimeout(menuTimer); }
						
							dojo.query("#hdrNavigationLayer li").removeClass("nav-highlight-2");
							dojo.query(this).addClass("nav-highlight-2");
						}).connect('mouseout', function() {
							clearTimeout(menuTimer);
							menuTimer = setTimeout(function() { 
								dojo.query("#hdr-navigation-bin li").removeClass("nav-highlight-1").removeClass("nav-highlight-2"); 
								lib.layer.remove("#hdrNavigationLayer");
							}, 200);
						});
						/* ------------------- */
						
					});
					dojo.connect(item, 'mouseout', function() {
						clearTimeout(menuTimer);
						var mObj = this;
						menuTimer = setTimeout(function() { 
							dojo.query("#hdr-navigation-bin li").removeClass("nav-highlight-1").removeClass("nav-highlight-2"); 
							lib.layer.remove("#hdrNavigationLayer");
						}, 200);
					});	
					
				});
			},
			setupStyledSelectBoxes : function() {
                dojo.query("div.styled-select").forEach(function(element){
                    var $this = dojo.query(element),
                           hide = false;
                    
                    $this.connect("click", function() {
                        hide = false;
        			   	$this.query(">").style({ display: "block" });
    				});
                    
                    $this.connect("mouseover", function() {
                        hide = false;
    					$this.query(">").style({ display: "block" });
    					$this.style({ display: "block" });
    				});
                    $this.connect("mouseout",function() {
                       hide = true;
                       setTimeout(function(){
                            if(hide){
                                $this.query(".select-opt").style({ display: "none" });
            					$this.query(".default-text").style({ display: "block" });
                            }
                       }, 100)
    				});
                    
                    $this.query("a").connect("mouseover", function() {
    					$this.query(this).addClass("hover");
    				});
                    
                    $this.query("a").connect("mouseout",function() {
    					$this.query(this).removeClass("hover");
    				});
                    
                });
                
			},
			createToolTips : function( settings ) {
			var settings = dojo.mixin({
			            selectorActivator : ".recommended-supplies .result .tooltip",
			            selectorToolTipText : ".recommended-supplies .result .tipbox",
			            xOffset : 0,
			            yOffset : -15
			      }, settings);
			      dojo.query(settings.selectorActivator).forEach(function(element, i) {
			            dojo.connect(element, "mouseover", function(evt) {
			                  var newPos = lib.utils.getPosition(element)[0];
			                  newPos[0] = newPos[0] + settings.xOffset;
			                  newPos[1] = newPos[1] + settings.yOffset;
			                              
			                  var theText = dojo.query(settings.selectorToolTipText)[i].innerHTML;
			                  lib.layer.create("#tooltipLayer", { 
			                        defaultContent : theText, 
			                        xPos : newPos[0], 
			                        yPos : newPos[1], 
        							nonModal : false,
			                        callback : function() {
			                              var top = newPos[1] - dojo.contentBox(dojo.query("#tooltipLayer")[0]).h;
			                              dojo.query("#tooltipLayer").style({ top : top + "px" });
			                        }
			                  });
			            });
			            dojo.connect(element, "mouseout", function(i) {
			                  lib.layer.remove("#tooltipLayer");  
			            });
			      });
			},
			createTabInterface : function( settings) {
				var settings = dojo.mixin({
					selectorTab : "#access-supply-tabs .tab-header li",
	    			selectorTabContent : "#access-supply-tabs .tab-content .tab",
	    			defaultActiveIndex : 1
	   			}, settings);
				
				var selectorTab = settings.selectorTab;
				var selectorTabContent = settings.selectorTabContent;
				var defaultActiveIndex = settings.defaultActiveIndex;
				
				/* Added Events */
				dojo.query(selectorTab).connect("onclick", function(e) {
				    
					/* Make sure tabs are in range */
					var isInRange = ( dojo.indexOf( dojo.query(selectorTab), this ) < dojo.query(selectorTabContent).length  ) ? true : false;
					if( isInRange ) 
					{
						/* clear tabs and content */
					   	dojo.query(selectorTab + " span").removeClass("small-hilite-left").removeClass("small-hilite-right").removeClass("small-hilited-body");
					   	dojo.query(selectorTabContent).style({ display: "none" });
					   	
					   	/* show new tab */
					    dojo.query(":first-child", this).addClass("small-hilite-left");
					    dojo.query(":nth-child(2)", this).addClass("small-hilited-body");
					    dojo.query(":last-child", this).addClass("small-hilite-right");
					   	
					   	/* show new tab content */
					   	dojo.query(selectorTabContent + ":nth-child(" + (dojo.indexOf( dojo.query(selectorTab), this )+1) + ")").style({ display: "block" });
				    }
				});
				/* -------------- */
			   /* Load the default */
			dojo.addOnLoad(function(){
			   dojo.query(selectorTab + ":nth-child(" + defaultActiveIndex + ") :first-child").addClass("small-hilite-left");
			   dojo.query(selectorTab + ":nth-child(" + defaultActiveIndex + ") :nth-child(2)").addClass("small-hilited-body");
			   dojo.query(selectorTab + ":nth-child(" + defaultActiveIndex + ") :last-child").addClass("small-hilite-right");
			   dojo.query(selectorTabContent + ":nth-child(" + defaultActiveIndex + ")").style({ display: "block" });			
			});
			  /*------------- */
			},
            setupExpandingBlocks: function(){
				dojo.query("ul.expands > li > .hd > a").connect("click", function(e){ 
					dojo.stopEvent(e);
                    dojo.toggleClass(this.parentNode.parentNode, "expanded"); 
                    e.target.blur();
                });
            },
            updateSliderPagination: function(settings){            	
            	var selectorTotalCount = ( settings.selectorTotalCount == null ) ? "#adapters-label .total" : settings.selectorTotalCount;
            	var selectorViewerObj = ( settings.selectorViewerObj == null ) ? "#adapters_viewer" : settings.selectorViewerObj;
            	//var obj = ( settings.selectorViewerObj == null ) ? null : settings.obj;
            	
            	//get count
            	var numItems = dojo.query( selectorViewerObj + " .carousel-scroll-box").length;            	
            	dojo.query(selectorTotalCount).forEach(function( area ) { area.innerHTML = numItems; });            	
            	
            },
			enableAccordion : function() {
				var THISLABEL;
				var ALL_LABELS = dojo.query(".suggest-widget .label");
				var ALL_CONTENT = dojo.query(".suggest-widget .content");
				var ALL_MODS = dojo.query(".suggest-widget > div");
				
				if(ALL_LABELS.length){
					/* Initially Fade out all content areas */
					dojo.forEach( ALL_CONTENT, function(contentArea) {
						dojo.fadeOut({node : contentArea }).play();
					});
					/* ---------------- */
					
					/* Initially Reset the Labels */
					dojo.query(ALL_LABELS).removeClass("on");
					dojo.query(ALL_LABELS).addClass("off");
					/* ------------------ */
					
					/* Get last index */
					var lastIndex = dojo.query(ALL_LABELS).length-1;
					
					/* Turn on last label initially */
					var labelNode = dojo.query(ALL_LABELS)[lastIndex]
					dojo.query(labelNode).removeClass("off").addClass("on");
					/* ----------------------- */
					
					/* reveal last initially */
					var contentNode = dojo.query(ALL_CONTENT)[lastIndex];
					dojo.query(contentNode).style({ display : "block" });
					dojo.fadeIn({node : contentNode, duration : 1000 }).play();
					/* ----------------- */
					
					dojo.query(ALL_LABELS).connect("click", function(e) {
				
						THISLABEL = this;
						if (dojo.hasClass(this, "on")) {
							return;
						}
						else {
							/* Reset the Labels */
							dojo.query(ALL_LABELS).removeClass("on");
							dojo.query(ALL_LABELS).addClass("off");
							/* ------------------ */
							
							/* Hide and fadeout all the content */
							dojo.query(ALL_CONTENT).style({ display: "none" });
							dojo.forEach( ALL_CONTENT, function(contentArea) {
								dojo.fadeOut({node : contentArea }).play();
							});
							/* ------------------------- */
							
							/* Shift Labels */
							dojo.query(ALL_MODS).style({ position: "static" });
							dojo.query(THISLABEL.parentNode).place(THISLABEL.parentNode.parentNode, "last");
							/* ---------------- */
							
							/* Turn on this Label */
							dojo.query(this).removeClass("off");
							dojo.query(this).addClass("on");
							/* ----------------------- */
							
							/* Turn on this Content */
							var elementNode = dojo.query(">", this.parentNode)[1];
							dojo.query(elementNode).style({ display : "block" });
							dojo.fadeIn({node : elementNode, duration : 1000 }).play();
							/* ------------------ */
						}
					});
				}
			}
		},
		obj : {
			// site specfic objects
			itemSlider : function(settings) {
				if(arguments.length > 0)
				{ this.init(settings); }
			},
			productViewer : function(settings) {
				if(arguments.length > 0)
				{ this.init(settings); }	
			},
			itemFinder : function(settings) {
				if(arguments.length > 0)
				{ this.init(settings); }
			}
		}
	};
})();

/* Item Finder */
site.obj.itemFinder.prototype.init = function(settings) {
	var settings = dojo.mixin({
		selectorViewport : ".productFinder .pfViewport",
		selectorContent : ".productFinder .pfContent",
		selectorItem : ".productFinder .item",
		selectorTitle : ".productFinder .title",
		selectorFirstLevel : ".productFinder .linkFirst",
		selectorPrevLevel : ".productFinder .linkPrevious",
		selectorLevelImageArea : ".productFinder .pfImageContent .itemImage",
		showAmount : 1,
		initialURL : "httpdocs/finderL1.html",
		selectorAddItem : ".productFinder .buttonAddToMyProducts",
		specialPreCallback : null,
		specialPostCallback : null
	}, settings);
	
	this.linkEvents = [];
	this.specialPreCallback = settings.specialPreCallback;
	this.specialPostCallback = settings.specialPostCallback;
	this.selectorItem = settings.selectorItem;
	this.selectorTitle = settings.selectorTitle;
	this.selectorFirstLevel = settings.selectorFirstLevel;
	this.selectorPrevLevel = settings.selectorPrevLevel;
	this.selectorContent = settings.selectorContent;
	this.selectorViewport = settings.selectorViewport;
	this.selectorLevelImageArea = settings.selectorLevelImageArea;
	this.showAmount = settings.showAmount;
	this.selectorAddItem = settings.selectorAddItem;
	this.isReady = false;
	
	var thisItemFinder = this;
	this.slider = new lib.obj.itemSlider({
		viewport: thisItemFinder.selectorViewport,
		content: thisItemFinder.selectorContent,
		prev: thisItemFinder.selectorPrevLevel,
		item: thisItemFinder.selectorItem,
		direction: "horizontal",
		showAmount: thisItemFinder.showAmount,
		first : thisItemFinder.selectorFirstLevel,
		preMoveCallback : function() { 
			/* set isReady flag */
			thisItemFinder.isReady = false;	
		
			/* Remove the Highlight of any active Elements below the current position */
			dojo.query(thisItemFinder.selectorItem).forEach(function(item, i) {
				if( i >= thisItemFinder.slider.sliderInfo.index )
				{ dojo.query("a", item).removeClass("active"); }
			});
			
			/* set visibility of continue button */
			if(thisItemFinder.slider.sliderInfo.index < 3){
				dojo.query(thisItemFinder.selectorLevelImageArea).removeClass("level3");
				dojo.query(thisItemFinder.selectorAddItem).removeClass("active");
			}
			
			/* Show the correct Image */
			dojo.query(thisItemFinder.selectorLevelImageArea)[0].innerHTML = dojo.query(thisItemFinder.selectorItem + ":nth-child(" + (thisItemFinder.slider.sliderInfo.index+1) + ") .itemImage")[0].innerHTML;
			
			/* Show the Correct Title */
			var titleText = "Choose Below";
			if( thisItemFinder.slider.sliderInfo.index > 0 )
			{ titleText = dojo.query(thisItemFinder.selectorItem + ":nth-child(" + thisItemFinder.slider.sliderInfo.index + ") a.active")[0].innerHTML; }
			dojo.query(thisItemFinder.selectorTitle)[0].innerHTML = titleText;
		}
	});
	
	dojo.xhrGet({
		url : settings.initialURL,
		load : function(response, ioArgs) {
			thisItemFinder.setupLevel(response, 1);
			thisItemFinder.slider.move();
		}
	});
	
	dojo.query(this.selectorAddItem).connect("click", function(evt) {
		dojo.stopEvent(evt);
		if( thisItemFinder.isReady )
		{
			//alert("goto: " + dojo.query("a.active", dojo.query(thisItemFinder.selectorItem+":nth-child(3)")[0]).attr("href")  );
			/* uncomment this for real */
			window.location = dojo.query("a.active", dojo.query(thisItemFinder.selectorItem+":nth-child(3)")[0]).attr("href");
		}
	});
};

site.obj.itemFinder.prototype.setupLevel = function( data, level ) {
	
	if( this.specialPreCallback != null )
	{ this.specialPreCallback(); }
	
	dojo.query(this.selectorItem + ":nth-child(" + level + ")")[0].innerHTML = data;
	
	for( var i = 0; i < this.linkEvents.length; i++)
	{ dojo.disconnect(this.linkEvents[i]); }
	this.linkEvents = [];
	
	var thisItemFinder = this;
	dojo.query(this.selectorItem).forEach(function(item, i) {
		dojo.query("a", item).forEach(function(link, j) {
			thisItemFinder.linkEvents[thisItemFinder.linkEvents.length] = dojo.connect(link, "click", function(evt) {
				dojo.stopEvent(evt);
				dojo.query("a", item).removeClass("active");		
				dojo.query(this).addClass("active");
				
				if( (i+1) < 3 ) 
				{
					dojo.query(thisItemFinder.selectorLevelImageArea).removeClass("level3");
					dojo.query(thisItemFinder.selectorAddItem).removeClass("active");
					var url = this.href;
					dojo.xhrGet({
						url : url,
						load : function(response, ioArgs) {
							thisItemFinder.setupLevel(response, i+2);
							thisItemFinder.slider.sliderInfo.index = i+1;
							thisItemFinder.slider.move();
						}
					});
				}
				else
				{ 
					/* Set Ready flag to true */
					thisItemFinder.isReady = true;
					
					/* To show the product level image, to show the product title */
					dojo.query(thisItemFinder.selectorTitle)[0].innerHTML = this.innerHTML;
					dojo.query(thisItemFinder.selectorLevelImageArea)[0].innerHTML = dojo.query(".itemImage", this.parentNode)[0].innerHTML;
					
					dojo.query(thisItemFinder.selectorLevelImageArea).addClass("level3");
					dojo.query(thisItemFinder.selectorAddItem).addClass("active");
					
					/* Callback Function for product level */
					if( thisItemFinder.specialPostCallback != null )
					{ thisItemFinder.specialPostCallback(link, evt); }
				}
			});
		});
	});
};
/* ------------------- */


/* Item Slider Object Code */
site.obj.itemSlider.prototype.init = function(settings) {
	if( settings == null)
	{ settings = { selectorItem : null, selectorForward : null, selectorBackward : null, previewContainerNode : null, previewScrollNode : null, animationMethod : null }; }
	
	/* Store object settings */
	this.selectorItem = ( settings.selectorItem == null ) ? "div" : settings.selectorItem;
	this.selectorForward = ( settings.selectorForward == null ) ? ".widget-content .forward" : settings.selectorForward;
	this.selectorBackward = ( settings.selectorBackward == null ) ? ".widget-content .back" : settings.selectorBackward;
	this.previewContainerNode = ( settings.previewContainerNode == null ) ? null : settings.previewContainerNode;
	this.viewAmt = ( settings.viewAmt == null ) ? 5 : settings.viewAmt;
	this.itemAmt = dojo.query(this.selectorItem).length;
	this.loop = ( settings.loop == null ) ? true : settings.loop;
	this.listener = ( settings.listener == null ) ? false : settings.listener; // listener added to return count
	this.isFinder = ( settings.isFinder == null ) ? false : settings.isFinder;
	this.previewScrollNode = ( settings.previewScrollNode == null ) ? null : settings.previewScrollNode;
	this.animationMethod = ( settings.animationMethod == null ) ? "chain" : settings.animationMethod;
	this.boxMixin = {duration: 1000};
	this.newLeft = 0;
	this.newIndex = 0; // counter used to measure how many clicks in slider on one turn
	this.itemSize = dojo.query(this.selectorItem+":nth-child(1)").style("width");
	
	this.toStartSelector = (settings.toStartSelector == null) ? ".start_btn" : settings.toStartSelector;
	this.toEndSelector = (settings.toEndSelector == null) ? ".end_btn" : settings.toEndSelector;
	
	this.updateButtons();
	
	/* Set the Width of the viewer */
	this.updateWidth();
	
	/* Add Events */
	var thisSlider = this;
	dojo.query(thisSlider.selectorForward).connect("click", function(e){
		dojo.stopEvent(e); 
		if( thisSlider.newIndex < (thisSlider.itemAmt - thisSlider.viewAmt) )
		{ thisSlider.newIndex = thisSlider.newIndex + 1; }
		else if( thisSlider.loop )
		{ thisSlider.newIndex = 0 }
		
		thisSlider.slide();
		
		var currentIndex = thisSlider.newIndex; 
		if (thisSlider.listener == true) {
			var objSelector = (thisSlider.selectorItem.split(' ')[0]);
			var selectorPageCount = (objSelector.split('_')[0]) + "_label .page";
			dojo.query(selectorPageCount).forEach(function( area ) { area.innerHTML = currentIndex+1; }); 
		}
		
	});
	dojo.query(thisSlider.selectorBackward).connect("click", function(e){
		dojo.stopEvent(e);
		if(thisSlider.newIndex > 0) 
		{ thisSlider.newIndex = thisSlider.newIndex - 1; }
		else if( thisSlider.loop )
		{ thisSlider.newIndex = thisSlider.itemAmt - thisSlider.viewAmt; }
		
		thisSlider.slide();
		
		var currentIndex = thisSlider.newIndex; 
		if (thisSlider.listener == true) {
			var objSelector = (thisSlider.selectorItem.split(' ')[0]);
			var selectorPageCount = (objSelector.split('_')[0]) + "_label .page";
			dojo.query(selectorPageCount).forEach(function( area ) { area.innerHTML = currentIndex+1; }); 
		}
	});

	dojo.query(thisSlider.toStartSelector).connect("click", function(e) {
		dojo.stopEvent(e);
		thisSlider.newIndex = 0;
		thisSlider.slide();

		var currentIndex = thisSlider.newIndex; 
		if (thisSlider.listener == true) {
			var objSelector = (thisSlider.selectorItem.split(' ')[0]);
			var selectorPageCount = (objSelector.split('_')[0]) + "_label .page";
			dojo.query(selectorPageCount).forEach(function( area ) { area.innerHTML = currentIndex+1; }); 
		}
	});

	dojo.query(thisSlider.toEndSelector).connect("click", function(e) {
		dojo.stopEvent(e);
		thisSlider.newIndex = thisSlider.itemAmt-1;
		thisSlider.slide();

		var currentIndex = thisSlider.newIndex; 
		if (thisSlider.listener == true) {
			var objSelector = (thisSlider.selectorItem.split(' ')[0]);
			var selectorPageCount = (objSelector.split('_')[0]) + "_label .page";
			dojo.query(selectorPageCount).forEach(function( area ) { area.innerHTML = currentIndex+1; }); 
		}
	});
	
	/* -------------- */

	/* Stop the browser from scrolling this area */
	dojo.query(this.previewScrollNode.parentNode).connect("scroll", function(evt) {
		dojo.query(evt.target)[0].scrollTop = 0;
		dojo.query(evt.target)[0].scrollLeft = 0;
	});
	/* ------------------ */

};

site.obj.itemSlider.prototype.updateWidth = function() {
	var w = (dojo.query(this.selectorItem+":nth-child(1)", this.previewScrollNode).style("width") * dojo.query(this.selectorItem, this.previewScrollNode).length) + "px";
	dojo.query(this.previewScrollNode).style({width : w });
};

site.obj.itemSlider.prototype.updateButtons = function() {

	if( this.newIndex < (this.itemAmt - this.viewAmt) ) {
		dojo.query(this.selectorForward).removeClass("disable-rt"); 
		dojo.query(this.toEndSelector).query("img").attr("src","/wcsstore/eStore/images/buttons/forwardButton.gif");
	} else {
		dojo.query(this.selectorForward).addClass("disable-rt");
		dojo.query(this.toEndSelector).query("img").attr("src","/wcsstore/eStore/images/buttons/forwardButton-off.gif");
	}
	
	if( this.newIndex == 0 ) { 
		dojo.query(this.selectorBackward).addClass("disable-lft"); 
		dojo.query(this.toStartSelector).query("img").attr("src","/wcsstore/eStore/images/buttons/rewindButton-off.gif");
	} else {
		dojo.query(this.selectorBackward).removeClass("disable-lft"); 
		dojo.query(this.toStartSelector).query("img").attr("src","/wcsstore/eStore/images/buttons/rewindButton.gif");
	}
	
	if( this.loop && (this.itemAmt > this.viewAmt))
	{ 
		dojo.query(this.selectorBackward).removeClass("disable-lft");
		dojo.query(this.selectorForward).removeClass("disable-rt");
	}
	
};

site.obj.itemSlider.prototype.slide = function() {
	this.updateButtons();
	this.newLeft = this.newIndex * this.itemSize * -1;
	var anim1 = dojo.animateProperty({
		node: this.previewScrollNode,
		duration: this.boxMixin.duration/2,
		properties: {
			left: { end: this.newLeft, unit: "px" }
		}
	});
	var animG = dojo.fx[this.animationMethod]([anim1]).play();
};

/* END Slider Obj Code */

/* productViewer Obj (is made up of a slider obj) */
site.obj.productViewer.prototype.init = function(settings) {
	if( settings == null)
	{ settings = {}; }
	
	this.selectorViewer = ( settings.selectorViewer == null ) ? "#adapters_viewer" : settings.selectorViewer;
	this.selectorLabel = (settings.selectorLabel == null) ? "#adapters_label" : settings.selectorLabel;
	this.selectorItem = this.selectorViewer + " .carousel-scroll-box";
	this.self = document.getElementById(this.selectorViewer.split("#")[1]);
	this.previewContainerNode = document.createElement('div');
	this.previewContainerNode.className = "carousel"; 
	
	this.self.appendChild(this.previewContainerNode);
	dojo.place(this.previewContainerNode, this.self, 2);
	
	this.previewScrollNode = document.createElement('div');
	this.previewScrollNode.className = "carouselscroll"; 
	this.previewContainerNode.appendChild(this.previewScrollNode);
	this.viewerURL = ( settings.viewerURL == null ) ? null : settings.viewerURL;	

	var thisViewer = this;
	
	/* get the url */
	dojo.xhrPost({
		url: thisViewer.viewerURL, 
		timeout : 0,
		load : function(data, ioArgs) {
			thisViewer.previewScrollNode.innerHTML = data;
			
			thisViewer.slider = new site.obj.itemSlider({ 
				selectorItem : thisViewer.selectorItem,
				previewContainerNode : thisViewer.previewContainerNode,
				selectorForward : thisViewer.selectorViewer + " .carouselnext", 
				selectorBackward : thisViewer.selectorViewer + " .carouselprev",
				toStartSelector : thisViewer.selectorLabel + " .start_btn",
				toEndSelector : thisViewer.selectorLabel + " .end_btn",
				
				previewScrollNode : thisViewer.previewScrollNode,
				listener : ( settings.listener == null ) ? false : settings.listener,
				viewAmt : ( settings.viewAmt == null ) ? 0 : settings.viewAmt,
				loop: ( settings.loop == null ) ? true : settings.loop
			});
			
			if(settings.callback != null) { 
				settings.callback();
			}
			
			return data;
		},
		error : function(response, data) {
			return data;
		}
	});
};
/* ----------------- */

/* Onload Functionality */
dojo.addOnLoad(function(){
	// setup the header navigation.
	site.func.setupHeaderNavigation();

	// setup the custom select boxes	
	site.func.setupStyledSelectBoxes();
	    
   // expanding hide/show blocks:
   site.func.setupExpandingBlocks();
    
   // Clear out inputs
   lib.input.defaultText("#email-input input.text-fused", { defaultText: "enter email address" });
   lib.input.defaultText("#search input.text-fused", { defaultText: "Enter Product Name, Item #" });
	
	/* Setup Any Wide Dropdowns */
	//site.func.setupWidthDropdownsForIE();
	/* ------------------ */
	dojo.query(".js-openCart").connect("click", function(e) {
		dojo.stopEvent(e);
		showBasket();
		});
});
/* End Onload Functionality */
/* Search CSS START*/
(function(){
 var invalidTerms = [
  "enter product name or item #",
  "enter search text",
  "a",
  "as",
  "was",
  "i",
  "is",
  "me",
  "my",
  "the",
  "then",
  "what",
  "why",
  "whose",
  "who",
  "when",
  "how" ,
  "!","@","#","$","%","^","&","(",")","~","`","-","_","+","=","{","{","[","]",
  "|",":",";","'",",","<",">",".","/","\"","\\"
     
 ];

 window.isValidSearch = function(elem){
  var valid = true,
   $input = elem ? dojo.query("#" + elem) : dojo.query("#search"),
   val = dojo.trim($input[0].value.toLowerCase());
  if(!val){ return false; }
  for(var i = 0, j = invalidTerms.length; i < j; i++){
   if(val == invalidTerms[i].toLowerCase()){
    valid = false;
   }
  }
  return valid;
 }

})();
/* Search CSS End*/


