function bezier4(t, p0,p1,p2,p3) {
	var t1 = 1-t;
	return p0*t1*t1*t1+p1*3*t*t1*t1+p2*3*t*t*t1+p3*t*t*t;
	}

var tabIsDown = false;
function animateTab() {
	var el = document.getElementById('media_tab_area');
	var p0 = 15;
	var p1 = 390;
	var p2 = 390;
	var p3 = 390;
	var totalTime = 350; // milliseconds
	var t;
	var p;
	var startTime = (new Date()).getTime();
	var interval = window.setInterval(function() {
		t = ((new Date()).getTime() - startTime)/totalTime; // 0 .. 1
		if(t >= 1) {
			p = p3;
			window.clearInterval(interval);
			}
		else {
			p = bezier4(t, p0,p1,p2,p3);
			}
		el.style.top = p + 'px';
		}, 1);
	tabIsDown = true;
	}

function $(el) {
	return typeof el == 'string' ? document.getElementById(el) : el;
	}

function makeElement(tag, attributes) {
	var el = document.createElement(tag);
	for(p in attributes) {
		if (p == 'class' && MediaPlayer_Detect.isIE) {
			el['className'] = attributes[p];
			}
		else if(p == 'style' && MediaPlayer_Detect.isIE) {
			p.style.cssText = attributes[p];
			}
		else {
			el.setAttribute(p, attributes[p]);
			}
		}
	for(var i = 2; i<arguments.length; i++)
		el.appendChild(typeof arguments[i] == 'string' ? document.createTextNode(arguments[i]) : arguments[i]);
	return el;
	}

var player;
var tabs = [];
function setup() {
	$('media_panel').style.display = 'block';
	
	player = new MediaPlayer(playlist);
	player.onchange = changeClip;
	player.onchangechapter = changeChapter;
	player.onchangeplaylist = changePlaylist;
	player.onchangeplaylist(playlist);
	
	$('fullscreen_button').onclick = function() {
		if(player.object && player.object.valid) player.object.fullScreen();
		return false;
		}
	
	$('settings_button').onclick = function() {
		var t = $('media_tab_settings');
		var pf = MediaPlayer_Detect.getPreferredFormat();
		$('media_settings_wmp').checked = pf == 'wmp';
		$('media_settings_real').checked = pf == 'real';
		var pb = MediaPlayer_Detect.getMaxBitrate();
		$('media_settings_fast').checked = pb == $('media_settings_fast').value;
		$('media_settings_slow').checked = pb == $('media_settings_slow').value;
		if(tabExists(t)) {
			clickTab(t);
			}
		else {
			addTab('Settings', t);
			clickTab(t);
			}
		return false;
		}
	
	$('save_settings_button').onclick = function() {
		clickTab(tabs[0][1]);
		removeTab($('media_tab_settings'));
		if(player.current()) player.play(player.current());
		return false;
		}
	
	$('help_button').onclick = function() {
		var t = $('media_tab_help');
		if(tabExists(t)) {
			clickTab(t);
			}
		else {
			addTab('Help', t);
			clickTab(t);
			}
		return false;
		}
	
	$('media_email_button').onclick = function() {
		var t = $('media_email_tab');
		var url = window.location.toString();
		url = url.substr(0, url.length - window.location.search.length);
		if(player.current()) url = url + '?'+player.current();
		$('media_email_iframe').src = 'video_email.html?id='+escape(url);
		if(tabExists(t)) {
			clickTab(t);
			}
		else {
			addTab('Email Video', t);
			clickTab(t);
			}
		return false;
		}
	
	$('close_help_button').onclick = function() {
		clickTab(tabs[0][1]);
		removeTab($('media_tab_help'));
		return false;
		}
	
	if(MediaPlayer_Detect.hasWMP) $('media_installed_wmp').innerHTML = 'Installed';
	if(MediaPlayer_Detect.hasReal) $('media_installed_real').innerHTML = 'Installed';
	
	$('media_settings_wmp').onclick = makePrefClick('format', 'wmp');
	$('media_settings_real').onclick = makePrefClick('format', 'real');
	$('media_settings_fast').onclick = makePrefClick('bitrate', $('media_settings_fast').value);
	$('media_settings_slow').onclick = makePrefClick('bitrate', $('media_settings_slow').value);
	
	tabs.push([$('media_tab_all_tab'), $('media_tab_all')]);
	$('media_tab_all_tab').onclick = $('media_all_button').onclick = function() { clickTab($('media_tab_all')); return false; }
	
	if(window.location.search) {
		var num = parseInt(window.location.search.substr(1));
		tabIsDown = true;
		$('media_tab_area').style.top = '390px';
		player.play(num);
		}
	
	}

function closeEmail() {
	clickTab(tabs[0][1]);
	removeTab($('media_email_tab'));
	return false;
	}

function makePrefClick(pref, value) {
	return function() {
		if(pref == 'format') {
			MediaPlayer_Detect.setPreferredFormat(value);
			}
		else if(pref == 'bitrate') {
			MediaPlayer_Detect.setMaxBitrate(value);
			}
		}
	}

