﻿/*
<!--<{ [GOLD type="substitution"] 
[Substitution value="cdfull.cdtv.lab" parameter="Site"/]
[Substitution value="29924b37-83f7-4a85-b83e-32210e65e712" parameter="SystemId"/]
[Substitution value="ba2052cf-7a9b-45a9-b74f-79bf1ff3eeef" parameter="ChannelId"/]
}> --> 
*/

/// <reference path="https://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.7.js" />
/// <reference path="https://ajax.aspnetcdn.com/ajax/mvc/2.0/MicrosoftMvcValidation.debug.js" />
/// <reference path="https://ajax.aspnetcdn.com/ajax/3.5/MicrosoftAjax.debug.js" />
/// <reference path="https://ajax.aspnetcdn.com/ajax/mvc/2.0/MicrosoftMvcValidation.debug.js" />
/// <reference path="https://ajax.aspnetcdn.com/ajax/mvc/2.0/MicrosoftMvcAjax.debug.js" />
/// <reference path="http://paramount.contentdirect.tv/Html/Full/v4.2.1/SampleSite/Scripts/contentdirect.ui.js" />
/// <reference path="http://paramount.contentdirect.tv/Html/Full/v4.2.1/SampleSite/Scripts/contentdirect.ui.client.js" />
/*****************************************************************************************************/
/*  Configuration Override
/*****************************************************************************************************/
//$.cd.beforeInitialize(function () {
//	var browser = $.cd.get_browserInfo();
//	browser.dataOS = [
//				{
//					string: navigator.userAgent,
//					subString: "Android",
//					identity: "Android",
//                    type: 16,
//                    player: 'spf',
//                    playerLocation: 'flash/player/%version%/ClientBin'
//				},
//				{
//					string: navigator.userAgent,
//					subString: "iPad",
//					identity: "iPad",
//                    type: 11,
//                    player: 'spa',
//                    playerLocation: ''
//				},
//				{
//					string: navigator.userAgent,
//					subString: "iPhone",
//					identity: "iPhone/iPod",
//                    type: 10,
//                    player: 'spa',
//                    playerLocation: ''
//				},
//				{
//					string: navigator.userAgent,
//					subString: "Win",
//					identity: "Windows",
//                    type: 4,
//                    player: 'spf',
//                    playerLocation: 'flash/player/%version%/ClientBin'
//				},
//				{
//					string: navigator.userAgent,
//					subString: "Mac",
//					identity: "Mac",
//                    type: 2,
//                    player: 'spf',
//                    playerLocation: 'flash/player/%version%/ClientBin'
//				},				
//				{
//					string: navigator.userAgent,
//					subString: "Linux",
//					identity: "Linux",
//                    type: 3,
//                    player: 'sps',
//                    playerLocation: 'sl/player/%version%/ClientBin'
//				}
//			]
//});

/*****************************************************************************************************/
/*  Configuration
/*****************************************************************************************************/

//Production
var systemId = "5efb4b56-fe68-4ce9-8d5e-a5720970bdf3";
var channelId = "a73c9009-a442-4556-b6f8-251b0840c963";
var clientUrl = "www.paramountmovies.com/";

//Sandbox
//var systemId = "1d226865-6889-4479-ba39-3fc5053a8c48";
//var channelId = "63aa904d-958e-44ad-a068-ace74e2cd663";
//var clientUrl = "cdn.sbx1.cdops.net/ClientServices/Clients/Paramount/D2CTesting/42_Base_Reference_Build/";
//var clientUrl = "apps.paramountpictures.com/csgsystems/TestSites/Paramount_D2C/SBX-42/us/";

var customCssUrl = "https://" + clientUrl + "Content/StyleSheets/cdfull_iframe.css";
var resourceUrl = "https://" + clientUrl + "Scripts/resources.js";
var convivaId = "c3.CSG";
var customDLMXAPLocation = "http://" + clientUrl + "ClientBin/Paramount.DLM.xap";
//var customDLMXAPLocation = "http://" + clientUrl + "ClientBin/ContentDirect.UI.Storefront.Init.xap";
var language = "en-US";

$pages = {
	index: "http://" + clientUrl + "index.html",
	loginPage: "https://" + clientUrl + "login.html",
	registerPage: "https://" + clientUrl + "login.html?destination=register",
	playerPage: "http://" + clientUrl + "index.html",
	productPage: "http://" + clientUrl + "productdetail.html",
	helpPage: "http://" + clientUrl + "help.html",
	mylibraryPage: "http://" + clientUrl + "mylibrary.html",
	orderingPage: "https://" + clientUrl + "ordering.html",
	accountPage: "https://" + clientUrl + "accountmanagement.html?destination=profile",
	errorPage: "http://" + clientUrl + "error.html",
	paymentPage: "https://" + clientUrl + "accountmanagement.html?destination=payments",
	orderPage: "https://" + clientUrl + "accountmanagement.html?destination=orders",
	addressPage: "http://" + clientUrl + "accountmanagement.html?destination=addresses",
	subscriptionPage: "http://" + clientUrl + "accountmanagement.html?destination=subscriptions",
	ecopyuvRegistration: "http://" + clientUrl + "ecopyuvregistration.html",
	uvRegistration: "http://" + clientUrl + "uvregistration.html",
	pricingOptions: "http://" + clientUrl + "pricingOptions.html",
	ecopy: "http://" + clientUrl + "ecopy.html",
	ecopyLogin: "http://" + clientUrl + "ecopylogin.html",
	searchPage: "http://" + clientUrl + "search.html",
	aboutuv: "http://" + clientUrl + "aboutuv.html"
};

/*****************************************************************************************************/
/* Analytics
/*****************************************************************************************************/
var _gaq = _gaq || [];
_gaq.push(['_setAccount', 'UA-27193000-2']);
_gaq.push(['_trackPageview']);
_gaq.push(['_trackPageLoadTime']);

(function () {
	var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
	ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
	var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
})();

