// TALBOTS.JS - GLOBAL JS INCLUDE
// Written and Compiled by Eric Webster (ewebster) and Mark Catalano(mcatalano)
// December 2008


// Global Page Functions

// Eric Webster:
// FOR ATG AJAX REQUESTS
// THE NORMAL JQUERY SERIALIZE FUNCTION DOES NOT INCLUDE THE SUBMIT BUTTON
// ATG USES THIS TO DIRECT THE FORM, THE BELOW INCLUDES THE SUBMIT BUTTON IN ALL FORM POSTS


//THIS IS THE IMAGE LOADER WHICH CHECKS FOR AN ALTERNATE IMAGE, IF IT DOESN'T FIND IT, REPLACES IT WITH A DEFAULT IMAGE
var imageLoader = function(el, def)
{
	//HACK-A-ROO: UPPER CASE ALL IMAGE NAMES FOR SCENE7
	var src = $(el).attr("src");
	src = src.substring(src.lastIndexOf('/') + 1);
	src = src.substr(0, src.indexOf('?'));
	
	if(src != src.toUpperCase())
	{
		var orig = $(el).attr("src");
		orig = orig.replace(src, src.toUpperCase());
		
		$(el).attr("longdesc", orig);
	}
	
		
	var backup = $(el).attr("longdesc");
	if(backup){
		//NEED TO UPDATE THE IMAGE SENT TO THE ZOOM PLAYER OTHERWISE ZOOM WILL BREAK
		var newImg = $(el).attr("longdesc");
		newImg = newImg.substring(newImg.lastIndexOf('/') + 1);
		newImg = 'Talbots%2F' + newImg.substr(0, newImg.indexOf('?'));
		
		$("#dynArgsForZoom").attr("name", newImg);
		
		
		$(el).attr("longdesc", "");
		$(el).attr("src", backup);
	} else {
		$(el).attr("src", def);
	}
	
}

var hideSelects = function(){
	$("select").each(function(){
		$(this).css("visibility", "hidden").attr("tempDisabled", "true")

	})
}
var showSelects = function(){
	$("select[tempDisabled=true]").each(function(){
		$(this).css("visibility", "visible").attr("tempDisabled", "")

	})
}

$.fn.serializeArray = function() {
	return this.map(function(){
		return jQuery.nodeName(this, "form") ?
			jQuery.makeArray(this.elements) : this;
	})
	.filter(function(){
		return this.name && !this.disabled &&
			(this.checked || /select|textarea/i.test(this.nodeName) ||
				/text|hidden|submit|password/i.test(this.type));
	})
	.map(function(i, elem){
		var val = jQuery(this).val();
		return val == null ? null :
			val.constructor == Array ?
				jQuery.map( val, function(val, i){
					return {name: elem.name, value: val};
				}) :
				{name: elem.name, value: val};
	}).get();
}
$.fn.search = function() {
	return this.focus(function() {
		if( this.value == this.defaultValue ) {
			this.value = "";
		}
	}).blur(function() {
		if( !this.value.length ) {
			this.value = this.defaultValue;
		}
	});
}

$.fn.addToWishList = function(){
	var quant = $("#quantitySku").val();
	$("#quantityWish").attr("value", quant);

	var target = $(this).get(0)
	$.ajax({
		type: "get",
		data: $("#wishListForm").serialize(),
		method: $("#wishListForm").attr("method"),
		url: $(target).attr("href"),
		beforeSend: function(xhr) {
						xhr.setRequestHeader( "Content-Type", "application/json" );
						xhr.setRequestHeader( "Accept", "application/json" );
					},

					success: function(response){

						var offset = $(target).offset();
							var newElemnt = $(target);
							$("#wishListConfirmation").html(response);

							var totalItemsInWishListIDObj =document.getElementById("totalItemsInWishListID");
							if(totalItemsInWishListIDObj != null){
								var mywishListObj=document.getElementById("wishlist");
								var myWishListMsg="WishList("+totalItemsInWishListIDObj.value+")";
								mywishListObj.firstChild.firstChild.nodeValue = myWishListMsg;
							}
							var fromPageObj =document.getElementById("fromPageID");
							if(fromPageObj != null && fromPageObj.value == 'quickview')
							{
								$('#quickViewContainer').jqmHide();
								showSelects();
							}
							else
							{
								hideSelects();
								$("#wishListConfirmation").html(response).show()


										var timer = setInterval(function(){
											$("#wishListConfirmation").hide();
											showSelects();
										}, 10000);

							}

							//create a fadeIn timer to fadein the modal, wait 3000ms then trigger the close function

				},
		error: function(response){
					var loginPage =document.getElementById("loginPage");
					window.location=loginPage.value;
		}
	});
}


$.fn.openCartOnLoad = function(){
	$()
	/*return this.each(function() {
		$("#shoppingBag").children("h3").addClass("active");

		if($("#table").children(".cartItem")!=null){
			$("#table").children(".cartItem").hide();
		}

		$("#persistentCart").fadeIn(function(){
			$("#persistentCart").addClass("open");
		});

	});
	*/
}

