function siteMaster(){}
$(document).ready(function(){
	String.prototype.trim = function() { return this.replace(/^\s+|\s+$/g, ""); };
	if (allowRedirect){
		//Add code for dynamic redirect to hash
		var regDump;
		var keyLocation=window.location.toString();
		if (keyLocation.indexOf("#")>-1){
			keyLocation=keyLocation.substring(0,keyLocation.indexOf("#"));
		}
		if (/(video|gallery|podcast)\/(.*?)\/(.*?)\//.test(keyLocation)){
			regDump=/(video|gallery|podcast)\/(.*?)\/(.*?)\//.exec(keyLocation);
		} else if (/(video|gallery|podcast)\/(.*?)\//.test(keyLocation)){
			regDump=/(video|gallery|podcast)\/(.*?)\//.exec(keyLocation);
		} else if (/(video|gallery|podcast)\//.test(keyLocation)){
			regDump=/(video|gallery|podcast)\//.exec(keyLocation);
		} else if (/podcasts\/*/.test(keyLocation)){
			regDump=["","podcast"];
		}
		if (regDump){
			var hashLocation=window.location.toString().split("/");
			hashLocation=hashLocation[0] + "//" + hashLocation[2] + "/#/"
			if (regDump[1]){hashLocation+=regDump[1] + "/";}
			if (regDump[2]){hashLocation+=regDump[2] + "/";}
			if (regDump[3]){hashLocation+=regDump[3] + "/";}
			window.location=hashLocation;
		}
		siteMaster.init();
	}
	//Poll gallery info
	//setTimeout(function(){setInterval(function(){$("#testReporter").html(siteMaster.reporter.gallery.Info().captions + "<br />" + siteMaster.reporter.gallery.Info().autoPlay)},50);},500);
	/*
	setInterval(function(){
		var liList = $("ul.masterList li ul li");
		var keyLink = Math.floor(Math.random()*liList.length)
		window.location.hash="/video/" + $($("ul.masterList li ul li span")[keyLink]).text() + "/";
	},250);
	*/
});
siteMaster.init=function(){
	if (window.location.hash.length==0){window.location.hash="#/video/";}
	$("body")[0].navMaster={"media":null,"category":null,"item":null};
	$("body")[0].contentCache={};
	$("body")[0].mediaPlayer={};
	$("body")[0].hashInterval=null;
	$("#playerWrapper div ul li").hover(function(){
			$(this).attr("className",$(this).attr("className")+"Hover");
		},function(){
			$(this).attr("className",$(this).attr("className").replace(/Hover/,""));
	});
	//Bind search field
	$(".searchLine a").bind("click",siteMaster.mediaSearch);
	$("#mediaSearchQ").bind("keydown",function(e){var keyCode;if (e.which){keyCode=e.which;} else {keyCode=event.which;}if (keyCode==13){siteMaster.mediaSearch();}});
	//Bind Media Type Clicks
	$(".sectionHead ul li a").bind("click",siteMaster.mediaTypeClick);
	//Bind sub-toolbar clicks
	$("#playerWrapper div[id$=Ext] > ul > li").bind("click",siteMaster.playerToolsClick);
	//Bind close sub-toolbar clicks
	$("#playerWrapper #embedPane span.closeEmbed").bind("click",siteMaster.closePlayerTools);
	//Bind Category Clicks
	$("#rightPane div.sectionContent div.categoryWrapper ul li ul li span").bind("click",siteMaster.mediaCategoryClick);
	//Bind Media Clicks
	$("#rightPane div.sectionContent div.itemList ul li").bind("click",siteMaster.mediaItemClick);
	//Bind Itunes click
	$("#overlayItunes div button").bind("click",function(){var itemKey=$("body")[0].nowPlaying;siteMaster.iFrameDownload('itpc://' + window.location.toString().split("/")[2] + '/itpc/' + itemKey + '/');});
	//Bind transcript click
	$("#overlayTranscript div button").bind("click",function(){
		var itemKey=$("body")[0].nowPlaying;
		siteMaster.iFrameDownload('http://' + window.location.toString().split("/")[2] + '/pdf/' + itemKey + '/');
	});
	//Bind addthis clicks
	$("div.addThis div span").bind("click",siteMaster.addThisClick);
	//Get our item map so that we can look stuff up
	$.getJSON('/json/item/map/',function(data){
		$("body")[0].itemMap=data;
		if (navigator.userAgent.toString().indexOf("MSIE")!=-1){
			$.getJSON('/json/content/jsonContentGlobal/',function(data){
				$("body")[0].contentCache=data;
				$("body")[0].hashInterval=window.setInterval(siteMaster.hashMonitor,50);
			});
		} else {
			$("body")[0].hashInterval=window.setInterval(siteMaster.hashMonitor,50);
		}
	});	
	
}

siteMaster.hashMonitor=function(){
	if (!$("body")[0].hash){
		$("body")[0].hash="#";
	}
	if ($("body")[0].hash!=window.location.hash){
			clearInterval($("body")[0].hashInterval);
			siteMaster.processHash();
			$("body")[0].hash=window.location.hash;			
	}
}

siteMaster.mediaSearch=function(){
	if ($("#mediaSearchQ").val().length>0){
		window.location.hash="#/search/" + escape($("#mediaSearchQ").val()) + "/";
	}
	return false;
}

siteMaster.mediaSearchResults=function(mediaType,searchTerms){
	var ajaxLink="/json/search/" + mediaType + "/" + escape(searchTerms) + "/";
	$.getJSON(ajaxLink,function(data){
		$("#searchContainer").remove();
		$(".sectionContent > *").hide();
		$("#rightPane .sectionContent").append("<div id=\"searchContainer\"></div>")
		$("#rightPane .sectionContent #searchContainer").html(data.searchHTML);
		$("#searchContainer #searchResults li.resultItem div.categories ul li").hover(function(){$(this).addClass("hover");},function(){$(this).removeClass("hover");});
		for (var i=0;i<$("#searchResults li.resultItem dl").length;i++){
			siteMaster.truncateInPlace($("#searchResults li.resultItem dl:eq(" + i + ") dt"),50);
			siteMaster.truncateInPlace($("#searchResults li.resultItem dl:eq(" + i + ") dd"),185);
		}
		$(".resultLine ul li").bind("click",function(){
			var pageType=this.id.replace(/searchHead_/,'');
			$("#searchResults li:[id*=results_]:not([id*=results_" + pageType + "])").hide();
			$("#searchResults li:[id*=results_" + pageType + "]").show();
			siteMaster.scrollItems("#searchResults");
			$("#searchResults")[0].scrollTop=0;
		});
		siteMaster.scrollItems("#searchResults")
		$("#searchContainer #searchResults li.resultItem div.content").hover(function(){$(this).addClass("hover");},function(){$(this).removeClass("hover");});
		$("#searchContainer #searchResults li.resultItem div.content").bind("click",function(){
			$("#searchContainer span.nowPlaying").removeClass("nowPlaying");
			$("body")[0].nowPlaying=this.id.replace(/media_/,'');
			var lookupType=this.className.split(" ")[1];
			switch(lookupType){
				case "video":
					siteMaster.videoItem(this.id);
					break;
				case "podcast":
					siteMaster.podcastItem(this.id);
					break;
				case "gallery":
					siteMaster.galleryItem(this.id);
					break;
			}
			$(this).find("span span").addClass("nowPlaying");
		});
	});
	$("body")[0].hashInterval=window.setInterval(siteMaster.hashMonitor,50);
}

siteMaster.mediaTypeClick=function(){
	window.location.hash="/" + escape($(this).parent().attr('id').replace(/tab_/i,"")) + "/"
	return false;
}

siteMaster.mediaCategoryClick=function(){
	window.location.hash="/" + escape($("#rightPane").attr("className")) + "/" + escape($(this).text()) + "/";
}

siteMaster.mediaItemClick=function(){
	var navHash=siteMaster.locateItem($(this).attr("id").replace(/media_/,""));
	siteMaster.hashNavSet(navHash);
}

siteMaster.processHash=function(){
	//Get the current nav status
	var currentNav=$("body")[0].navMaster;
	var searchFrom;
	if(currentNav["media"]==null){
		//Force video on the chance it comes in as a search
		searchFrom="video";
		$("#rightPane").addClass("video");
		$("#rightPane div.sectionHead").css("behavior","url(/media/css/iepngfix.htc)");
	} else {
		searchFrom=currentNav["media"];
	}
	var hashVal=$("body")[0].hash;
	//Create a new blank hash
	var newNav={"media":null,"category":null,"item":null};
	var keyLocation=window.location.toString();
	var regDump;
	if (/#\/(video|gallery|podcast)\/(.*?)\/(.*?)\//.test(keyLocation)){
		regDump=/#\/(video|gallery|podcast)\/(.*?)\/(.*?)\//.exec(keyLocation);
	} else if (/#\/(video|gallery|podcast)\/(.*?)\//.test(keyLocation)){
		regDump=/#\/(video|gallery|podcast)\/(.*?)\//.exec(keyLocation);
	} else if (/#\/(video|gallery|podcast)\//.test(keyLocation)){
		regDump=/#\/(video|gallery|podcast)\//.exec(keyLocation);
	}
	var docTitle="";
	if (regDump!=null){
		$("#searchContainer").remove();
		$(".sectionContent > *").show();
		if (regDump[1]){newNav["media"]=unescape(regDump[1]);}
		if (regDump[2]){newNav["category"]=unescape(regDump[2]);}else{newNav["category"]="Recently Added";}
		if (regDump[3]){newNav["item"]=unescape(regDump[3]);}
		var titleHashTable={'video':'Video','podcast':'Audio','gallery':'Image Gallery'};
		docTitle += titleHashTable[newNav["media"]]
		if (newNav["item"]!=null){
			docTitle += " - " + newNav["item"];
		}
		docTitle += " - Children's National Medical Center";
		document.title=docTitle;
	}
	
	var mediaSearch={};
	if (/#\/(search)\/([^\/]+)\//.test(keyLocation)){
		regDump=/#\/(search)\/([^\/]+)\//.exec(keyLocation);
		mediaSearch["searchTerms"]=regDump[2];
		 docTitle = "Search results for '" +  escape(mediaSearch["searchTerms"]) + "' - Children's National Medical Center";
	}
	document.title=docTitle;
	
	
	//Quick step body nav to the new nav so we don't repeat ourselves
	$("body")[0].navMaster=newNav;
	if (currentNav!=newNav){
		if (newNav["media"]){
			if (newNav["media"]!=currentNav["media"]){
				//Media changes we have to wipe everything anyway
				siteMaster.setMediaType(newNav);
			} else if (newNav["category"] && newNav["category"]!=currentNav["category"]){
				siteMaster.setCategory(newNav);
				//If category changes we just wipe the items
			} else if (newNav["item"] && newNav["item"]!=currentNav["item"]){
				siteMaster.activeItem(newNav);
				//If the item changes, we just have to listen for the playback
			}
		} else if (mediaSearch["searchTerms"]){
			siteMaster.mediaSearchResults(searchFrom,mediaSearch["searchTerms"]);
		} else {
			//Bad hash, set to video
			window.location.hash="#/video/";
		}
	}
	pageTracker._trackPageview(siteMaster.absolutePath());
}

siteMaster.keyLocation=function(navData){
	return hex_md5(navData["media"]+navData["category"]+navData["item"]);
}

siteMaster.playerToolsClick=function(){
	if (this.className.indexOf('caption')!=0){
		siteMaster.end_gallery_playback(false);
	} else {
		$("body")[0].mediaPlayer["captions"]=true;
	}
	var displayTools=function(){
		var actionType=$(this).attr("className").split(" ")[0].replace(/Hover/,"");
		var contextSet=$("body")[0].navMaster["media"];
		//If we arrive here via search we need to build the context set by hand
		if (/#\/search\/[^\/]+\/$/.test(window.location.toString())){
			contextSet=$("body")[0].itemMap[$("#searchResults li.resultItem div:has(span span span.nowPlaying)").attr("id").replace(/media_/,"")].Type.toLowerCase();
		}
		$("#playerWrapper #embedPane").css("height","135px");
		siteMaster.playerOverlay(actionType,contextSet);
	}
	
	if (this.className.indexOf("info")==-1){
			var applyContext=this;
			displayTools.apply(applyContext);
	} else {
		displayTools.apply(this);
	}
	
}
siteMaster.playerOverlay=function(actionType,contextSet){
	if (actionType=="transcript" && $("#playerWrapper div ul li.transcript").css("background-image").indexOf("media/img/toolbarNoTranscript.jpg")!=-1){
		//HORRIBLE short circuit of transcript download
		return;
	}
	clearTimeout($("body")[0].infoTimeout);
	$("#overlayTools #overlayEmail div.contentPane *").hide();
	$("#overlayTools #overlayEmail div.contentPane *").css("visibility","hidden");
	if (actionType=="caption"){
		$("#overlayCaption .contentPane").css("margin-top","7px");$("#overlayCaption").parent().parent().parent().css("height","85px")
	} else {
		$("#overlayCaption .contentPane").css("margin-top","");$("#overlayCaption").parent().parent().parent().css("height","")
	}
	var switchList={'email':'#overlayEmail','share':'#overlayShare','embed':'#overlayEmbed','itunes':'#overlayItunes','transcript':'#overlayTranscript','info':'#overlayInfo','caption':'#overlayCaption'};
	var labelList={'podcast':'Podcast','video':'Video','gallery':'Gallery'}
	if (typeof switchList[actionType]=="undefined"){return ;};
	if (actionType=="caption"){
		var imgDet=$("body")[0].mediaPlayer.image_list[$(".toolPane ul li").index($(".toolPane ul li.selected"))];
		$("#overlayCaption div.contentPane p").text(imgDet.image_description);
	} else {
		//We need to pause stop autoplay under any other conditions (if it's playing)
		clearInterval($("body")[0].mediaPlayer["autoInterval"]);
	}
	if (actionType=="info"){
		//Get the info for the "now playing" item
		var mapData=siteMaster.reporter.mapData($("body")[0].nowPlaying);
		//Set the data into the "info" panels
		$("#overlayInfo div.contentPane strong").text(mapData.Item.title);
		$("#overlayInfo div.contentPane span:first").text(siteMaster.truncate(mapData.Item.desc,220));
		$("#overlayInfo div.contentPane span:eq(1)").text(mapData.Item.pub_date);
	}
	if (actionType=="email"){
		$("#overlayTools #overlayEmail div.contentPane span").remove();
		$("#overlayTools #overlayEmail div.contentPane *").show();
		$("#overlayTools #overlayEmail div.contentPane *").css("visibility","visible");
		$("#overlayEmail span:first").text("Email this " + labelList[contextSet]);
	}
	if (actionType=="share"){
		$("#overlayShare span:first").text("Share this " + labelList[contextSet]);
	}
	if (actionType=="embed"){
		var itemKey=$("body")[0].itemMap[$("body")[0].nowPlaying].Item.id;
		//Mini hack to deal with jquery/firefox's inability to handle overflow changing
		$("#playerWrapper #embedPane #overlayEmbed div.contentPane pre").css("overflow","auto");
		$.getJSON("/json/embed/" + itemKey + "/",function(data){
			$("#overlayEmbed #embedCode").text(data);
		});
	}
	if ($("body")[0].mediaPlayer["current_state"]=="PLAYING" &&  $("body")[0].mediaPlayer["playerObject"]!=null){
		$("body")[0].mediaPlayer["playerObject"].sendEvent("PLAY",false);
	}	
	$("#playerWrapper #embedPane div").css("display","block");
	$("#playerWrapper #embedPane div #overlayTitle").hide();
	$("#playerWrapper #embedPane div #overlayTools [id*=overlay]").hide();
	if (switchList[actionType].length>0){
		//if ($("#playerWrapper #embedPane").css("display")!="block"){
			$("#playerWrapper #embedPane").slideDown('fast',function(){
				$("#playerWrapper #embedPane div #overlayTools " + switchList[actionType]).show();
			});
		//}
	}
	$("#playerWrapper #embedPane button").css("behavior","url(/media/css/iepngfix.htc)");
}

siteMaster.closePlayerTools=function(){
	//Mini hack to deal with jquery/firefox's inability to handle overflow changing
	$("#playerWrapper #embedPane #overlayEmbed div.contentPane pre").css("overflow","hidden");
	
	
	//Things to do after we establish the panel arrangement
	var restartPlayer=function(){
		//Restart video / mp3 playback if possible
		if ($("body")[0].mediaPlayer["current_state"]!="PLAYING" && $("#tab_video.selected, #tab_podcast.selected").length>0){$("body")[0].mediaPlayer["playerObject"].sendEvent("play");}
		//Restart gallery playback if possible (and not already playing back)
		if ($("body")[0].mediaPlayer["autoPlay"] && $("#mediaPlayerSWF.gallery div.toolPane ul li").length>0 && $("body")[0].mediaPlayer["autoInterval"]==null){siteMaster.start_gallery_playback();}
	};
	//Are we in the gallery section?
	if ($(".sectionHead li.selected").attr("id").replace(/tab_/g,"")=="gallery"){
		//Get the gallery info
		var galleryInfo=siteMaster.reporter.gallery.Info();
		//Are we closing the captions window?
		if (siteMaster.reporter.activeToolPane()=="caption"){
			$("body")[0].mediaPlayer["captions"]=false;
			$("#playerWrapper #embedPane").slideUp('fast',restartPlayer);
		} else {
			//Are captions on?
			if (galleryInfo.captions){
				restartPlayer();
				siteMaster.playerOverlay("caption","gallery");
			} else {
				$("#playerWrapper #embedPane").slideUp('fast',restartPlayer);	
			}
		}
	} else {
		//Close up the text and restart the player
		$("#playerWrapper #embedPane").slideUp('fast',restartPlayer);	
	}
}


siteMaster.setMediaType=function(navSet){
	//IE6 Hack
	$("#playerWrapper #embedPane").hide();
	var cacheKey=siteMaster.keyLocation(navSet);
	var categoryExt=(navSet["category"]!=null)?escape(navSet["category"]) + "/":"";
	var ajaxLink="/json/content/" + escape(navSet["media"]) + "/" + categoryExt;
	$("#rightPane .sectionContent .categoryWrapper ul:eq(2) *").remove();
	$("#rightPane .sectionContent .itemList ul li").remove();
	$("#playerWrapper #mediaPlayerSWF").remove();
	$("body")[0].nowPlaying=undefined;
	if ($("body")[0].contentCache[cacheKey]){
		siteMaster.layoutMediaType(navSet);
	} else {
		$.getJSON(ajaxLink,function(data){
			$("body")[0].contentCache[cacheKey]=data;
			siteMaster.layoutMediaType(navSet);
		});
	}
}
siteMaster.layoutMediaType=function(navSet){
	var cacheKey=siteMaster.keyLocation(navSet);
	//Deselect any background
	$("#rightPane")[0].className="";
	//Set selected background
	$("#rightPane div.sectionHead").css("background","none");
	$("#rightPane").addClass(navSet["media"]);
	//IE6 irritation
	switch(navSet["media"]){
		case "gallery":
			$("#rightPane div.sectionHead").css("background","url(/media/img/CNMCSectionHeadGallery.png)");
			$("#rightPane .sectionContent .categoryWrapper ul li:first ul li:eq(1) span").text("Most Viewed");
			break;
		case "podcast":
			$("#rightPane div.sectionHead").css("background","url(/media/img/CNMCSectionHeadPodcast.png)");
			$("#rightPane .sectionContent .categoryWrapper ul li:first ul li:eq(1) span").text("Most Played");
			break;
		case "video":
			$("#rightPane div.sectionHead").css("background","url(/media/img/CNMCSectionHeadVideo.png)");
			$("#rightPane .sectionContent .categoryWrapper ul li:first ul li:eq(1) span").text("Most Watched");
			break;
	}
	//Reset the most x click
	$("#rightPane div.sectionContent div.categoryWrapper ul li ul li:eq(1) span").bind("click",siteMaster.mediaCategoryClick);
	//Reapply the IE6 png fix
	$("#rightPane div.sectionHead").css("behavior","url(/media/css/iepngfix.htc)");
	//Deselect any tab
	$("#rightPane .sectionHead ul li.selected").removeClass("selected")
	//Add selected to active tab id's are being SHADY
	$($("#tab_" + navSet["media"]).get()).addClass("selected")
	//Load up the categories
	$("#rightPane .sectionContent .categoryWrapper ul:eq(2)").html($("body")[0].contentCache[cacheKey].categorySource);
	$("#rightPane div.sectionContent div.categoryWrapper ul li ul li span").bind("click",siteMaster.mediaCategoryClick);
	$("#rightPane .sectionContent .itemList ul").html($("body")[0].contentCache[cacheKey].itemSource);
	siteMaster.setCategory(navSet);
}

siteMaster.setCategory=function(navSet){
	var cacheKey=siteMaster.keyLocation(navSet);
	if ($("body")[0].contentCache[cacheKey]){
		siteMaster.layoutCategory(navSet);
	} else {
		var categoryExt=(navSet["category"]!=null)?escape(navSet["category"]) + "/":"";
		var ajaxLink="/json/content/" + escape(navSet["media"]) + "/" + categoryExt;
		$.getJSON(ajaxLink,function(data){
			$("body")[0].contentCache[cacheKey]=data;
			siteMaster.layoutCategory(navSet);
		});
	}
}

siteMaster.layoutCategory=function(navSet){
	$("#rightPane .sectionContent .categoryWrapper ul li").removeClass("selected");
	var obj_category=siteMaster.reporter.categoryKeySearch(navSet["category"]);
	
	//If it's a sub category and our sub-category isn't selected roll it up OR our category has a 
	if ($("#rightPane .sectionContent .categoryWrapper ul:eq(2) li:has(#" + obj_category.id + "):first ul").css("display")!="block"){
		$("#rightPane .sectionContent .categoryWrapper ul:eq(2) li ul").slideUp('fast',siteMaster.categoryScroller)
	}
	var reservedList=["Most Watched","Most Played","Most Viewed","Recently Added"];
	
	if ($.inArray(navSet["category"],reservedList)>-1){
		var targetCategory=$("#rightPane .sectionContent .categoryWrapper ul li:contains('" + reservedList[$.inArray(navSet["category"],reservedList)] + "')");
	} else {
		var targetCategory=$("#rightPane .sectionContent .categoryWrapper ul li:has(#" + obj_category.id + ")");
	}
	if (targetCategory.length>0){
		//Select the top level category
		targetCategory.addClass("selected");
		//Test to see if it is a sub category
		if ($("#rightPane .sectionContent .categoryWrapper ul:eq(2) li ul li:contains('" + navSet["category"] + "')").length>0){
			//If our sub category isn't selected, roll it down
			if ($("#rightPane .sectionContent .categoryWrapper ul:eq(2) li:contains('" + navSet["category"] + "'):first ul:has(li:contains('" + navSet["category"] + "'))").css("display")!="block"){
				$("#rightPane .sectionContent .categoryWrapper ul:eq(2) li:contains('" + navSet["category"] + "'):first ul").slideDown('fast',siteMaster.categoryScroller)
			}
		}
	} else {
		$("#rightPane .sectionContent .categoryWrapper ul:eq(2) li:first").addClass("selected");
		siteMaster.categoryScroller();
	}
	//If our subcategories aren't already rolled out, drop 'em
	if ($("#rightPane .sectionContent .categoryWrapper ul:eq(2) li:contains('" + navSet["category"] + "'):first ul").length>0 && $("#rightPane .sectionContent .categoryWrapper ul:eq(2) li:contains('" + navSet["category"] + "'):first ul").css("display")!="block"){
		$("#rightPane .sectionContent .categoryWrapper ul:eq(2) li.selected:first ul").slideDown('fast',siteMaster.categoryScroller);
	} 
	//SERIOUS IE6 hackery for stacked classes
	$("#rightPane div.sectionContent div.categoryWrapper ul li ul li span").hover(function(){
		if ($(this).hasClass("nowPlaying")){$(this).removeClass("nowPlaying");$(this).addClass("hoverNowPlaying");} else {$(this).addClass("hover");}
	},function(){
		if ($(this).hasClass("hoverNowPlaying")){$(this).removeClass("hoverNowPlaying");$(this).addClass("nowPlaying");} else {$(this).removeClass("hover");}
	});
	$("#rightPane div.sectionContent div.categoryWrapper ul li .nowPlaying").removeClass("nowPlaying");
	if ($("body")[0].nowPlaying!=undefined){siteMaster.setCategoryNowPlaying($("body")[0].itemMap[$("body")[0].nowPlaying].Category.name);}
	siteMaster.syncScroll("ul.masterList","div.categoryWrapper div.scrollBar","li.selected li.selected:first");
	//One more IE6 float hack
	if (siteMaster.reporter.isIE6()){$("ul.masterList li:last").css("float","none");}
	siteMaster.setItems(navSet);
}

siteMaster.setCategoryNowPlaying=function(categoryName){
	$("#rightPane .sectionContent .categoryWrapper ul li .nowPlaying").removeClass("nowPlaying");
	//ARGH IE6 Compound hack
	$("#rightPane .sectionContent .categoryWrapper ul li .hoverNowPlaying").removeClass("hoverNowPlaying");
	if ($("#rightPane .sectionContent .categoryWrapper ul li ul li ul li:contains('" + categoryName + "')").length>0){
		//Our "now playing" is in a sub-category
		if ($("#rightPane .sectionContent .categoryWrapper ul li ul li.selected ul li:contains('" + categoryName + "')").length>0){
			$("#rightPane .sectionContent .categoryWrapper ul li ul li.selected ul li:contains('" + categoryName + "') span:first").addClass("nowPlaying");
		} else {
			//Our subcategory is currently hidden
			$("#rightPane .sectionContent .categoryWrapper ul li ul li:contains('" + categoryName + "') span:first").addClass("nowPlaying");
		}
	} else {
		//Our "now playing" is a master category set it to now-playing
		$("#rightPane .sectionContent .categoryWrapper ul li ul li:contains('" + categoryName + "') span:first").addClass("nowPlaying")
	}
}

siteMaster.categoryScroller=function(){
	siteMaster.scrollItems("div.categoryWrapper ul.masterList");
}

siteMaster.setItems=function(navSet){
	var cacheKey=siteMaster.keyLocation(navSet);
	if ($("body")[0].contentCache[cacheKey]){
		siteMaster.layoutItems(navSet);
	} else {
		//This should NEVER EVER happen.  But I'm sure Mr Muphy doesn't think so
		var categoryExt=(navSet["category"]!=null)?escape(navSet["category"]) + "/":"";
		var ajaxLink="/json/content/" + escape(navSet["media"]) + "/" + categoryExt;
		$.getJSON(ajaxLink,function(data){
			$("body")[0].contentCache[cacheKey]=data;
			siteMaster.layoutItems(navSet);
		});
	}
}

siteMaster.layoutItems=function(navSet){
	var cacheKey=siteMaster.keyLocation(navSet);
	contentData=$("body")[0].contentCache[cacheKey];
	var workArea=$("#rightPane .sectionContent .itemList");
	workArea.html(contentData["itemSource"]);
	$("#rightPane div.sectionContent div.itemList ul li").bind("click",siteMaster.mediaItemClick);
	$("#rightPane div.sectionContent div.itemList ul li:not(.nowPlaying)").hover(function(){$(this).addClass("hovering");},function(){$(this).removeClass("hovering");});
	siteMaster.scrollItems("div.itemList ul");
	/*
	for (var i=0;i<$("div.itemList ul li dl").length;i++){
		$("div.itemList ul li dl:eq(" + i + ") dt").text(siteMaster.truncate($("div.itemList ul li dl:eq(" + i + ") dt").text(),50));
		$("div.itemList ul li dl:eq(" + i + ") dd").text(siteMaster.truncate($("div.itemList ul li dl:eq(" + i + ") dd").text(),85));
	}
	*/
	siteMaster.activeItem(navSet);
}

siteMaster.activeItem=function(navSet){
	$("#playerWrapper #innerTitle").hide();clearTimeout($("body")[0].mediaPlayer["titleDisplay"]);
	//Clear active classes
	$("#rightPane .sectionContent .itemList ul li.nowPlaying,#rightPane .sectionContent .itemList ul li.upNext").removeClass("nowPlaying").removeClass("upNext");
	if(navSet["item"]!=null){
		/* You can find the trigger here! */
		//Where we'll be swapping the lookup
		var itemMap=$("body")[0].itemMap;
		var playingItem=siteMaster.itemContextLookup(navSet);
		//Set now playing
		playingItem.addClass("nowPlaying");
		//Set up next
		playingItem.next().addClass("upNext");
		$("body")[0].nowPlaying=playingItem.attr("id").replace(/media_/i,'');
		if (navSet["media"]=="video"){
			siteMaster.videoItem(navSet);
		} else if (navSet["media"]=="podcast"){
			siteMaster.podcastItem(navSet);
		} else if (navSet["media"]=="gallery"){
			siteMaster.galleryItem(navSet);
		}
		if ($("body")[0].nowPlaying!=undefined){siteMaster.setCategoryNowPlaying($("body")[0].itemMap[$("body")[0].nowPlaying].Category.name);}
	} else {
		if(!$("body")[0].nowPlaying){
			$("#playerWrapper div").hide();
			$("#mediaPlayerSWF").remove();
			$("#playerWrapper").prepend("<label id=\"mediaPlayerSWF\"></label>");
			if (navSet["media"]=="gallery"){$("#mediaPlayerSWF").addClass("gallery");}
			$("#mediaPlayerSWF").append('<div class="imgPane"></div><div class="emptyPane"><div></div></div>');
			$("#mediaPlayerSWF .imgPane").append("<img src='/media/img/playbuttonoverlay.png' />")
			var upNext=$("#rightPane .sectionContent .itemList ul li:first");
			upNext.addClass("upNext");
			var itemKey=$("body")[0].itemMap[upNext.attr("id").replace(/media_/i,"")].Item.id;
			var lookupList={'podcast':'audio','video':'video','gallery':'gallery'}
			var lookupLink="/json/item/" + lookupList[navSet["media"]] + "/None/" + itemKey + "/"
			$.getJSON(lookupLink,function(data){
				var pBox=$("#mediaPlayerSWF .imgPane");
				var useImg;
				var clickFunction;
				switch(navSet["media"]){
					case 'video':
						useImg=data.preview_image;
						clickFunction=function(){
							$("body")[0].nowPlaying=upNext.attr("id").replace(/media_/i,"");siteMaster.videoItem(itemKey);
							upNext.removeClass("upNext").addClass("nowPlaying").next().addClass("upNext");
						}
						break;
					case 'podcast':
						useImg=data.display_image;
						clickFunction=function(){
							$("body")[0].nowPlaying=upNext.attr("id").replace(/media_/i,"");siteMaster.podcastItem(itemKey);
							upNext.removeClass("upNext").addClass("nowPlaying").next().addClass("upNext");
						}
						break;
					case 'gallery':
						useImg=data.base_img;
						clickFunction=function(){
							$("body")[0].nowPlaying=upNext.attr("id").replace(/media_/i,"");siteMaster.galleryItem(itemKey);
							upNext.removeClass("upNext").addClass("nowPlaying").next().addClass("upNext");
						}
						break;
				}
				pBox.css("background","url(" + useImg + ")")
				pBox.bind("click",clickFunction);
				siteMaster.setPromos(data["promotions"]);
			});
		} else {
			var isPlayingCategory=$("#id_" + $("body")[0].itemMap[$("body")[0].nowPlaying].Category.screenid).parent().hasClass("selected");
			if (isPlayingCategory || $("[id*=" + $("body")[0].nowPlaying + "]").length>0){
				var playingItem=$("[id*=" + $("body")[0].nowPlaying + "]");
				playingItem.addClass("nowPlaying");
				if(playingItem.next().length>0){playingItem.next().addClass("upNext");}
			}
		}
	}
	$("body")[0].hashInterval=window.setInterval(siteMaster.hashMonitor,50);
	$("#rightPane div.sectionContent div.itemList ul li dl").each(function(){siteMaster.truncateInPlace($(this).find("dt"),60);siteMaster.truncateInPlace($(this).find("dd"),85);});
}

siteMaster.absolutePath=function(){
	return window.location.toString().replace(/#\//,"");;
}

siteMaster.addThisClick=function(){
	if(typeof $("body")[0].nowPlaying!="undefined" && window.location.toString().split("/").length==6){
		var navMap={};
		navMap["mediaType"]=$("body")[0].itemMap[$("body")[0].nowPlaying]["Type"];
		navMap["item"]=$("body")[0].itemMap[$("body")[0].nowPlaying].Item.title;
		navMap["category"]=$("body")[0].itemMap[$("body")[0].nowPlaying].Category.name;
		addthis_url=window.location.toString().replace("/#","") + escape(navMap["category"]) + "/" + escape(navMap["item"]) + "/";
		addthis_title=navMap["mediaType"] + " - " + navMap["item"];
	} else {
		addthis_url=siteMaster.absolutePath();
		addthis_title=document.title;
	}
	addthis_url=siteMaster.absolutePath();
	addthis_invoke(this.className,addthis_url,addthis_title);
}

siteMaster.videoItem=function(navSet){
	$("#playerWrapper div").hide();
	$("#videoToolsExt").css("display","block");
	if (typeof navSet=="string" && navSet.match(/media_[a-z0-9]{32}/)){
		//If we get the screen id directly, by all means, look it up
		var itemKey=$("body")[0].itemMap[navSet.replace(/media_/i,"")];
	} else if (typeof navSet=="number"){
		var mapSet=$("body")[0].itemMap;
		for (var keySearch in mapSet){if (mapSet[keySearch].Item.id==navSet){itemKey=mapSet[keySearch];break;}}
	} else {
		var itemKey=$("body")[0].itemMap[siteMaster.itemContextLookup(navSet).attr("id").replace(/media_/i,"")];
	}
	var objectID=itemKey.Item.id;
	var caregoryID=(itemKey.Category.id==null)?"None":itemKey.Category.id;
	$.getJSON("/json/item/video/" + caregoryID + "/" + objectID + "/",function(data){
		siteMaster.setTranscriptOpt(data);
		siteMaster.embedPlayer(objectID)
		siteMaster.infoTimeout();
		$("body")[0].mediaPlayer["item_description"]=data.description;
		//Scrub existing meta/link data and add new
		if (data.metaLinkData){siteMaster.addLinkMeta(data.metaLinkData);}
		siteMaster.setPromos(data["promotions"]);
	});
	
}

siteMaster.podcastItem=function(navSet){
	$("#playerWrapper div").hide();
	$("#podcastToolsExt").css("display","block");
	if (typeof navSet=="string" && navSet.match(/media_[a-z0-9]{32}/)){
		var itemKey=$("body")[0].itemMap[navSet.replace(/media_/i,"")];
	} else if (typeof navSet=="number"){
		var mapSet=$("body")[0].itemMap;
		for (var keySearch in mapSet){if (mapSet[keySearch].Item.id==navSet){itemKey=mapSet[keySearch];break;}}
	} else {
		var itemKey=$("body")[0].itemMap[siteMaster.itemContextLookup(navSet).attr("id").replace(/media_/i,"")];
	}
	var objectID=itemKey.Item.id;
	var caregoryID=(itemKey.Category.id==null)?"None":itemKey.Category.id;
	$.getJSON("/json/item/audio/" + caregoryID + "/" + objectID + "/",function(data){
		siteMaster.setTranscriptOpt(data);
		siteMaster.embedPlayer(objectID)
		siteMaster.infoTimeout();
		$("body")[0].mediaPlayer["item_description"]=data.description;
		//Scrub existing meta/link data and add new
		if (data.metaLinkData){siteMaster.addLinkMeta(data.metaLinkData);}
		siteMaster.setPromos(data["promotions"]);
	});
}

siteMaster.setTranscriptOpt=function(data){
	if(data.transcript.length==0){
		$("#playerWrapper div ul li.transcript").css("background-image","url(/media/img/toolbarNoTranscript.jpg)").css("cursor","default");
	} else {
		$("#playerWrapper div ul li.transcript").css("background-image","").css("cursor","");
	}
}
/*===========================================================================================================================================================
Gallery Specific Functions
===========================================================================================================================================================*/
siteMaster.galleryItem=function(navSet){
	$("#playerWrapper div").hide();
	$("#galleryToolsExt").css("display","block");
	/*No player embedding, gallery embedding instead ;) */
	$("#mediaPlayerSWF").remove();
	$("#playerWrapper").prepend("<label id=\"mediaPlayerSWF\"></label>");
	$("#mediaPlayerSWF").addClass("gallery");
	$.getJSON("/json/gallery/controls/",function(data){
		$("#mediaPlayerSWF").append(data);
		if (typeof navSet=="string" && navSet.match(/media_[a-z0-9]{32}/)){
			var itemKey=$("body")[0].itemMap[navSet.replace(/media_/i,"")];
		} else if (typeof navSet=="number"){
			var mapSet=$("body")[0].itemMap;
			for (var keySearch in mapSet){if (mapSet[keySearch].Item.id==navSet){itemKey=mapSet[keySearch];break;}}
		} else {
			var itemKey=$("body")[0].itemMap[siteMaster.itemContextLookup(navSet).attr("id").replace(/media_/i,"")];
		}
		var objectID=itemKey.Item.id;
		var caregoryID=(itemKey.Category.id==null)?"None":itemKey.Category.id;
		var ajaxLink="/json/item/gallery/" + caregoryID + "/" + objectID + "/";
		$.getJSON(ajaxLink,function(data){
			$("body")[0].mediaPlayer={};
			$("body")[0].mediaPlayer=data;
			$("body")[0].mediaPlayer["autoPlay"]=false;
			$("body")[0].mediaPlayer["captions"]=true;
			$(".imgPane").css("background","url(http://encoded-media.s3.amazonaws.com/image/" + data.base_img + ")");
			for (var i=0;i<data.image_list.length;i++){
				$(".toolPane ul").append("<li>" + (i+1) + "</li>");
			}
			$(".toolPane ul li").bind("click",function(){siteMaster.galleryItem_click.apply(this),siteMaster.end_gallery_playback()});
			$(".navAuto").bind("click",siteMaster.start_gallery_playback);
			$(".navBtn").bind("click",siteMaster.gallery_nav_click);
			siteMaster.galleryItem_click.apply($(".toolPane ul li:first")[0]);

			//Scrub existing meta/link data and add new
			if (data.metaLinkData){siteMaster.addLinkMeta(data.metaLinkData);}
			siteMaster.setPromos(data["promotions"]);
			
			//Show caption of first item
			siteMaster.playerOverlay("caption","gallery");
		});
	});
}

siteMaster.gallery_nav_click=function(){
	if (typeof $("body")[0].mediaPlayer["autoInterval"]=="number"){siteMaster.end_gallery_playback();}
	if ($(this).hasClass("nbFirst")){
		siteMaster.galleryItem_click.apply($(".toolPane ul li:first")[0]);
	} else if ($(this).hasClass("nbLast")){
		siteMaster.galleryItem_click.apply($(".toolPane ul li:last")[0]);
	} else if ($(this).hasClass("nbNext")){
		if($(".toolPane ul li.selected").length==0 || $(".toolPane ul li:last").hasClass("selected")){
			//No Item is selected or the last item is selected
			siteMaster.galleryItem_click.apply($(".toolPane ul li:first")[0]);
		} else {
			//Otherwise hit the next item
			siteMaster.galleryItem_click.apply($(".toolPane ul li.selected").next()[0]);
		}
	} else if ($(this).hasClass("nbPrev")){
		if($(".toolPane ul li.selected").length==0){
			//No Item is selected goto first
			siteMaster.galleryItem_click.apply($(".toolPane ul li:first")[0]);
		} else if ($(".toolPane ul li:first").hasClass("selected")){
			siteMaster.galleryItem_click.apply($(".toolPane ul li:last")[0]);
		} else {
			//Otherwise hit the next item
			siteMaster.galleryItem_click.apply($(".toolPane ul li.selected").prev()[0]);
		}
	}
}

siteMaster.start_gallery_playback=function(){
	if (typeof $("body")[0].mediaPlayer["autoInterval"]!="number" || $("body")[0].mediaPlayer["autoPlay"]){
		clearInterval($("body")[0].mediaPlayer["autoInterval"]);
		//If captions are supposed to be on, make sure they're on
		if(siteMaster.reporter.gallery.Info().captions){siteMaster.playerOverlay("caption","gallery");}
		var imageIndex=0;
		//Calculate *start* image
		if ($(".toolPane ul li.selected").length>0){imageIndex=$(".toolPane ul li").index($(".toolPane ul li.selected")[0]);}
		//Apply "click" to the image index (just in case nothing was submitted and to show the title again)
		siteMaster.galleryItem_click.apply($(".toolPane ul li:eq(" + imageIndex + ")")[0]);
		//Set the "auto playing" class
		$(".toolPane div .navAuto").removeClass("navAuto").addClass("navAutoHover");
		$("body")[0].mediaPlayer["autoInterval"]=setInterval(siteMaster.roll_gallery_item,5000);
		$("body")[0].mediaPlayer["autoPlay"]=true;
	} else {
		siteMaster.end_gallery_playback();
	}
}

siteMaster.end_gallery_playback=function(endAutoPlay){
	if (endAutoPlay==undefined || endAutoPlay==true){
		$("body")[0].mediaPlayer["autoPlay"]=false;
	}
	$(".toolPane div .navAutoHover").removeClass("navAutoHover").addClass("navAuto");
	clearInterval($("body")[0].mediaPlayer["autoInterval"]);
	$("body")[0].mediaPlayer["autoInterval"]=null;
}

siteMaster.roll_gallery_item=function(){
	if ($(".toolPane ul li:last").hasClass("selected")){
		$(".toolPane ul li.selected").remove("selected");
		siteMaster.galleryItem_click.apply($(".toolPane ul li:first")[0]);
		if (typeof $("body")[0].mediaPlayer["autoInterval"]=="number"){siteMaster.end_gallery_playback();}
	} else {
		var nextItem=$(".toolPane ul li.selected").next();
		$(".toolPane ul li.selected").remove("selected");
		siteMaster.galleryItem_click.apply(nextItem[0]);
	}
}

siteMaster.galleryItem_click=function(){
	$(".toolPane ul li.selected").removeClass("selected");
	$(this).addClass("selected");
	$(this).parent().scrollTo(this,100);
	var imgDet=$("body")[0].mediaPlayer.image_list[$(".toolPane ul li").index(this)];
	if (typeof imgDet=="undefined"){
		siteMaster.end_gallery_playback();
	} else {
		$(".imgPane").css("background","url(http://encoded-media.s3.amazonaws.com/image/" + imgDet.image_file + ")");
		$("body")[0].mediaPlayer["item_description"]=imgDet.image_description;
		$("#overlayCaption div.contentPane p").text(imgDet.image_description);
	}
	
}


/*============================================================================================================================
Global utilities
============================================================================================================================*/

siteMaster.infoTimeout=function(){
	siteMaster.playerOverlay("info",$("body")[0].navMaster.media);
	$("body")[0].infoTimeout=setTimeout(function(){
		$("#playerWrapper #embedPane").slideUp('fast');
	},6000);	
}

siteMaster.syncScroll=function(contentMaster,scrollTool,scrollDest){
	if ($(scrollTool).length>0){
		var targetStr=contentMaster + " " + scrollDest;
		//Function to figure out if our item is currently wholly visible
		var isFullyVisible=function(){var ntsb=$(targetStr).offset().top+$(targetStr).outerHeight()-$(contentMaster).innerHeight()-$(contentMaster).offset().top;if (ntsb<1 && Math.abs(ntsb)<($(contentMaster).innerHeight()-$(targetStr).outerHeight())){return true;} else {return false;}}
		var syncScrollBar=function(){
			var scrollPer=$(contentMaster).attr("scrollTop")/($(contentMaster).attr("scrollHeight")-$(contentMaster).outerHeight())
			$(scrollTool).find(".slider").css("top",parseInt(($(scrollTool).innerHeight()-$(scrollTool).find(".slider").outerHeight())*scrollPer)+"px")
		}
		if (!isFullyVisible()){
			//Make our element completely visible
			$(contentMaster).attr("scrollTop",$(targetStr).offset().top+$(targetStr).outerHeight()-$(contentMaster).offset().top-$(contentMaster).innerHeight())
		}
		syncScrollBar();
	}
}

siteMaster.truncateInPlace=function(objHost,desLen){
	if (typeof objHost.text=="function"){
		objHost.text(siteMaster.truncate(objHost.text(),desLen));
	}
}

siteMaster.truncate=function(srcVal,desLen){
	if (typeof srcVal=="string" && srcVal.length>0){
		if (srcVal.length>desLen){
			var wordSet=srcVal.trim().split(" ");
			while ((wordSet.join(" ") + "...").length>desLen){
				wordSet.pop();
			}
			return wordSet.join(" ") + "...";
		} else {
			return srcVal;
		}
	} else {
		return "";
	}
}

siteMaster.proper=function(srcVal){
	if (typeof srcVal=="string" && srcVal.length>0){
		var wordSet=srcVal.trim().split(" ");
		var returnVal="";
		for (var i=0;i<wordSet.length;i++){
			if (wordSet[i].length>1){
				returnVal+=" " + wordSet[i].substring(0,1).toUpperCase() + wordSet[i].substring(1,wordSet[i].length).toLowerCase();
			} else {
				returnVal+=" " + wordSet[i].toUpperCase();
			}
		}
		return returnVal.trim();
	} else {
		return "";
	}
}

siteMaster.iFrameDownload=function(linkVal){
	$("#forceDownload").remove();
	$("body").append($(document.createElement("iframe")).css("display","none").attr("src",linkVal).attr("id","forceDownload"));
}


/*============================================================================================================================
Mediaplayer Specific Functions
============================================================================================================================*/
siteMaster.embedPlayer=function(argStruct){
	$("#mediaPlayerSWF").remove();
	var noFlash=$("#noFlashContent").html();
	$("#playerWrapper").prepend("<label id=\"mediaPlayerSWF\">&nbsp;</label>");
	var revision='9.0.124';
	if (swfobject.hasFlashPlayerVersion(revision)){
		var flashPass=false;
		var objParams = {'wmode':'opaque','bgcolor':'#FFF','allowfullscreen':'true','allowscriptaccess':'always'}
		var objVars = {'config':'/config/' + argStruct + '/config.xml'};
		swfobject.embedSWF('/media/swf/player.swf', 'mediaPlayerSWF', '480', '406', revision, null,objVars,objParams);
		$("#mediaPlayerSWF").height(406);
	} else {
		$("#mediaPlayerSWF").html(noFlash);
	}
	$("#mediaPlayerSWF").show();
	$("body")[0].mediaPlayer["playerObject"]=null; 
	$("body")[0].mediaPlayer["current_state"]="PLAYING";
}

siteMaster.addPlayerListeners=function() {
	if ($("body")[0].mediaPlayer.playerObject && typeof $("body")[0].mediaPlayer["playerObject"].addModelListener=="function"){ 
		$("body")[0].mediaPlayer["playerObject"].addModelListener("STATE", "siteMaster.stateListener");
	} else {
		setTimeout(siteMaster.addPlayerListeners,100);
	}
}

siteMaster.stateListener=function(obj){
	$("body")[0].mediaPlayer["current_state"] = obj.newstate; 
	$("body")[0].mediaPlayer["last_state"] = obj.oldstate; 
	if (obj.oldstate=="PAUSED" && obj.newstate=="PLAYING"){
		//Hide overlay on switch from playing to paused
		siteMaster.closePlayerTools();
	} else if (obj.oldstate=="PLAYING" && obj.newstate=="COMPLETED"){
		if ($("#media_" + $("body")[0].nowPlaying).length>0 && $("#media_" + $("body")[0].nowPlaying).next().length>0){
			var nextItem=$("#media_" + $("body")[0].nowPlaying).next().attr("id").replace(/media_/,"")
			siteMaster.hashNavSet(siteMaster.locateItem(nextItem));
		}
	}
}

siteMaster.hashNavSet=function(navSet){
	var navHash="#/";
	if (navSet["media"]){navHash+=escape(navSet["media"]) + "/";}
	if (navSet["category"]!=null){navHash+=escape(navSet["category"]) + "/";}
	if (navSet["item"]!=null){navHash+=escape(navSet["item"]) + "/";}
	window.location.hash=navHash;
}

siteMaster.locateItem=function(itemID){
	var targetItem=$("body")[0].itemMap[itemID];
	var navPattern={"media":targetItem.Type.toLowerCase(),"category":targetItem.Category.name,"item":targetItem.Item.title};
	return navPattern;
}


siteMaster.itemContextLookup=function(navSet){
	var itemMap=$("body")[0].itemMap;
	var playingItem;
	for (var itemKey in itemMap){
		if (navSet["item"]==itemMap[itemKey].Item.title && navSet["category"]==itemMap[itemKey].Category.name && itemMap[itemKey].Type.toLowerCase()==navSet["media"].toLowerCase()){
			playingItem=$("#media_" + itemKey);
		}
	}
	return playingItem;
}
siteMaster.addLinkMeta=function(data){
	siteMaster.scrubLinkMeta();
	if (data.linkData){
		for (var i=0;i<data.linkData.length;i++){
			var linkSet=document.createElement("link");
			linkSet.rel=data.linkData[i].rel;
			linkSet.href=data.linkData[i].href;
			$("head").append(linkSet);
		}
	}
	if (data.metaData){
		for (var i=0;i<data.metaData.length;i++){
			var metaSet=document.createElement("meta");
			metaSet.name=data.metaData[i].name;
			metaSet.content=data.metaData[i].content;
			$("head").append(metaSet);
		}
	}
}

siteMaster.scrubLinkMeta=function(){
	var linkSaveList=["StyleSheet"];
	var jExclude="";
	for (var i=0;i<linkSaveList.length;i++){jExclude+="[rel!=" + linkSaveList[i] + "]";}
	$("head meta").remove();
	$("head link" + jExclude).remove();	
}

siteMaster.setPromos=function(objPromos){
	//Chunk any existing promos
	$("#rightPromo promoContent *").remove();
	$("#leftPromo *:not(.br):not(.bl)").remove();
	if (objPromos["right"].length>0){
		$("#rightPromo .promoContent").html(eval(objPromos["right"]));
		$("#rightPromo").show();
	} else {
		$("#rightPromo").hide();
	}
	if (objPromos["left"].length>0){
		$("#leftPromo").append("<div></div>");
		$("#leftPromo div").html(eval(objPromos["left"]));
		$("#leftPromo").show();
		$("#leftPromo div.linkList ul li a").hover(function(){$(this).css("text-decoration","none")},function(){$(this).css("text-decoration","underline")});
		$("#leftPane").css("background-image","");
		$("#leftPane").css("behavior","url(/media/css/iepngfix.htc)");
	} else {
		$("#leftPromo").hide();
		$("#leftPane").css("background-image","url(/media/img/CNMCLeftBGNoPromo.png)");
		$("#leftPane").css("behavior","url(/media/css/iepngfix.htc)");
	}
}

siteMaster.sendEmail=function(){
	var msgDet={};
	msgDet["to"]=$("#overlayEmail div.contentPane ul li input[name=emailTo]").val();
	msgDet["from"]=$("#overlayEmail div.contentPane ul li input[name=emailFrom]").val();
	msgDet["content"]=$("#overlayEmail div.contentPane ul li textarea[name=emailMessage]").val();
	if (msgDet["to"].length==0 || msgDet["from"]==0){
		alert("Please select a 'To' and 'From' for this message");
	} else {
		var formReturn=function(){
			$("#overlayTools #overlayEmail div.contentPane *").hide();
			$("#overlayTools #overlayEmail div.contentPane").append("<span class=\"messageSent\">Message Sent</span>");
		}
		var formPreset=function(){
			$("#overlayTools #overlayEmail div.contentPane button").hide();
		}
		var mailForm=$(document.createElement("form"));
		mailForm.attr("method","post");
		mailForm.attr("action","/json/mail/link/");
		mailForm.append("<input type=\"text\" name=\"emailFrom\" value=\"" + msgDet["from"] + "\" />");
		mailForm.append("<input type=\"text\" name=\"emailTo\" value=\"" + msgDet["to"] + "\" />");
		mailForm.append("<input type=\"text\" name=\"mediaType\" value=\"" + $("body")[0].navMaster["media"] + "\" />");
		mailForm.append("<input type=\"text\" name=\"linkPath\" value=\"" + siteMaster.absolutePath() + "\" />");
		mailForm.append("<textarea name=\"content\">" + msgDet["content"] + "</textarea>");
		mailForm.ajaxForm({before:formPreset,success:formReturn}); 
		mailForm.submit();
	}
}

//Connect to the jw player instance
function playerReady(thePlayer){
        $("body")[0].mediaPlayer["playerObject"] = $("#" + thePlayer.id)[0];
        siteMaster.addPlayerListeners();
}

siteMaster.scrollItems=function(scrollElement){
	if ($(scrollElement).hasClass("hasScroll")){$(scrollElement).removeClass("hasScroll");$(scrollElement).next().remove();}
	if ($(scrollElement)[0].scrollHeight>parseInt($(scrollElement).css("height"))){
		//var itemText=$(".itemList ul:first li:first").html();for (var i=0;i<20;i++){strKeyID=new UUID().id;strKeyID="media_" + strKeyID.replace(/-/g,"");$(".itemList ul:first").append("<li id=\"" + strKeyID + "\">" + itemText + "</li>");}
		//Factor scrollbar math
		var scrollData={}
		scrollData["factor"]=$(scrollElement)[0].offsetHeight/$(scrollElement)[0].scrollHeight;
		scrollData["wrapHeight"]=parseInt($(scrollElement).css("height"));
		scrollData["elementHeight"]=parseInt(scrollData["wrapHeight"]*scrollData["factor"]);	
		//Build Scrollbar html
		var scrollParent=$(document.createElement("div"));
		scrollParent.addClass("scrollBar");
		scrollParent.append(document.createElement("span"))
		scrollParent.find('span:first').addClass('top');
		scrollParent.append(document.createElement("span"))
		scrollParent.find('span:last').addClass('bottom');
		scrollParent.css("height",scrollData["wrapHeight"] + "px");
		scrollParent.append(document.createElement("span"))
		scrollParent.find('span:last').addClass("body");
		scrollParent.append(document.createElement("div"));
		scrollParent.find("div:last").addClass("slider").css("height",scrollData["elementHeight"]+"px");
		scrollParent.find("div.slider").append(document.createElement("span"));
		scrollParent.find("div.slider span:first").addClass("topAbs");
		scrollParent.find("div.slider").append(document.createElement("span"));
		scrollParent.find("div.slider span:last").addClass("bottom");
		//Append scrollbar	
		$(scrollElement).addClass("hasScroll");
		$(scrollElement).after(scrollParent);
		//Set Slider Body height, must happen after render
		scrollParent.find('span.body:first').css("height",(scrollData["wrapHeight"]-parseInt(scrollParent.find('span.top:first').css("height"))-parseInt(scrollParent.find('span.bottom:first').css("height"))) + "px");
	
		scrollParent.find(".slider").draggable({containment:'parent'});
		scrollParent.bind('drag', function(event, ui) {
			var pos=parseInt($(this).find(".slider").css("top"))/parseInt($(this).css("height"));
			var newTop=parseInt(pos*$(scrollElement)[0].scrollHeight)
			$(scrollElement)[0].scrollTop=newTop;
			//swap for absolute top
			var elSlider = $(this).find(".slider");
			if (parseInt(elSlider.css("top"))==0){elSlider.find(".top").removeClass("top").addClass("topAbs");} else {elSlider.find(".topAbs").removeClass("topAbs").addClass("top");}
			if ((parseInt(elSlider.css("top")) + elSlider[0].offsetHeight) == this.offsetHeight){elSlider.find(".bottom").removeClass("bottom").addClass("bottomAbs");} else {elSlider.find(".bottomAbs").removeClass("bottomAbs").addClass("bottom");}
		});
		
		$(scrollElement).bind("mousewheel",function(event,delta){
			$(scrollElement)[0].scrollTop=$(scrollElement)[0].scrollTop+(delta*-14);
			//Scroll top as percentage of body
			var pos=$(scrollElement)[0].scrollTop/$(scrollElement)[0].scrollHeight;
			$(scrollElement).next().find(".slider").css("top",parseInt(pos*parseInt($(scrollElement).next().css("height"))) + "px");
			var elSlider = $(scrollElement).next().find(".slider");
			if (parseInt(elSlider.css("top"))==0){elSlider.find(".top").removeClass("top").addClass("topAbs");} else {elSlider.find(".topAbs").removeClass("topAbs").addClass("top");}
			if ((parseInt(elSlider.css("top")) + elSlider[0].offsetHeight) == this.offsetHeight){elSlider.find(".bottom").removeClass("bottom").addClass("bottomAbs");} else {elSlider.find(".bottomAbs").removeClass("bottomAbs").addClass("bottom");}
			return false;
		});
	}
}

siteMaster.reporter=function(){}
siteMaster.reporter.innerTitle=function(){
	return $("#playerWrapper #innerTitle").css("display")=="block";
}
siteMaster.reporter.activeToolPane=function(){
	for (var i=0;i<$("#overlayTools > *").length;i++){
		if ($("#overlayTools > *:eq(" + i + ")").css("display")!="none"){
			return $("#overlayTools > *:eq(" + i + ")").attr("id").replace(/overlay/g,"").toLowerCase();
		}
	}	
	return "";
}
siteMaster.reporter.gallery=function(){}
siteMaster.reporter.gallery.Info=function(){
	return {'captions':$("body")[0].mediaPlayer["captions"],'autoPlay':$("body")[0].mediaPlayer["autoPlay"]};
}
siteMaster.reporter.isIE6=function(){
	return navigator.userAgent.toString().indexOf("MSIE 6.")>-1
}
siteMaster.reporter.gallery.TargetIndex=function(){
	return $(".toolPane ul li").index($(".toolPane ul li.selected")[0]);
}
siteMaster.reporter.mapData=function(itemKey){
	if (typeof $("body")[0].itemMap[itemKey]=="object"){return $("body")[0].itemMap[itemKey];}
	for (var keyVal in $("body")[0].itemMap){
		if ($("body")[0].itemMap[keyVal].Item.screenid==itemKey){
			return $("body")[0].itemMap[keyVal];
			break;
		}
	}
}

siteMaster.reporter.categoryKeySearch=function(category_name){
	var bodyMap = $("body")[0].itemMap;
	for (keyset in bodyMap){
		if (bodyMap[keyset].Category.name==category_name){
			var return_obj = $("#id_" + bodyMap[keyset].Category.screenid);
			return_obj.id=return_obj.attr("id");
			return return_obj;
		}
	}
}