/* VideoPlayer Class */

function VideoPlayer(div_id, root_url) {

	this.root_url = root_url;

	this.div = document.getElementById(div_id);

	this.playing = false;

	if (!this.div) return;
	if (!this.div.innerHTML) return;

	this.ie = (document.all ? true : false);

	if (this.ie) {
		var ok = true;
		if (parseInt(navigator.appVersion) < 4) ok = false;
		var str = navigator.appVersion.toLowerCase();
		var pos = str.indexOf("msie");
		if (pos == -1) {
			ok = false;
		} else {
			var str = str.substr(pos+4);
			if (parseInt(str) < 6) ok = false;
		}
		if (!ok) {
			this.ie = false;
			return;
		}
	}

	this.maxed = false;

	this.onMaximize = new Function();
	this.onPlay = new Function();

	this.next_url = null;

	this.preview_time = 0;

	this.show_loader = function(show) {
		var pl = document.getElementById('video_preview_loader');
		if (pl) pl.style.display = show ? 'block' : 'none';
	}

	this.onState = function(new_state) {
		if (new_state == 2 || new_state == 6) return; // paused or buffering
		if (new_state == 3) { // playing
			this.player_div.style.display = 'block';
			this.pause_div.style.display = 'none';
		} else {
			this.player_div.style.display = 'none';
			this.pause_div.style.display = 'block';
		}
		if (new_state == 7 || new_state == 6) player.show_loader(true); // waiting or buffering
		if (new_state == 8) {
			// media ended
			player.playing = false;
			player.show_loader(false);
			if (player.maxed) player.clicked('maximize');
		}
	}

	this.onError = function() {
		window.alert('Der opstod et teknisk problem ved forsøg\npå afspilning af dette videoklip.\n\nVi beklager.');
		player.show_loader(false);
		this.stop();
	}

	this.set_preview = function(html, time) {
		if (!this.ie) return;
		this.pause_div.innerHTML = html;
		this.player_div.style.display = 'none';
		this.pause_div.style.display = 'block';
		this.preview_time = time;
	}

	this.set_url = function(url) {
		this.next_url = url;
	}

	if (this.ie) {
		this.div.innerHTML = "<div id=\"player_div\"><object width=\"430\" height=\"220\" id=\"Player\" classid=\"CLSID:6BF52A52-394A-11d3-B153-00C04F79FAA6\">"
			+ "<param name=\"autoStart\" value=\"true\" />"
			+ "<param name=\"uiMode\" value=\"none\" />"
			+ "<param name=\"stretchToFit\" value=\"true\" />"
			+ "</object></div>"
			+ "<div id=\"pause_div\" style=\"display:none; text-align:center; width:390px; height:220px; margin-left:6px; margin-top:6px\">Forbinder til video kilde...</div>"
			+ "<div id=\"player_controls\"></div>";

		this.player = document.getElementById("Player");
		this.player_div = document.getElementById("player_div");
		this.pause_div = document.getElementById("pause_div");

		if (this.player.controls) {
			document.getElementById('player_controls').innerHTML = "<object width=\"394\" height=\"21\" id=\"Controls\" style=\"margin-left:6px; margin-top:7px\" classid=\"clsid:d27cdb6e-ae6d-11cf-96b8-444553540000\" codebase=\"http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=8,0,0,0\" align=\"middle\">"
				+ "<param name=\"allowScriptAccess\" value=\"always\" /><param name=\"menu\" value=\"false\" /><param name=\"scale\" value=\"noscale\" /><param name=\"salign\" value=\"lt\" />"
				+ "<param name=\"movie\" value=\"" + this.root_url + "/modules/tv2region/video/player_controls.swf\" /><param name=\"quality\" value=\"best\" /><param name=\"bgcolor\" value=\"#1d1d1d\" />"
				+ "</object>";
			this.controls = document.getElementById("Controls");
		}

		if (this.player.attachEvent) {
			this.player.attachEvent("PlayStateChange", this.onState);
			this.player.attachEvent("Error", this.onError);
		} else if (this.player.addEventListener) {
			this.player.object.addEventListener("PlayStateChange", this.onState, false);
		}

	} else {

		this.div.innerHTML = "";

	}

	this.start = function(url, autostart) {
		this.playing = true;
		this.onPlay();
		if (this.ie) {
			this.player_div.style.display = 'none';
			this.pause_div.style.display = 'block';
			this.player.URL = url;
		} else { // firefox
			this.div.innerHTML = "<embed name=\"Player\" id=\"Player\" type=\"application/x-mplayer2\" classid=\"CLSID:6BF52A52-394A-11d3-B153-00C04F79FAA6\""
				+ " width=\"350\" height=\"250\" style=\"margin-left:26px; margin-top:5px\""
				+ " src=\"" + url + "\""
				+ " autostart=\"" + autostart + "\" stretchtofit=\"0\" showcontrols=\"1\" showaudiocontrols=\"0\" showpositioncontrols=\"0\" showstatusbar=\"0\" uimode=\"none\"";
		}
	}

	this.stop = function() {
		this.playing = false;
		if (!this.ie) return;
		this.player.controls.stop();
		this.player.URL = '';
	}

	this.setPos = function(num) {
		this.controls.setPos(num);
	}

	this.getTime = function() {
		if (this.player.currentMedia)
			if (this.player.currentMedia.duration > 0)
				return this.player.currentMedia.duration;
		if (this.player.getDuration)
			if (this.player.getDuration() > 0)
				return this.player.getDuration();
		if (this.preview_time) return this.preview_time;
		return 0;
	}

	this.getPos = function() {
		if (this.player.controls.currentPosition != null) return this.player.controls.currentPosition;
		if (this.player.getTime) return this.player.getTime();
		return 0;
	}

	this.update = function() {
		if (!this.ie) return;
		this.controls.setTime(this.getTime());
		this.controls.setPos(this.getPos());
	}

	this.goto = function(pos) {
		if (this.player.controls.currentPosition) this.player.controls.currentPosition = pos;
		if (this.player.currentPosition) this.player.currentPosition = pos;
	}

	this.clicked = function(id) {
		switch (id) {
			case "play":
				if (this.next_url) {
					this.start(this.next_url);
					this.next_url = null;
				} else {
					this.player.controls.play();
				}
			break;
			case "pause":
				this.player.controls.pause();
			break;
			case "maximize":
				if (!this.playing && !this.maxed) return false;
				this.maxed = !this.maxed;
				if (this.maxed) {
					this.div.style.width = "726px";
					this.div.style.height = "444px";
					this.player.width = "714px";
					this.player.height = "403px";
				} else {
					this.div.style.width = "430px";
					this.div.style.height = "260px";
					this.player.width = "430px";
					this.player.height = "220px";
				}
				this.pause_div.style.width = this.player.width;
				this.pause_div.style.height = this.player.height;
				this.onMaximize(this.maxed);
			break;
			case "fullscreen":
				this.player.fullScreen = !this.player.fullScreen;
			break;
		}
	}

}

