DHTML.addEvent(window,"load",pageLoad);
var requiredMajorVersion = 8;
var requiredMinorVersion = 0;
var requiredRevision = 0;

function generateThumb(relativePath){
	return "scripts/genThumb.cfm?inputFile=" + DHTML.escape("../" + relativePath) + "&imgWidth=76&imgHeight=51";
}

function swapVisible(oTarget,isVis){
	if (isVis==1){
		DHTML.removeClass(oTarget,"hide");
		DHTML.addClass(oTarget,"show");
	} else {
		DHTML.removeClass(oTarget,"show");
		DHTML.addClass(oTarget,"hide");
	}
}

function swapTab(objKeyTab){
	for (var i=0;i<$('mainNav').childNodes.length;i++){
		if ($('mainNav').childNodes[i].nodeType==1){
			DHTML.removeClass($('mainNav').childNodes[i],"Selected");
			DHTML.addClass($('mainNav').childNodes[i],"unSelected");
		}
	}
	DHTML.removeClass(objKeyTab,"unSelected");
	DHTML.addClass(objKeyTab,"Selected");
}

//Main Page Load
function pageLoad(destPage){
	http('GET',"scripts/navdata.cfm?actionType=titleDictionary",function(result){
		jQuery("body")[0].titleMap=result;
	});
	
	if ($("GalleryLinks") && $("GalleryLinks").slideShow){clearTimeout($("GalleryLinks").slideShow);}
	if (typeof $("mainContent").rootPath != "string"){
		http('GET',"scripts/navdata.cfm?actionType=rootPath",function(result){
			$("mainContent").rootPath=result;
		},null)
	}
	if (typeof destPage=="string"){
		qsPageData = new Querystring("display=" + destPage);
	} else {
		qsPageData = new Querystring;
	}
	var pageFunction;
	(typeof qsPageData.get("display")=="string") ? pageFunction = qsPageData.get("display") : pageFunction="video";
	$('mainContent').pageType=pageFunction;
	if (typeof qsPageData.get("mediaID") != "object"){
		$('mainContent').hasDirect=1;
	} else {
		$('mainContent').hasDirect=0;
	}
	//hitbox integration
	// wipe out panel contents
	while ($('relatedContent').firstChild){$('relatedContent').removeChild($('relatedContent').firstChild);}
	while ($('contentPanel').firstChild){$('contentPanel').removeChild($('contentPanel').firstChild);}
	while ($('navPanel').firstChild){$('navPanel').removeChild($('navPanel').firstChild);}
	// handle pane type
	switch(pageFunction){
		case "video":
			swapTab($('navLinkVideo'));
			$('contentPanel').className="video_contentPanel";
			var defaultImgDiv = $E({tag:"div",className:"contentPanelImg"});
			defaultImgDiv.appendChild($E({tag:"img",src:"images/CenterVideo.png",alt:"Image Gallery",width:228,height:85}));
			$('contentPanel').appendChild(defaultImgDiv);
			$('navPanel').className="video_navPanel";
			swapVisible($('playerFooter'),1);
			swapVisible($('imgFooter'),0);
			$('navPanel').appendChild($E({tag:"ul",id:"categoryList"}));
			buildNavPanel("videoNav");
			var hbxPageName="Video Gallery";
			break;
		case "images":
			swapTab($('navLinkImage'));
			$('contentPanel').className="images_contentPanel";
			var defaultImgDiv = $E({tag:"div",className:"contentPanelImg"});
			defaultImgDiv.appendChild($E({tag:"img",src:"images/CenterPhoto.png",alt:"Image Gallery",height:85,width:317}));
			$('contentPanel').appendChild(defaultImgDiv);
			$('navPanel').className="images_navPanel";
			swapVisible($('playerFooter'),0);
			swapVisible($('imgFooter'),1);
			$('navPanel').appendChild($E({tag:"ul",id:"categoryList"}));
			buildNavPanel("imgNav");
			var hbxPageName="Image Gallery";
			break;
		case "audio":
			swapTab($('navLinkAudio'));
			$('contentPanel').className="audio_contentPanel";
			var defaultImgDiv = $E({tag:"div",className:"contentPanelImg"});
			defaultImgDiv.appendChild($E({tag:"img",src:"images/CenterAudio.png",alt:"Image Gallery",height:85,width:298}));
			$('contentPanel').appendChild(defaultImgDiv);
			$('navPanel').className="audio_navPanel";
			swapVisible($('playerFooter'),1);
			swapVisible($('imgFooter'),0);
			$('navPanel').appendChild($E({tag:"ul",id:"categoryList"}));
			buildNavPanel("audioNav");
			var hbxPageName="Podcast Gallery";
			break;
		case "webcast":
			swapTab($('navLinkWebcast'));
			$('contentPanel').className="webcast_contentPanel";
			var defaultImgDiv = $E({tag:"div",className:"contentPanelImg"});
			defaultImgDiv.appendChild($E({tag:"img",src:"images/CenterLecture.png",alt:"Image Gallery",height:85,width:254}));
			$('contentPanel').appendChild(defaultImgDiv);
			$('navPanel').className="webcast_navPanel";
			swapVisible($('playerFooter'),1);
			swapVisible($('imgFooter'),0);
			$('navPanel').appendChild($E({tag:"ul",id:"categoryList"}));
			buildNavPanel("webcastNav");
			var hbxPageName="Lecture Series";
			break;
		default:
			var hbxPageName="Unknown Link";
			break;
	}
	recordHitbox(hbxPageName)
}

