(function() {
	var site = window.site = {
		data : {
			globalOverlay : null,
			globalOverlaySelector : "#overlayLayer"
		},
		func : {
			getLoadingHTML : function() {
                return 	'<div id="genericLoadingLayer" class="layerLayout">' +
                            '	<div class="layerContent"><img src="' + loadingImage + ' /></div>' +
                            '</div>';
			},
			globalOverlay : {
	        	create : function() {
	            	if( site.data.globalOverlay == null ) {
	            		site.data.globalOverlay = new lib.obj.pageOverlay({selector : site.data.globalOverlaySelector});
					} else {
						site.func.globalOverlay.remove();
						site.data.globalOverlay.addOverlay();
					}
				},
				remove : function() {
					if( site.data.globalOverlay != null ) {
						site.data.globalOverlay.removeOverlay();
					}
				}
			},
			openGenericLayer : function(url) {
				site.func.globalOverlay.create();
				lib.layer.create("#genericLayer", {
					url : url,
					defaultContent : site.func.getLoadingHTML(),
					method : "post",
					keepCentered : true,
					callback: function() {
						$(".js-closeLayer,"+ site.data.globalOverlaySelector).click(function(evt) {
							evt.preventDefault();
							lib.layer.remove("#genericLayer");
							site.func.globalOverlay.remove();
						});
					}
				});
			},
			openLoadingLayer : function(url) {
	            site.func.globalOverlay.create();
	            lib.layer.create("#genericLayer", {
	               defaultContent : site.func.getProcessingHTML(),
	               keepCentered : true
	            });
			},
			closeLoadingLayer : function() {
	            $("#overlayLayer").remove();
	            $("#genericLayer").remove();
	        },
			updateHeader : function(amt) {
					if(amt == 1) {
						$(".js-headerItemCount").text(amt + " item");
					} else {
						$(".js-headerItemCount").text(amt + " items");
					}
		    },
			dropdownNavigation : function() {
	         $('.category li').hover(
               function() {
                  $('.subcategory', this).css('display', 'block');
	                  $(this).addClass('catHover');
                  },
                  function() {
                     $('.subcategory', this).css('display', 'none');
	                  $(this).removeClass('catHover');
                  });
		    },
		    /*
		    sliderFlyout
		    -------------------
		    Clicking a thumbnail opens a panel used for viewing more detail.

		    Authors: Scott Shepard
		    Version: 1.0
		    Date: July 12, 2010
		    */
		    sliderFlyout: function(options){
	    		settings = $.extend({
	    			contextRoot: ".carousel",
	    			item: "li",
	    			direction: "horizontal",
	    			showAmount: 3,
	    			scrollAmount: 2,
	    			thumbnailEasing: "swing",
	    			circular: false, /* not implemented */
	    			interval: 350,
	    			preMoveCallback: null,
	    			postMoveCallback: null,
	    			flyout: '.carouselFlyout',
	    			flyoutDuration: 200
	    		}, options);

	    		//For each thumbCarousel found:
	    		$(settings.contextRoot).each(function(){
	    			var self = $(this), activeIdx = -1;

	    			//Flyout behavior
	    			self.find(settings.item).each(function(idx, el){
	    				var thumbnail = this;
	    				var flyout =  $(self.find(settings.flyout)[idx]);
	    				var height = flyout.height();
	    				flyout.css({ 'height':0,  'zIndex':'-1' });

	    				//Thumbnail Click behavior
	    				$(this).find('a').click(function(e){
	    					e.preventDefault();
	    					if (activeIdx !== idx) {
	    						 $(self.find(settings.flyout)[activeIdx])
	    						 	.css({'zIndex':'-1'})
	    							.animate({ 'height':0 }, settings.flyoutDuration);
	    					}
	    					if (flyout.css('height') > 0) {
	    						flyout.animate(
	    							{ 'height':0 },
	    							settings.flyoutDuration,
	    							function() { flyout.css({'zIndex':'-1'}); }
	    						);
	    					} else {

                                activeIdx = idx;
	    						flyout.css({'zIndex':'1'});
	    						flyout.animate(
	    							{ 'height':height },
	    							settings.flyoutDuration,
	    							function(){
                                        flyout.css('height','auto');
                                        height = flyout.height();
                                    }
	    						);
	    					}
	    				});
	    			});

	    			// close on bodyclick
	    			$(document.body).click(function(e){
	    				if (activeIdx === -1) { return; }
	    				var aThumb = self.find(settings.item)[activeIdx];
	    				var aFlyout = self.find(settings.flyout)[activeIdx];
	    				var eThumb = $(e.target).parents(settings.item).get(0);
	    				var eFlyout = $(e.target).parents(settings.flyout).get(0);

	    				// close open flyout if it (or its thumbnail) do not match e.target
	    				if ((!eThumb && !eFlyout) || (eThumb !== aThumb && eFlyout !== aFlyout)) {
	    					$(aFlyout).css({ 'height':0,'zIndex':'-1' });
	    					activeIdx = -1;
	    				}
	    			});
	    		});
	    	}
		},

		obj : {
			/* site specfic objects */
			recentlyViewedSlider: {
				viewport: "#recentThumbCarousel .viewport",
				content: "#recentThumbCarousel slidingPanel",
				next: "#recentThumbCarousel .next a",
				prev: "#recentThumbCarousel .prev a",
				item: "#recentThumbCarousel li",
				direction: "horizontal",
				showAmount: 3,
				scrollAmount: 3,
				interval: 500
			},
			homeProductCarousel: {
				viewport: "#homePromotion5 .viewport",
				content: "#homePromotion5 slidingPanel",
				next: "#homePromotion5 .next a",
				prev: "#homePromotion5 .prev a",
				item: "#homePromotion5 li",
				direction: "horizontal",
				showAmount: 1,
				scrollAmount: 1,
				interval: 300				
			},
            ucartSlider: {
				viewport: "#ucart .viewport",
                content: "#ucart .viewport .content",
				next: "#ucart .next a",
				prev: "#ucart .prev a",
				item: "#ucart .item",
				direction: "vertical",
				showAmount: 3,
				scrollAmount: 3,
				interval: 500
			}
		}
	}
})();