function changePlaylist(p) {
	var m = makeElement;
	$('media_tab_all').innerHTML = '';
	for(var i = 0; i<p.length; i++) {
		
		var a = m('a', { 'href':'#', 'class':'clip' },
			m('img', { 'src':p[i]['image'], 'width':96, 'height':70 }),
			m('span', { 'class':'info' },
				m('span', { 'class':'title' }, p[i]['title']),
				m('span', { 'class':'date' }, p[i]['date'] ? p[i]['date']+' ' : ''),
				m('span', { 'class':'description' }, p[i]['description']),
				m('span', { 'class':'duration' }, ' ('+MediaPlayer_Utils.formatDuration(p[i]['duration'])+')')
				)
			);
		
		a.onclick = makeClickPlaylist(i+1);
		a.playlistNum = i+1;
		
		$('media_tab_all').appendChild(a);
		}
	$('media_tab_all').appendChild(m('div',{ 'class':'clear' }));
	}

function makeClickPlaylist(n) {
	return function() {
		if(tabIsDown) {
			player.play(n);
			}
		else {
			animateTab();
			window.setTimeout(function() { player.play(n) }, 600);
			}
		return false;
		};
	}

function makeClickChapter(clip, n) {
	return function() {
		player.seekChapter(n);
		return false;
		};
	}

function changeClip(clip, n) {
	var m = makeElement;

	var els = $('media_tab_all').getElementsByTagName('a');
	for(var i = 0; i<els.length; i++) {
		els[i].className = els[i].playlistNum == n ? 'current_clip' : 'clip';
		}

	$('current_clip_info').innerHTML = '';
	$('current_clip_info').appendChild(m('span', { 'class':'title' }, clip.title));
	$('current_clip_info').appendChild(m('span', { 'class':'date' }, clip.date ? clip.date+' ' : ''));
	$('current_clip_info').appendChild(m('span', { 'class':'description' }, clip.description));
	$('current_clip_info').appendChild(m('span', { 'class':'duration' }, ' ('+MediaPlayer_Utils.formatDuration(clip.duration)+')'));
	
	$('clip_chapters_title').style.display = $('clip_chapters_panel').style.display = $('media_all_button').style.display = player.object.canInteract() && clip.chapters.length ? 'block' : 'none';
	$('fullscreen_button').style.display = player.object.canInteract() ? 'inline' : 'none';
	$('media_player_extra_buttons').style.display = 'block';
	
	$('clip_chapters_panel').innerHTML = '';
	
	for(var i = 0; i < clip.chapters.length; i++) {
	
		var a = m('a', { 'href':'#', 'class':'chapter' },
			m('img', { 'src':clip.chapters[i][2], 'width':62, 'height':46 }),
			m('span', { 'class':'info' },
				m('span', { 'class':'description' }, clip.chapters[i][1]),
				m('span', { 'class':'duration' }, ' ('+MediaPlayer_Utils.formatDuration(clip.chapterDuration(i))+')')
				)
			);
		
		a.onclick = makeClickChapter(clip, i);
		a.chapterNum = i;
		
		$('clip_chapters_panel').appendChild(a);
		}
	
	removeTab($('media_tab_clip_extra'));
	if(clip.extras_url) {
		$('media_clip_extra_iframe').src = clip.extras_url;
		addTab(clip.title, $('media_tab_clip_extra'));
		clickTab($('media_tab_clip_extra'));
		}
	
	}

function changeChapter(clip, n) {
	var els = $('clip_chapters_panel').getElementsByTagName('a');
	for(var i = 0; i < els.length; i++) {
		els[i].className = els[i].chapterNum == n ? 'current_chapter' : 'chapter';
		}
	}

function addTab(title, contentEl) {
	var m = makeElement;
	
	var a = m('a', { 'class':'tab', 'href':'#' },
		m('span', { 'class':'hook1' }, title)
		);
	a.onclick = function() { clickTab(contentEl); return false; };
	tabs.push([a, contentEl]);
	$('media_tab_bar').appendChild(a);
	}

function removeTab(content) {
	var newtabs = [];
	for(var i = 0; i<tabs.length; i++) {
		if(tabs[i][1] == content) {
			tabs[i][0].parentNode.removeChild(tabs[i][0]);
			}
		else {
			newtabs.push(tabs[i]);
			}
		}
	tabs = newtabs;
	}

function tabExists(content) {
	for(var i = 0; i<tabs.length; i++) {
		if(tabs[i][1] == content) {
			return true;
			}
		}
	return false;
	}

function clickTab(content) {
	for(var i = 0; i<tabs.length; i++) {
		if(tabs[i][1] == content) {
			tabs[i][0].className = 'current_tab';
			tabs[i][1].style.display = 'block';
			}
		else {
			tabs[i][0].className = 'tab';
			tabs[i][1].style.display = 'none';
			}
		}
	return false;
	}

if(MediaPlayer_Detect.capable) window.onload = setup;