/*****************************************************************************************************/
/* Common Methods
/* this will be moved at the end of HF2 once pattterned code is in.
/*****************************************************************************************************/
(function () {
	$client = (function () {
		_initParams = 'SystemId={0},ChannelId={1},DeviceType=1,Language={6},CustomLoaderPage=,DynamicCSS={3},Resources={4},ConvivaCustomerId={5}';
		_systemId = systemId;
		_chId = channelId;
		_currentServerUrl = window.location.host + "/";
		_customCssUrl = customCssUrl;
		_resourceUrl = resourceUrl;
		_convivaId = convivaId;
		_language = language;
		return {
			checkDependencies: function () {
				var cookieEnabled = (navigator.cookieEnabled) ? true : false

				//if not IE4+ nor NS6+
				if (typeof navigator.cookieEnabled == "undefined" && !cookieEnabled) {
					document.cookie = "testcookie"
					cookieEnabled = (document.cookie.indexOf("testcookie") != -1) ? true : false
				}

				return cookieEnabled;
			},
			updateClientSettings: function () {
				$.cd.setCookie("cd_systemId", _systemId, 600000);
				$.cd.setCookie("cd_channelId", _chId, 600000);
				$.cd.setCookie("cd_customCssUrl", _customCssUrl, 600000);
				$.cd.setCookie("cd_resourceUrl", _resourceUrl, 600000);
				$.cd.setCookie("cd_convivaId", _convivaId, 600000);
			},
			buildPlayerInitParams: function (containerId) {
				if (containerId == null)
					containerId = $('body').find('[cd]').attr('id');

				_systemId = $.cd.getQueryStringValue('systemId', $.cd.getCookie('cd_systemId'));
				_chId = $.cd.getQueryStringValue('channelId', $.cd.getCookie('cd_channelId'));
				_language = $.cd.getQueryStringValue('language', $.cd.getCookie('cd_language'));
				
				this.updateClientSettings();
				if (_systemId == "") {
					_systemId = systemId;
					_chId = channelId;
					_language = language;
				}
				_token = unescape($.cd.getQueryStringValue("___s")).length > 0 ? unescape($.cd.getQueryStringValue("___s")) : "";
				var initParams = "SsoToken={5},SystemId={0},ChannelId={1},MainAccentColor=#0645ae,LogoImageURL=,StorefrontLocation={8},PlayerLayoutTypeCode=5,Width=0,Height=0,PlayerSkinTypeCode=1,Language={9},NonSilverlightImageURL=http://hwcdn.net/n8v4q7r8/cds/Player/paramount/PlayerNonSilverlightParamount.jpg,WindowlessMode=False,Language=en-US,DelayLoadPlayer=0,PreloadBackgroundImageURL=,DelayLoadPlayerImageUrl=http://hwcdn.net/n8v4q7r8/cds/DelayImage.jpg,XapLocation={2},ProductIdToPlay={3},PricingPlanIdToPlay={4},AutoPlay=1,Login={6},ConvivaCustomerId={7},LeaveControllerVisible=1";
				initParams = initParams.replace("{0}", _systemId);
				initParams = initParams.replace("{1}", _chId);
				initParams = initParams.replace("{2}", $.cd.getServerUrl($.cd.get_browserInfo().playerLocation, false));
				initParams = initParams.replace("{3}", $.cd.getQueryStringValue("___pId"));
				initParams = initParams.replace("{4}", $.cd.getQueryStringValue("___pPlanId"));
				initParams = initParams.replace("{5}", _token);
				initParams = initParams.replace("{6}", $.cd.getQueryStringValue("___l"));
				initParams = initParams.replace("{7}", _convivaId);
				initParams = initParams.replace("{8}", $.cd.getServerUrl($.cd.get_browserInfo().playerLocation, false) + "/");
				initParams = initParams.replace("{9}", _language);
				$('#' + containerId).attr('initParams', initParams);
			},
			buildDownloadInitParams: function (containerId, width, height) {
				if (containerId == null)
					containerId = $('body').find('[cd]').attr('id');

				_systemId = $.cd.getQueryStringValue('systemId', $.cd.getCookie('cd_systemId'));
				_chId = $.cd.getQueryStringValue('channelId', $.cd.getCookie('cd_channelId'));
				_language = $.cd.getQueryStringValue('language', $.cd.getCookie('cd_language'));
				
				this.updateClientSettings();
				if (_systemId == "") {
					_systemId = systemId;
					_chId = channelId;
					_language = language;
				}
				_token = unescape($.cd.getQueryStringValue("___s")).length > 0 ? unescape($.cd.getQueryStringValue("___s")) : "";
				var initParams = "XapUrl={0},Language={7},Width={1},Height={2},ProductIdToPlay={3},PricingPlanIdToPlay={4},SsoToken={5},Login={6}";
				initParams = initParams.replace("{0}", customDLMXAPLocation);
				initParams = initParams.replace("{1}", width);
				initParams = initParams.replace("{2}", height);
				initParams = initParams.replace("{3}", $.cd.getQueryStringValue("___pId"));
				initParams = initParams.replace("{4}", $.cd.getQueryStringValue("___pPlanId"));
				initParams = initParams.replace("{5}", _token);
				initParams = initParams.replace("{6}", $.cd.getQueryStringValue("___l"));
				initParams = initParams.replace("{7}", _language);
				$('#' + containerId).attr('initParams', initParams);
			},
			buildInitParams: function (containerId) {
				if (containerId == null)
					containerId = $('body').find('[cd]').attr('id');

				_systemId = $.cd.getQueryStringValue('systemId', $.cd.getCookie('cd_systemId'));
				_chId = $.cd.getQueryStringValue('channelId', $.cd.getCookie('cd_channelId'));
				_language = $.cd.getQueryStringValue('language', $.cd.getCookie('cd_language'));
				this.updateClientSettings();
				if (_systemId == "") {
					_systemId = systemId;
					_chId = channelId;
					_language = language;
				}
				var initParams = _initParams.replace("{0}", _systemId);
				initParams = initParams.replace("{1}", _chId);
				initParams = initParams.replace("{3}", _customCssUrl);
				initParams = initParams.replace("{4}", _resourceUrl);
				initParams = initParams.replace("{5}", _convivaId);
				initParams = initParams.replace("{6}", _language);
				$('#' + containerId).attr('initParams', initParams);
			},
			setProductInfo: function (productId, pricingId) {
				$.cd.setCookie("cd_productId", productId, 600000);
				$.cd.setCookie("cd_pricingId", pricingId, 600000);
			},
			getProductInfo: function () {
				var productId = $.cd.getQueryStringValue('productId') || $.cd.getCookie("cd_productId");
				var pricingId = $.cd.getQueryStringValue('pricingId') || $.cd.getCookie("cd_pricingId");
				var subProdId = $.cd.getQueryStringValue('subProdId');
				var isUvPr = $.cd.getQueryStringValue('isUvPr') == "" ? false : $.cd.getQueryStringValue('isUvPr').toBoolean();
				var productQuery = "productId=" + productId + "&pricingId=" + pricingId;
				if ($.cd.getQueryStringValue('isUvPr') != "")
					productQuery += "&isUvPr=" + $.cd.getQueryStringValue('isUvPr');

				if (subProdId == "")
					subProdId = null;
				else
					productQuery = productQuery + "&subProdId=" + subProdId;

				return { productId: productId, pricingId: pricingId, subProdId: subProdId, isUvPr: isUvPr, query: productQuery };
			},
			trackPage: function (page) {
				//google analytics
				if (window["_gaq"] === 'undefined' && _gaq == null)
					return;

				_gaq.push(['_trackPageview', page]);
			},
			isIE7: function () {
				var result = false;
				if (/MSIE (\d+\.\d+);/.test(navigator.userAgent)) {
					var ieversion = new Number(RegExp.$1)
					if (ieversion <= 7)
						result = true;
				}
				return result;
			}
		};
	})();
})();


function showMessageBlocker(content, overlayOpacity, opacity, left, top, height) {
    //	$.blockUI(b{
    //		css: { rwidth: height, aleft: left, ntop: top, dbackgroundColor: '#000', opacity: null == opacity ? 0.7 : opacity, nborder: 'none', background: 'none' },
    //		overlayCSS: { opacity: null == overlayOpacity ? 0.2 : overlayOpacity },
    //		message: null != content ? content : '<div class="processing"><img src="Content/Assets/ajaxLoader.gif" alt="Please wait..."/></div>'
    //	});
    //	$(".blockUI").css("cursor", "default");
}

/*****************************************************************************************************/
/*  Common element visibility check
/*****************************************************************************************************/

function gotoErrorPage(error) {
	$.cd.log(error.message);
	if (error == null || (error.data != ContentDirect.UI.ErrorType.SessionExpired && error.message.search('SessionExpired') < 0)) {
		if (window["ContentDirectAPI"] != undefined) {
			if (null != error && null != error.message['FaultDetails']) {
				//Pox request error
			}
			else if (null != error && (error.message.indexOf("PricingPlanNotFound") != -1)) {
			    redirectPage($pages.errorPage, "___errorTypeId=2");
			}
			else if (null != error && (error.data.indexOf("AgeRestriction") != -1 || error.message.indexOf("ProductNotFound") != -1 )) {
			    redirectPage($pages.errorPage, "___errorTypeId=3");
			}
			else if (null != error && (error.data.indexOf("Play") != -1 && error.message.indexOf("BaseFault") != -1 ))  {
			    redirectPage($pages.errorPage, "___errorTypeId=4");	
			}
			else if (null != error && (error.data.indexOf("Play") != -1 && error.message.indexOf("60") != -1 ))  
			    redirectPage($pages.errorPage, "___errorTypeId=5");	
			else
				redirectPage($pages.errorPage, "___errorTypeId=1");
		}
		else
			window.location = "http://" + ___paUrl + "error.html";
	}
	else {
		redirectPage($pages.loginPage, "___sessionExpired=true");
	}
}