/* On DOM Ready */
$(function() {
	/* input default text for header search & footer email signup */
	lib.input.defaultText("#js-footerEmailInput", { defaultText : "Enter your email address" });
	lib.input.defaultText("#js-keyword", { defaultText : "Enter a key word or item #" });

	/* call top navigation dropdowns */
	site.func.dropdownNavigation();

	/* create recently-viewed carousel */
	new lib.obj.itemSlider(window.site.obj.recentlyViewedSlider);
	// attach flyout behavior
	site.func.sliderFlyout();

	/* create home page product carousel */
	new lib.obj.itemSlider(window.site.obj.homeProductCarousel);

	// extend OverlayWidget to hide select menus when open.
	if ($.browser.msie && $.browser.version == 6){
		var co = OverlayWidget.createOverlay;
		OverlayWidget.createOverlay = function(selector) {
			co(selector);
			$('select', '#pageContainer').hide();
		}

		var hide = OverlayWidget.hide;
		OverlayWidget.hide = function(selector) {
			hide(selector);
			$('select', '#pageContainer').show();
		}
	}

	/* Store Locator layer */
	$(".js-storeLocator").click(function(evt){
		evt.preventDefault();
		var url = $(this).attr("href");
		site.func.openGenericLayer(url);
	});
	
	/* Giftcard Balance check layer */
	$("#js-giftcardBalCheck").click(function(evt){
		evt.preventDefault();
		var url = $(this).attr("href");
		site.func.openGenericLayer(url);
	});
	
	$("#js-giftcardBalCheckFooter").click(function(evt){
		evt.preventDefault();
		var url = $(this).attr("href");
		site.func.openGenericLayer(url);
	});

	/* APO/FPO Military Address popup in base_address_include.jsp */
	$(".js-ApoFpo").click(function(evt){
		evt.preventDefault();
		var url = $(this).attr("href");
		openWindow(url,450,200,'scrollbars');
	});

	/* Phone Number popup in base_address_include.jsp */
	$(".js-phoneInfo").click(function(evt){
		evt.preventDefault();
		var url = $(this).attr("href");
		openWindow(url,450,260,'scrollbars');
	});

	/* Common popup */
	$(".js-popup").click(function(evt){
		evt.preventDefault();
		var url = $(this).attr("href");
		openWindow(url,750,560,'scrollbars');
	});

	/* Small popup */
	$(".js-popupSmall").click(function(evt){
		evt.preventDefault();
		var url = $(this).attr("href");
		openWindow(url,400,260,'scrollbars');
	});

	/* Load link in parent */
	$(".js-loadInParent").click(function(evt){
		evt.preventDefault();
		var url = $(this).attr("href");
		if (window.opener) {
			window.opener.location=url;
			window.close();
		} else {
			window.location=url;
		}
	});

});
