﻿//////////////////////////
// Globals
var thresholdVersion = "10.0.0"; // Disable Full Screen mode for Flash Player versions below this value
var versionIsSufficient = true; // Global flag. Must be initialized to "true" here.


var xmlDoc;
var nodeID;

//var oWrapper = document.getElementById("PlayerWrapper");
var oPlayer;

var oOtaGlobals = {
    setDisplayXmlId: false, // Debug: true for playlist debug
	oWrapper: null,
	oTextWrapper:null,
	startHidden: false,
	bFirstRun: true,
	playlistLength: 0,
	generateHtmlPlaylist: true,
	playlistMaxSize: 0, // 0 = unlimited
	thresholdNumber: 0, // auto calculated
	currentPlaylistItemNumber: 1
};


//////////////////////////
// playerReady(obj) - Called when the player is instantiated

function playerReady(obj) { 
	var id = obj['id'];
	var version = obj['version'];
	var client = obj['client'];
	oPlayer = document.getElementById(id);
	
	oOtaGlobals.oWrapper = document.getElementById("VideoContentWrapper");
	oOtaGlobals.oTextWrapper = document.getElementById("TextContentWrapper");

	var divFlashErrorMessage;
	divFlashErrorMessage = document.getElementById("FlashErrorMessage");
	if (divFlashErrorMessage) {
		divFlashErrorMessage.style.display = "none";
	}

	oPlayer.addViewListener("REDRAW", "RedrawScreen");


	// load XML description file
	if (oOtaGlobals.bFirstRun){
		if (oPlayer.getConfig().file.toLowerCase().indexOf(".asx") > 0)	{
			xmlDoc = importXML(oPlayer.getConfig().file, xmlLoaded);
			
			
			oOtaGlobals.playlistLength = xmlDoc.getElementsByTagName('entry').length;
			
			if (oOtaGlobals.generateHtmlPlaylist === true) {
				injectPlaylist();
				initListLogic();
				initCollapseLogic();
			}
			

			// inject the current start item info:
			var defaultPlayItem = oPlayer.getConfig().item; // zero based index
			var xmlItemNumber = ( (oOtaGlobals.playlistLength - defaultPlayItem) > 0 ) ? (oOtaGlobals.playlistLength - defaultPlayItem) : 1;
			
			if (!oOtaGlobals.startHidden) {
				fillDescription("video" + xmlItemNumber);
			}
		}
	
		
	
	}
		
	
	
	// hide the player on first page load
	if ( (oOtaGlobals.bFirstRun) && (oOtaGlobals.oWrapper !== null) && (oOtaGlobals.startHidden === true) ) {
		oOtaGlobals.oWrapper.style.display = "none";
	}
	
};


function commandPlay(itemNumber) {
    scrollWindowUp();
    
    // unhide the player
    if ( (oOtaGlobals.oWrapper !== null) && (oOtaGlobals.oWrapper.style.display !== "block") ) {
		oOtaGlobals.oTextWrapper.style.display = "none";
		oOtaGlobals.oWrapper.style.display = "block";
    }
	
    
    // send event to the player
    oOtaGlobals.currentPlaylistItemNumber = itemNumber;
    
    if(oOtaGlobals.bFirstRun){ // slight pause browser to reinit the player
		setTimeout("commandPlayDelayedWorker()", 1000);
    }
    else {
		oPlayer.sendEvent("ITEM", (itemNumber - 1) );
		   	// fill in description
			var itemID = "video" + ((oOtaGlobals.playlistLength + 1) - itemNumber);		
			if (xmlDoc)	{
				fillDescription(itemID);
			}
    }
    

    oOtaGlobals.bFirstRun = false;
}


function commandPlayDelayedWorker() {
	var itemNumber = oOtaGlobals.currentPlaylistItemNumber;
	oPlayer.sendEvent("ITEM", (itemNumber - 1) );
	   	// fill in description
		var itemID = "video" + ((oOtaGlobals.playlistLength + 1) - itemNumber);		
		if (xmlDoc)	{
			fillDescription(itemID);
		}

}

