var jqN = jQuery.noConflict();
var nbcHideMe = Array();

/* breaks custom implementation on vscet
var addthis_config = {
	ui_offset_top: 0,
	ui_offset_left: 0,
	ui_click: true
}
*/

// Annoying bug from Facebook: They'll call the onConnected/onNotConnected & Login callbacks multiple times
var hasRunFacebookLoginCheck = false;

// BEGIN NBCU FRAMEWORK CONFIGURATION

	nbcu.config.addParam("nbcuEnvironment", "production");
	domain = document.domain;

	if (domain.substring(0, 6) == "stage.")
	{
		nbcu.config.addParam("nbcuEnvironment", "stage");
	}
	//else if (domain.substring(0, 4) == "dev." || domain.indexOf(".dev."))
	else if (domain.substring(0, 4) == "dev." || domain.indexOf(".dev.") > 1)
	{
		nbcu.config.addParam("nbcuEnvironment", "dev");
	}
	else if (domain.substring(0, 3) == "qa.")
	{
		nbcu.config.addParam("nbcuEnvironment", "qa");
	}

	nbcu.config.addParam("frameworkUrl", "/assets/nbcu");
	nbcu.config.addParam("frameworkApiUrl", "/app/api");
	nbcu.config.addParam("snasSiteName", "nbc.com");
	nbcu.config.addParam("snasSiteDomainName", "my.nbc.com");
	nbcu.config.addParam("siteName", "NBC.com");
	nbcu.config.addParam("socialNetworkName", "myNBC");
		
	if (nbcu.config.getParam("nbcuEnvironment") == "dev" || nbcu.config.getParam("nbcuEnvironment") == "qa")
	{
		nbcu.config.addParam("snasRestUrl", "http://snasdev1.nbcuni.com")
		nbcu.config.addParam("socialNetworkUrl", "http://qa.my.nbc.com");
	}
	else
	{
		nbcu.config.addParam("snasRestUrl", "http://snas.nbcuni.com");
		nbcu.config.addParam("socialNetworkUrl", "http://my.nbc.com");
	}
	
	// Set Facebook environment variables for FBC enabled domains
	if (document.domain.indexOf('nbc.com') != -1 || document.domain.indexOf('nbc.nbcuni.com') != -1)
	{
		nbcu.config.addParam("facebookConnectEnabled", "true");
		if (nbcu.config.getParam("nbcuEnvironment") == "dev" || nbcu.config.getParam("nbcuEnvironment") == "qa")
		{
			nbcu.config.addParam("facebookAPIKey", "1454d8a755ecb0e83b129a35a656fb9e");
			nbcu.config.addParam("videoRatingFeedStoryId", "79354934916");
			nbcu.config.addParam("videoCommentFeedStoryId", "79355924916");
		} else {
			nbcu.config.addParam("facebookAPIKey", "61b68b0702fb928dc0620a836a6a86b0");
			nbcu.config.addParam("videoRatingFeedStoryId", "112120225818");
			nbcu.config.addParam("videoCommentFeedStoryId", "116612985818");
		}
		
	} else if (document.domain.indexOf('latenightwithjimmyfallon') != -1) {
		
		nbcu.config.addParam("facebookConnectEnabled", "true");
		nbcu.config.addParam("facebookAPIKey", "32c8cd620aa43f21ea1d4d0cb0c9db47");
		nbcu.config.addParam("videoRatingFeedStoryId", "148081606626");
		nbcu.config.addParam("videoCommentFeedStoryId", "148081221626");
		
	} else if (document.domain.indexOf('thejaylenoshow') != -1) {
		
		nbcu.config.addParam("facebookConnectEnabled", "true");
		nbcu.config.addParam("facebookAPIKey", "9983f0110b096e74126c1be8e50a6437");
		nbcu.config.addParam("videoRatingFeedStoryId", "147397997020");
		nbcu.config.addParam("videoCommentFeedStoryId", "147395842020");
	
	} else if (document.domain.indexOf('tonightshowwithconanobrien') != -1) {
		
		nbcu.config.addParam("facebookConnectEnabled", "true");
		nbcu.config.addParam("facebookAPIKey", "9462a31304eaadf60bc079b0de38ae04");
		nbcu.config.addParam("videoRatingFeedStoryId", "157444705488");
		nbcu.config.addParam("videoCommentFeedStoryId", "157443990488");
	
	} else if (document.domain.indexOf('thousandandonewords') != -1) {
		
		nbcu.config.addParam("facebookConnectEnabled", "true");
		nbcu.config.addParam("facebookAPIKey", "928446ae9a78c245179a2e2e15386f1a");
		nbcu.config.addParam("videoRatingFeedStoryId", "157444705488");
		nbcu.config.addParam("videoCommentFeedStoryId", "157443990488");
		
	} else if (document.domain.indexOf('theparenthoodproject') != -1) {
		
		nbcu.config.addParam("facebookConnectEnabled", "true");
		nbcu.config.addParam("facebookAPIKey", "82dcae153d42447698bc9042869baa3a");
		nbcu.config.addParam("videoRatingFeedStoryId", "157444705488");
		nbcu.config.addParam("videoCommentFeedStoryId", "157443990488");
		
	} else if (document.domain.indexOf('jaylenosgarage') != -1) {
		
		nbcu.config.addParam("facebookConnectEnabled", "true");
		nbcu.config.addParam("facebookAPIKey", "d739e6969719dbe3874a6d98ff989fd0");
		nbcu.config.addParam("videoRatingFeedStoryId", "160896101841");
		nbcu.config.addParam("videoCommentFeedStoryId", "160897261841");

	} else if (document.domain.indexOf('snakeholelounge') != -1) {
		
		nbcu.config.addParam("facebookConnectEnabled", "true");
		nbcu.config.addParam("facebookAPIKey", "6df4b2eb45820c5319691b47055792cf");
	} 