function gotoEcopyErrorPage(error, destination) {
	if (error == null || (error.data != ContentDirect.UI.ErrorType.SessionExpired && error.message.search('SessionExpired') < 0)) {
		if (window["ContentDirectAPI"] != undefined) {
			if (null != error && null != error.message['FaultDetails']) {
				//Pox request error
			}
			else if (null != error && error.message.indexOf("ProductNotFound") != -1) {

				if (ContentDirectAPI.get_isAuthenticated()) {
					redirectPage($pages.errorPage, "___errorTypeId=2");
				}
				else {
					redirectPage($pages.ecopyLogin + "?destination=ecopy");
				}

				//This line will redirect the user to the error page with a message tailored to the ProductNotFound fault
				//ContentDirectAPI.navigateToHTML("error.html?___errorTypeId=2");
			}
			else
				redirectPage($pages.errorPage, "___errorTypeId=1");
		}
		else
			window.location = "http://" + ___paUrl + "error.html";
	}
	else {
		redirectPage($pages.ecopyLogin, "___sessionExpired=true");
	}
}

function navigateBasedOnDestination(destination) {
	if (null == destination)
		destination = $.cd.getQueryStringValue("destination");
	switch (destination) {
		case "mylibrary":
			targetLocation = $pages.mylibraryPage;
			break;
		case "ordering":
			targetLocation = $pages.orderingPage + "?" + $client.getProductInfo().query;
			break;
		case "account":
			targetLocation = $pages.accountPage;
			break;
		case "index":
			targetLocation = $pages.index;
			break;
		default:
			if (destination.length > 0) {
				targetLocation = $pages[destination];
			}
			else {
				targetLocation = $pages.index;
			}
			break;
	}

	ContentDirectAPI.navigateToHTML(targetLocation);
}

function hideStorefrontContainer() {
	var targetId = "#" + $.cd.get_containerInfo().containerId;
	$.cd.showBlocker();
	initializeMenu();
	$('#footerWrapper').hide();

	$(targetId).css('visibility', 'hidden');
}

function showStorefrontContainer() {
	var targetId = "#" + $.cd.get_containerInfo().containerId;

	$('.accountMenu').fadeIn('slow');

	$("ul.subnav").parent().append("<span></span>");
	$("ul.topnav li a.topTrigger").click(function () {
		$(this).parent().parent().find("ul.subnav").fadeIn('fast');
		$(this).parent().parent().hover(function () {
		}, function () {
			$(this).parent().find("ul.subnav").fadeOut('fast');
		});
	}).click(function () {
		$(this).addClass("subhover");
	}, function () {
		$(this).removeClass("subhover");
	});

    initializeMenu();
	$('#playerPageMenu ul').append('<li class="pagingItem mobile" id="first"><a href="aboutuv.html">About UV</a></li><li class="pagingItem mobile"><a href="aboutus.html">About Us</a></li><li class="pagingItem mobile"><a href="search.html">Search</a></li><li class="pagingItem mobile" id="last"><a href="redeemuv.html">Redeem Ultraviolet</a></li>');	
	$('#playerPageMenu ul').append('<li class="pagingItem uv"><a href="aboutuv.html">About</a></li>');
	$('#playerPageMenu ul').append('<li class="pagingItem aboutus"><a href="aboutus.html">About Us</a></li>');
	
    if (!$.cd.get_isMediaQueryEnabled())
        $('#cdPageMenu').fadeIn('slow');

	if (!$client.isIE7() && $(targetId).css('visibility') != 'visible') {
		$(targetId).fadeOut(function () {
			$(targetId).css('visibility', 'visible');
			$(targetId).fadeIn('slow', function () {
				$('#footerWrapper').fadeIn('slow');
			});
		});
	}
	else
		$(targetId).css('visibility', 'visible');
	$.cd.hideBlocker();
	window.scrollTo(0, 1);
}

function reset() {
	checkDependency();

	$('.headerContents').hide();
	$('._anonymous').hide();
	$('._authenticated').hide();

	$('#signUpStep').hide();
	$('#footerWrapper').hide();
	$('.accountMenu').hide();

	if ($.fancybox !== undefined) {
		$('.joinButton').fancybox({
			'speedIn': 700,
			'speedOut': 300,
			'margin': 0,
			'padding': 0,
			'autoScale': false,
			'type': 'inline',
			'href': !ContentDirectAPI.get_isAuthenticated() ? '._anonymous .joinMenuContainer' : '._authenticated .joinMenuContainer'
		});

		$('#menuButton').fancybox({
			'speedIn': 700,
			'speedOut': 300,
			'margin': 0,
			'padding': 0,
			'autoScale': false,
			'type': 'inline',
			'href': '#playerPageMenu'
		});
	}

	$('.searchButtonContainer a').click(function () {
		$client.trackPage('/Header/Search/');
		var searchValue = "";
		if (!ContentDirectAPI.get_isAuthenticated())
			//searchValue = !$.cd.get_browserInfo().mediaQueryMode ? $('._full ._anonymous .searchButtonContainer input').val() : $('._mobile ._anonymous .searchButtonContainer input').val();
			searchValue = !$.cd.get_browserInfo().mediaQueryMode ? $('.topnavContainer .searchButtonContainer input').val() : $('.topnavContainer .searchButtonContainer input').val();
		else
			//searchValue = !$.cd.get_browserInfo().mediaQueryMode ? $('._full ._authenticated .searchButtonContainer input').val() : $('._mobile ._authenticated .searchButtonContainer input').val();
			searchValue = !$.cd.get_browserInfo().mediaQueryMode ? $('.searchButtonContainer input').val() : $('.searchButtonContainer input').val();
		redirectPage($pages.searchPage, "keyword=" + searchValue);
	}
	);
	$('.searchButtonContainer input').bind('keypress', function (e) {
		if (e.which == 13) {
			$(this).blur();
			if ($('.searchButtonContainer a').length > 0)
				$('.searchButtonContainer a').focus().click();
		};
	});

	$('.loginButtonContainer a').click(function () { redirectPage($pages.index); });
	$('.helpButtonContainer a').click(function () { redirectPage($pages.helpPage); });
	$('.loginButtonContainer a').click(function () { redirectPage($pages.loginPage); });
	$('.signUpButtonContainer a').click(function () { redirectPage($pages.registerPage); });
	$('.accountButtonContainer a').click(function () { redirectPage($pages.accountPage); });
	$('.orderButtonContainer a').click(function () { redirectPage($pages.orderPage); });
	$('.paymentButtonContainer a').click(function () { redirectPage($pages.paymentPage); });
	$('.addressesButtonContainer a').click(function () { redirectPage($pages.addressPage); });
	$('.subscriptionsButtonContainer a').click(function () { redirectPage($pages.subscriptionPage); });
	$('.logoutButtonContainer a').click(function () {
		$.cd.showBlocker();
		ContentDirectAPI.logout();
	});

	$('.libraryButtonContainer a').click(function () {
		if (!ContentDirectAPI.get_isAuthenticated())
			redirectPage($pages.loginPage, "destination=mylibrary");
		else
			redirectPage($pages.mylibraryPage);
	});

	$client.buildInitParams();
}

function initializeMenu() {
	if (window['ContentDirectAPI'] != 'undefined' && !ContentDirectAPI.get_isAuthenticated()) {
		$('._authenticated').hide();
		$('._anonymous').fadeIn();
	}
	else {
		if (null != ContentDirectAPI.get_loginInfo() && null != ContentDirectAPI.get_loginInfo().name) {
			$('.userName').html(String($('.userName').html()).replace('{0}', ContentDirectAPI.get_loginInfo().name.split(' ')[0]));
			$('._authenticated').fadeIn('slow');
			$('._anonymous').hide('show');
		}
	}

	$('.headerContents').fadeIn('slow');
}


