var lastPlayedFile = null;
var flashvars = {};
var siteName = null;



function thisMovie(movieName) {
    if (navigator.appName.indexOf("Microsoft") != -1) {
        return window[movieName]
    }
    else {
        return document[movieName]
    }
}

function playVideo(videoFile) {
	var videoH = getStyle(document.getElementById('video_player'), 'height').replace('px','') - 25;
	var videoW = getStyle(document.getElementById('video_player'), 'width').replace('px','');
	var omniture_account = "bscbostonscientific-com";
	var omniture_trackingServer = "metric.bostonscientific.com";

	var video = "http://" + location.host + videoFile;
	var img = video.replace(new RegExp(".flv$"), ".jpg");
	var omniture_evar10 = siteName + "-" + video.substring(video.lastIndexOf("/") + 1).replace(new RegExp(".flv$"), "");
	var omniture_useEvent14 = true;//boolean

	if (videoFile != lastPlayedFile)
	      thisMovie("flashContent").callFromHtmlToFlash(videoFile,img,video,omniture_account,omniture_trackingServer,omniture_evar10,omniture_useEvent14,videoW,videoH);
	lastPlayedFile = videoFile;
}

function setupVideoCenter(){	
	// either load the requested video or do a general video setup
	var videoId = getURLParam("videoId");
	if (videoId.length > 0){
		setupVideoCenterCallout(videoId);	
	} else {
		setupVideoCenterInitial();
	}
}

function videoPlayerIsReady(){setupVideoCenter();}

function setupVideoCenterInitial(){
	dhtmlHistory.add("setupVideoCenterInitial();", "Initial Load[js]");
	var request = createRequest();
	var videoCenterName = document.getElementById("video_center_name").innerHTML;
	var currentUrl = location.pathname;
	request.open("GET", "/VideoCenter.bsci?method=setup&videoCenterName=" + encodeURIComponent(videoCenterName) + "&url=" + currentUrl, true);	
	request.setRequestHeader("If-Modified-Since", "Sat, 1 Jan 2000 00:00:00 GMT");    // prevent IE caching
	request.onreadystatechange = function(){setupVideoCenterCallback(request)};
	request.send(null);
}

function setupVideoCenterCallout(videoId){
	dhtmlHistory.add("setupVideoCenterCallout(" + videoId + ");", "Video Callout[js]");
	var request = createRequest();
	var videoCenterName = document.getElementById("video_center_name").innerHTML;
	var currentUrl = location.pathname;
	request.open("GET", "/VideoCenter.bsci?method=setup&videoCenterName=" + encodeURIComponent(videoCenterName) + "&url=" + currentUrl + "&videoId=" + videoId, true);	
	request.setRequestHeader("If-Modified-Since", "Sat, 1 Jan 2000 00:00:00 GMT");    // prevent IE caching
	request.onreadystatechange = function(){setupVideoCenterCallback(request)};
	request.send(null);
}

function setupVideoCenterCallback(request){
	// Return from AJAX call
	if (request.readyState == 4){
		if (request.status == 200){
			loadVideos(request);
			loadSelectedVideo(findSelectedVideo(request));
		} else {
			alert('Server is unreachable.  Please try again later.');
		}
	}
}