// END FRAMEWORK CONFIGURATION


jqN(function(){
	loadMyNBCLogin();
	//jqN('.nav-trigger').click(toggleNav);
	jqN('.nbc-nav-close').bind('click',clearNav);
	jqN('#A-searchform input').hint();
	jqN(document).pngFix();	
	
	// jqN('input#globalLoginPass, input#globalLoginEmail').hint();
clearSelect("#globalLoginPass");
clearSelect("#globalLoginEmail");
// jqN('#mynbcLoginForm form input').hint();
	
	hoverEffectDirect();
	initFacebook();
	xdSync();
});
function clearSelect (arg){
	for (var i=0; i < arg.length; i++) {
		var strVal;
		jqN(arg).mousedown(function() {
			strVal = jqN(this).val();
			jqN(this).attr('value', '');
		})
	};
}
// function getWindowHeight() {
// 	var windowHeight = 0;
// 	if (typeof(window.innerHeight) == 'number') {
// 		windowHeight = window.innerHeight;
// 	}
// 	else {
// 		if (document.documentElement && document.documentElement.clientHeight) {
// 			windowHeight = document.documentElement.clientHeight;
// 		}
// 		else {
// 			if (document.body && document.body.clientHeight) {
// 				windowHeight = document.body.clientHeight;
// 			}
// 		}
// 	}
// 	return windowHeight;
// }
// function setFooter() {
// 	if (document.getElementById) {
// 		var windowHeight = getWindowHeight();
// 		if (windowHeight > 0) {
// 			var contentHeight = jqN('#nbc_masterWrap').offsetHeight;
// 			var footerElement = document.getElementById('nbc_mastFoot');
// 			var footerHeight  = footerElement.offsetHeight;
// 			if (windowHeight - (contentHeight + footerHeight) >= 0) {
// 				footerElement.style.top = (windowHeight - (contentHeight + footerHeight)) + 'px';
// 			}
// 			else {
// 				footerElement.style.top = '0px';
// 			}
// 		}
// 	}
// }
// function setWrapHeight(){
// 	
// }
// window.onload = function() {
// 	setFooter();
// }
// window.onresize = function() {
// 	setFooter();
// }

function navInit(){
	
	jqN('.nav-trigger').click(toggleNav);
	
}
function toggleNav(){	
	jqN('.nbc-nav-close').bind('click',clearNav);
	if(!jqN(this).hasClass('selected')){
		jqN('.nav-trigger').removeClass('selected');
		var index = jqN('.nav-trigger').index(this);
		jqN(this).addClass('selected');
		jqN('.nbc-subnav').css('display','none');
		jqN('.nbc-subnav').eq(index).css('display','block');
		hideVisible('#companion_Ad', 1);
		hideVisible('#nbcAd300x250', 1);
		hideVisible('#nbc-728',1);
		nbcToggleEl(nbcHideMe, "hide");
		jqN('.opa-spotlight embed').hide();
	}else{
		clearNav();
	}
	return;
}
function clearNav(){
	jqN('.nav-trigger').removeClass('selected');
	jqN('.nbc-subnav').css('display','none');
	hideVisible('#companion_Ad', 0);
	hideVisible('#nbcAd300x250', 0);
	hideVisible('#nbc-728',0);
	nbcToggleEl(nbcHideMe, "show");
	jqN('.opa-spotlight embed').show();
}