function checkDependency() {
  if (!$client.checkDependencies() || ($.cd.get_browserInfo().browser == "Internet Explorer" && $.cd.get_browserInfo().version < 8)) {
        window.location = "dependency.html";
        return;
    }
}


function redirectPage(pageName, query) {
	ContentDirectAPI.navigateToHTML(pageName + (!query ? "" : "?" + query));
}


/*****************************************************************************************************/
/*  Index Page
/*****************************************************************************************************/
function initializeIndex() {
	reset();
	ContentDirectAPI.initialize(
		function (result) {
			switch (result.command) {
				case 'BeforeLongInitialize':
					hideStorefrontContainer();
					break;
				case 'AfterInitialized':
					var pageId = $.cd.getQueryStringValue("pageId");					
					ContentDirectAPI.navigateToPlayerPage(pageId);
					break;
				case 'LogoutCompleted':
					redirectPage($pages.index);
					break;
				case 'ProductRequested':
					redirectPage($pages.productPage, "productId=" + result.message);
					break;
				case 'PageRequested':
					redirectPage($pages.playerPage, "pageId=" + result.message);
					break;
				case 'PricingPlanSelected':
					redirectPage($pages.orderingPage, "productId=" + result.arg.productId + "&pricingId=" + result.arg.pricingId);
					break;
				case 'NavigateCompleted':
					if (String(window.location.href).search('pageId=170') >= 0)
						$client.trackPage('/Header/Sections/Home/');
					else if (String(window.location.href).search('index') >= 0)
						$client.trackPage('/Header/Sections/Home/');
					else if (String(window.location.href).search('pageId=171') >= 0)
						$client.trackPage('/Header/ Sections/ActionSection/');
					else if (String(window.location.href).search('pageId=172') >= 0)
						$client.trackPage('/Header/ Sections/ComedySection/');
					else if (String(window.location.href).search('pageId=173') >= 0)
						$client.trackPage('/Header/ Sections/DramaSection/');
					else if (String(window.location.href).search('pageId=174') >= 0)
						$client.trackPage('/Header/ Sections/SciFiSection/');
					else if (String(window.location.href).search('pageId=175') >= 0)
						$client.trackPage('/Header/ Sections/HorrorSection/');
					switch (result.data) {
						case 'PlayerPage':
							showStorefrontContainer();
							break;
					}
					break;
				case 'MaintenanceMode':
					window.location = "dependency.html";
				default:
					break;
			}
		},
		function (error) {
			gotoErrorPage(error);
		});
}

/*****************************************************************************************************/
/*  Search page
/*****************************************************************************************************/
function initializeSearch() {
	reset();
	ContentDirectAPI.initialize(
		function (result) {
			switch (result.command) {
				case 'BeforeLongInitialize':
					hideStorefrontContainer("#cdPageContainer");
					break;
				case 'AfterInitialized':
					var searchKeyword = $.cd.getQueryStringValue("keyword");
					var searchKeyword2 = unescape(searchKeyword);
					ContentDirectAPI.navigateToProductSearch(searchKeyword2);
					break;
				case 'LogoutCompleted':
					redirectPage($pages.index);
					break;
				case 'ProductRequested':
					redirectPage($pages.productPage, "productId=" + result.message);
					break;
				case 'PageRequested':
					redirectPage($pages.index, "pageId=" + result.message);					
					break;
				case 'PricingPlanSelected':
					$client.setProductInfo(result.arg.productId, result.arg.pricingId);
					redirectPage($pages.orderingPage, "productId=" + result.arg.productId + "&pricingId=" + result.arg.pricingId + "&subProdId=" + result.arg.subProdId + "&isUvPr=" + result.arg.isUvPr);
					break;				
				case 'NavigateCompleted':
					$client.trackPage('/Header/Search/Completed/');
					if (result.data == ContentDirect.UI.Page.ProductSearch) {
						showStorefrontContainer();
					}
					break;
				default:
					break;
			}
		},
		function (error) {
			gotoErrorPage(error);
		}, '100%', '100%', false, false);
}

/*****************************************************************************************************/
/*  Product detail page
/*****************************************************************************************************/
function initializeProductDetail() {
	reset();
	ContentDirectAPI.initialize(
		function (result) {
			switch (result.command) {
				case 'BeforeLongInitialize':
					hideStorefrontContainer("#cdPageContainer");
					break;
				case 'AfterInitialized':
					var productId = $.cd.getQueryStringValue("productId");
					ContentDirectAPI.navigateToProductDetailPage(productId);
					break;
				case 'LogoutCompleted':
					redirectPage($pages.index);
					break;
				case 'ProductRequested':
					redirectPage($pages.productPage, "productId=" + result.message);					
					break;
				case 'PageRequested':
					redirectPage($pages.index, "pageId=" + result.message);					
					break;
				case 'PricingPlanSelected':
					$client.setProductInfo(result.arg.productId, result.arg.pricingId);
					if (result.arg.pricingId == 4669 || result.arg.pricingId == 4668 || result.arg.pricingId == 4670 || result.arg.pricingId == 4667)
						$client.trackPage('Buy HD');
					else if	(result.arg.pricingId == 4680 || result.arg.pricingId == 4679 || result.arg.pricingId == 4676 || result.arg.pricingId == 4675)
						$client.trackPage('Buy SD');
					else if	(result.arg.pricingId == 4674 || result.arg.pricingId == 4673 || result.arg.pricingId == 4672 || result.arg.pricingId == 4671)
						$client.trackPage('Rent HD');
					else if	(result.arg.pricingId == 4684 || result.arg.pricingId == 4683 || result.arg.pricingId == 4682 || result.arg.pricingId == 4681)
						$client.trackPage('Rent SD');	
					redirectPage($pages.orderingPage, "productId=" + result.arg.productId + "&pricingId=" + result.arg.pricingId + "&subProdId=" + result.arg.subProdId + "&isUvPr=" + result.arg.isUvPr);
					break;
				case 'Navigate':
					switch (result.data) {
						case 'MediaLocker':
							redirectPage($pages.mylibraryPage);
							break;
					}
					break;
				case 'Play':
					ContentDirectAPI.get_loginInfo().renew();
					var url = String(window.location).replace(window.location.pathname, "/mediaplayer.html") + "?___pId=" + result.data.productId;
					if (null != ContentDirectAPI.get_loginInfo().userName && "" != ContentDirectAPI.get_loginInfo().userName)
						url += "&___l=" + ContentDirectAPI.get_loginInfo().userName;
					url = url.replace("https", "http");
					window.open(url, "VOD", "status = 1, height = 480, width = 800, resizable = 1, scrollbars = 1,location=0");
					//ContentDirectAPI.navigateToHTML(url);
					break;
				case 'NavigateCompleted':
					switch (result.data) {
						case 'ProductDetailPage':
							$('#contentWrapper').attr('cdId', $.cd.getQueryStringValue("productId"));
							$('#contentWrapper').css('backgroundImage', 'url("' + result.arg.obj.imageUrl + '")');
							showStorefrontContainer();
							break;
					}
				default:
					break;
			}
		},
		function (error) {
			gotoErrorPage(error);
		}, '100%', '100%', false, false);
}

/*****************************************************************************************************/
/*  Help page
/*****************************************************************************************************/

function initializeHelp() {
	reset();
	ContentDirectAPI.initialize(
		function (result) {
			switch (result.command) {
				case 'BeforeLongInitialize':
					hideStorefrontContainer();
					break;
				case 'AfterInitialized':
					if (ContentDirectAPI.get_isAuthenticated()) {
						ContentDirectAPI.get_loginInfo().renew();
						var subscriberInfo = ContentDirectAPI.createSubscriberInfo(null, ContentDirectAPI.get_loginInfo().userName);
					}
					ContentDirectAPI.navigateToHelp();
					break;
				case 'LogoutCompleted':
					redirectPage($pages.index);
					break;
				case 'PageRequested':
					redirectPage($pages.playerPage, "pageId=" + result.message);
					break;
				case 'NavigateCompleted':
					$.cd.hideBlocker();
					showStorefrontContainer();

				default:
					break;
			}
		},
		function (error) {
			gotoErrorPage(error);
		}, '100%', '100%', false, false);
}

