$( function() {

	$(".accordion").accordion({ alwaysOpen: false, active: false });
	$(".accordion-home").accordion({ alwaysOpen: true });							
	$(".cat-accordion").accordion({ alwaysOpen: false, active: false, header: "div.header" });	

	$("li.mainnav").hover(
		function() {
			if (menuObj != null && menuObj.attr("id") != $(this).attr("id")) {
				removeHover();
				menuObj = null;
			} else if (menuObj != null) {
			    clearTimeout(timer);
			}
			if ($(this).attr("id") == 'm1') $("div.detailnew").hide();
			$(this).find("div.nav-popup").slideDown(200);
			$(this).addClass("hover");
		}, 
		function() {
			menuObj = $(this);
			timer = setTimeout("checkHover()", 100);
		});
		
	$("li#search a").click(
		function() {
			$("li#search").animate({ marginLeft: "137px" }, 300, "swing");
			$("#search_pop").fadeIn(300); 
		});
		
	$(".promo-item .body").click( function() { location.href = $(this).attr("href"); });
		
	$("div#cart_qv").hover(
		function() {
			$(this).addClass("active");
			$("div#cart_popup").slideDown(200, function() { $("#cart_popup_cap").show(); });
		}, 
		function() {
			$(this).removeClass("active");
			$("#cart_popup_cap").hide();
			$("div#cart_popup").slideUp(200);
		});
	
	$("#caption_btn").hover(
		function() {
			$("#caption").show();
		}, 
		function() {
			$("#caption").hide();
		});
		
	$("#shippingnote").hover(
		function() {
			$(this).find("div").show();
		}, 
		function() {
			$(this).find("div").hide();
		});
	
	
	// PRODUCT DETAIL
	$("div.thumbnail").mouseover(function() { $(this).addClass("active"); });
	$("div.thumbnail").mouseout(function() { $(this).removeClass("active"); });	
	$("div.thumbnail").click(
		function() {
			$("div.thumbnail").removeClass("selected");
			$("#caption").html($(this).find("img").attr("alt"));
			$(this).addClass("selected");
			imgUrl = $(this).find("a").attr("href");
		});	
	$("a.thumblink").click(
		function() {
			$("div.thumbnail").removeClass("selected");
			$("#caption").html($(this).find("img").attr("alt"));			
			$(this).parents("div.thumbnail").addClass("selected");
			imgUrl = $(this).attr("href");
		});
	$("#larger_btn").hover(
		function() {
			$(this).attr("src", "/common/images/btn-larger-on.gif");
		}, 
		function() {
			$(this).attr("src", "/common/images/btn-larger.gif");
		});
	
	$("#larger_btn").click(
		function() {
			window.open(imgUrl,'zoom','resizeable=yes,scrollbars=no,toolbar=no,status=no,menubar=no') 
		});
	var imgUrl = $("#zoom1").attr("href");
	
	$("a#prod_features_link").click(
		function() {
			if (! $(this).hasClass("active")) {
				$("a#specs_link, a#prod_story_link").removeClass("active");
				$(this).addClass("active");
				$("div#specs, div#prod_story").hide();
				$("div#prod_features").show();
			}
		});
									
	$("a#specs_link").click(
		function() {
			if (! $(this).hasClass("active")) {
				$("a#prod_features_link, a#prod_story_link").removeClass("active");
				$(this).addClass("active");
				$("div#prod_features, div#prod_story").hide();
				$("div#specs").show();
			}			
		});
									
	$("a#prod_story_link").click(
		function() {
			if (! $(this).hasClass("active")) {
				$("a#prod_features_link, a#specs_link").removeClass("active");
				$(this).addClass("active");
				$("div#prod_features, div#specs").hide();
				$("div#prod_story").show();
			}			
		});
	
	$("a#pad_callout").hover(function() { $("div#pad_popup").show(); },
							 function() { $("div#pad_popup").hide(); });
					 
	$("form#buyform").submit(
		function() {
			var opt = $(this).find("select#options_box").val();
			if (opt == "") {
				alert("Please select an option.");
				return false;
			} else if (opt.split("_").length == 2) {
				alert("This option is currently out of stock");
				return false;
			}
			return true;
		});
	

	$("select.img-selector").change(
		function() {
			var id = $(this).val().split("_")[0];
			MagicZoom_stopZooms();
			$("#main_img a").attr("href", optImgs[id].zoom);
			$("#main_img img").attr("src",  optImgs[id].main);
			$("span#caption").html(optImgs[id].name);
			MagicZoom_findZooms();
		});
	
		
	//PRODUCT FINDER
	$("a.finderattribute").click(
		function() {
			if ($(this).hasClass("disabled")) return;
			if ($(this).hasClass("selected")) {
				$("#"+$(this).parent().parent().attr("id")+" a").removeClass("selected");						 
			} else {
				$("#"+$(this).parent().parent().attr("id")+" a").removeClass("selected");
				$(this).addClass("selected");		
			}

			var ht = $("div.loading").parents("div#contentwide").height();
			var bgPos = (ht-55)/2;  //loader img height is 55px
			if (bgPos > 300) bgPos = 300;
			$("div.loading").height($("div.loading").parents("div#contentwide").height());
			$("div.loading").css("background-position", "center " + bgPos + "px");
			$("div.loading").show();
			
			var ids = '';
			$("div#productfinder a.selected").each(
				function() {
					ids += $(this).attr("id").substring(10) + ",";
				});
			ids = ids.substring(0, ids.length-1);
			doProductFinderPost(ids);
		});
	
	$("input:checkbox").click( 
		function() { 
			$(".searchresultbox").removeClass("selected"); 
			$("input:checkbox:checked").parents(".searchresultbox").addClass("selected");
		});
	
	$("a#clearall").click(
		function() {
			$("a.finderattribute").removeClass("selected");
			doProductFinderPost('');
		});
	
	//CATEGORY
	$("div.category-item div.header").hover(
		function() { $(this).addClass("hover"); },
		function() { $(this).removeClass("hover"); });
	
	$("#cat_learnmore").click(
		function() {
			$(this).parent().hide();
			$("#learnmore").slideDown(300);
		});	

	$("#cat_learnmorecolose").click(
		function() {
			$("#learnmore").slideUp(300, 
				function() {
					$("#cat_learnmore").parent().show();
				});
		});
	
	//FAQS
	$("div.faq a.question").click(
		function() {
			if ($(this).hasClass("active")) $(this).removeClass("active");
			else $(this).addClass("active");
			
			$(this).parent().find(".answer").slideToggle(300);
		});
	
	//ACCOUNT
	$("#personalinfo_btn").click(
		function() {
			resetError();		
			var form = $(this).parents("form");
			$.post($(this).parents("form").attr("action"), wrapFormData($(this).parents("form").find(formSelector)), 
				function(data){
					if (isDefined(data.error)) {
						reportFEError(data.error);
						highlightError(data.errorElements, form);
					} else {
						reportSuccess(data.msg);
					}
				}, "json"); 
		});
		
	$("#address_btn").click(
		function() {
			resetError();
			var form = $(this).parents("form");
			$.post($(this).parents("form").attr("action"), wrapFormData($(this).parents("form").find(formSelector)), 
				function(data){
					if (isDefined(data.error)) {
						reportFEError(data.error);
						highlightError(data.errorElements, form);
					} else if (isDefined(data.url)) {
						location.href = data.url;
					}
				}, "json"); 
		});		
		
	//CART
	$("div.delete img").hover(function() { $(this).attr("src", "/common/images/icon-clear-on.gif"); },
							  function() { $(this).attr("src", "/common/images/icon-clear.gif"); });
							  
	$("div.delete img").click(
		function() {
			var iid = $(this).attr("id").substring(7)
			$.post('/Checkout/deleteitem', "key="+iid, 
				function(data){
					$(".subtotal").html(data.subtotal);
					$(".item_cnt").html(data.itemcount);
					$("#"+iid).remove();
					$("#msg").html("This item has been removed").show();
				}, "json"); 
		});
	
	$("#update_qty").click(
		function() {
			$.post('/Checkout/updatequantities', wrapFormData($(".lineitem input")), 
				function(data){
					$(".subtotal").html(data.subtotal);
					$(".item_cnt").html(data.itemcount);
					for (property in data.items) {
						if (data.items[property] == 0) $("#"+property).remove();
						else $("#"+property+" .ext-price").html("$"+data.items[property]);
					}
					$("#msg").html("Your quantities have been updated").show();
				}, "json"); 
		});
		
	//CHECKOUT
	$("#contact_btn").click(
		function() {
			resetError();
			var form = $(this).parents("form");
			$.post($(this).parents("form").attr("action"), wrapFormData($(this).parents("form").find(formSelector)), 
				function(data){
					if (isDefined(data.error)) {
						reportFEError(data.error);
						highlightError(data.errorElements, form);
					} else if (isDefined(data.url)) {
						location.href = data.url;
					}
				}, "json"); 
		});
	
	$(".checkout_btn").not(".event-attached").addClass("event-attached").click(function(){ checkoutBtnClick($(this)); });	
	$(".edit-address").not(".event-attached").addClass("event-attached").click(function(){ editAddressClick($(this)); });
	$(".summary-edit, #checkout .complete").click(function() { loadStep($(this).attr("id").substr(4, 1)); });
	
	if ($(".crossfade").length) crossFade();
	
});

