﻿



/***** Init *****/

function byuweekly_load()
{	
	if(window.XMLHttpRequest) document.xmlDoc = new XMLHttpRequest();
	else document.xmlDoc = new ActiveXObject("Microsoft.XMLHTTP");

	document.xmlDoc.onreadystatechange = xml_ready;
	document.xmlDoc.open("GET", "byuWeeklyData.xml?timestamp=" + new Date().getTime(), true);
	document.xmlDoc.send(null);
}

function xml_ready()
{
	if(document.xmlDoc.readyState != 4 || document.xmlDoc.status != 200) return;

	document.xmlDoc = document.xmlDoc.responseXML.documentElement;
	play_episode(0);
}

/***** Episodes *****/

function play_episode(ep_index)
{
	// clear segment interval
	if(document.timecode_interval) clearInterval(document.timecode_interval);
	
	// start playing
	var moveID = document.xmlDoc.getElementsByTagName("episode")[ep_index].attributes[2].nodeValue;
	var url = "http://cms027.sv1.qcn3.movenetworks.com/cms/publish/vod/vodclip/byutv/" + moveID + ".qvt";
	MN.TP.qmp.Play(url);

	// populate segments when episode starts playing
	document.getElementById("segments").innerHTML = "";
	document.to_populate = ep_index;
	MN.Event.Observe(MN.TP.qmp, 'PlayStateChanged', populate_segments);

	// set interface
	set_title(ep_index);
	set_now_playing(ep_index);

	// show description
	if(document.cur_detail) document.cur_detail.style.visibility = "hidden";
	var episodes = document.getElementById("episode_container").getElementsByTagName("li");
	var detail = episodes[ep_index].getElementsByTagName("div")[1];
	detail.style.visibility = "visible";
	document.cur_detail = detail;
}


function set_title(ep_index)
{
	var ep_node = document.xmlDoc.getElementsByTagName("episode")[ep_index];
	var date_text = ep_node.attributes[1].nodeValue;
	document.getElementById("divDate").innerHTML = "" + date_text;
}


function set_now_playing(ep_index)
{
	if(document.cur_h3)
	{
		document.cur_h3.innerHTML = document.cur_h3.short_date;
		document.cur_h3.style.color = "#fff";
	}
	
	var episodes = document.getElementById("episode_container").getElementsByTagName("li");
	var title = episodes[ep_index].getElementsByTagName("h3")[0];
	title.short_date = title.innerHTML;
	title.innerHTML = "Now Playing";
	title.style.color = "#de7638";
	document.cur_h3 = title;
}

/***** Segments *****/
function populate_segments()
{
	if(MN.TP.qmp.CurrentPlayState() != 3) return;
	MN.Event.StopObserving(MN.TP.qmp, 'PlayStateChanged', populate_segments);

	var index = document.to_populate;
	var segments = document.xmlDoc.getElementsByTagName("episode")[index].getElementsByTagName("segment");
	var seg_list = document.getElementById("segments");

	if(segments.length < 1)
	{
		seg_list.style.visibility = "hidden";
		return;
	}
	else
		seg_list.style.visibility = "visible";

	for(var i = 0; i < segments.length; i++)
	{
		var seg = document.createElement("li");
		seg_list.appendChild(seg);
		seg.innerHTML = "<p onclick='jump_to_segment(" + i + ")'>" + segments[i].attributes[0].nodeValue + "</p>";
		
		var seg_details = "<div class='description_container'><p class='seg_description'>";
		var reporter_node = segments[i].getElementsByTagName("reporter")[0].childNodes[0];
		if(reporter_node) seg_details += "<em>" + reporter_node.nodeValue + "</em><br /><br />";
		
		var descrip = segments[i].getElementsByTagName("description")[0].childNodes[0].nodeValue;
		seg_details += "<span>" + descrip;
		
		var link_node = segments[i].getElementsByTagName("link")[0].childNodes[0];
		if(link_node)
			seg_details += "<br /><br /><a href='" + link_node.nodeValue + "' target='_blank'>Read More...</a>";
		seg_details += "</span></p></div>";
		seg.innerHTML += seg_details;
		
		seg.timecode = segments[i].attributes[1].nodeValue;
		//seg.setAttribute("onclick", "jump_to_segment(" + i + ")");
		
		var details = seg.getElementsByTagName("div")[0];
		details.real_height = seg.offsetHeight - 10;
		details.style.height = "0px";
	}

	// setup to display first segment
	document.next_seg = 0;	
	show_next_seg()
}

function jump_to_segment(index)
{
	// weird 'mouse event' bug
	if(isNaN(index)) return;
	
	var segments = document.getElementById("segments").getElementsByTagName("li");
	MN.TP.qmp.CurrentPosition(segments[index].timecode);
	set_seg(index);
}

function check_timecode()
{
	var next_timecode = document.getElementById("segments").getElementsByTagName("li")[document.cur_seg * 1 + 1].timecode;
	if(MN.TP.qmp.CurrentPosition() > next_timecode * 1 + 1)
		set_seg(document.cur_seg * 1 + 1);
}

function set_seg(index)
{	
	clearInterval(document.timecode_interval);
	document.next_seg = index;
	
	// hide the current segment
	var segments = document.getElementById("segments").getElementsByTagName("li");
	cur_seg = segments[document.cur_seg];
	cur_seg.style.backgroundColor = "";
	cur_seg.onclick = jump_to_segment;
	cur_seg.style.cursor = "pointer";
	
	var title = cur_seg.getElementsByTagName("p")[0];
	title.style.fontWeight = "";
	
	var descrip = cur_seg.getElementsByTagName("div")[0];
	
	// animate closed
	var myAnim = new YAHOO.util.Anim(descrip);
	myAnim.attributes.height = { to: 0 };
	myAnim.duration = .4;
	myAnim.onComplete.subscribe(show_next_seg);
	myAnim.animate();
}

function show_next_seg()
{
	var segments = document.getElementById("segments").getElementsByTagName("li");
	seg = segments[document.next_seg];

	seg.style.backgroundColor = "#2c587c";
	seg.onclick = null;
	seg.style.cursor = "default";
	
	var title = seg.getElementsByTagName("p")[0];
	title.style.fontWeight = "bold";
	
	var descrip = seg.getElementsByTagName("div")[0];
	
	// animate open
	var myAnim = new YAHOO.util.Anim(descrip);
	myAnim.attributes.height = { to: descrip.real_height };
	myAnim.duration = .4;
	myAnim.animate();
	
	// start checking
	document.cur_seg = document.next_seg;
	if(document.next_seg < segments.length - 1)
		document.timecode_interval = setInterval("check_timecode()", 1000);
}

/***** Next/Prev *****/

function play_prev()
{
	if(document.cur_seg < 1) return;
	jump_to_segment(document.cur_seg - 1);
}


function play_next()
{
	var length = document.getElementById("segments").getElementsByTagName("li").length;
	if(document.cur_seg >= length - 1) return;
	jump_to_segment(document.cur_seg + 1);
}