function sortVideoCenter(sortBy){
	dhtmlHistory.add(encodeURI("sortVideoCenter('" + sortBy + "')").replace(/\(/g, "%28").replace(/\'/g, "%27").replace(/\)/g, "%29"), "Video Sort[js]");

	// Required to set menu when using the back button
	var select = document.getElementById("video_sort_by");
	var options = select.getElementsByTagName("option");
	for (var i = 0; i < options.length; i++){
		if (options[i].value == sortBy){
			options[i].selected = true;
		} else {
			options[i].selected = false;
		}
	}

	// Make AJAX call
	var request = createRequest();
	var videoCenterName = document.getElementById("video_center_name").innerHTML;
	var currentUrl = location.pathname;
	request.open("GET", "/VideoCenter.bsci?method=sort&sortBy=" + sortBy + "&videoCenterName=" + encodeURIComponent(videoCenterName) + "&url=" + currentUrl, true);	
	request.setRequestHeader("If-Modified-Since", "Sat, 1 Jan 2000 00:00:00 GMT");    // prevent IE caching
	request.onreadystatechange = function(){sortVideoCenterCallback(request)};
	request.send(null);
}

function sortVideoCenterCallback(request){
	// Return from AJAX call
	if (request.readyState == 4){
		if (request.status == 200){
			loadVideos(request);
			loadSelectedVideo(findSelectedVideo(request));
		} else {
			alert('Server is unreachable.  Please try again later.');
		}
	}
}

function doSort(){
	var selectbox = document.getElementById("video_sort_by");	
	sortVideoCenter(selectbox.options[selectbox.selectedIndex].value);
}

function loadVideos(request){

	// clear videos listed - find the div video_list and make it empty
	var videoListNode = document.getElementById("video_list");
	while (videoListNode.hasChildNodes())
		videoListNode.removeChild(videoListNode.firstChild);
	
	// extract list of videos from request, and display them, calling loadVideoInList in a loop
	var xmlDoc = request.responseXML.documentElement;
	var videoList = xmlDoc.getElementsByTagName('video');
	for (var i = 0; i < videoList.length; i++)
		loadVideoInList(videoList[i]);
}

function findSelectedVideo(request){
	// extract selected video from request
	var xmlDoc = request.responseXML.documentElement;
	var videoList = xmlDoc.getElementsByTagName('video');
	var videoId = '';
	var videoTitle = '';
	var videoPopularity = '';
	var videoText = '';
	for (var i = 0; i < videoList.length; i++){
		if(videoList[i].getAttribute("selected") != null && videoList[i].getAttribute("selected") == 'true'){
			return videoList[i];
		}
	}
	// if you get here, nothing is selected, so default to showing the first video in the list
	return videoList[0];
}

function loadSelectedVideo(videoNode){

	// extract info from node
	var videoId = '';
	var videoTitle = '';
	var videoFile = '';
	var videoPopularity = '';
	var videoText = '';
	if (videoNode.getElementsByTagName("video-id")[0].hasChildNodes())
		videoId = videoNode.getElementsByTagName("video-id")[0].firstChild.nodeValue;
	if (videoNode.getElementsByTagName("title")[0].hasChildNodes())
		videoTitle = videoNode.getElementsByTagName("title")[0].firstChild.nodeValue;
	if (videoNode.getElementsByTagName("file-path")[0].hasChildNodes())
		videoFile = videoNode.getElementsByTagName("file-path")[0].firstChild.nodeValue;
	if (videoNode.getElementsByTagName("popularity")[0].hasChildNodes()){
		videoPopularity = new Number(videoNode.getElementsByTagName("popularity")[0].firstChild.nodeValue) + 1;
		videoNode.getElementsByTagName("popularity")[0].firstChild.nodeValue = new Number(videoNode.getElementsByTagName("popularity")[0].firstChild.nodeValue) + 1;
	}
	if (videoNode.getElementsByTagName("description")[0].hasChildNodes())
		videoText = videoNode.getElementsByTagName("description")[0].firstChild.nodeValue;

	// update popularity in db
	var request = createRequest();
	request.open("GET", "/VideoCenter.bsci?method=load&videoId=" + videoId, true);	
	request.setRequestHeader("If-Modified-Since", "Sat, 1 Jan 2000 00:00:00 GMT");    // prevent IE caching
	request.send(null);
	
	// load selected video into flash player
	playVideo(videoFile);
	document.getElementById("video_title").innerHTML = videoTitle;
	document.getElementById("video_popularity").innerHTML = videoPopularity + " " + document.getElementById("video_views_label").innerHTML;
	document.getElementById("video_text").innerHTML = videoText;
	
	// mark all videos in list not selected, except for selected vid marked selected
	// update popularity in list
	var videosInList = getElementsByClassName(document.getElementById("video_list"), "video_in_list");
	var selectedVideoPos = 0;
	var selectedVideoReached = false;
	for (var i = 0; i < videosInList.length; i++){
		var videoInListId = getElementsByClassName(videosInList[i], "video_in_list_id")[0].firstChild.nodeValue;
		if (videoInListId != null && videoInListId == videoId){
			videosInList[i].className = "video_in_list selected";
			getElementsByClassName(videosInList[i], "video_in_list_popularity")[0].innerHTML = videoPopularity + " " + document.getElementById("video_views_label").innerHTML;
			selectedVideoReached = true;
		} else {
			videosInList[i].className = "video_in_list";
			if (!selectedVideoReached)
				selectedVideoPos += videosInList[i].offsetHeight;
		}
	}	
	var videoListHeight = document.getElementById("video_list").offsetHeight;
	if (selectedVideoPos > videoListHeight && document.getElementById("video_list").scrollTop == 0)
		document.getElementById("video_list").scrollTop = selectedVideoPos; 	
}

function loadVideoInList(videoNode){
	// extract info from node
	// extract id
	var videoId = '';
	if (videoNode.getElementsByTagName("video-id")[0].hasChildNodes())
		videoId = videoNode.getElementsByTagName("video-id")[0].firstChild.nodeValue;
	// extract info video_in_list_image div
	var imageLocation = '';
	if (videoNode.getElementsByTagName("thumbnail-img")[0].hasChildNodes())
		imageLocation = videoNode.getElementsByTagName("thumbnail-img")[0].firstChild.nodeValue;
	var imageAlt = '';
	if (videoNode.getElementsByTagName("thumbnail-alt-info")[0].hasChildNodes())
		imageAlt = videoNode.getElementsByTagName("thumbnail-alt-info")[0].firstChild.nodeValue;
	// extract info video_in_list_title div
	var title = '';
	if (videoNode.getElementsByTagName("title")[0].hasChildNodes())
		title = videoNode.getElementsByTagName("title")[0].firstChild.nodeValue;
	// extract info video_in_list_length div
	var length = '';
	if (videoNode.getElementsByTagName("video-attributes")[0].hasChildNodes())
		length = videoNode.getElementsByTagName("video-attributes")[0].firstChild.nodeValue;
	// extract info video_in_list_date div
	var date = '';
	if (videoNode.getElementsByTagName("video-date")[0].hasChildNodes())
		date = videoNode.getElementsByTagName("video-date")[0].firstChild.nodeValue;
	// extract info video_in list_popularity div
	var popularity = '';
	if (videoNode.getElementsByTagName("popularity")[0].hasChildNodes())
		popularity = videoNode.getElementsByTagName("popularity")[0].firstChild.nodeValue;

	// create new div on page
	// create video_in_list div
	var video = document.createElement("div");
	video.className = "video_in_list";
	video.onclick = function(){loadSelectedVideo(videoNode); dhtmlHistory.add("setupVideoCenterCallout(" + videoId + ");", "Video Load[js]");};
	var videoList = document.getElementById("video_list");
	videoList.appendChild(video);
	
	// create id div
	var videoIdDiv = document.createElement("div");
	videoIdDiv.className = "video_in_list_id";
	videoIdDiv.innerHTML = videoId;
	video.appendChild(videoIdDiv);
	
	// create video_in_list_image div
	if (imageLocation != null && imageLocation != ''){
		var videoImage = document.createElement("img");
		videoImage.className = "video_in_list_image";
		videoImage.setAttribute("alt", imageAlt);
		videoImage.setAttribute("src", imageLocation);
		video.appendChild(videoImage);
	}

	var videoInformation = document.createElement("div");
	videoInformation.className = "video_in_list_information";
	video.appendChild(videoInformation);

	// create video_in_list_title div
	var videoTitle = document.createElement("div");
	videoTitle.className = "video_in_list_title";
	videoTitle.innerHTML = title;
	videoInformation.appendChild(videoTitle);
	
	// create video_in_list_length div
	var videoLength = document.createElement("span");
	videoLength.className = "video_in_list_length";
	videoLength.innerHTML = length;
	videoInformation.appendChild(videoLength);
	
	// create video_in_list_date div
	var videoDate = document.createElement("span");
	videoDate.className = "video_in_list_date";
	videoDate.innerHTML = date;
	videoInformation.appendChild(videoDate);
	
	// create video_in list_popularity div
	var videoPopularity = document.createElement("div");
	videoPopularity.className = "video_in_list_popularity";
	videoPopularity.innerHTML = popularity + " " + document.getElementById("video_views_label").innerHTML;
	videoInformation.appendChild(videoPopularity);
}