function globalNav(){
	jqN('#NBC_videoWatch, #nbc_shows, .global_drop').hide()
	
	jqN('ul#A-mast-nav li').hover(function() {
		jqN(this).children('.global_drop').show();
		jqN(this).addClass('activeNavItem');
		hideVisible('#nbcAd300x250', 1);
			nbcToggleEl(nbcHideMe, "hide");
		jqN('#OPA_Spotlight_holder embed').hide();
	}, function() {
		jqN(this).children('.global_drop').toggle();
		jqN(this).toggleClass('activeNavItem');
		hideVisible('#nbcAd300x250', 0);
			nbcToggleEl(nbcHideMe, "show");
			jqN('#OPA_Spotlight_holder embed').show();
	})
}
function globalNavPressDown(openclose){
	jqN('#NBC_videoWatch, #nbc_shows, .global_drop').hide()
	jqN('#A-nav-shows, #A-nav-video, #A-nav-schedule, #A_nav_news, #A_nav_mobile, #A_nav_comm, #A_nav_photo, #A_nav_games, #A_nav_shop, #A_nav_extras').attr('href', '#');
	jqN('#A-nav-shows, #A-nav-video, #A-nav-schedule, #A_nav_news, #A_nav_mobile, #A_nav_comm, #A_nav_photo, #A_nav_games, #A_nav_shop, #A_nav_extras').click(function() {
		if (jqN(this).siblings('.global_drop').css('display') == "none") 
		{
			globalCloseDropState(1);
			jqN(this).siblings('.global_drop').show();			
			jqN(this).parent().addClass('activeNavItem');
			// hideVisible('#nbcAd300x250', 1);
				nbcToggleEl(nbcHideMe, "hide");
			jqN('#OPA_Spotlight_holder embed').hide();
						
		}else if(jqN(this).siblings('.global_drop').css('display') == "block"){
			globalCloseDropState(1);
			jqN('#OPA_Spotlight_holder embed').show();
		}
	})
	jqN('.clkCloseDROP , .dd_options').click(function() {
		globalCloseDropState(1);
		jqN('#OPA_Spotlight_holder embed').show();
		
	})
}
function globalCloseDropState(trig){
	if (trig ==1) {
		jqN('.global_drop').hide();
		jqN('ul#A-mast-nav li.activeNavItem').toggleClass('activeNavItem');
		nbcToggleEl(nbcHideMe, "show");
	}
			// jqN('.global_drop').hide();
			// jqN('ul#A-mast-nav li').toggleClass('activeNavItem');
			// // jqN(this).siblings('.global_drop').toggle();
			// // jqN(this).parent().toggleClass('activeNavItem');
			// hideVisible('#nbcAd300x250', 0);
			// nbcToggleEl(nbcHideMe, "show");
			// jqN('#OPA_Spotlight_holder embed').show();
}
function nbcDropDown(id){
	jqN(function(){
		jqN(id).superfish({
			pathClass : 'current',
			animation : {height: 'toggle'},
			delay : 0,
			speed : "fast"
		})
	})
}
function nbcMainDrop (id){
	// jqN("ul#A-mast-nav li div.sub-navi").css({top: "20px"})
	jqN(id+"> li").hover(function() {
		jqN(this+" div.sub-navi").css({top: "20px"})
	},
	function() {
		jqN("div.sub-navi").css({top: "-999em"})
	})
}
function hideVisible (hideThis, trig){
	if(trig == 1){
	jqN(hideThis).css('visibility','hidden');
	}else{
		jqN(hideThis).css('visibility','visible');
	}
}

/**
* Called after the user authorizes the site with Facebook Connect
**/
function facebookOnLoginReady() 
{

	hideUnhideVideo(false);
	
	FB.ensureInit( function() {
		// We will do this manually otherwise there's a good chance we'll keep refreshing the DOM extra times
		FB.XFBML.Host.autoParseDomTree = false;
		FB.Facebook.get_sessionState().waitUntilReady( function(session) {
			var is_now_logged_into_facebook = session ? true : false;
			if (is_now_logged_into_facebook) {
				// We don't want to re-run any logic if Facebook gives back the onConnected callback
				hasRunFacebookLoginCheck = true;

                                if (!nbcu.sn.session.isLoggedInToExternalPlatform('facebook'))
                                {
                                        var params = new Object();
                                        return nbcu.api.call("facebookLogin", params, "sn", "account", "PROXY", "POST", loadMyNBCLogin);
                                }				
			}

		});
	});

}

/**
* Called when the user clicks the 'logout' link. This abides to Facebook's TOS to log
* the user out of both NBC.com and Facebook.com
**/
function handleFacebookLogout(redirectUrl)
{
	redirectUrl = redirectUrl || document.location.href;
	hideUnhideVideo(true);

	if (nbcu.sn.session.isLoggedInToExternalPlatform("facebook")) {
		nbcu.sn.session.logoutExternalPlatform();
		FB.Connect.logoutAndRedirect('http://'+document.domain+'/app/socnet/accounts/logout?redirectUrl=' + redirectUrl);
		// failsafe
		//setTimeout("window.location = 'http://'+document.domain+'/app/socnet/accounts/logout?redirectUrl=/'", 5000);
	} else {
		window.location = 'http://'+document.domain+'/app/socnet/accounts/logout?redirectUrl=' + redirectUrl;
	}
}

/**
* Make sure we're ready to communicate with Facebook
**/
function initFacebook() 
{
	try {
		if (nbcu.config.getParam("facebookConnectEnabled") == "true") 
		{
			FB.init(nbcu.config.getParam("facebookAPIKey"), "/xd_receiver.htm", {"ifUserConnected":onFacebookConnected, "ifUserNotConnected":onFacebookNotConnected});
			jqN('#fb_global_login').html('<a href="#" title="Log in using Facebook" id="fb_logon_btn" onclick="hideUnhideVideo(true);FB.Connect.requireSession(facebookOnLoginReady); return false;">Log in using facebook</a>');
		}
	} catch(e) {}
}

/**
* Facebook will do a callback to this method if the user is currently logged in to their platform
**/
function onFacebookConnected() 
{
	
	FB.ensureInit( function()
	{
		FB.Facebook.get_sessionState().waitUntilReady( function(session)
		{

			// Facebook will keep calling this callback over and over...
			if (hasRunFacebookLoginCheck)
			{
				return;
			}
			hasRunFacebookLoginCheck = true;

			//if we think the user isn't logged in
			if (nbcu.sn.session.isLoggedInToExternalPlatform('facebook')) 
			{
				// Forcifully log the user in
				facebookOnLoginReady();
			}
		});
	});

}