//FUNCTION FOR MAIN NAV ROLLOVERS
var menuObj = null;
var timer;
function checkHover() {	
	if (menuObj) removeHover();
}

function removeHover() {
    menuObj.find("div.nav-popup").queue(
        function() { 
            $(this).hide(); 
            $(this).dequeue();
			$("div.detailnew").show(); 
        });
	menuObj.removeClass("hover");
}

var lastImage;
var lastQuote;
var lastDropShadow
function crossFade() {
	if (lastImage == null || lastQuote == null) {
		lastImage = $(".crossfade").children(":first");
		lastQuote = $(".quotes").children(":first");
		lastDropShadow = $(".dropshadows").children(":first");
		$(".crossfade").children().not(":first").hide();
		$(".quotes").children().not(":first").hide();
		$(".dropshadows").children().not(":first").hide();
		setTimeout('crossFade();', 7000);
	} else {
		var nextImage = lastImage.next();
		if (nextImage.length == 0) nextImage = $(".crossfade").children(":first");	
		lastImage.css("z-index", 1);
		nextImage.css("z-index", 5);
		
		var nextQuote = lastQuote.next();
		if (nextQuote.length == 0) nextQuote = $(".quotes").children(":first");
		lastQuote.css("z-index", 3);
		nextQuote.css("z-index", 7);
		
		var nextDropShadow = lastDropShadow.next();
		if (nextDropShadow.length == 0) nextDropShadow = $(".dropshadows").children(":first");
		lastDropShadow.css("z-index", 2);
		nextDropShadow.css("z-index", 6);
		
		nextImage.fadeIn(500, 
			function() {
				if (nextImage.find("span").length != 0) $("#caption").html(nextImage.find("span").html());
				lastImage.hide();
				lastImage = nextImage;		
				
				lastQuote.hide();
				nextQuote.show();
				lastQuote = nextQuote;
				
				lastDropShadow.hide();
				nextDropShadow.show();
				lastDropShadow = nextDropShadow;
				
				setTimeout('crossFade();', 7000);
			});
	}	
}