function itemRollover(evt){
	if (DHTML.sourceEvent(evt)=="mouseover"){
		DHTML.addClass($(DHTML.sourceObject(evt).itemID),"rollover");
	} else {
		DHTML.removeClass($(DHTML.sourceObject(evt).itemID),"rollover");
	}	
}

function highlightVideo(evt){
	var srcLink=$(DHTML.sourceObject(evt).videoDetail.id)
	var evtType=DHTML.sourceEvent(evt)
	if (DHTML.sourceEvent(evt)=="mouseover"){
		DHTML.addClass(srcLink,"rollover");
	} else {
		DHTML.removeClass(srcLink,"rollover");
	}	
}


//Nav Panel Build
function buildNavPanel(navType){
	http('GET',"scripts/navdata.cfm?actionType=" + navType,function(result){
		document.getElementsByTagName("body")[0].navLoad=result;
		var navMain = $("categoryList");
		for (var i=0;i<result.media.length;i++){
			//Create the list item
			var newCategory = $E({tag:"li"});
			var addCategoryClass="";
			switch(navType){
				case "videoNav":
					addCategoryClass=" videoCategory";
					break;
				default:
					break;
			}
			var divCategoryHead = $E({tag:"div",categoryID:result.media[i].ID});
			divCategoryHead.appendChild($E({tag:"div",className:"left",categoryID:result.media[i].ID}));
			DHTML.lastChild(divCategoryHead).appendChild($E({tag:"img",src:"images/folder_open.gif",categoryID:result.media[i].ID,id:"imgFolder_"+result.media[i].ID,width:24,height:24}));
			divCategoryHead.appendChild($E({tag:"div",className:"categoryHead" + addCategoryClass,innerHTML:result.media[i].Name,categoryID:result.media[i].ID}));
			divCategoryHead.appendChild($E({tag:"div",className:"clear"}));
			DHTML.addEvent(divCategoryHead,"click",expandCategory);
			newCategory.appendChild(divCategoryHead);
			//Create div galleries
			var categoryClass = ($('mainContent').hasDirect==1) ? "categories hide" : "categories hide";
			var newDiv = $E({tag:"div",id:result.media[i].ID,className:categoryClass});
			var itemList = $E({tag:"UL",className:"gallery"});
			var itemEntry;
			for (var j=0;j<result.media[i].Items.length;j++){
				itemEntry = $E("li");
				itemEntry.className="selectOff";
				itemEntry.captionText = result.media[i].Items[j].Caption;
				itemEntry.id=result.media[i].Items[j].ID;
				switch(navType){
					case "webcastNav":
						var webcastDetail={sectionInfo:result.media[i].Items[j].Sections,displayImage:result.media[i].Items[j].webcastPreviewImage,rootLink:result.media[i].Items[j].webcastEntireLink,titleValue:result.media[i].Name};
						var navItem=$E({tag:"div",className:"webcast_nav_main",id:result.media[i].Items[j].webcastID,itemDetails:webcastDetail,itemID:result.media[i].Items[j].webcastID});
						navItem.appendChild($E({tag:"div",className:"webcastNavTitle",innerHTML:result.media[i].Items[j].webcastTitle,itemID:result.media[i].Items[j].webcastID}));
						DHTML.addEvent(DHTML.lastChild(navItem),"click",loadWebcastDetails);
						navItem.appendChild($E({tag:"div",className:"webcastNavBlurb",innerHTML:result.media[i].Items[j].webcastBlurb,itemID:result.media[i].Items[j].webcastID}));
						DHTML.addEvent(navItem,"mouseover",itemRollover);
						DHTML.addEvent(navItem,"mouseout",itemRollover);
						DHTML.addEvent(DHTML.lastChild(navItem),"click",loadWebcastDetails);
						navItem.appendChild($E({tag:"div",className:"clear"}));
						
						itemEntry.appendChild(navItem);
						break;
					case "videoNav":
						DHTML.addClass(itemEntry,"fauxLink");
						var entryDet = result.media[i].Items[j];
						if (entryDet.isSection==0){
							var videoData=entryDet.Videos[0];
							var divMain=$E({tag:"div",className:"videoPreview",id:videoData.id,videoDetail:videoData});
							divMain.appendChild($E({tag:"div",className:"left",videoDetail:videoData}));
							DHTML.lastChild(divMain).appendChild($E({tag:"img",className:"videoPreviewImg",src:generateThumb(videoData.previewImage),videoDetail:videoData}));
							divMain.appendChild($E({tag:"div",className:"testDiv",innerHTML:videoData.caption,videoDetail:videoData}));
							divMain.appendChild($E({tag:"div",className:"clear"}));
							DHTML.addEvent(divMain,"click",showVideo);
							DHTML.addEvent(divMain,"mouseover",highlightVideo);
							DHTML.addEvent(divMain,"mouseout",highlightVideo);
							itemEntry.appendChild(divMain);
						} else {
							itemEntry.appendChild($E({tag:"div",className:"videoPreviewSubCategory"}));
							DHTML.lastChild(itemEntry).appendChild($E({tag:"div",className:"left"}));
							var imgDiv = DHTML.lastChild(DHTML.lastChild(itemEntry))
							imgDiv.appendChild($E({tag:"img",className:"videoNavSubfolder",src:"images/folder_closed_movie.png",width:24,height:24,id:"img_" + entryDet.id,alt:entryDet.Description,listID:entryDet.id}));
							DHTML.addEvent(DHTML.lastChild(imgDiv),"click",expandSubCategory);							
							DHTML.lastChild(itemEntry).appendChild($E({tag:"div",className:"descText",innerHTML:entryDet.Description,listID:entryDet.id}));
							DHTML.addEvent(DHTML.lastChild(DHTML.lastChild(itemEntry)),"click",expandSubCategory);
							DHTML.lastChild(itemEntry).appendChild($E({tag:"div",className:"clear"}));
							var sectionList=$E({tag:"ul",className:"videoSection hide",id:entryDet.id,listID:entryDet.id});
							for (var k=0;k<entryDet.Videos.length;k++){
								var videoData=entryDet.Videos[k];
								var divMain=sectionList.appendChild($E({tag:"div",className:"videoPreview subEntry",id:videoData.id,listID:entryDet.id,videoDetail:videoData}));
								divMain.appendChild($E({tag:"div",className:"videoNavImgContainer",videoDetail:videoData}));
								DHTML.lastChild(divMain).appendChild($E({tag:"img",className:"videoPreviewImg",src:generateThumb(videoData.previewImage),videoDetail:videoData}));
								divMain.appendChild($E({tag:"div",className:"testDiv",innerHTML:videoData.caption,videoDetail:videoData}));
								divMain.appendChild($E({tag:"div",className:"clear"}));
								sectionList.appendChild($E({tag:"li"}));
								DHTML.addEvent(divMain,"click",showVideo);
								DHTML.addEvent(divMain,"mouseover",highlightVideo);
								DHTML.addEvent(divMain,"mouseout",highlightVideo);
								DHTML.lastChild(sectionList).appendChild(divMain);
							}
							itemEntry.appendChild(sectionList);
						}
						break;
					case "imgNav":
						$('imgGalleryCaption').innerHTML="";
						$('imgPictureCaption').innerHTML="";
						swapVisible($('imgGalleryCaption'),0);
						swapVisible($('imgPictureCaption'),0);
						swapVisible($('imgControls'),0);
						var galleryDiv = $E({tag:"div",id:result.media[i].Items[j].ID,innerHTML:result.media[i].Items[j].Name,className:"imgItem",captionText:result.media[i].Items[j].Caption});
						itemEntry.appendChild(galleryDiv);
						DHTML.addEvent(itemEntry,"click",loadGallery);
						break;
					case "audioNav":
						DHTML.addClass(itemEntry,"fauxLink");
						itemEntry.entryDetails=result.media[i].Items[j];
						var categoryDiv = $E({tag:"div",categoryID:result.media[i].ID});
						var topRowDiv = $E({tag:"div"});
						topRowDiv.appendChild($E({tag:"div",className:"audioEntry_podcastImg"}));
						topRowDiv.appendChild($E({tag:"div",className:"audioEntry_title",innerHTML:result.media[i].Items[j].Title}));
						topRowDiv.appendChild($E({tag:"div",className:"clear"}));
						var contentDiv = $E({tag:"div",className:"audioEntry_content"});
						contentDiv.appendChild($E({tag:"div",className:"audioEntry_shortDesc",innerHTML:result.media[i].Items[j].shortDescription}));
						var linksDiv = $E({tag:"div",className:"audioEntry_links"});
						linksDiv.appendChild($E({tag:"div",className:"audioEntry_linkImg mp3",entryDetails:result.media[i].Items[j]}));
						DHTML.addEvent(DHTML.lastChild(linksDiv),"click",audioPlayback);
						linksDiv.appendChild($E({tag:"div",className:"audioEntry_linkTxt",innerHTML:"Listen",entryDetails:result.media[i].Items[j]}));
						DHTML.addEvent(DHTML.lastChild(linksDiv),"click",audioPlayback);
						linksDiv.appendChild($E({tag:"div",className:"audioEntry_linkImg iTunes",channelID:result.media[i].ID,entryDetails:result.media[i].Items[j]}));
						DHTML.addEvent(DHTML.lastChild(linksDiv),"click",openItunes)
						linksDiv.appendChild($E({tag:"div",className:"audioEntry_linkTxt",innerHTML:"iTunes",channelID:result.media[i].ID,entryDetails:result.media[i].Items[j]}));
						DHTML.addEvent(DHTML.lastChild(linksDiv),"click",openItunes)
						linksDiv.appendChild($E({tag:"div",className:"clear"}));
						contentDiv.appendChild(linksDiv);
						categoryDiv.appendChild(topRowDiv);
						categoryDiv.appendChild(contentDiv);
						itemEntry.appendChild(categoryDiv);
						break;
					default:
				}
				itemList.appendChild(itemEntry);
			}
			newDiv.appendChild(itemList);
			newCategory.appendChild(newDiv);
			navMain.appendChild(newCategory);
		}
		if ($('mainContent').hasDirect==1){
			directLink();
		}
	},null);
}