/**
* Facebook will do a callback to this method if the user is currently NOT logged in to their platform
**/
function onFacebookNotConnected() 
{
	
	FB.ensureInit( function()
	{


		// Facebook will keep calling this callback over and over...
		if (hasRunFacebookLoginCheck)
		{
			return;
		}
		hasRunFacebookLoginCheck = true;
		
		if (nbcu.sn.session.isLoggedInToExternalPlatform('facebook')) 
		{
			//Logging the user out completely
			handleFacebookLogout();
		}
	});

}

/*
 * Convienence function to refresh the dom whenever a new XFBML tag is placed
 * onto the page
 */
function refreshXFBML()
{
	FB.ensureInit( function()
	{
		if (FB.XFBML.Host.parseDomTree) {
			setTimeout(FB.XFBML.Host.parseDomTree, 0);
		}
	});

}

/*
 * Show the feed form. This would be typically called in response to the onclick
 * handler of a "Publish" button, or in the onload event after the user submits
 * a form with info that should be published.
 * These paraemters match the available options here: http://wiki.developers.facebook.com/index.php/FB.Connect.streamPublish
 * 
 */
function facebook_stream_publish(user_message, attachment, action_links, target_id, user_message_prompt, callback, auto_publish, actor_id)
{
	// Handling undefined cases with default values
	if (typeof user_message == 'undefined') {
		user_message = '';
	}
	
	if (typeof attachment == 'undefined') {
		attachment = null;
	}
	
	if (typeof action_links == 'undefined') {
		action_links = null;
	}
	
	if (typeof target_id == 'undefined') {
		target_id = '';
	}
	
	if (typeof user_message_prompt == 'undefined') {
		user_message_prompt = "What do you think?";
	}
	
	if (typeof callback == 'undefined') {
		callback = null;
	}
	
	if (typeof auto_publish == 'undefined') {
		auto_publish = false;
	}
	
	if (typeof actor_id == 'undefined') {
		actor_id = '';
	}
	
	//if (nbcu.sn.session.isLoggedInToExternalPlatform("facebook")) {
		FB.ensureInit( function()
		{
			FB.Connect.streamPublish(user_message, attachment, action_links, target_id, user_message_prompt, callback, auto_publish, actor_id);
		});
	//}
	
}

/*
 * Show the feed form. This would be typically called in response to the onclick
 * handler of a "Publish" button, or in the onload event after the user submits
 * a form with info that should be published.
 * 
 */
function facebook_publish_feed_story(form_bundle_id, template_data, userMessage, userMessagePrompt, callback)
{
	// For some reason Facebook wants an object with a single property 'value'
	// For convience we'll just take a string for now and convert it for you
	var user_message = null;
	if (typeof userMessage != 'undefined' && userMessage != '') {
		user_message = {
			value : userMessage
		};
	}
	
	// Default user message prompt if you don't pass one in
	if (typeof userMessagePrompt == 'undefined' || userMessagePrompt == '') {
		userMessagePrompt = "What's on your mind?";
	}


	FB.ensureInit( function()
	{
		FB.Connect.showFeedDialog(form_bundle_id, template_data, null, null, null, FB.RequireConnect.promptConnect, callback, userMessagePrompt, user_message);
		});
}

/* Causes bug where fb user re-logged in after logout
var checkUserIntervalId = setInterval('checkUserLoggedIn()', 5000);

function checkUserLoggedIn() {
	if (nbcu.sn.session.isLoggedIn()) {
		try {
			clearInterval(checkUserIntervalId);
			if (jqN('#fb_global_login').length > 0) {
				loadMyNBCLogin();
			}
		}catch(e){}
	}	
}
*/

