;(function($) {
	var sky = window.sky || (window.sky = {});

	sky.emailBasket = {
		productSelectionPath: "",
		domEmailBasketRoot: "",
		showJDialog: function(html, options) {
			var props = $.extend({}, { 
				content: html, 
				progress: false, 
				bg: '#000', 
				opacity: '0.8', 
				showImmediately: true, 
				closeDialogOnEscKey: false
			}, options);
			var temp = $('<div/>');
			temp.createDialog(props);
			temp.trigger('click');
		},
		init: function() {
			var self = this;
			//$(document).on('click', 'a.emailLink', function(event) {
			$('a.emailLink').unbind('click').live('click', function(event) {
				if ($('#isBasketValid').val() == 'false') {
					var $invalidBasketEmailMessageOverlayPodWrapper = $('#invalidBasketEmailMessageOverlayPodWrapper');
					sky.emailBasket.showJDialog( $invalidBasketEmailMessageOverlayPodWrapper.html());
					$('.closeButton').click(function() {
						$.closeDialog(true);
						return false;
					});
					self.doTrackingWithMessage("emb - invalid basket for email");
				} else {
					//we need to keep hold of the email form because it disappears from the DOM after
					//a successful email, so busts if you try to email again
					if (self.domEmailBasketRoot == "") {
						self.domEmailBasketRoot = $('#emailOverlayPod').get()[0];
					}
					if (sky.verification) {
						// This initialises the verification for the email basket lightbox
						$("#emailBasketForm").submit( function(){ return false; });
						sky.verification.setupEmailBasketLightBoxVerification({
							successFunc: sky.emailBasket.submitEmailBasketForm,
							domRoot: self.domEmailBasketRoot,
							failFunc: function(data) {
								// On frontend verification failure we need to send tracking errors
								var fields = data.fields;
								var errorsByFieldName = [];
								$.each(fields, function() {
									errorsByFieldName[this.name]=this.error;
								});

								if ((errorsByFieldName["firstName"] || errorsByFieldName["lastName"]) && (errorsByFieldName["emailAddress"] || errorsByFieldName["confirmEmailAddress"])) {
									// Both email and name wrong
									self.doTrackingWithMessage("emb-front end error");
								}
								else if (errorsByFieldName["firstName"] || errorsByFieldName["lastName"]) {
									// Just name wrong
									self.doTrackingWithMessage("emb-front end error - name incorrect");
								}
								else if (errorsByFieldName["emailAddress"] || errorsByFieldName["confirmEmailAddress"]) {
									// Just email wrong
									self.doTrackingWithMessage("emb-front end error - email incorrect");
								}
							}
						});
					}

					// track omniture
					if( typeof(s) === 'object' ){
						s.prop15 = 'mainContent_emailBasket_' + s.pageName;
						s.eVar7 = s.prop15;
						s.linkTrackVars = "prop15,eVar7";
						s.tl(this, 'o', 'email basket');
						if (sky.prodman) {
							sky.prodman.Tracking.trackingCompleted();
						}
					}

					$(this).removeAttr('target');
					sky.emailBasket.showJDialog(self.domEmailBasketRoot);
					$('#closeEmailBasketPopup').unbind("click").bind('click', function() {
						if (sky.verification && sky.verification.emailBasketVerification) {
							sky.verification.emailBasketVerification.clearAllErrors();
						}

						$.closeDialog(true);
						return false;
					});
				}
				event.stopPropagation();
				return false;
			});
		},
		doTrackingWithMessage: function(message) {
			//alert(message);
			s.linkTrackVars="events,prop2,eVar2,eVar4";
			s.linkTrackEvents=s.events="event3";
			s.prop2 = s.eVar2 = message;
			s.eVar4 = $('#allProducts').attr("value");
			s.tl('emb', 'o', 'error');
		},
		submitEmailBasketForm: function(data) {
			var fields = data.fields;
			if (sky.prodman) {
				sky.prodman.Submit.callJQueryPost("/quickbuy/emailBasketForm" + sky.emailBasket.buildFormData(fields), null, sky.prodman.Submit.showEmailBasketResponseLightBox);
			}
			else {
				sky.storefront.Utilities.callJQueryPost("/shop/emailBasketForm" + sky.emailBasket.buildFormData(fields) + "&ajaxCall=true", null, sky.storefront.Basket.showEmailBasketResponseLightBox);
			}
		},
		buildFormData : function(fields) {
			var formData = "?";
			for (var i = 0; i < fields.length; i ++) {
				formData += fields[i].name + "=" + fields[i].val + "&"; 
			}
			formData += "emailBasket=true";
			return formData;
		},
		setProductSelectionPath : function(path) {
			sky.emailBasket.productSelectionPath = path;
		},
		showEmailBasketResponseLightBox: function(jQueryHtml, testStatus, showDialogueFunction) {
			var $emailBasketSendingErrorLightbox = jQueryHtml.find("#emailBasketSendingErrorMessageOverlayPod");
			var $emailBasketSentSuccessfullyLightbox = jQueryHtml.find("#emailBasketSentSuccessfullyMessageOverlayPod");

			if ($emailBasketSendingErrorLightbox.length > 0) {
				showDialogueFunction(jQueryHtml);
				setTimeout(function() {
					$('.closeButton').click(function(){
						$.closeDialog(true);
						return false;
					});
				}, 1);

				s.linkTrackVars="events,prop2,eVar2,eVar4";
				s.linkTrackEvents=s.events="event3";
				s.prop2 = s.eVar2 = "emb - error sending email";
				s.eVar4 = $('#allProducts').attr("value");
				s.tl('emb', 'o', 'error');

			}
			if ($emailBasketSentSuccessfullyLightbox.length > 0) {
				showDialogueFunction(jQueryHtml);
				setTimeout(function() {
					$('.closeButton, .closePopup', '#emailBasketSentSuccessfullyMessageOverlayPod').click(function(){
						$.closeDialog(true);
						return false;
					});
				}, 1);

				s.linkTrackVars="events,eVar4";
				s.linkTrackEvents=s.events="event51";
				s.eVar4 = $('#allProducts').attr("value");
				s.tl('emb', 'o', 'success');
			}
		}
	};
	$(function() {
		sky.emailBasket.init();
	});
})(jQuery);
