//// BOF

function openTree(ul) {
	// close all children
	closeTree(ul);
	// recurse upwards 
	while (ul.parentNode.parentNode.tagName === 'UL'){
		var pul = ul.parentNode.parentNode;
		// open current list
		ul.style.display = 'block';
		ul.previousSibling.style.backgroundImage = 'url(/img/nav_minus.gif)';
//		ul.previousSibling.className = "open";
		// close all siblings
		for (var key in pul.childNodes) {
			var elem = pul.childNodes.item(key);
			if (elem.tagName === 'LI' && elem !== ul.parentNode) {
				closeTree(elem);
			}
		}
		ul = pul;
	}
	return false;
}

function closeTree(elem) {
	for (var i = 0, list = elem.getElementsByTagName('ul'), len = list.length; 
			i < len; i++) {
		// a nodelist is returned, not an array
		list.item(i).style.display = 'none';
		list.item(i).previousSibling.style.backgroundImage = "url(/img/nav_plus.gif)";
//		list.item(i).previousSibling.className = "closed";
	}
}

function handleVtreeEvent(event) {
	var src = event.target || event.srcElement || document;
	if (src.className.match(/\bleaf\b/)) {
		try {
			return changeClip(src);
		} catch(e) {
			consoleLog("Exception in handleVtreeEvent: " + e);
		} finally {
			return false;
		}
	} else if (src.tagName === 'A') {
		return openTree(src.nextSibling);
	} else {
		consoleLog("clicked unknown target: " + src);
	}
//	return changeClip(event.target || event.srcElement || document);
}

function changeClipById(id) {
	var src = document.getElementById('vid_' + id);
	if (src) {
		consoleLog("changing clip to " + src.href);
		return changeClip(src)
//	} else {
//		return openTree(document.getElementById('vtree').childNodes[0])
	}
}

function changeClip(src) {
	return changeClip(src, false);
}

function changeClip(src, play) {
	var that = src;
	var clip = that.href;
	var id = parseInt(that.id.match(/^vid_(\d+)$/)[1]);
	syncGetRequest('/video.md?id=' + id);
//	var ext = flashembed.isSupported([9, 115]) ? '.mp4' : '.flv';
	for (var i = 0, lists = getElementsByClass('leaf'), len = lists.length;
			i < len; i++) {
		lists[i].style.fontWeight = 'normal';
	}
	that.style.fontWeight = 'bold';
//	in case server blocks .mp4 extensions, send file without one
	if (/^http:\/\/video2/.test(window.location)) {
		loadPlayer(clip.match(/^(.+)\.\w+$/)[1], play);
	} else {
		loadPlayer(clip, play);
	}

	document.getElementById('title').innerHTML = that.innerHTML;

	var pl = document.getElementById('permalink');
	document.getElementById('links').style.display = "block";
	var url = clip.replace(/video.md/, "index.md");
	pl.href = url;
	pl.innerHTML = window.unescape(url);
	var mailto = document.getElementById('mailto');
	mailto.href = "mailto:" + encodeURI("@") + "?subject=" + encodeURI("lien video") + "&body=" + encodeURI(url);

	//// loop closure example!
	var pn = { prev: 'vid_'+ (id - 1), next: 'vid_' + (id + 1)};
	for (var i in pn) {
		var elem = document.getElementById(i);
		if (pn[i] = document.getElementById(pn[i])) {
			elem.onclick = function(vid) { 
				return function() { changeClip(vid, true); }; }(pn[i]);
			elem.style.display = 'block';
		} else {
			elem.style.display = 'none';
		}
	}

	if (that.parentNode.parentNode.style.display !== "block") {
		openTree(that.parentNode.parentNode);
	}
//	consoleLog("playing new clip: " + clip + ext);
	return false;
}

function loadPlayer(clip, play) {
	if (flowplayer()) {
		flowplayer().setClip(clip);
//		consoleLog("setClip("+clip+")");
		if (play) {
			flowplayer().play();
		} else {
			flowplayer().startBuffering();
		}
//		return;
	} else {
		flowplayer('flowplayer', '/util/flowplayer-3.0.7.swf', {
			onLoad: function() {
			//	this.hide();
				this.setVolume(100);
	//			consoleLog("player fully loaded");
			},
			log: { 
			// other levels are: 'debug', 'info', 'warning', 'error' 
				level: 'error' 
			},
			clip: {
				autoPlay: false,
				scaling: 'orig',
				url: clip,
				autoBuffering: true,
				// no trailing comma on last line for IE
				accelerated: true
			}
		});
	}
}

function setupPage(id) {
//	consoleLog("setupPage called with: " + id);
	if (isNaN(id)) {
		for (var i = 0, list = 
				document.getElementById('vtree').getElementsByTagName('a'), 
				len = list.length; i < len; i++) {
			if (!list[i].href.match(id + '$')) {
			   	continue;
			}
//			consoleLog("item found: " + list[i]);
			if (list[i].className.match(/\bleaf\b/)) {
				changeClip(list[i]);
			} else if ((id = list[i].nextSibling.getElementsByTagName('a')[0])
				   	&& id.className.match(/\bleaf\b/)){
				changeClip(id);
			} else {
				consoleLog("no leaf child to open");
			}
			return;
		}
	} else {
		changeClipById(id);
	}
//	for (var i = 0, nodes = getElementsByClass('leaf'), len = nodes.length; 
//			i < len; i++) {
//		nodes[i].onclick = changeClipByEvent;
//		nodes[i].onclick = function(node) { 
//			return function(event) { 
//				consoleLog("firing event for node");
//				return changeClip(node); 
//			};
//		}(nodes[i]);
//	}
}

//// from redsquare on #jquery
function setupVisibleFlashplayer() {
//	consoleLog("setupVisibleFlashplayer called");
	$(function() {
		var $menu = $('#fpcontainer').css('position', 'absolute');
		var $doc = $(document), timer, menuYloc = $menu.position().top;
		$(window).scroll(function() {
			offset = menuYloc + $doc.scrollTop() + "px";
			window.clearInterval(timer);
			timer = window.setTimeout(function() {
				$menu.stop().animate({ top: offset }, 350);
				}, 55);
		});

	});
}

//function expandSubList(src) {
////	var src = event.target || event.srcElement || document;
//	for (var i = 0, lists = getElementsByClass('sublist'), len = lists.length;
//			i < len; i++) {
//		lists[i].style.display = 'none';
//	}
//	src.style.display = 'block';
//	return false;
//}

//// EOF