function loadMyNBCLogin(){
	jqN('#mynbc_login_out').click(function(){
		if(jqN(this).attr('class') != 'logout'){
			jqN('#mynbcLoginForm').fadeIn('fast').show();
			//jqN('#mynbc_login_out').toggle();
			// new OPA requirement doesnt need to hide these elements hideVisible('#A-searchform',1);
			// hideVisible('#nbc_MastLogo',1);
	}
	});
	jqN('#globalLoginclose').click(function(){
		jqN('#mynbcLoginForm').hide('slow');
					hideVisible('#A-searchform',0);
					hideVisible('#nbc_MastLogo',0);
					//jqN('#mynbc_login_out').toggle();
	})
	
	var platform = nbcu.sn.session.getExternalPlatform();
	if (nbcu.sn.session.isLoggedInToExternalPlatform(platform) && nbcu.config.getParam("facebookConnectEnabled") == "true") {
		// Need to figure out the platform and output the right XFBML / HTML

		var externalUserId = nbcu.sn.session.getExternalPlatformUserId();
		var username =  nbcu.sn.session.getAccountInfo('userName');
		if (platform == 'facebook' && username == externalUserId) {
			jqN('#fb_global_login').hide();
			jqN('#myNBC_log_status').html('<p>Hello, <span><fb:name uid=\"' + externalUserId + '\"  firstnameonly = \"false\" useyou=\"false\" linked=\"true\"></fb:name></span></p>');
		}
		else {
			jqN('#fb_global_login').hide();
			jqN('#myNBC_log_status').html('<p><a href=\"http://my.nbc.com/'+username+'\" title=\"'+username+'\">Hello, <span>'+username+'</span></a></p>');	
		}
			jqN('#mynbc_login_out').addClass('logout');
			jqN('#mynbc_login_out').attr('href', '');
     		jqN('#mynbc_login_out').click(function () {
				handleFacebookLogout();
				return false;
			});
			refreshXFBML();
		
	} else if (nbcu.sn.session.isLoggedIn()){
		jqN('#fb_global_login').hide();
		jqN('#myNBC_log_status').html('<p><a href=\"http://my.nbc.com/'+nbcu.sn.session.getUserName()+'\" title=\"'+nbcu.sn.session.getUserName()+'\">Hello, <span>'+nbcu.sn.session.getUserName()+'</span></a></p>');
			jqN('#mynbc_login_out').addClass('logout');
			jqN('a#mynbc_login_out').html("<span>log out</span>");
			jqN('.logout').click(function(){
			if (document.domain == "www.nbc.com") {				  	jqN(this).attr('href', 'http://my.nbc.com/accounts/logout?redirectUrl=' + window.location.href)
			} else {	
				jqN(this).attr('href', 'http://'+document.domain+'/app/socnet/accounts/logout?redirectUrl=' + window.location.href)
			}	

				// jqN.ajax({
				// 			type:"POST",
				// 			url:"/app/sn/api/sso/",
				// 			data:"remember=0",
				// 			dataType:"xml",
				// 			error: function() {alert("logout not happening")},
				// 			success: function() {alert("logged out")},
				// 		})
				// jqN.post({
				// 		url:"http://my.nbc.com/accounts/logout?success=1",
				// 		callback: function(){alert('loggit out')},
				// 		type: "http"
				// 		})
			});
		}
	
	jqN('#globalLoginSubmitBtn').click(function(){	
callToLogin();
	})
	jqN('#mynbcLoginForm form').submit(function() {
callToLogin();		
	})
}
function callToLogin(){
	var loginForm = jqN('#mynbcLoginForm form');
	var emailSub = jqN('#globalLoginEmail').val();
	var passSub = jqN('#globalLoginPass').val();
	
	// var theQuery = "method=login&email="+emailSub+".com&password="+passSub+"&remember=0"
	var theQuery = "method=login&email="+emailSub+"&password="+passSub+"&remember=0";
	var logState = 1;
		jqN.ajax({
			type:"POST",
			url:"/app/api/sn/account/",
			data: theQuery,
			dataType:"xml",
			error: function(){
				jqN('#mynbcLoginForm').append('<div id=\"response-text\">Sorry can\'t login from here.</div>');
				var currentLocation = window.location;
				window.location = 'http://my.nbc.com/accounts/login?redirectUrl='+currentLocation+'';
			},
			success: function(msg){
				if(jqN('status', msg).text() == '0'){
					var response = jqN('msg', msg).text();
				jqN('#mynbcLoginForm').append('<div id=\"response-text\">'+response+' <span>X</span></div>');
				jqN('#response-text').fadeIn('slow').animate({opacity:1.0},3000).fadeOut('slow');
				setTimeout("jqN('#response-text').remove()", 5000);
				jqN('#response-text span').click(function() {jqN('#response-text').remove()})
				}
				
				if(jqN('status', msg).text() == '1'){
					if(logState==1){
							jqN('#mynbcLoginForm').hide('slow');
				hideVisible('#A-searchform',0);
				hideVisible('#nbc_MastLogo',0);
						jqN('#fb_global_login').hide();
						var userName = jqN('userName', msg).text();
						var openIdRedirectUri = jqN('openIdRedirectUri', msg).text();
						jqN('#myNBC_log_status').html('<p><a href=\"http://my.nbc.com/'+userName+'\" title=\"'+userName+'\">Hello, <span>'+userName+'</a></p>');
						jqN('#mynbc_login_out').addClass('logout');
						jqN('a#mynbc_login_out').html("<span>log out</span>");
						jqN('.logout').click(function(){
							  if (document.domain == "www.nbc.com") {	
							  	jqN(this).attr('href', 'http://my.nbc.com/accounts/logout?redirectUrl=' + window.location.href)
							  } else {	
							  	jqN(this).attr('href', 'http://'+document.domain+'/app/socnet/accounts/logout?redirectUrl=' + window.location.href)
							  }	
	
						});
						jqN('#mynbc_login_out').show();
						logState = 1;
						xdSync("initServerLogin");
						addHiddenFrame(openIdRedirectUri);
					}else{return false;}
				}
			}
		})
}
function nbcHideItem(anArray) {
	for (var i=0; i < anArray.length; i++) {
		// nbcHideMe[i] = anArray[i];
		nbcHideMe.push(anArray[i])
	};
};
function showsDropDown(hoverEl, id){
	// Not in use anymore
	var el = jqN(hoverEl);
	jqN(id).hide();
	var theID = jqN(id);
	el.hover(function(){theID.toggle();
		nbcToggleEl(nbcHideMe, "hide")
		},
		function(){
			var renderOut = theID.hide();
			nbcToggleEl(nbcHideMe, "show")
			}
	);
}
function nbcToggleEl (arr, set){
	if(set == "hide"){
		for (var i=0; i < arr.length; i++) {
			// document.getElementById(arr[i]).style.visibility = 'hidden';
			jqN(arr[i]).css('visibility','hidden');
			// jqN(arr[i]).css('display','none');
		};
	}else if(set == "show"){
			for (var i=0; i < arr.length; i++) {
				// document.getElementById(arr[i]).style.visibility = 'visible';
				jqN(arr[i]).css('visibility','visible');
				// jqN(arr[i]).css('display','block');
			}
	}
}
function nbcToggleElShow (arr){
		for (var i=0; i < arr.length; i++) {
			document.getElementById(arr[i]).style.visibility = 'visible';
			// document.getElementById(arr[i]).style.display = 'block';
		}
}
function tabThis (navContainer, holder){
	jqN(navContainer+" a").each(function() {
		var divContainers = jqN(this).attr("href");
		jqN(divContainers).hide();
	});
	jqN(navContainer+" a").click(function() {
		jqN(holder).hide();
		jqN(jqN(this).attr("href")).show();
		return false;	
	});			
}
function loadShowNav(){
	jqN.ajax({
	type:"GET",
	url:"/www.assets/xml/nav_shows.xml",
	dataType:"xml",
	timeout: 40000,
	error:function(){
		jqN('body').append("<b>Shows nav failed to load</b>")
		},
	success:function(xml){
		var isShow = jqN('show', xml);	
			var htmlUL = '<ul class=\"showlistlink\"></ul>';
			var htmlULLast = '<ul class=\"showlistlink\" style=\"margin:0; width:160px; background:none\"></ul>';
			jqN('#A-sub-show').append(htmlUL+htmlUL+htmlUL+htmlULLast);
		isShow.each(function(i){
			var isTitle = jqN('name', this).text();
			var isUrl = jqN('link', this).text();
			var ifFull = jqN('full', this).text();
			var htmlLI = '<li><a href=\"'+isUrl+'\" title=\"'+isTitle+'\">'+isTitle+'</a></li>';
				if(i<=8){	
				jqN('ul.showlistlink:eq(0)').append(htmlLI);
				}
				if(i>=9 && i<=17){
					jqN('ul.showlistlink:eq(1)').append(htmlLI);				
				}
				if(i>=18 && i<=26){
					jqN('ul.showlistlink:eq(2)').append(htmlLI);
				}
				if(i>=27 && i<=35){
					jqN('ul.showlistlink:eq(3)').append(htmlLI);
				}
				if(i>=36 && i<=48){
					jqN('ul.showlistlink:eq(4)').append(htmlLI);
				}
			})	
				
		}
	});
}
function hoverEffectDirect(){
	jqN('.hasFullEpisode').hover(function() {
		jqN(this).css('color','#FDB913')
	}, function() {
		jqN(this).css('color','#fcffff')
	})
	jqN('.nbc_directable').hover(function() {
		jqN(this).siblings().css('color','#FDB913')
	},
	function() {
		jqN(this).siblings().css('color','#fcffff');
	}
	);
}
function newWin(){
	jqN("a.moreToit").setAttribute("target","_blank");
}
function browserSniff(){
	var browserSpec = navigator.userAgent;
	return browserSpec;
		// if(jqN.browser.msie){
		// 	jqN('body').append(navigator.userAgent)
		// }
		// if(jqN.browser.safari){
		// 	jqN('body').append(navigator.userAgent)
		// }
		// if(jqN.browser.mozilla){
		// 	jqN('body').append(navigator.userAgent);
		// }
		// if(jqN.browser.opera){
		// 	jqN('body').append(navigator.userAgent)
		// }
}
// Jake Garcia's function
function linktrack(myname) { 
        var s=s_gi(s_account); s.tl(true,'o',myname+'|'+ document.location) ;
} 
function linkHunt(myname) { 
        var s=s_gi(s_account); s.tl(true,'o','FrontDoor|'+myname);
	//	return false;
}