//Store Hitbox Information
function recordHitbox(pageTitle){
	var hitboxTitle=DHTML.escape("GUH Streaming Media Gallery - " + pageTitle);
	$("hitBox").src="scripts/hitbox.cfm?title=" + hitboxTitle;
}


//Link directly to media
function directLink(){
	if ($('mainContent').hasDirect==1){
		http('GET','scripts/navdata.cfm?actionType=getLinkItemInfo&itemID=' + qsPageData.get("mediaID"),function(result){
			if (typeof result=="object"){
				expandCategory(result.categoryID);
				switch($('mainContent').pageType){
					case "video":
						if (result.subCategoryID){
							expandSubCategory(result.subCategoryID)
						}				
						showVideo(result.itemID);
						break;
					case "webcast":
						loadWebcastDetails(result.itemID);
						break;
					case "audio":
						audioPlayback(result.itemID);
						break;
					case "images":
						loadGallery(result.itemID);
						break;
				}
				$("navPanel").scrollTop=$(result.itemID).offsetTop;
			}
		},null);
	}
}

//Expand Categories
function expandCategory(evt){
	if (typeof evt=="string" && $(evt)==null){return false;}
	var objCaller=(typeof evt=="string")?$(evt).parentNode.firstChild:DHTML.sourceObject(evt);
	var objCategory=$(objCaller.categoryID);
	if (objCategory.className.indexOf('hide')>0){
		objCategory.className="categories show";
		$("imgFolder_" + objCaller.categoryID).src="images/folder_open.gif";
	} else {
		objCategory.className="categories hide";
		$("imgFolder_" + objCaller.categoryID).src="images/folder_closed.gif";
	}
}