/*****************************************************************************************************/
/*  Login Page
/*****************************************************************************************************/

function initializeLogin() {
	$('#loginWelcome').hide();
	$('#loginSessionExpired').hide();

	reset();
	var ___sessionExpired = $.cd.getQueryStringValue("___sessionExpired");
	___sessionExpired = String(___sessionExpired).replace("?pass=", "&&&");
	___sessionExpired = String(___sessionExpired).split("&&&")[0];
	if (null != ___sessionExpired && "true" == ___sessionExpired) {
		$.cd.clearCookie();
	}
	ContentDirectAPI.initialize(
		function (result) {
		    switch (result.command) {
		        case 'BeforeLongInitialize':
		            hideStorefrontContainer();
		            break;
		        case 'AfterInitialized':
		            if (ContentDirectAPI.get_loginInfo().authenticateMode != ContentDirect.UI.AuthenticateMode.Authenticated) {
		                if ($.cd.getQueryStringValue("destination") != 'register')
		                    ContentDirectAPI.navigateToLogin();
		                else
		                    ContentDirectAPI.navigateToRegister();		              
		            }
		            else {

		                ContentDirectAPI.get_loginInfo().renew();

		                var uvFlow = $.cd.getQueryStringValue("uvFlow");
		                var destination = $.cd.getQueryStringValue("destination");
		                if (uvFlow != "" && uvFlow.toBoolean() === true) {
		                    if (destination == "")
		                        ContentDirectAPI.navigateToHTML($pages.uvRegistration + "?destination=index");
		                    else
		                        ContentDirectAPI.navigateToHTML($pages.uvRegistration + "?destination=" + destination);
		                }
		                else {
		                    navigateBasedOnDestination();
		                }
		            }
							          		             
		            break;
		        case 'LoginCompleted':
		            if (String(result.message).search('TempPassword') == -1) {
		                var isUvStepRequired = (typeof (result.data[ContentDirect.UI.Const.IS_UV_PRODUCT]) != "undefined"
												&& result.data[ContentDirect.UI.Const.IS_UV_PRODUCT] === true
												&& result.data.IsUvLinked === false) || ($client.getProductInfo().isUvPr && result.data.IsUvLinked === false);
		                if (isUvStepRequired) {
		                    var destination = $.cd.getQueryStringValue("destination");
		                    if (destination == "")
		                        ContentDirectAPI.navigateToHTML($pages.uvRegistration + "?destination=index");
		                    else
		                        ContentDirectAPI.navigateToHTML($pages.uvRegistration + "?destination=" + destination);
		                }
		                else {
		                    if (result.message != null && String(result.message).toLowerCase().search('Register') > 0)
		                        destination = "index";
		                    if ($.cd.getQueryStringValue("destination") == "register")
		                        destination = "index";
		                    navigateBasedOnDestination(destination);
		                }
		            }
		            break;
		        case 'LogoutCompleted':
		            redirectPage($pages.index);
		            break;
		        case 'Navigate':
		            hideStorefrontContainer();
		            $('#loginWelcome').hide();
		            $('#loginSessionExpired').hide();
		            break;
		        case 'PageRequested':
		            redirectPage($pages.playerPage, "pageId=" + result.message);
		            break;
		        case 'NavigateCompleted':
		            switch (result.data) {
		                case ContentDirect.UI.Page.Login:
		                    $client.trackPage('/Header/Log In/');
		                    $('#signUpStep').hide();
		                    $('#loginWelcome').show();
		                    if (null != ___sessionExpired && "true" == ___sessionExpired) {
		                        $('#loginSessionExpired').show();
		                    }
		                    $('#contentContainer').removeClass().addClass("loginContent");

		                    break;
		                case ContentDirect.UI.Page.Register:
		                    $client.trackPage('/Header/Sign Up/');
		                    // Show this, instead of hide. We'll rewrite the title for Registration. See below
		                    $('#loginWelcome').show();
		                    $('#loginWelcome h1').html('Create your Paramountmovies.com Account.');		                    
		                    //$('.grayHintBox').addClass("createAccount"); //=Tevi
		                    $('#loginSessionExpired').hide();
		                    $('#signUpStep').show();
		                    $('#contentContainer').removeClass().addClass("registerContent");
		                    break;
		                case ContentDirect.UI.Page.TempPassword:
		                    $client.trackPage('/login/temppassword');
		                    $('#loginWelcome').hide();
		                    $('#loginSessionExpired').hide();
		                    $('#signUpStep').hide();
		                    $('#contentContainer').removeClass().addClass("tempPasswordContent");
		                    break;
		                case ContentDirect.UI.Page.ForgotPassword:
		                    $client.trackPage('/login/forgotpassword');
		                    $('#loginWelcome').hide();
		                    $('#loginSessionExpired').hide();
		                    $('#signUpStep').hide();
		                    $('#contentContainer').removeClass().addClass("forgotPasswordContent");
		                    break;
		            }

		            showStorefrontContainer();
		            break;
		        default:
		            break;
		    }
		},
		function (error) {
		    gotoErrorPage(error);
		},
		'100%', '100%', false, false);
}

/*****************************************************************************************************/
/*  Account Management
/*****************************************************************************************************/
function openProfile() {
	$.cd.showBlocker();
	ContentDirectAPI.navigateToProfile();
}

function openOrders() {
	$.cd.showBlocker();
	ContentDirectAPI.navigateToOrders();
}

function openPayments() {
	$.cd.showBlocker();
	ContentDirectAPI.navigateToPayments();
}

function openSubscriptions() {
	$.cd.showBlocker();
	ContentDirectAPI.navigateToSubscriptions();
}

function openAddresses() {
	$.cd.showBlocker();
	ContentDirectAPI.navigateToAddresses();
}

function initializeAccountManagement() {
	reset();
	ContentDirectAPI.initialize(
		function (result) {
			switch (result.command) {
				case 'BeforeLongInitialize':
					hideStorefrontContainer();
					break;
				case 'AfterInitialized':
					if (ContentDirectAPI.get_loginInfo().authenticateMode != ContentDirect.UI.AuthenticateMode.Authenticated) {
						redirectPage($pages.loginPage, "destination=account");						
					}
					else {
						ContentDirectAPI.get_loginInfo().renew();
						var subscriberInfo = ContentDirectAPI.createSubscriberInfo(null, ContentDirectAPI.get_loginInfo().userName);
						switch ($.cd.getQueryStringValue("destination")) {
							case "orders":
								$client.trackPage('/Header/Account/Order History/');
								ContentDirectAPI.navigateToAccountManagementDirect(subscriberInfo, ContentDirect.UI.Page.Orders);
								break;
							case "payments":
								$client.trackPage('/Header/Account/Payment Methods/');
								ContentDirectAPI.navigateToAccountManagementDirect(subscriberInfo, ContentDirect.UI.Page.Payments);
								break;
							case "addresses":
								$client.trackPage('/Header/Account/Address Management/');
								ContentDirectAPI.navigateToAccountManagementDirect(subscriberInfo, ContentDirect.UI.Page.Addresses);
								break;
							case "subscriptions":
								ContentDirectAPI.navigateToAccountManagementDirect(subscriberInfo, ContentDirect.UI.Page.Subscriptions);
								break;
							case "profile":
							default:
								$client.trackPage('/Header/Account/Account Information/');
								ContentDirectAPI.navigateToAccountManagementDirect(subscriberInfo, ContentDirect.UI.Page.Profile);
								break;
						};
					}

					break;
				case 'PageRequested':
					redirectPage($pages.playerPage, "pageId=" + result.message);
					break;
				case 'LogoutCompleted':
					redirectPage($pages.index);
					break;
				case 'Navigate':
					//hideStorefrontContainer();
					break;
				case 'NavigateCompleted':
					switch (result.data) {
						case ContentDirect.UI.Page.Profile:
						case ContentDirect.UI.Page.Addresses:
						case ContentDirect.UI.Page.Payments:
						case ContentDirect.UI.Page.Orders:
							break;
					}
					showStorefrontContainer();

					break;
				default:
					break;
			}
		},
		function (error) {
			gotoErrorPage(error);
		},
		'100%', '100%', false, false);
}