// Legacy -------->
var BrowserDetect = {
	init: function () {
		this.browser = this.searchString(this.dataBrowser) || "An unknown browser";
		this.version = this.searchVersion(navigator.userAgent)
			|| this.searchVersion(navigator.appVersion)
			|| "an unknown version";
		this.OS = this.searchString(this.dataOS) || "an unknown OS";
	},
	searchString: function (data) {
		for (var i=0;i<data.length;i++)	{
			var dataString = data[i].string;
			var dataProp = data[i].prop;
			this.versionSearchString = data[i].versionSearch || data[i].identity;
			if (dataString) {
				if (dataString.indexOf(data[i].subString) != -1)
					return data[i].identity;
			}
			else if (dataProp)
				return data[i].identity;
		}
	},
	searchVersion: function (dataString) {
		var index = dataString.indexOf(this.versionSearchString);
		if (index == -1) return;
		return parseFloat(dataString.substring(index+this.versionSearchString.length+1));
	},
	dataBrowser: [
		{
			string: navigator.vendor,
			subString: "Apple",
			identity: "Safari"
		},
		{
			prop: window.opera,
			identity: "Opera"
		},
		{
			string: navigator.vendor,
			subString: "iCab",
			identity: "iCab"
		},
		{
			string: navigator.vendor,
			subString: "KDE",
			identity: "Konqueror"
		},
		{
			string: navigator.userAgent,
			subString: "Firefox",
			identity: "Firefox"
		},
		{	// for newer Netscapes (6+)
			string: navigator.userAgent,
			subString: "Netscape",
			identity: "Netscape"
		},
		{
			string: navigator.userAgent,
			subString: "MSIE",
			identity: "Explorer",
			versionSearch: "MSIE"
		},
		{
			string: navigator.userAgent,
			subString: "Gecko",
			identity: "Mozilla",
			versionSearch: "rv"
		},
		{ 	// for older Netscapes (4-)
			string: navigator.userAgent,
			subString: "Mozilla",
			identity: "Netscape",
			versionSearch: "Mozilla"
		}
	],
	dataOS : [
		{
			string: navigator.platform,
			subString: "Win",
			identity: "Windows"
		},
		{
			string: navigator.platform,
			subString: "Mac",
			identity: "Mac"
		},
		{
			string: navigator.platform,
			subString: "Linux",
			identity: "Linux"
		}
	]
};
BrowserDetect.init();
// -- GET URL STRING INFORMATION -- //
function QueryString(key)
{
	var value = null;
	for (var i=0;i<QueryString.keys.length;i++)
	{
		if (QueryString.keys[i]==key)
		{
			value = QueryString.values[i];
			break;
		}
	}
	return value;
	
}
QueryString.keys = new Array();
QueryString.values = new Array();
function QueryString_Parse()
{
	var query = window.location.search.substring(1);
	var pairs = query.split("&");
	
	for (var i=0;i<pairs.length;i++)
	{
		var pos = pairs[i].indexOf('=');
		if (pos >= 0)
		{
			var argname = pairs[i].substring(0,pos);
			var value = pairs[i].substring(pos+1);
			QueryString.keys[QueryString.keys.length] = argname;
			QueryString.values[QueryString.values.length] = value;		
		}
	}

}
// Steady on states for drop downs
function switchNav(nav,action){
	sNav = document.getElementById(nav);
	
	switch(nav){
		case "showsImg": //Shows
			switch(action){
				case "show":	
					sNav.src="/www.assets/images/nav/nav_shows_on.jpg";
				break
				case "hide":	
					sNav.src="/www.assets/images/nav/nav_shows_off.jpg";
				break
			}
		break
		case "fansImg": //For Fans
			switch(action){
				case "show":
					sNav.src="/www.assets/images/nav/nav_for_fans_on.jpg";
				break
				case "hide":					
					sNav.src="/www.assets/images/nav/nav_for_fans_off.jpg";
				break
			}
		break
		case "fullepisodesImg": //Full Episodes
			switch(action){
				case "show":
					sNav.src="/www.assets/images/nav/nav_watch_episodes_on.jpg";
				break
				case "hide":					
					sNav.src="/www.assets/images/nav/nav_watch_episodes_off.jpg";
				break
			}
		break
	}
	mfbSwitch(action);
}
function mfbSwitch(ac){
	try{
	if(navigator.appVersion.indexOf("Mac")!=-1){ // for mac flash/DHTML issues.
		if(ac == "show"){
			document.getElementById('mfb').style.visibility="hidden";		
		}else{
			document.getElementById('mfb').style.visibility="visible";
		}
	}	
	}catch(e){/*ignore*/}
}
// Sub-Nav rollovers and MyNBC Add selector viewer for the list..
function vis(loc, act, sid){
	try{
		var tag = loc;
		var addTag = "Add"+sid;
		addTag = document.getElementById(addTag);
		if(act == 'show'){
			tag.style.backgroundColor = "#666666";
			addTag.style.backgroundImage = "url('/www.assets/images/nav/selector.jpg')";		
		}else{
			tag.style.backgroundColor = "";
			addTag.style.backgroundImage = "";	
		}
	}catch(e){/* ignore */}
}
// Global DropDown Script
function navDD(dd){

	jqN(function(){
			jqN(dd+'> li').hover(function(){
				jqN(this).addClass('over');
			},function(){
				jqN(this).removeClass('over')
			})
	})
}
function navPop(div){
	Effect.Appear(div, {duration:0.5, from:0.0, to:1.0});	
}