function expandSubCategory(evt){
	if (typeof evt=="string" && $(evt)==null){return false;}
	var objCaller=(typeof evt=="string")?$(evt):DHTML.sourceObject(evt);
	$("img_" + objCaller.listID).height=24;
	$("img_" + objCaller.listID).width=24;
	if (DHTML.hasClass($(objCaller.listID),"hide")){
		$("img_" + objCaller.listID).src="images/folder_open_movie.png";
		DHTML.removeClass($(objCaller.listID),"hide");
		DHTML.addClass($(objCaller.listID),"show");
	} else {
		$("img_" + objCaller.listID).src="images/folder_closed_movie.png";
		DHTML.removeClass($(objCaller.listID),"show");
		DHTML.addClass($(objCaller.listID),"hide");
	}
}
//Build Related Links
function buildRelatedLinks(itemID){
	set_title(itemID);
	pageTracker._trackPageview("/mediaplayer/?mediaID=" + itemID);
	http('GET',"scripts/navdata.cfm?actionType=getRelatedLinks&itemID=" + itemID,function(result){
		while ($('relatedContent').firstChild){$('relatedContent').removeChild($('relatedContent').firstChild);}
		var relatedLinks=$("relatedContent");
		for (var i=0;i<result.length;i++){
			var newLink=$E({tag:"li",className:"rc"});
			newLink.appendChild($E({tag:"a",href:result[i].linkDest,innerHTML:result[i].linkTitle,target:"_blank"}));
			relatedLinks.appendChild(newLink);
		}
	},null);
}