//////////////////////////
// RedrawScreen() - fixes the white opaque overlay after full screen mdoe in Vista IE7

function RedrawScreen() {
	P7_initPM(1,3,1,-20,10);
}

//////////////////////////
// FPVersionIsSufficient() - debug purpose

function FPVersionIsSufficient() {
	if(versionIsSufficient)	{
		alert("You dont have to update your Flash Player. All features are enabled!");
	}
	else {
		alert("You have to update your Flash Player to v10 enable all features!");
	}
	
}


///////////////////////
// fillDescription(nodeID) - Injects the XML extracted data into HTML

function fillDescription(nodeID) {
	var tagTitle = document.getElementById("videoTitle");
	var tagDate = document.getElementById("videoDate");
	var tagDescription = document.getElementById("videoDescription");
	
	var oSelectedNode = getElementByIdMXL(xmlDoc, nodeID);
	var oNodeData = getPlaylistNodeData(oSelectedNode);

	tagTitle.innerHTML = oNodeData.txtTitle;
	tagDate.innerHTML = oNodeData.txtDate;
	tagDescription.innerHTML = oNodeData.txtDescription;
}


function xmlLoaded() { // under question

}


/*
function initPlayListLength() { // under question
	var listHolder = document.getElementById("vthumbs");
	oOtaGlobals.playlistLength = listHolder.getElementsByTagName("li").length;
}
*/

function injectPlaylist() {
	var oPlaylistHolder = document.getElementById("PlayListHolder");
	var strPlaylistContent = "";
	
	var playIndex;
	var isLast = false;
	var isFirst = false;
	
	var groupSize = 0;
	var groupCounter = 0;
	
	oOtaGlobals.thresholdNumber = 0;
	
	if ((oOtaGlobals.playlistMaxSize > 0) && (oOtaGlobals.playlistMaxSize < oOtaGlobals.playlistLength)) {
		oOtaGlobals.thresholdNumber = oOtaGlobals.playlistLength - oOtaGlobals.playlistMaxSize;
	}
	
	// content string generation start
	strPlaylistContent += "\n <ul id=\"vthumbs\"> \n";

	for (var itemNumber = oOtaGlobals.playlistLength; itemNumber > oOtaGlobals.thresholdNumber; itemNumber--) {
	    
		var oSelectedNode = getElementByIdMXL(xmlDoc, "video" + itemNumber );
		var txtNodeMultishowID = getNodeMultiShowID(oSelectedNode);

		playIndex = (oOtaGlobals.playlistLength + 1) - itemNumber;
		
		
		// determine if its the Last item in playlist
		if ( (itemNumber === 1) || (itemNumber === (oOtaGlobals.thresholdNumber + 1)) ) {
		    isLast = true;
		}
		else {
			isLast = false;
		}
		
		// determine if its the First item in playlist
		if (itemNumber === oOtaGlobals.playlistLength) {
			isFirst = true;
		}
		else {
			isFirst = false;
		}


		if (txtNodeMultishowID !== "-void-") {
		//if (false) { // generate plain list
		
		    
			var previusIndex = itemNumber - 1;
			var nextIndex = itemNumber + 1;
		
			if ( (isFirst) || (txtNodeMultishowID !== getNodeMultiShowIDByIndex(xmlDoc, itemNumber+1)) ) {
				groupSize = GetGroupCountByMyltiShowID(txtNodeMultishowID);
				strPlaylistContent += generateCollapserStart(oSelectedNode, groupSize);
			}
			
			groupCounter++;
			strPlaylistContent += generateSinglePlaylistNode(oSelectedNode, playIndex, isLast, groupSize, groupCounter);
			
			if ( (isLast) || (txtNodeMultishowID !== getNodeMultiShowIDByIndex(xmlDoc, (itemNumber - 1))) )  {
				strPlaylistContent += generateCollapserEnd();
				groupSize = 0;
				groupCounter = 0;
			}
			
		}
		else {
			// insert single node
			strPlaylistContent += generateSinglePlaylistNode(oSelectedNode, playIndex, isLast, groupSize, groupCounter);
		}

	}
	
	strPlaylistContent += "</ul> \n";
	// content string generation end
	
	oPlaylistHolder.innerHTML = strPlaylistContent;

}


