WMG = WMG || {};
WMG.namespace("TurnKey");
WMG.TurnKey = (function () {
	var closeFlag = 0;
	var jsonOutput, parsedFile, timeout;
	var wmgSignUpFormOptions = {
		callBacks: {
			onSuccess: function () {
				if (!WMG.Utils.isUser("administrator") && !WMG.Utils.isUser("Reviewer")) {
					closeFlag++;
					if (closeFlag === 1) {
						clearTimeout(timeout);
					}
					if (closeFlag === 2) {
						setTimeout(hideToaster, 5000);
						jQuery.cookie("turnkeyPassCookie", 1);
					}
				}
			}
		}
	};
	var pageNameOption = {};
	function OmniPrep(omniVars, description) {
		if (typeof omniVars === "string") {
			s_dtm.linkTrackVars = 'events';
			s_dtm.linkTrackEvents = omniVars;
			s_dtm.events = omniVars;
		}
		else {
			s_dtm.linkTrackVars = Object.keys(omniVars);
			s_dtm = jQuery.extend(s_dtm, omniVars);
		}
		s_dtm.tl(this, 'o', description);
	}
	function hideToaster() {
		jQuery("#lightBoxContent.lightBoxContent.tkt").removeClass('show_toaster').addClass('hide_toaster');
	}

	function sendOmnitureEvent() {
		var omniVars = {};
		omniVars.events = "event63";
		omniVars.linkTrackEvents = "event63";
		s_account = digitalData.settings.reportSuites;
		var turnkeyLightboxDescription = s_dtm.pageName + ':Email Sign-up Form:Toaster';
		OmniPrep(omniVars, turnkeyLightboxDescription);
	}

	var scrollHandler = function () {
		var maxScroll = jQuery(document).height() - jQuery(window).height();
		var scrollValue;
		var timeOutval = parsedFile.field_toaster_timeout;
		var toasterPos = parsedFile.field_toaster_position;
		var displayrate = parsedFile.field_display_rates;
		var tkeyHt = parsedFile.field_turnkey_height;
		if (toasterPos == 'From Bottom') {
			scrollValue = maxScroll - tkeyHt;
		} else {
			scrollValue = tkeyHt;
		}
		if (jQuery(this).scrollTop() >= scrollValue && (jQuery.cookie('turnkeyPassCookie') == null || jQuery.cookie('turnkeyPassCookie') == undefined)) {
			jQuery("#lightBoxContent.lightBoxContent.tkt").removeClass('hidetoaster').addClass('show_toaster');

			var turnkeyLightboxOmniVars = {};
			turnkeyLightboxOmniVars.eVar52 = 'Toaster:Email Sign-up Form';
			turnkeyLightboxOmniVars.events = "event62";
			turnkeyLightboxOmniVars.linkTrackEvents = "event62";
			s_account = digitalData.settings.reportSuites;
			var turnkeyLightboxDescription = digitalData.page.pageInfo.pageName + ':Email Sign-up Form:Toaster';
			OmniPrep(turnkeyLightboxOmniVars, turnkeyLightboxDescription);
			jQuery("#tktContainer .lightBoxContent.tkt .submit").live("click", function () {
				sendOmnitureEvent();
			})

			jQuery("#lightBoxContent.lightBoxContent.tkt .lightBoxClose.turnKeyClose a").click(function () {
				hideToaster();
				if (!WMG.Utils.isUser("administrator") && !WMG.Utils.isUser("Reviewer")) {
					jQuery.cookie("turnkeyPassCookie", 1);
				}
			});

			if (!WMG.Utils.isUser("administrator") && !WMG.Utils.isUser("Reviewer")) {
				timeout = setTimeout(hideToaster, timeOutval);
				var touchStart = ((document.ontouchstart !== null) ? 'click' : 'touchstart');

				jQuery("#tktContainer .lightBoxContent").live({
					mouseover: function () {
						clearTimeout(timeout);
					},
					mouseout: function () {
						timeout = setTimeout(hideToaster, timeOutval);
					},
					focus: function () {
						clearTimeout(timeout);
						jQuery("#tktContainer .lightBoxContent").die('mouseout');
					},
					blur: function () {
						timeout = setTimeout(hideToaster, timeOutval);
						jQuery("#tktContainer .lightBoxContent").live('mouseout', function () {
							timeout = setTimeout(hideToaster, timeOutval);
						});
					}
				});

				jQuery(".lightBoxContent.tkt").live({
					touchstart: function () {
						clearTimeout(timeout);
					},
					touchcancel: function () {
						timeout = setTimeout(hideToaster, timeOutval);
					}
				});
			}
			jQuery(window).unbind('scroll', scrollHandler);
		}
	};
	var createToaster = function () {
		var template;
		jsonOutput = jQuery(".view-id-turnkey_lightbox_toaster.view-display-id-block_2 .view-content").html();
		var initiateTkt = function () {
			jQuery("body").addClass("toaster");
			SplashLightbox.init('{"blockSelector" : "#tktContainer", "isLightBox":"lightbox","displayRate":"' + parsedFile.field_display_rates + '","cookieName":"turnkey-toaster-cookie","lboxHeight":"200","lboxWidth":"800"}');
			$jq18('#tktContainer .lightBoxContent.tkt #lightBoxSignup').wmgSignUpForm(wmgSignUpFormOptions);
			if (ONEPAGE.mq.tabletNarrower) {
				$jq18('body > .lightBoxContent.tkt #lightBoxSignup').wmgSignUpForm(wmgSignUpFormOptions);
			}
		};
		if (jsonOutput !== null && JSON.parse(jsonOutput.trim()).length > 0) {
			jsonOutput = jsonOutput.trim();
			parsedFile = JSON.parse(jsonOutput)[0].parent;
			parsedFile.title = parsedFile.title.substring(0, 204);
			if (parsedFile.field_newsletter_id !== "" && parsedFile.field_newsletter_id !== null) {
				if (parsedFile.field_mailing_list_params_toast !== null && parsedFile.field_mailing_list_params_toast !== "" && parsedFile.field_mailing_list_params_toast !== undefined) {
					var mlistArr = parsedFile.field_mailing_list_params_toast.split("&amp;");
					var targetElement = jQuery('.turnKeyToaster .primary-list-values');
					createMailinglistParams(mlistArr, targetElement);
				}
				if (parsedFile.field_mailing_list_params_se !== null && parsedFile.field_mailing_list_params_se !== "" && parsedFile.field_mailing_list_parameters_se !== undefined) {
					var mlistArr = parsedFile.field_mailing_list_params_se.split("&amp;");
					var targetElement = jQuery('.turnKeyToaster .secondary-list-values');
					createMailinglistParams(mlistArr, targetElement);
				}
				template = jQuery('.turnKeyToaster').html();
			}
			var html = template.supplant(parsedFile);

			jQuery('#tktContainer').append(html);
			if (parsedFile.field_preview_mode.toLowerCase() === 'true') {
				if (WMG.Utils.isUser("administrator") || WMG.Utils.isUser("Reviewer")) {
					initiateTkt();
					jQuery(window).scroll(scrollHandler);
				}
			} else {
				initiateTkt();
				jQuery(window).scroll(scrollHandler);
			}
		}
	}

	var createMailinglistParams = function (params, targetElement) {
		if (params != "") {
			params.shift();
			var mlistObj = {};

			jQuery.each(params, function (key, value) {
				var listArr = value.split("=")
				mlistObj[listArr[0]] = listArr[1];
			});

			jQuery.each(mlistObj, function (key, value) {
				if (targetElement.find("input[name='" + key + "']").length > 0) {
					targetElement.find("input[name='" + key + "']").attr("value", value);
				} else {
					targetElement.append('<input id="mailinglistParams" name="' + encodeURIComponent(key) + '" type="hidden" value="' + encodeURIComponent(value) + '">')
				}
			});
		}

	}

	var createTurnKeyLightbox = function () {
		var jsonOutput = jQuery(".view-id-turnkey_lightbox_toaster.view-display-id-block_1 .view-content").html();
		if (jsonOutput !== null && JSON.parse(jsonOutput.trim()).length > 0) {
			jQuery("body").addClass("tklightbox");
			jsonOutput = jsonOutput.trim();
			var parsedFile = JSON.parse(jsonOutput)[0].parent;
			parsedFile.title = parsedFile.title.substring(0, 204);
			turnkeyLightboxTitle = parsedFile.title.substring(0, 204);
			var template;
			var lightboxType = "";
			function captureOmniture() {
				var omniVars = {};
				omniVars.eVar52 = "Lightbox:" + lightboxType;
				omniVars.events = "event62";
				omniVars.linkTrackEvents = "event62";
				omniVars.description = digitalData.page.pageInfo.pageName + ":" + turnkeyLightboxTitle + ":Lightbox";
				OmniPrep(omniVars, omniVars.description);

				function sendLightboxEvent() {
					var omniVars = {};
					omniVars.events = "event63";
					omniVars.linkTrackEvents = "event63";
					s_account = digitalData.settings.reportSuites;
					var turnkeyLightboxDescription = s_dtm.pageName + ':Email Sign-up Form:Lightbox';
					OmniPrep(omniVars, turnkeyLightboxDescription);
				}
				jQuery("#tklbContainer .lightBoxContent.tklb .submit").live("click", function () {
					sendLightboxEvent();
				})
				$jq18('.lightBoxContent.tklb .merchLink a').on("click", function () {
					var description = digitalData.page.pageInfo.pageName + ":lightbox:" + turnkeyLightboxTitle + ":click";
					OmniPrep(omniVars, description);
				});
				$jq18('.lightBoxContent.tklb .genericCTA a').on("click", function () {
					var description = digitalData.page.pageInfo.pageName + ":lightbox:" + turnkeyLightboxTitle + ":click";
					OmniPrep(omniVars, description);
				});
				$jq18('.lightBoxContent.tklb .lightBoxClose a').on("click", function () {
					var description = digitalData.page.pageInfo.pageName + ":Lightbox: Close:Click";
					OmniPrep(omniVars, description);
				});
			};
			if (parsedFile.field_newsletter_id !== "" && parsedFile.field_newsletter_id !== null) {
				if (parsedFile.field_mailing_list_parameters !== null && parsedFile.field_mailing_list_parameters !== "" && parsedFile.field_mailing_list_parameters !== undefined) {
					var mlistArr = parsedFile.field_mailing_list_parameters.split("&amp;");
					var targetElement = jQuery('#turnkeyLightbox .mlistTemplate .primary-list-values');
					createMailinglistParams(mlistArr, targetElement);
				}
				if (parsedFile.field_mailing_list_parameters_se !== null && parsedFile.field_mailing_list_parameters_se !== "" && parsedFile.field_mailing_list_parameters_se !== undefined) {
					var mlistArr = parsedFile.field_mailing_list_parameters_se.split("&amp;");
					var targetElement = jQuery('#turnkeyLightbox .mlistTemplate .secondary-list-values');
					createMailinglistParams(mlistArr, targetElement);
				}
				template = jQuery('#turnkeyLightbox .mlistTemplate').html();
				lightboxType = "Newsletter";
			} else if (parsedFile.field_merch_item_name !== "" && parsedFile.field_merch_item_name !== null) {
				template = jQuery('#turnkeyLightbox .merchTemplate').html();
				lightboxType = "Product Promotion";
			} else {
				var ctaObj = jQuery.parseJSON(parsedFile.field_cta_button_1);
				var ctaDom = '';
				for (var key in ctaObj) {
					var ctaDiv = document.createElement('div');
					ctaDiv.className = "genericCTA";
					var ctaA = document.createElement('a');
					ctaA.setAttribute("href", ctaObj[key]);
					ctaA.setAttribute("target", "_blank");
					ctaA.innerHTML = key;
					ctaDiv.appendChild(ctaA);
					jQuery('#turnkeyLightbox .genericDesc').append(ctaDiv);
				}
				template = jQuery('#turnkeyLightbox .genericTemplate').html();
				lightboxType = "General";
			}
			var html = template.supplant(parsedFile);
			jQuery('#tklbContainer').append(html);
			if (parsedFile.field_trigger_id === "") {
				jQuery('#tklbContainer #triggerId').remove();
			}
			if (parsedFile.field_data_ext === "") {
				jQuery('#tklbContainer #dataext').remove();
			}
			var hideImage = {};
			hideImage.callBacks = {
				"onSuccess": function () {
					jQuery(".turnKeyImageWrapper").hide();
				}
			};
			var initiateTklb = function () {
				SplashLightbox.init('{"blockSelector" : "#tklbContainer", "isLightBox":"lightbox","displayRate":"' + parsedFile.field_display_rate + '","cookieName":"turnkey-lightbox-cookie","lboxHeight":"400","lboxWidth":"800"}');
				pageNameOption.customPageName = turnkeyLightboxTitle;
				$jq18('#tklbContainer .lightBoxContent.tklb #lightBoxSignup').wmgSignUpForm(pageNameOption);
				if (ONEPAGE.mq.tabletNarrower) {
					$jq18('body > .lightBoxContent.tklb #lightBoxSignup').wmgSignUpForm(pageNameOption);
				}
				$jq18(window).on("load", function () {
					captureOmniture();
				})
			}
			if (parsedFile.field_preview_mode.toLowerCase() === 'true') {
				if (WMG.Utils.isUser("administrator") || WMG.Utils.isUser("Reviewer")) {
					initiateTklb();
				}
			} else {
				initiateTklb();
			}
		}
	};
	var init = function (options) {
		jQuery.extend(true, wmgSignUpFormOptions, options);
		if (wmgSignUpFormOptions.option === "createToaster") {
			if ((ONEPAGE.mq.tabletNarrower && !jQuery("body > .lightBoxContent").is(":visible")) || (ONEPAGE.mq.tabletWider)) {
				createToaster();
			}
		} else {
			jQuery.extend(true, pageNameOption, options);
			createTurnKeyLightbox();
		}
	}
	return {
		init: init
	}
})();