/*********************************************************************************
// Video specific functions
*********************************************************************************/
function playVideo(){
	var hasReqestedVersion = DetectFlashVer(requiredMajorVersion, requiredMinorVersion, requiredRevision);
	if (hasReqestedVersion){
		var videoDetails=$('contentPanel').videoDetails;
		var so = new SWFObject('scripts/movieplayer.swf','mpl','350','320','7');
		so.addParam('allowfullscreen','true');
		so.addParam('allowscriptaccess','always');
		so.addVariable('file',videoDetails.projectPath)
		so.addVariable('id',videoDetails.projectID);
		so.addVariable('image',videoDetails.previewImage);
		so.addVariable('autostart','true');
		$("mainContent").removeChild($("contentPanel"));
		$("mainContent").insertBefore($E({tag:"div",id:"contentPanel",className:"video_contentPanel"}),$("navPanel"));
		so.write('contentPanel');
	} else {
		while ($("contentPanel").firstChild){$("contentPanel").removeChild($("contentPanel").firstChild);}
		$("contentPanel").appendChild($E({tag:"div",innerHTML:"This content requires the Adobe Flash Player and a browser with JavaScript enabled. <a href='http://www.adobe.com/go/getflash/'>Get Flash</a>"}));
		DHTML.lastChild($("contentPanel")).style.marginTop="140px";
		DHTML.lastChild($("contentPanel")).style.color="white";
	}
}


function showVideo(evt){
	if (typeof evt=="string" && $(evt)==null){return false;}
	var srcLink=(typeof evt=="string")?$(evt):DHTML.sourceObject(evt);
	buildRelatedLinks(srcLink.videoDetail.id);	 
	if (typeof $("navPanel").prevSelected!="undefined"){
		DHTML.removeClass($($("navPanel").prevSelected),"itemSelected");
	}
	$("navPanel").prevSelected=srcLink.videoDetail.id
	DHTML.addClass($(srcLink.videoDetail.id),"itemSelected");
	recordHitbox("Video Gallery - " + srcLink.videoDetail.projectID);
	while($('contentPanel').firstChild){$('contentPanel').removeChild($('contentPanel').firstChild);}
	var videoDetails={'previewImage':srcLink.videoDetail.previewImage,'projectPath':srcLink.videoDetail.projectPath,'projectID':srcLink.videoDetail.projectID};
	//playVideo(srcLink.videoDetail.previewImage,srcLink.videoDetail.projectPath,srcLink.videoDetail.projectID,'contentPanel')
	$('contentPanel').videoDetails=videoDetails;
	var t=window.setTimeout('playVideo()',250);
}

/*********************************************************************************
// End Video specific functions
*********************************************************************************/


/*********************************************************************************
// Image specific functions
*********************************************************************************/
function loadGallery(evt){
	if ($("GalleryLinks") && $("GalleryLinks").slideShow){clearTimeout($("GalleryLinks").slideShow);}
	DHTML.removeClass($("imgFooter"),"hide");
	$("imgPictureCaption").innerHTML="&nbsp;";
	// Switch off previously selected galleries
	var prevOn = document.getElementsByClassName("selectOn");
	for (var i=0;i<prevOn.length;i++){
		DHTML.removeClass(prevOn[i],"selectOn");
	}
		DHTML.addClass("selectOff");
	// Switch on current gallery and set caption
	if (typeof evt=="string" && $(evt)==null){return false;}
	var targetItem=(typeof evt=="string")?$(evt):DHTML.sourceObject(evt);
	DHTML.addClass(targetItem,"selectOn");
	set_title(targetItem.id);
	pageTracker._trackPageview("/mediaplayer/?mediaID=" + targetItem.id);
	$("imgGalleryCaption").innerHTML=targetItem.captionText;
	recordHitbox("Images Gallery - " + targetItem.innerHTML);
	http('GET',"scripts/navdata.cfm?actionType=imgGallery&galleryID=" + targetItem.id,function(result){
		var imgContainer = $("imgNavButtons");
		var loopLimit=result.length;
		while (imgContainer.firstChild){imgContainer.removeChild(imgContainer.firstChild);}
		var navDiv;
		buildPlayerControls(imgContainer,'images/imgCtrl_First.png');
		DHTML.lastChild(imgContainer).moveType='First';
		DHTML.addEvent(DHTML.lastChild(imgContainer),"click",galleryMove)
		buildPlayerControls(imgContainer,'images/imgCtrl_Back.png');
		DHTML.lastChild(imgContainer).moveType='Prev';
		DHTML.addEvent(DHTML.lastChild(imgContainer),"click",galleryMove);
		
		var divImgButtons=$E({tag:"div",id:"GalleryLinks"});
		divImgButtons.imgPosition = -1;
		divImgButtons.galleryData = result;
		for (var i=0;i<loopLimit;i++){
			var imgClassName = (i<10)?"imgNavLink inlOff":"imgNavLink inlOff noDisplay";
			var navDiv=$E({tag:"div",className:imgClassName,innerHTML:i+1,imgId:result[i].imageID,clearSlideShow:1});
			DHTML.addEvent(navDiv,"click",swapImg);
			divImgButtons.appendChild(navDiv);
		}
		imgContainer.appendChild(divImgButtons);
		buildPlayerControls(imgContainer,'images/imgCtrl_Next.png');
		DHTML.lastChild(imgContainer).moveType='Next';
		DHTML.addEvent(DHTML.lastChild(imgContainer),"click",galleryMove);
		buildPlayerControls(imgContainer,'images/imgCtrl_Last.png');
		DHTML.lastChild(imgContainer).moveType='Last';
		DHTML.addEvent(DHTML.lastChild(imgContainer),"click",galleryMove);
		buildPlayerControls(imgContainer,'images/imgCtrl_Play.png');
		DHTML.addEvent(DHTML.lastChild(imgContainer),"click",playGallery);
		imgContainer.appendChild($E({tag:"div",className:"clear"}));
		swapVisible($('imgGalleryCaption'),1);
		swapVisible($('imgPictureCaption'),1);
		swapVisible($('imgControls'),1);
		swapImg(0);
	},null);
}