function navFade(div){
	Effect.Fade(div, {duration:0.5, from:1.0, to:0.0});	
}
function thisMovie(movieName,id) {
    if (navigator.appName.indexOf("Microsoft") != -1) {
        return window[movieName]
    }
    else {
        return document[movieName]
    }
}
function createCookie(name,value,days) {
	if (days) {
		var date = new Date();
		date.setTime(date.getTime()+(days*24*60*60*1000));
		var expires = "; expires="+date.toGMTString();
	}
	else var expires = "";
	document.cookie = name+"="+value+expires+"; path=/";
}
function readCookie(name) {
	var nameEQ = name + "=";
	var ca = document.cookie.split(';');
	for(var i=0;i < ca.length;i++) {
		var c = ca[i];
		while (c.charAt(0)==' ') c = c.substring(1,c.length);
		if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
	}
	return null;
}
function eraseCookie(name) {
	createCookie(name,"",-1);
}
function hideUnhideVideo(state)
{
	if(state)
	{
		try
		{
			embeddedPlayerManager.getPlayer().hidePlayer()
		} catch (e) {}
	} else {
		try
		{
			embeddedPlayerManager.getPlayer().unHidePlayer()
		} catch (e) {}
	}
		
}
// preload images
var myimages=new Array()
function preloadimages(){
	for (i=0;i<preloadimages.arguments.length;i++){
		myimages[i]=new Image();
		myimages[i].src=preloadimages.arguments[i];
	}
}
var randDARTNumber=0;
function genSetRandDARTNumber()
{
 randDARTNumber = Math.round(Math.random()*1000000000000);
}
genSetRandDARTNumber();