/*****************************************************************************************************/
/*  UV registration page
/*****************************************************************************************************/
function initializeUvRegistration() {
	reset();
	ContentDirectAPI.initialize(
		function (result) {
			switch (result.command) {
				case 'BeforeLongInitialize':
					hideStorefrontContainer();
					break;
				case 'AfterInitialized':
					if (ContentDirectAPI.get_loginInfo().authenticateMode != ContentDirect.UI.AuthenticateMode.Authenticated)
						redirectPage($pages.loginPage, "destination=" + $.cd.getQueryStringValue("destination") + "&isUvPr=" + $.cd.getQueryStringValue("isUvPr"));
					else
						ContentDirectAPI.navigateToUvRegistration(true);
					break;
				case 'UVCompleted':
					navigateBasedOnDestination();
					break;
				case 'UVError':
					ContentDirectAPI.navigateToUvRegistration(true);
				case 'NavigateCompleted':
					$('#uvLoginTitle').show();
					//alert(result.data);					
					switch (result.data) { 
						case ContentDirect.UI.Page.UVLogin:
							$('#uvLoginTitle').show(); //=Tevi
						break;
						case ContentDirect.UI.Page.UVRegister:
							$('.hintBody .hintSection').html('<h4>Helpful Hint</h4><p>If you are creating a new account, make your UltraViolet Sign-In name the same as your Paramount Sign-In.</p><p>After signing up for an UltraViolet account, don\'t forget to check your email to activate your account within 72 hours.</p><p>For more information on UltraViolet visit the FAQ link at the bottom of the page. </p>');
						default:
						break; 
						} 
					showStorefrontContainer();
					break;
				case 'LogoutCompleted':
					redirectPage($pages.index);
					break;
				default:
					break;
			}
		},
		function (error) {
			gotoErrorPage(error);
		}, '100%', '100%', false, false);
}

/*****************************************************************************************************/
/*  Ordering Page
/*****************************************************************************************************/

function initializeOrdering() {
	reset();
	$('#orderWelcome').hide();
	$('#purchaseStep').hide();
	ContentDirectAPI.initialize(
		function (result) {
			switch (result.command) {
				case 'BeforeLongInitialize':
					hideStorefrontContainer();
					break;
				case 'AfterInitialized':
					var product = $client.getProductInfo();

		            var isUvStepRequired = (product.isUvPr && !ContentDirectAPI.get_loginInfo().isUvLinked);
		            if (isUvStepRequired) {
		                redirectPage($pages.uvRegistration, "destination=ordering&" + product.query);
		                return;
		            }
		            else if (ContentDirectAPI.get_loginInfo().authenticateMode != ContentDirect.UI.AuthenticateMode.Authenticated) {
		                redirectPage($pages.loginPage, "destination=ordering&" + product.query);
		            }
		            else {
		                ContentDirectAPI.get_loginInfo().renew();
		                if (null != product.productId && null != product.pricingId) {
		                    $('#purchaseStep').fadeIn("slow");
		                    var rcd = $.cd.getCookie('cd_rcd');
		                    var subscriberInfo = ContentDirectAPI.createSubscriberInfo(null, ContentDirectAPI.get_loginInfo().userName);
		                    var productInfo = ContentDirectAPI.createProductInfoWithId(product.productId, product.pricingId, null != rcd ? rcd : null, false, null);
		                    if (null != product.subProdId) {
		                        productInfo.subscriberProductId = product.subProdId;
		                        productInfo.orderType = "Renew";
		                    }
		                    ContentDirectAPI.navigateToSimpleCheckOutDirect(subscriberInfo, productInfo, {}, {});
		                    $.cd.deleteCookie('cd_rcd');
		                }
		                else
		                    redirectPage($pages.mylibraryPage);
		            }
		            break;
		        case 'LogoutCompleted':
		            redirectPage($pages.index);
		            break;
		        case 'PageRequested':
		            redirectPage($pages.playerPage, "pageId=" + result.message);
		            break;
		        case 'NavigateCompleted':
		            switch (result.data) {
		                case ContentDirect.UI.Page.CheckoutBilling:
		                    $client.trackPage('/checkout/billing');
		                    $('#orderWelcome').fadeIn("slow");
		                    $('#contentContainer').removeClass().addClass("orderingBillingContent");
		                    break;
		                case ContentDirect.UI.Page.CheckoutVerify:
		                    $client.trackPage('/checkout/verify');
		                    $('#orderWelcome').hide();
		                    $('#contentContainer').removeClass().addClass("orderingVerifyContent");
		                    break;
		                default:
		                    break;
		            }
		            showStorefrontContainer();
		            break;
		        case 'OrderCompleted':
		            $client.trackPage('/checkout/ordercompleted');
		            redirectPage($pages.mylibraryPage);
		            break;
		        case 'Navigate':
		            hideStorefrontContainer();
		            break;
		        default:
		            break;
		    }
		},
		function (error) {
			gotoErrorPage(error);
		},
		'100%', '100%', false, false);
}


/*****************************************************************************************************/
/*  Media Locker
/*****************************************************************************************************/
function initializeMedia() {
	reset();
	$('#mylibraryWelcome').hide();
	$('#silverlightInstall').hide();

	ContentDirectAPI.initialize(
	function (result) {
		switch (result.command) {
			case 'BeforeLongInitialize':
				hideStorefrontContainer();
				break;
			case 'AfterInitialized':
				if (ContentDirectAPI.get_loginInfo().authenticateMode != ContentDirect.UI.AuthenticateMode.Authenticated) {					
					redirectPage($pages.loginPage, "destination=mylibrary");
				}
				else {
					ContentDirectAPI.get_loginInfo().renew();
					ContentDirectAPI.navigateToMediaLocker();
				}
				break;
			case 'LogoutCompleted':
				redirectPage($pages.index);
				break;
			case 'PageRequested':
				redirectPage($pages.playerPage, "pageId=" + result.message);
				break;
			case 'PricingPlanSelected':
				$client.setProductInfo(result.arg.productId, result.arg.pricingId);
				redirectPage($pages.orderingPage, "productId=" + result.arg.productId + "&pricingId=" + result.arg.pricingId + "&subProdId=" + result.arg.subProdId + "&isUvPr=" + result.arg.isUvPr);
				break;
			case 'ProductRequested':				
				redirectPage($pages.productPage, "productId=" + result.message);
				break;
			case 'Navigate':
				hideStorefrontContainer();
				break;
			case 'NavigateCompleted':
				$('#noProductPopup').hide();
				switch (result.data) {
					case ContentDirect.UI.Page.UVLogin:
						$.cd.hideBlocker();
						$('#contentContainer').css('height', '');
						$('#contentContainer').removeClass().addClass("uvLoginContent");
						break;
					case ContentDirect.UI.Page.UVRegister:
						$.cd.hideBlocker();
						$('#contentContainer').css('height', '');
						if (!$('#contentContainer').hasClass("mylibraryContent"))
							$('#contentContainer').removeClass().addClass("mylibraryContent");
						break;
					default:
						$client.trackPage('/Header/My Movies/');
						$('#mylibraryWelcome').fadeIn('slow');
						if (parseInt(result.message) > 0) {
							checkSilverlight();
						}
						else {
							$.cd.hideBlocker();
							$('#noProductPopup').fadeIn('slow');
						}
						$('#footerWrapper').fadeIn();
						break;
				}
				showStorefrontContainer();
				break;
			case 'UVCompleted':
				switch (result.data) {
					case 'Link':
						ContentDirectAPI.navigateToMediaLocker();
						break;
					case 'Register':
						$('#contentContainer').removeClass().addClass("uvRegistrationContent");
						break;
				}
				break;
			case 'UVError':
				ContentDirectAPI.navigateToMediaLocker();
				break;
			case 'Play':
				ContentDirectAPI.get_loginInfo().renew();
				var url = String(window.location).replace(window.location.pathname, "/mediaplayer.html") + "?___l="
                            + ContentDirectAPI.get_loginInfo().userName
                            + "&___pId=" + result.data.productId
                            + "&___pPlanId=" + result.data.pricingId
                            + "&___s=" + escape(result.data.ssoToken);
				url = url.replace("https", "http");
				window.open(url, "VOD", "status = 1, height = 480, width = 800, resizable = 1, scrollbars = 1, location= 0");
				break;
			case 'PlayerModalClosed':
				ContentDirectAPI.reloadMediaLockerResults();
				break;
			default:
				break;
		}
	},
	function (error) {
		gotoErrorPage(error);
	},
	'100%', '100%', false, false);

	$('#installButton').click(function () {
		Silverlight.getSilverlight();
	});
}