function playGallery(){
	if ($("GalleryLinks").imgPosition==$("GalleryLinks").galleryData.length-1){
		clearTimeout($("GalleryLinks").slideShow);
	} else {
		galleryMove({moveType:"Next"});
		$("GalleryLinks").slideShow=setTimeout("playGallery()",5000);
	}
}

function galleryMove(evt){
	if ($("GalleryLinks") && $("GalleryLinks").slideShow){clearTimeout($("GalleryLinks").slideShow);}
	var objCaller = (evt.moveType)?evt:DHTML.sourceObject(evt);
	var listContainer = $("GalleryLinks");
	var targetPos;
	switch(objCaller.moveType){
		case "First":
			targetPos = 0;
			break;
		case "Last":
			targetPos = listContainer.childNodes.length-1;
			break;
		case "Next":
			targetPos = ($("GalleryLinks").imgPosition+1==$("GalleryLinks").galleryData.length)?$("GalleryLinks").galleryData.length-1:$("GalleryLinks").imgPosition+1;
			break;
		case "Prev":
			targetPos = ($("GalleryLinks").imgPosition-1==-1)?0:$("GalleryLinks").imgPosition-1;
			break;
	}
	//Find the current range start
	for (var i=0;i<listContainer.galleryData.length;i++){if (listContainer.childNodes[i].className.indexOf("noDisplay")==-1){var rangeStart=i;break;}}
	//Only do something if we need to change the displayed range
	//For all cases but "Prev" this code will show the correct img set
	if (objCaller.moveType!="Prev"){
		//If our new position isn't in the current range
		if (!(targetPos>rangeStart && targetPos<rangeStart+9)){
				rangeStart = (targetPos-9<0)?0:targetPos-9;
				for (var i=0;i<listContainer.childNodes.length;i++){
					var imgClassName = (i<rangeStart || i>rangeStart+9)?"imgNavLink inlOff noDisplay":"imgNavLink inlOff";
					listContainer.childNodes[i].className=imgClassName;
				}
		}
	} else {
		if (targetPos<rangeStart){
			for (var i=0;i<listContainer.childNodes.length;i++){
				var imgClassName = (i<targetPos || i>targetPos+9)?"imgNavLink inlOff noDisplay":"imgNavLink inlOff";
				listContainer.childNodes[i].className=imgClassName;
			}
		}
	}
	swapImg(targetPos);
}

function swapImg(evt){
	var objCaller=(typeof evt=="object")?DHTML.sourceObject(evt):$("GalleryLinks").childNodes[evt];
	if (objCaller.clearSlideShow){clearTimeout($("GalleryLinks").slideShow);}
	var listContainer = $("GalleryLinks");
	var imgsData = $("GalleryLinks").galleryData;
	for (var i=0;i<listContainer.childNodes.length;i++){
		if (listContainer.childNodes[i].className.indexOf("noDisplay")==-1){
			listContainer.childNodes[i].className="imgNavLink inlOff";
		}
	}
	for (var i=0;i<imgsData.length;i++){
		if (imgsData[i].imageID==objCaller.imgId){
			imgSource=imgsData[i];
			var imgPosition=i;
		}
	}
	$("GalleryLinks").imgPosition=imgPosition;
	while ($('contentPanel').firstChild){$('contentPanel').removeChild($('contentPanel').firstChild);}
	//Create an image so that the load is fast
	var imgDisplay = new Image();
	imgDisplay.src=imgSource.filePath;
	imgDisplay.alt=imgSource.captionText;
	imgDisplay.id="imgDisplay";
	imgDisplay.className="hide";
	$('contentPanel').appendChild(imgDisplay);
	objCaller.className="imgNavLink inlOn";
	$("imgPictureCaption").innerHTML = imgSource.captionText;
	window.setTimeout('imgLoad_complete()',50);
}