function GetGroupCountByMyltiShowID(txtNodeMultishowID) {

	var count = 0;
	
	for (var itemNumber = oOtaGlobals.playlistLength; itemNumber > oOtaGlobals.thresholdNumber; itemNumber--) {
		if (getNodeMultiShowIDByIndex(xmlDoc, itemNumber) === txtNodeMultishowID) {
			count++;
		}
	}
	
	return count;
	
}


function getNodeMultiShowID(oSelectedNode) {

	var nodeMultishowID = oSelectedNode.getElementsByTagName("multishowID")[0];

	if ((nodeMultishowID === undefined) || (nodeMultishowID === null)) {
	    return "-void-";
	}
	else {
	    return (nodeMultishowID.firstChild) ? nodeMultishowID.firstChild.data : "-void-";
	}
}

function getNodeMultiShowIDByIndex(xmlDoc, itemNumber) {
	var oSelectedNode = getElementByIdMXL(xmlDoc, "video" + itemNumber );
	return getNodeMultiShowID(oSelectedNode);
}


function generateSinglePlaylistNode(oSelectedNode, playIndex, isLast, groupSize, groupCounter) {

	var returnString = "";
	var oNodeData = getPlaylistNodeData(oSelectedNode);
	
	
	if (playIndex === 15) {
		var x = 3;
	}
	
	if (groupSize === 0) {
		groupSize = "";
	}
	
	if (groupCounter === 0) {
		groupCounter = "";
	}
	

	
	if (isLast === true) { // remove bottom border from the most bottom item
		returnString += "\t<li class=\"vitem\" style=\"border-bottom:none;\"> \n";
	}
	else {
		returnString += "\t<li class=\"vitem\" onClick=\"commandPlay(" + playIndex + ");\" > \n";
    }
    
    
	returnString += "\t\t<a onClick=\"commandPlay(" + playIndex + ");\">";
	returnString += "<img class=\"vthumb\" src=\"" + oNodeData.txtThumbimage + "\" alt=\"" + oNodeData.txtTitle + "\"> \n";
	returnString += "</a> \n";
	returnString += "\t\t<span class=\"vheader\">";
	returnString += "<a onClick=\"commandPlay(" + playIndex + ");\">";
	returnString += oNodeData.txtTitle;
	returnString += "</a>";
	
	if ((groupCounter !== "") && (groupSize !== "")) {
		returnString += "<span class=\"vSequenceNumber\">" + " - (" + groupCounter + " of " + groupSize  + ")</span>";
	}
	
	returnString += "</span> \n";
	

	if (oOtaGlobals.setDisplayXmlId === true) {
	    returnString += "\t\t<span class=\"vdate\">" + oNodeData.txtDate + " [" + oNodeData.txtXmlID + "]" + "</span> \n";
	}
	else {
	    returnString += "\t\t<span class=\"vdate\">" + oNodeData.txtDate + "</span> \n";  
	}
	
	
	returnString += "\t</li> \n";

	return returnString;

}

function generateCollapserStart(oSelectedNode, groupSize) {

    var returnString = "";
	var oNodeData = getPlaylistNodeData(oSelectedNode);

    returnString += '<div class="PlaylistCollapserOpener"' 
    returnString += ' id="' + oNodeData.txtNodeMultishowID + '"';
    returnString += '>';
    
    returnString += "\t\t<div class=\"Collapser_icon\">" + "&nbsp;" + "</div> \n";

    returnString += "<div class=\"Collapser_vthumbFrame\">"
    returnString += "<img class=\"Collapser_vthumb\" src=\"" + oNodeData.txtNodeMultishowThumbImage + "\" alt=\"" + oNodeData.txtTitle + "\" />";
    returnString += "</div>";
    
    returnString += "\t\t<span class=\"Collapser_vheader\">" + oNodeData.txtTitle;
    returnString += "<span class=\"Collapser_vSequenceNumber\">" + " - (" + groupSize + " Part Video)</span>";
	returnString += "</span> \n";


    if (oOtaGlobals.setDisplayXmlId === true) {
	    returnString += "\t\t<span class=\"Collapser_vdate\">" + oNodeData.txtDate + " [" + oNodeData.txtXmlID + "]" + "</span> \n";
	}
	else {
	    returnString += "\t\t<span class=\"Collapser_vdate\">" + oNodeData.txtDate + "</span> \n";
	}
    
    returnString +=  '</div>';
    
	returnString += '<div class="PlaylistCollapser" style="display: none;">';
	
	return returnString;
}