/* --- Player FlyIn --- */

function page_offset() {
	if (document.body && document.body.scrollTop) return document.body.scrollTop;
	if (document.documentElement && document.documentElement.scrollTop) return document.documentElement.scrollTop;
	if (window.pageYOffset) return window.pageYOffset;
	return 0;
}

var fly_int = null;

function player_fly_in() {
	fly_int = window.setInterval("player_fly_anim()",10);
}

function player_fly_anim() {
	var o = 130;
	var y = page_offset()-o;
	y *= 0.8;
	p = Math.floor(y);
	if (p < 2) {
		window.clearInterval(fly_int);
	} else {
		window.scrollTo(0, o+p);
	}
}

/* --- VideoPlayer Startup --- */

function setPos(pos) {
	// called by flash player when user has dragged the position cursor.
	player.goto(pos);
}

function clicked(id) {
	// called by flash player when a button is clicked.
	player.clicked(id);
}

var player;

function update() {
	// called periodically by an interval-timer.
	player.update();
}

window.onload = function() {
	player = new VideoPlayer('video', video_root_url);
	player.onPlay = function() {
	}
	window.setInterval("update()", 1000);
	if (window.after_video_load) window.after_video_load();
}

function launch_player(url, autoplay) {
	if(autoplay != 0) {
		player.start(url, "true");
	} else {
		player.start(url, "true");
		if (player.ie) {
			window.addEvent('domready', function() {
				document.getElementById('pause_div').innerHTML = "<br /><br /><br /><br /><br /><br />Tryk på afspil for at starte videoen...";
				player.stop();
			});
		}
	}
}

/* Bookmark function */

function add_bookmark(title, url) {
	if ((navigator.appName == "Microsoft Internet Explorer") && (parseInt(navigator.appVersion) >= 4)) {
		window.external.AddFavorite(url, title);
		return;
	}
	if (navigator.appName == "Netscape") {
		window.sidebar.addPanel(title, url, "");
		return;
	}
	window.alert('Din browser understøtter ikke denne funktion,\nmen du kan kopiere den direkte adresse\ntil dette videoklip fra feltet herunder.\n\nI de fleste browsere kan man også højre-klikke\npå linket "Tilføj til favoritter" og vælge\n"Tilføj til favoritter" i kontekst-menu\'en.');
}

function count_stats(id) {
//	document.getElementById('videostat').src = video_root_url + '/modules/fsStatistics/register.php?uri=video/' + id;
}
