var d = document;

function createFilmViewer(e) {
	// <div id="film_view">
	// 	<div id="film_holder">
	// 		<img src="assets/images/film_still.jpg" />
	// 	</div>
	// 
	// 	<div id="film_info">
	// 		<h2>Today's Special</h2>
	// 		<h3>Channel 4 2003</h3>
	// 		<p>Three Short Films About London Cafes<br />
	// 		Made with Saint Ettienne and CC-Lab</p>
	// 		<p>Dir. Paul Kelly Prod. Andrew Hinton</p>
	// 	</div>
	// </div>
	
	// get info
	var mov_src = this.href;
	var text_src = this.href.match(/\/([\w-_]+)\.mov$/)[1] + ".html";

	// create DIV elements
	var film_view_div = d.createElement("DIV");
	film_view_div.id = "film_view";

	var film_holder_div = d.createElement("DIV");
	film_holder_div.id = "film_holder";

	var film_info_div = d.createElement("DIV");
	film_info_div.id = "film_info";
	
	getText(text_src, film_info_div);
	
	// append child nodes to film view
	film_view_div.appendChild(film_holder_div);
	film_view_div.appendChild(film_info_div);
	
	// attach film viewer
	var film_grid = d.getElementById('film_grid');
	var content = d.getElementById('content');
	content.insertBefore(film_view_div, film_grid);

	// start at 0% height
	YAHOO.util.Dom.setStyle(film_view_div, "height", "0%");
	
	// animate height
	var view_anim = new YAHOO.util.Anim(film_view_div, {height: {to: 100, unit: '%'}}, 0.8, YAHOO.util.Easing.easeOut);
	
	var animComplete = function() {
		// set content
		film_holder_div.innerHTML = QT_GenerateOBJECTText_XHTML (
		  mov_src, 512, 304, null,
		  "autoplay","true"
		);
	};
	
	view_anim.onComplete.subscribe(animComplete);
	view_anim.animate();
	
	YAHOO.util.Event.preventDefault(e);
}

function getText(url, el) {
	
	var handleSuccess = function(o) {
		if (o.responseText !== undefined) {
			el.innerHTML = o.responseText;
			el.innerHTML += '<a href="/" id="close">Back</a>';
			// add event listener to close link
			var close_link = d.getElementById('close');
			YAHOO.util.Event.addListener(close_link, "click", closeFilmViewer);			
		}
	};
	
	var handleFailure = function(o) {
		if (o.responseText !== undefined) {
			el.innerHTML  = "<h2>Error Loading File</h2>";
			el.innerHTML += "<p>"+o.statusText+"</p>";

			el.innerHTML += '<a href="/" id="close">Back</a>';
			// add event listener to close link
			var close_link = d.getElementById('close');
			YAHOO.util.Event.addListener(close_link, "click", closeFilmViewer);
		}
	};
	
	var callback =
	{
		success: handleSuccess,
		failure: handleFailure
	};
	
	request = YAHOO.util.Connect.asyncRequest('GET', url, callback);
}

function closeFilmViewer(e) {
	var film_view_div = d.getElementById('film_view');
	var film_holder_div = d.getElementById('film_holder');
	film_holder_div.innerHTML = "";
	
	var view_anim = new YAHOO.util.Anim(film_view_div, {height: {to: 0, unit: '%'}}, 0.8, YAHOO.util.Easing.easeIn);
	var animComplete = function() {
		film_view_div.parentNode.removeChild(film_view_div);
	};
	
	view_anim.onComplete.subscribe(animComplete);
	view_anim.animate();
			
	YAHOO.util.Event.preventDefault(e);
}

function showTitle(e) {
	var title_div = d.getElementById('film_title');
	var title_text = this.getAttribute('title').split(" - ");
	
	var h2_obj = d.createElement('H2');
	var h3_obj = d.createElement('H3');
	
	h2_obj.appendChild(d.createTextNode(title_text[0]));
	h3_obj.appendChild(d.createTextNode(title_text[1]));
	
	title_div.appendChild(h2_obj);
	title_div.appendChild(h3_obj);
}

function hideTitle(e) {
	var title_div = d.getElementById('film_title');
	title_div.innerHTML = "";
}

function hasMovieRel(e) {
	return (e.getAttribute("rel") == "movie") ? true : false;
}

var movieLinks = YAHOO.util.Dom.getElementsBy(hasMovieRel, "a", "film_grid");
YAHOO.util.Event.addListener(movieLinks, "click", createFilmViewer);
YAHOO.util.Event.addListener(movieLinks, "mouseover", showTitle);
YAHOO.util.Event.addListener(movieLinks, "mouseout", hideTitle);