function generateCollapserEnd() {
	var returnString = "";
	returnString += "</div>";
	return returnString;
}


function scrollWindowUp() {
	window.scrollBy(0, -50000);
	window.scrollBy(0, 180);
}


function getPlaylistNodeData(oSelectedNode) {

    var txtXmlID = oSelectedNode.getAttribute("id");

	var nodeTitle = oSelectedNode.getElementsByTagName("title")[0];
	var txtTitle = (nodeTitle.firstChild) ? nodeTitle.firstChild.data : "---";
	
	var nodeDate = oSelectedNode.getElementsByTagName("date")[0];
	var txtDate = (nodeDate.firstChild) ? nodeDate.firstChild.data : "---";

	var nodeDescription = oSelectedNode.getElementsByTagName("description")[0];
	var txtDescription = (nodeDescription.firstChild) ? nodeDescription.firstChild.data : "---";

	var nodeThumbimage = oSelectedNode.getElementsByTagName("thumbimage")[0];
	var txtThumbimage = (nodeThumbimage.firstChild) ? nodeThumbimage.firstChild.data : "---";
	
	var nodeMultishowID = oSelectedNode.getElementsByTagName("multishowID")[0];
	var txtNodeMultishowID;

	if ((nodeMultishowID === undefined) || (nodeMultishowID === null)) {
	    txtNodeMultishowID = "-void-";
	}
	else {
	    txtNodeMultishowID = (nodeMultishowID.firstChild) ? nodeMultishowID.firstChild.data : "-void-";
	}

	var nodeMultishowThumbImage = oSelectedNode.getElementsByTagName("multishowThumbImage")[0];
	var txtNodeMultishowThumbImage;

	if ((nodeMultishowThumbImage === undefined) || (nodeMultishowThumbImage === null)) {
	    txtNodeMultishowThumbImage = "";
	}
	else {
	    txtNodeMultishowThumbImage = (nodeMultishowThumbImage.firstChild) ? nodeMultishowThumbImage.firstChild.data : "";
	}


	var oNodeData = {
	    "txtXmlID": txtXmlID,
		"txtTitle": txtTitle,
		"txtDate": txtDate,
		"txtDescription": txtDescription,
		"txtThumbimage": txtThumbimage,
		"txtNodeMultishowID": txtNodeMultishowID,
		"txtNodeMultishowThumbImage": txtNodeMultishowThumbImage
	};
	
	return oNodeData;

}


function initCollapseLogic() {
	$(".PlaylistCollapserOpener").click(function () { 

		var CssDisplay = $(this).next().css("display");
		
		if (CssDisplay === "block") {
			$(this).next().css("display", "none");
			$(this).removeClass("PlaylistCollapserOpener_Open");
		}
		else {
			$(this).addClass("PlaylistCollapserOpener_Open");
			$(this).next().css("display", "block");
		}
	});
	
	$(".PlaylistCollapserOpener").mouseover(function() {
		$(this).addClass("PlaylistCollapserOpener_Hover");
	}).mouseout(function() {
		$(this).removeClass("PlaylistCollapserOpener_Hover");
	});
	
}


function initListLogic() {
	$(".vitem").click(function () { 
		$(".vitem").removeClass("vitem_Active");
		$(this).addClass("vitem_Active");
	});

	$(".vitem").mouseover(function() {
		$(this).addClass("vitem_Hover");
	}).mouseout(function() {
		$(this).removeClass("vitem_Hover");
	});

}