function imgLoad_complete(){
	if (!$("imgDisplay").complete){
		window.setTimeout('imgLoad_complete()',50);
	} else {
		DHTML.removeClass($("imgDisplay"),"hide");
	}
}

function buildPlayerControls(container,img){
	var addDiv = $E("div");
	addDiv.className="imgNavButton";
	addDiv.style.backgroundImage="url('" + img + "')";
	container.appendChild(addDiv);
}
/*********************************************************************************
// End image specific functions
/********************************************************************************/

// Audio Specific functions
function audioPlayback(evt){
	if (typeof evt=="string" && $(evt)==null){return false;}
	var objCaller=(typeof evt=="string")?$(evt):DHTML.sourceObject(evt);
	while ($("contentPanel").firstChild){
		$("contentPanel").removeChild($("contentPanel").firstChild);
	}
	var entryDetails = objCaller.entryDetails;
	buildRelatedLinks(entryDetails.ID);
	recordHitbox("Audio Gallery - " + entryDetails.Title);
	var playerTable = $E({tag:"table",className:"audioPlayer"});
	var dataRow = $E({tag:"tr"});
	dataRow.appendChild($E({tag:"td",colSpan:2,id:"flashAudioPlayer"}));
	playerTable.appendChild(dataRow);
	// Title
	dataRow = $E({tag:"tr"});
	dataRow.appendChild($E({tag:"td",innerHTML:"Title:",className:"firstChild"}));
	dataRow.appendChild($E({tag:"td",innerHTML:entryDetails.Title}));
	playerTable.appendChild(dataRow);
	// Author
	dataRow = $E({tag:"tr"});
	dataRow.appendChild($E({tag:"td",innerHTML:"Author:",className:"firstChild"}));
	dataRow.appendChild($E({tag:"td",innerHTML:entryDetails.Author}));
	playerTable.appendChild(dataRow);
	//Description
	dataRow = $E({tag:"tr"});
	dataRow.appendChild($E({tag:"td",innerHTML:"Description:",className:"firstChild"}));
	dataRow.appendChild($E({tag:"td",innerHTML:entryDetails.Description}));
	playerTable.appendChild(dataRow);
	//Copyright
	dataRow = $E({tag:"tr"});
	dataRow.appendChild($E({tag:"td",innerHTML:"Copyright:",className:"firstChild"}));
	dataRow.appendChild($E({tag:"td",innerHTML:entryDetails.copyRightYear}));
	playerTable.appendChild(dataRow);
	$("contentPanel").appendChild(playerTable);
	DHTML.addClass($("contentPanel"),"scrollOverflow");
	$("contentPanel").innerHTML=$("contentPanel").innerHTML;
	
	var hasReqestedVersion = DetectFlashVer(requiredMajorVersion, requiredMinorVersion, requiredRevision);
	if (hasReqestedVersion){
		var so = new SWFObject('scripts/movieplayer.swf','mpl','406','100','7');
		so.addParam('allowfullscreen','false');
		so.addParam('allowscriptaccess','always');
		so.addVariable('file',entryDetails.flashAudioPath);
		if (entryDetails.audioDisplayImage.length==0){
			so.addVariable('image','images/AudioPlayerPic.jpg');
		} else {
			so.addVariable('image',entryDetails.audioDisplayImage);
		}
		so.addVariable('overstretch','fit');
		so.addVariable('showicons','false');
		so.addVariable('type','mp3');
		so.addVariable('useaudio','false');
		so.addVariable('autostart','true');
		so.write($("flashAudioPlayer"));
	} else {
		while ($("contentPanel").firstChild){$("contentPanel").removeChild($("contentPanel").firstChild);}
		$("contentPanel").appendChild($E({tag:"div",innerHTML:"This content requires the Adobe Flash Player and a browser with JavaScript enabled. <a href='http://www.adobe.com/go/getflash/'>Get Flash</a>"}));
		DHTML.lastChild($("contentPanel")).style.marginTop="140px";
		DHTML.lastChild($("contentPanel")).style.color="black";
	}
}

function openItunes(evt){
	objCaller=DHTML.sourceObject(evt);
	buildRelatedLinks(objCaller.entryDetails.ID);
	http('get',"http://" + $("mainContent").rootPath + "scripts/rssWrite.cfm?channelID=" + objCaller.channelID,function(result){
		if (result.build=="complete"){
			window.location="itpc://" + $("mainContent").rootPath + "rss/" + objCaller.channelID + ".xml";
		}
	},null);
}