function checkSilverlight() {
	//    if (!Silverlight.isInstalled('4.0.50524.0')) {
	//        showMessageBlocker($('#silverlightInstall')[0], 0.8, 1.0, '25%', '25%', '600px');
	//        $(".blockUI").css("cursor", "default");
	//    }
}

/*****************************************************************************************************/
/*  Error Page
/*****************************************************************************************************/

function initializeError() {
	reset();
	$('#loginWelcome').hide();

	var ___errorTypeId = $.cd.getQueryStringValue("___errorTypeId");
	if (null != ___errorTypeId && "2" == ___errorTypeId) {
		$('#tempUnavailableErrorMessage').hide();
		$('#ineligibleErrorMessage').hide();
		$('#uvAccountError').hide();
		$('#outputProtectionError').hide();
		$('#notAvailableErrorMessage').show();
	}
	else if (null != ___errorTypeId && "3" == ___errorTypeId) {
		$('#tempUnavailableErrorMessage').hide();
		$('#notAvailableErrorMessage').hide();
		$('#uvAccountError').hide();
		$('#outputProtectionError').hide();
		$('#ineligibleErrorMessage').show();
	}
	else if (null != ___errorTypeId && "4" == ___errorTypeId) {
		$('#tempUnavailableErrorMessage').hide();
		$('#notAvailableErrorMessage').hide();
		$('#ineligibleErrorMessage').hide();
		$('#outputProtectionError').hide();
		$('#uvAccountError').show();
	}
	else if (null != ___errorTypeId && "5" == ___errorTypeId) {
		$('#tempUnavailableErrorMessage').hide();
		$('#notAvailableErrorMessage').hide();
		$('#ineligibleErrorMessage').hide();
		$('#uvAccountError').hide();
		$('#outputProtectionError').show();
	}
	else {
		$('#notAvailableErrorMessage').hide();
		$('#ineligibleErrorMessage').hide();
		$('#uvAccountError').hide();
		$('#outputProtectionError').hide();
		$('#tempUnavailableErrorMessage').show();
	}

	ContentDirectAPI.initialize(
		function (result) {
			switch (result.command) {
				case 'BeforeLongInitialize':
					hideStorefrontContainer();
					break;
				case 'AfterInitialized':
					if (ContentDirectAPI.get_isAuthenticated())
						ContentDirectAPI.get_loginInfo().renew();
					$('#footerWrapper').fadeIn();
					showStorefrontContainer();
					$.cd.hideBlocker();
					break;
				case 'LogoutCompleted':
					redirectPage($pages.index);
					break;
				case 'PageRequested':
					redirectPage($pages.playerPage, "pageId=" + result.message);
					break;
				default:
					break;
			}
		},
		function (error) {
			gotoErrorPage(error);
		},
		'100%', '100%', false, false);
		
		
}

/*****************************************************************************************************/
/*  Digital Redemption Page
/*****************************************************************************************************/

function initializeEcopy() {
	reset();
	//checkDependency();
	//$client.buildInitParams();
	ContentDirectAPI.initialize(
		function (result) {
			switch (result.command) {
				case 'BeforeLongInitialize':
					hideStorefrontContainer();
					break;
				case 'AfterInitialized':
					ContentDirectAPI.navigateToEcopy(promoCode);
					break;
				case 'LogoutCompleted':
					redirectPage($pages.index);
					break;
				case 'EcopyRedemptionCodeEntered':
					var isUVProduct = result.data.Object.isUVProduct;

		            if (result.data.Object.isSinglePlan) {
		                $client.setProductInfo(result.data.Object[ContentDirect.UI.Const.PROD_ID], result.data.Object[ContentDirect.UI.Const.PLAN_ID]);
		                NavigateToEcopyOrdering(result.data.Object[ContentDirect.UI.Const.IS_UV_PRODUCT], result.data.Object[ContentDirect.UI.Const.IS_UV_LINKED]);
		            }
		            else {
		                ContentDirectAPI.navigateToHTML($pages.pricingOptions);
		            }

					break;
				case 'NavigateCompleted':
					var args = jQuery.parseJSON(result.message);
					$('#ecopyContent').css('backgroundImage', 'url("' + args[ContentDirect.UI.Const.BACKGROUND] + '")');
					document.title = args["title"];
					showStorefrontContainer();
					$.cd.hideBlocker();
					break;
				default:
					break;
			}
		},
		function (error) {
			gotoEcopyErrorPage(error, $pages.ecopy);
		}, '100%', '100%', false, false);
}


/*****************************************************************************************************/
/*  ECopy UV registration page
/*****************************************************************************************************/
function initializeECopyUvRegistration() {
	checkDependency();
	$client.buildInitParams();
	ContentDirectAPI.initialize(
		function (result) {
			switch (result.command) {
				case 'BeforeLongInitialize':
					hideStorefrontContainer();
					break;
				case 'AfterInitialized':
					ContentDirectAPI.navigateToUvRegistration();
					break;
				case 'UVError':
					ContentDirectAPI.navigateToUvRegistration();
					break;
				case 'UVCompleted':
					navigateBasedOnDestination();
					break;
				case 'NavigateCompleted':
					showStorefrontContainer();
					break;
				default:
					break;
			}
		},
		function (error) {
			gotoErrorPage(error);
		}, '100%', '100%', false, false);
}

/*****************************************************************************************************/
/*  ECopy Pricing Selection Page
/*****************************************************************************************************/

function initializeEcopyPricingOptions() {
	checkDependency();
	$client.buildInitParams();
	ContentDirectAPI.initialize(
		function (result) {
			switch (result.command) {
				case 'BeforeLongInitialize':
					hideStorefrontContainer();
					break;
				case 'AfterInitialized':
					ContentDirectAPI.navigateToEcopyPricingOptions();
					break;
				case 'PricingPlanSelected':
					$client.setProductInfo(result.arg['productId'], result.arg['pricingId']);
					var isUVProduct = result.arg[ContentDirect.UI.Const.IS_UV_PRODUCT];
					var isUVLinked = result.arg[ContentDirect.UI.Const.IS_UV_LINKED];
					NavigateToEcopyOrdering(result.arg[ContentDirect.UI.Const.IS_UV_PRODUCT], result.arg[ContentDirect.UI.Const.IS_UV_LINKED]);
					break;
				case 'NavigateCompleted':
					$('#ecopyContent').css('backgroundImage', 'url("' + $.cd.getValueFromMultiValue(ContentDirect.UI.Const.BACKGROUND, result.message) + '")');
					showStorefrontContainer();
					break;
				default:
					break;
			}
		},
		function (error) {
			gotoErrorPage(error);
		}, '100%', '100%', false, false);
}


