// 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(){
	$(".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;
		}

	});

	//persistent cart
	$("#shoppingBag").hoverIntent({
		sensitivity: 2,
		interval: 200,
		timeout: 500,
		over: function(){
			$(this).openCart();
		},
		out: function(){
			$(this).closeCart();
		}
	})
	$(".closeCartTrigger").click(function(){
		$("#shoppingBag").closeCart();
	})

	//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("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;
		}


	});


});