function xdSync(action) {
        if (document.domain.indexOf('.nbc.com') == -1) {
                var action = action || "sync";
                /*var full = window.location.host
                var parts = full.split('.')
                var subdomain = parts[0];
                
                if (subdomain != "stage") {
                        subdomain = "www";
                }*/
                subdomain = "www";
                
                addHiddenFrame("http://" + subdomain + ".nbc.com/assets/nbcu/frames/xd/server/?a=" + action + "&i=" + ((nbcu.sn.session.isLoggedIn()) ? "1" : "0") + "&d=" + document.domain);
        }
}

function addHiddenFrame(uri) {
	frame = document.createElement("IFRAME");
	frame.setAttribute("src", uri);
	frame.style.display = "none";
	frame.style.width = "1px";
	frame.style.height = "1px";	
	document.body.appendChild(frame);
}

function checkSubmit(form){
	jqN('#searchString').focus(function(){searchField()});
	if(form.searchString.value == '' || form.searchString.value == 'Search NBC.com'){
		jqN('.header-search-error').slideDown('fast');
		return false;
	}
}
function searchField(){
	jqN('.header-search-error').slideUp('fast');
}

function sitePerformedInvite(id){
var r = /(REMO_INVITE)=([^;]*)/gi.exec(document.cookie);
return (r && unescape(r[2]));

}
function siteInvited(id){
id != undefined || ( id = '1');
var ex = new Date(new Date().getTime() + (86400000*30));
document.cookie = 'REMO_INVITE' + '=' + escape(id) + ((!ex || !(ex instanceof Date))? '' : ('; expires=' + ex.toGMTString()))+ ';path=/; domain=NBC.com';


}
// tracking for home page
function __a(link) {
	var __source = 'front-door';
	var __module = link.name;
	var __t="__source="+__source+"|"+__module;
	var objRegExp = /(\?)/i;
	if (s_prop10 =="Front Door") {
        	if (objRegExp.test(link)) {
        	link=link +"&"+__t;
        	} else {
        	link=link +"?"+__t;
        	}
	
	} 
	return (link);
}
	
function stringToXML(string){
	try {
		xmlDoc=new ActiveXObject("Microsoft.XMLDOM");
		xmlDoc.async="false";
		xmlDoc.loadXML(string);
		return xmlDoc;
	}	catch(e) {
		parser=new DOMParser();
		xmlDoc=parser.parseFromString(string,"text/xml");
		return xmlDoc;
	}
}	

/*v deprecated (replacement jquery.nbc.twitter.js v*/
function getSiteTweets(siteID,limit){
	document.write('<div class="twitter-wrap"></div>');
	jqN.ajax({
		type:"GET",
		url:"/assets/esp/twitter/twitter/getStatuses/siteId/"+siteID+"/limitBy/"+limit+".xml",
		success: tweetXMLLoaded
	});
}


function tweetXMLLoaded(xml){
	var url = window.location.href;
	var nohttp = url.replace('http://','');
	var urlArray = nohttp.split('/');//[1];
	var showURI = '';
	//debug(nohttp);
	//debug(urlArray);
	
	if(urlArray[0] == 'www.nbc.com' || urlArray[0] == 'dev.nbc.nbcuni.com' )
		showURI = '/'+urlArray[1];
	
	//debug(showURI);
	//debug(xml);
	var tweetItems = [];
	jqN('status',xml).each(function(){
		var obj={};
		obj.statusId		= jqN('statusId',this).text();
		obj.avatarUri		= jqN('avatarUri',this).text();
		obj.username		= jqN('username',this).text();
		obj.text				= jqN('text',this).text();
		obj.published		= jqN('published',this).text();
		tweetItems.push(obj);
	});
	var tweetOutput='';
	for(i=0;i<tweetItems.length;i++)
	{
		tweetOutput+='<div class="tweet-wrap '+(i%2?'even':'odd')+'">\n';
		tweetOutput+='<a class="tweet-avatar" href="'+showURI+'/twitter/#tweetIDnum'+tweetItems[i].statusId+'"><img src="'+tweetItems[i].avatarUri+'" alt="'+tweetItems[i].username+'" /></a>\n';
		tweetOutput+='<a class="tweet-title" href="'+showURI+'/twitter/#tweetIDnum'+tweetItems[i].statusId+'">'+tweetItems[i].username+'</a>\n';
		tweetOutput+='<p class="tweet-text">'+tweetItems[i].text+'</p>\n';
		tweetOutput+='<p class="tweet-published">'+tweetItems[i].published+'</p>\n';
		tweetOutput+='</div>\n';
	}
	jqN('.twitter-wrap').html(tweetOutput);
}
/*^ deprecated ^*/

function debug(e){
	if(window.console && window.console.log)
		console.log(e);
}

(function($) {
	$.fn.konami = function(callback, code) {
		if(code == undefined) code = "38,38,40,40,37,39,37,39,66,65";
		
		return this.each(function() {
			var kkeys = [];
			$(this).keydown(function(e){
				kkeys.push( e.keyCode );
				if ( kkeys.toString().indexOf( code ) >= 0 ){
					$(this).unbind('keydown', arguments.callee);
					callback(e);
				}
			}, true);
		});
	}
})(jQuery);