function NavigateToEcopyOrdering(isUVProduct, isUVLinked) {
	if (ContentDirectAPI.get_isAuthenticated()) {
		if (isUVProduct && !isUVLinked) {
			redirectPage($pages.ecopyuvRegistration, "destination=orderingPage");
		}
		else {
			//NavigatetoUpSellPage
			redirectPage($pages.orderingPage);
		}
	}
	else {
	    redirectPage($pages.ecopyLogin, "destination=orderingPage&uvFlow=True");
	}
}

/*****************************************************************************************************/
/*  Redemption Page
/*****************************************************************************************************/
function initializeRedemption() {
    reset();
    ContentDirectAPI.initialize(
		function (result) {
			switch (result.command) {
				case 'BeforeLongInitialize':
				    hideStorefrontContainer();
				    break;
				case 'AfterInitialized':
				    var pageId = $.cd.getQueryStringValue("pageId");
				    ContentDirectAPI.navigateToPlayerPage(pageId);
				    break;
				case 'LogoutCompleted':
				    redirectPage($pages.index);
				    break;
				case 'PageRequested':
				    redirectPage($pages.playerPage, "pageId=" + result.message);
				    break;
				case 'NavigateCompleted':
				    showMenuOnly();
				    break;
				case 'RequestCompleted':
					if (result.message == "retrievecoupon") {
				        if (null != result.data
                            && result.data.length == 1) {
				            var product = result.data[0];
				            $client.setProductInfo(product.Id, product.PricingPlanModelList[0].Id);
				            $.cd.setCookie("cd_rcd", $('#redemptionCode').val(), 600000);
				            redirectPage($pages.orderingPage, "isUvPr=true");
				        }
				        else {
				            $.cd.showMessage('Please enter valid redemption code.', '#validationSummary');
				            $.cd.hideBlocker();
				        }
				    }
				    break;
				case 'MaintenanceMode':
				    window.location = "dependency.html";
				default:
				    break;
			}
		},
		function (error) {
			gotoErrorPage(error);
		}
    );
}


function validateCoupon(rCd) {
    $.cd.hideMessage('#validationSummary');

    if (null != rCd && rCd != "") {
    	$.cd.showBlocker();
    	ContentDirectAPI.knownRequest(ContentDirect.UI.Command.KnownRequest, "rCode=" + rCd, ContentDirect.UI.Request.RetrieveCoupon);		
    }
    else {
        $.cd.showMessage('Please enter valid redemption code.', '#validationSummary');
        return;
    }
}

function showMenuOnly() {
    var targetId = "#" + $.cd.get_containerInfo().containerId;

    $('.accountMenu').fadeIn('slow');

    $("ul.subnav").parent().append("<span></span>");
    $("ul.topnav li a.topTrigger").click(function () {
        $(this).parent().parent().find("ul.subnav").fadeIn('fast');
        $(this).parent().parent().hover(function () {
        }, function () {
            $(this).parent().find("ul.subnav").fadeOut('fast');
        });
    }).click(function () {
        $(this).addClass("subhover");
    }, function () {
        $(this).removeClass("subhover");
    });

    initializeMenu();
	$('#playerPageMenu ul').append('<li class="pagingItem mobile" id="first"><a href="aboutuv.html">About UV</a></li><li class="pagingItem mobile"><a href="aboutus.html">About Us</a></li><li class="pagingItem mobile"><a href="search.html">Search</a></li><li class="pagingItem mobile" id="last"><a href="redeemuv.html">Redeem UV</a></li>');	
	$('#playerPageMenu ul').append('<li class="pagingItem uv"><a href="aboutuv.html">About</a></li>');
	$('#playerPageMenu ul').append('<li class="pagingItem aboutus"><a href="aboutus.html">About Us</a></li>');


    if (!$.cd.get_isMediaQueryEnabled())
        $('#cdPageMenu').fadeIn('slow');

    $('#footerWrapper').fadeIn('slow');
    $(targetId).fadeOut();
    $.cd.hideBlocker();
    window.scrollTo(0, 1);
}

/*****************************************************************************************************/
/*  Template Page
/*****************************************************************************************************/
function initializeTemplate() {
    reset();
    ContentDirectAPI.initialize(
		function (result) {
		    switch (result.command) {
		        case 'BeforeLongInitialize':
		            hideStorefrontContainer();
					$('.aboutus_container').fadeOut();
		            break;
		        case 'AfterInitialized':
		            var pageId = $.cd.getQueryStringValue("pageId");
		            ContentDirectAPI.navigateToPlayerPage(pageId);
		            break;
		        case 'LogoutCompleted':
		            redirectPage($pages.index);
		            break;
		        case 'PageRequested':
		            redirectPage($pages.playerPage, "pageId=" + result.message);
		            break;
		        case 'NavigateCompleted':
					if (String(window.location.href).search('redeemuv') >= 0)
						$client.trackPage('/Header/RedeemUV/');
					else if (String(window.location.href).search('aboutuv') >= 0)
						$client.trackPage('/Header/About UV/');
					else if (String(window.location.href).search('aboutus') >= 0)
						$client.trackPage('/Header/About Us/');
					else if (String(window.location.href).search('support') >= 0)
						$client.trackPage('/Footer/SupportFAQ/');
					else if (String(window.location.href).search('tou') >= 0)
						$client.trackPage('/Footer/Terms of Use/');
					else if (String(window.location.href).search('privacy') >= 0)
						$client.trackPage('/Footer/Privacy Policy/');
					else if (String(window.location.href).search('payment') >= 0)
						$client.trackPage('/Footer/Payment Terms/');
		            showMenuOnly();
					$('.aboutus_container').fadeIn();
		            break;		        
		        case 'MaintenanceMode':
		            window.location = "dependency.html";
		        default:
		            break;
		    }
		},
		function (error) {
		    gotoErrorPage(error);
		}
    );
}

/*****************************************************************************************************/
/*  PlayerEvent Handler
/*  ActionType { Popup, Search, Play, Track, Stop, End ,Change, Purchase, Ad, Error}
/*  ActionTarget { Product, Person, Category, Session, Authentication, Page, Ad, All }		
/*****************************************************************************************************/

function StorefrontEventListner(type, target, keyword) {
	var browserInfo = $.cd.get_browserInfo();
	switch (type) {
		case "Stop":
			if (null != StorefrontInternalAPI) {
				StorefrontInternalAPI.end();
				StorefrontInternalAPI = null;
			}
			$.cd.hideModal();

			break;
		case "End":
			if (null != StorefrontInternalAPI) {
				StorefrontInternalAPI.end();
				StorefrontInternalAPI = null;
			}
			showMessageBlocker($('.endofVideoPopup')[0], 0.8, 1.0, '31%', '35%', '540px');
			$.cd.hideModal();

			break;
		case "Error":
			$.cd.log("type=" + type + ",target=" + target + ",keyword=" + keyword);
			$.cd.hideModal(function () {
				$.cd.showBlocker();
				if (target == "Session")
					redirectPage($pages.loginPage, "___sessionExpired=true");
				else {
					var error = new Object();
					error.data = "Play";
					error.message = keyword;
					gotoErrorPage(error);
				}

            });
            break;
        case "Change":
            if (target == "Session")
                $.cd.get_loginInfo().save();
            break;
        case "Play":
            StorefrontInternalAPI.set_endSessionEventHandler(function () {
                StorefrontInternalAPI.endSession(null, false);
            });
            break;
        default:
            break;
    }
}
function rentalTermsPopup() {
	window.open("http://" + clientUrl + "rentalterms.html", "RentalTerms", "status = 1, height = 675, width = 990, resizable = 0, scrollbars = 0"); 
}

function aboutUVPopup() {
	window.open("http://" + clientUrl + "aboutuv.html", "_parent");	
}