//PRODUCT FINDER
function doProductFinderPost(ids) {
	$.post('/Products/updateproductfinder/type/' + $("#typebox").attr("value"), 'ids='+ids, 
		function(data){
			$('#productCount').text(data.products.length);
			$("div#productfinder a").removeClass("disabled");					
			
			$("#contentwide .searchresultbox").hide();
			for(var i = 0; i < data.products.length; i++) {
				$("#product_"+data.products[i]).show();
			}

			for(var i = 0; i < data.disabledAttributes.length; i++) {
				$("#attribute_" + data.disabledAttributes[i]).addClass("disabled");
			}
			
			$("div.loading").hide();
		}, "json"); 
}

function editAddressClick(editBtn) {
	var id = editBtn.attr("id").substring(5);
	$("#"+id+"_view").toggle();
	$("#"+id+"_form").toggle();			
}

function checkoutBtnClick(checkoutBtn) {
	resetError();
	checkoutBtn.next(".ajax-loader").show();
	var form = checkoutBtn.parents("form");
	$.post(checkoutBtn.parents("form").attr("action"), wrapFormData(checkoutBtn.parents("form").find(formSelector)), 
		function(data){
			if (isDefined(data.error)) {
				$(".ajax-loader").hide();
				reportFEError(data.error);
				highlightError(data.errorElements, form);
			} else {
				if (isDefined(data.nextStep) && isDefined(data.info)) loadStep(data.nextStep, data.info);
				else if (isDefined(data.nextStep)) loadStep(data.nextStep);
			}
		}, "json");
}

function loadStep(step, info) {	
	if (isDefined(info)) {
		for(property in info) {
			$("#"+property+" .info").html(info[property]);
			$("#"+property+" .info").slideDown(300);
			if (!$("#"+property).hasClass("complete")) $("#"+property).addClass("complete");
		}
	}
	
	$.get("/Checkout/Checkout"+step, 
		function(html) {
			$(".ajax-loader").hide();			
			$("#step"+step+"form").html(html);			
			for (var i = 1; i < 7; i++) {
				if (i < step) {
					var a = $("#step"+step+"head");
					$("#step"+i+"head").removeClass("active").removeClass("complete");
					$("#step"+i+"head").addClass("complete");
					$("#step"+i+"form").hide(500);
				} else if (i == step) {
					$("#step"+i+"head").removeClass("active").removeClass("complete").addClass("active");
					$("#step"+i+"form").show(500);
				} else {
					$("#step"+i+"head").removeClass("active").removeClass("complete");
					$("#step"+i+"form").hide(500);				
				}
			}
			
			$(".checkout_btn").not(".event-attached").addClass("event-attached").click(function(){ checkoutBtnClick($(this)); });	
			$(".edit-address").not(".event-attached").addClass("event-attached").click(function(){ editAddressClick($(this)); });
			initLightbox();
			
			$("#checkout .section-head").unbind();
			$("#checkout .complete").click(function() { loadStep($(this).attr("id").substr(4, 1)); });
		}, "html");
}

function resetError() {
	$("#msg").hide();
	$(".error").removeClass("error");
}

function reportSuccess(msg) {
	$('#msg').removeClass("errorbox").html(msg).show();
}

function reportFEError(errorAry) {
	var errorstring = '<ul class="bullet-list">';
	for(var i = 0; i<errorAry.length; i++) errorstring += '<li>' + errorAry[i] + "</li>";
	if (!$('#msg').hasClass("errorbox")) $('#msg').addClass("errorbox");
	$('#msg').html(errorstring).show();
}

function highlightError(elementAry, formObj) {
	var selector = "";
	for(var i = 0; i< elementAry.length; i++) selector += "#" + elementAry[i]  + ",";
	selector = selector.substring(0, selector.length-1);
	formObj.find(selector).addClass("error");
}