//Webcast specific functions
function loadWebcastDetails(evt){
	if (typeof evt=="string" && $(evt)==null){return false;}
	var objCaller=(typeof evt=="string")?$(evt):$(DHTML.sourceObject(evt).itemID);
	while ($('contentPanel').firstChild){$('contentPanel').removeChild($('contentPanel').firstChild);}
	recordHitbox("Webcast " + objCaller.itemDetails.titleValue);
	buildRelatedLinks(objCaller.id);
	var divDisplay=$E({tag:"div"});
	divDisplay.appendChild($E({tag:"div",className:"webcastPanel_title",innerHTML:objCaller.itemDetails.titleValue}));
	var divPanelSplit=$E({tag:"div",className:"webcastPanel_divider"});
	divPanelSplit.appendChild($E({tag:"img",src:'images/webcastDivider.png',width:274,height:11,alt:'divider'}));
	divDisplay.appendChild(divPanelSplit);
	var divPanelImage=$E({tag:"div"});
	divPanelImage.appendChild($E({tag:"img",src:objCaller.itemDetails.displayImage,alt:objCaller.itemDetails.titleValue}));
	divDisplay.appendChild(divPanelImage);
	var divRootLink=$E({tag:"div",className:"webcastPanel_content"});
	divRootLink.appendChild($E({tag:"div",className:"left"}));
	DHTML.lastChild(divRootLink).appendChild($E({tag:"a",href:objCaller.itemDetails.rootLink,target:"_blank",innerHTML:"View entire presentation"}));
	divRootLink.appendChild($E({tag:"div",className:"webcastPlayImage"}));
	DHTML.lastChild(divRootLink).appendChild($E({tag:"img",className:"fauxLink",width:"45",height:"16",src:"images/playBtn.gif",linkPath:objCaller.itemDetails.rootLink}));
	DHTML.addEvent(DHTML.lastChild(DHTML.lastChild(divRootLink)),"click",presentationSection)
	divRootLink.appendChild($E({tag:"div",className:"clear"}));
	divDisplay.appendChild(divRootLink);
	var divSlider = $E({tag:"div",className:"webcastPanel_slider"});
	divSlider.appendChild($E({tag:"div",className:"selectText",innerHTML:"Select an Individual Presentation"}));
	for (var i=0;i<objCaller.itemDetails.sectionInfo.length;i++){
		var divSection = $E({tag:"div",className:"webcastTitling"});
		divSection.appendChild($E({tag:"div",className:"webcastItemListing"}));
		DHTML.lastChild(divSection).appendChild($E({tag:"div",className:"sectionTitle"}));
		DHTML.lastChild(DHTML.lastChild(divSection)).appendChild($E({tag:"a",innerHTML:objCaller.itemDetails.sectionInfo[i].entryTitle,href:objCaller.itemDetails.sectionInfo[i].entryPath,target:"_blank"}));
		DHTML.lastChild(divSection).appendChild($E({tag:"div",className:"sectionPresenter",innerHTML:objCaller.itemDetails.sectionInfo[i].entryPresenter}));
		divSection.appendChild($E({tag:"div",className:"webcastPlayImage"}));
		DHTML.lastChild(divSection).appendChild($E({tag:"img",className:"fauxLink",width:"45",height:"16",src:"images/playBtn.gif",linkPath:objCaller.itemDetails.sectionInfo[i].entryPath}));
		DHTML.addEvent(DHTML.lastChild(DHTML.lastChild(divSection)),"click",presentationSection);
		divSection.appendChild($E({tag:"div",className:"clear"}));
		divSlider.appendChild(divSection);
		
	}
	if (typeof $("navPanel").prevSelected!="undefined"){
		DHTML.removeClass($($("navPanel").prevSelected),"itemSelected");
	}
	$("navPanel").prevSelected=objCaller.itemID;
	DHTML.addClass(objCaller,"itemSelected");
	divSlider.appendChild($E({tag:"div",className:"clear"}));
	divDisplay.appendChild(divSlider);
	$('contentPanel').appendChild(divDisplay);
	$('contentPanel').appendChild($E({tag:"div",className:"clear"}));
}

function presentationSection(evt){
	objCaller = DHTML.sourceObject(evt);
	window.open(objCaller.linkPath,'_blank');
}


function set_title(itemID){
	var documentTitle = jQuery("body")[0].titleMap.titles[itemID];
	if (navigator.userAgent.indexOf('MSIE')>-1){
		document.title = documentTitle;
	} else {
		jQuery("head title").text(documentTitle);
	}
}