$.fn.openCart = function(){
	return this.each(function() {
	if(jQuery.browser.msie && jQuery.browser.version < 6.99){
		hideSelects();
	}
	$("#shoppingBag").children("h3").addClass("active");
	if($("#table").children(".cartItem")!=null){
		$("#table").children(".cartItem").show();
	}

	$("#persistentCart").fadeIn(function(){
			$("#persistentCart").addClass("open");

	});
	});
}

$.fn.closeCart = function(){
	return this.each(function() {
	$("#persistentCart").removeClass("open");
	$("#persistentCart").fadeOut(function(){
		$("#shoppingBag").children("h3").removeClass("active");
	});
	if(jQuery.browser.msie && jQuery.browser.version < 6.99){
		showSelects();
	}
	});
}

$(document).ready(function(){

	//ajax call to populate the persistent cart 
	$('#quickNav').load('/online/global/includes/header_ajax.jsp', function() {
		//persistent cart
		$("#shoppingBag").hoverIntent({
			sensitivity: 2,
			interval: 200,
			timeout: 500,
			over: function(){
				$(this).openCart();
			},
			out: function(){
				$(this).closeCart();
			}
		})
		$(".closeCartTrigger").click(function(){
			$("#shoppingBag").closeCart();
		})

		$(".disabled").css("opacity",.5);
		// auto clear search fields on click
		$("#search, #email, #location, #emailAddress").search();
		// This function checks to see if the shopping cart should be opened on page load.
		if($("#shoppingBag").hasClass("openMe")){

			$("#shoppingBag").openCart()
			var closeCartTimer = setTimeout(function(){
					$("#shoppingBag").closeCart();
					$("#shoppingBag").removeClass("openMe");
			},7000);

		}
		$("#quickNav input.searchButton").click(function(){

			//validate search term input
			var searchterm = ($("#quickNavSearch fieldset #search").val());
			var defaultval = (document.getElementById("search").defaultValue)

			if (searchterm == defaultval) {
				return false;
			}
			else {
				return true;
			}
		});

		//drop down, pull up main and secondary nav's
		$("#mainNav li, #secondaryNav li").hoverIntent({
			sensitivity: 2,
			interval: 200,
			timeout: 500,
			over: function(){
				$(this).addClass("active").children('ul').slideDown();
			},
			out: function(){
				$(this).removeClass("active").children('ul').slideUp();
			}
		});

		//Select Drop Down redirect
		$(".selectRedirect").change(function(){
			var redirect = $(this).val();

			if (redirect != "null"){
				document.location.href=redirect;
			}
		});

		//Superpopup

		//if the wishlist container exists, prepare to use it.

		if($("#wishListConfirmation").length > 0){
			$.jqm.params.overlay = 0;
			$("#wishListConfirmation").jqm({
				trigger: 'a.closeButton',
				onShow: function(hash){
					var mTop = "-" + Math.round(hash.w.outerHeight() / 2) + "px";
					var mLeft = "-" + Math.round(hash.w.outerWidth() / 2) + "px";
					hash.w.css({
						'margin-top': mTop,
						'margin-left': mLeft
					}).fadeIn();

				},
				onHide: function(hash){
					hash.w.fadeOut().css('opacity',0);
				}
			});
		}
		//submit bind function

		// Global Event Manager - Bind functionality here.
		$("body").click(function(e){

			var target = $(e.target).get(0);
			if($(target).hasClass("wishlistTrigger")){
				$(target).addToWishList();
				return false;
			} else if($(target).hasClass("findPopup")){
				var popupLink = $(target).attr("href");
				superPopup({
					type : "findInStore",
					url : popupLink
				});
				return false;
			} else if($(target).hasClass("finalSale")){
				var popupLink = $(target).attr("href");
				superPopup({
					type : "finalsale",
					url : popupLink,
					width : 400,
					height : 30
				});
				return false;
			} else if($(target).hasClass("finalSaleCheckout")){
				var popupLink = $(target).attr("href");
				superPopup({
					type : "finalsale",
					url : popupLink,
					width : 400,
					height : 30
				});
				return false;
			} else if($(target).hasClass("sizingChart")){
				var popupLink = $(target).attr("href");
				superPopup({
					type: "sizeChart",
					url : popupLink
				});
				return false;
			}
			else if($(target).hasClass("sendmail")){

				//Instantiate the message auto tabbing system.
				$('#line1').autotab({ target: 'line2'});
				$('#line2').autotab({ target: 'line3', previous: 'line1' });
				$('#line3').autotab({ target: 'line4', previous:'line2'});
				$('#line4').autotab({ previous: 'line3'});

					var offset = $(this).offset();
					var currentPage = (location.href);
					$("#emailFriend").fadeIn(250).css({display:"block", left:offset.left -200 , top:offset.top + 35});
					$("#emailMessage span").html('<a href="' + currentPage + '">'+ currentPage +'</a>');
					$("input#line1").focus();


				$(".closeButton, input#cancel").click(function(){
					$("#emailFriend").fadeOut(500);
					return false;
				});

				$("#emailFriend label input").focus(function() {

				});

			}else if($(target).hasClass("directionsPopup")){
				var str = $("#directionsForm").serialize();

				var popupLink = $(target).parents("form").attr("action") + str;
				superPopup({
					type: "directions",
					url : popupLink
				});
				return false;
			}
		});
	});
});