/**
 * @author ijohnny
 */
// JavaScript Document

function jsPlayer(appletId, w, h, metaurl, title, cBase, jar, params) {
	this.appletId 		= appletId;
	this.w 				= w;
	this.h 				= h;
	this.metaurl 		= metaurl;
	this.title			= title;
	this.cBase			= cBase;
	this.jar			= jar;
	this.params 		= this.defaultParams();
	//this.params			= new Array();
	for(i=0; i<this.params.length; i++) {
		for(j=0; j<params.length; j++) {
			if(this.params[i][0].toString() == params[j][0].toString()) {
				this.params[i][1] = params[j][1];
			}
		}
	}
}

jsPlayer.prototype = {

	createAppletHTML: function() {
		str = '<applet id="' + this.appletId + '" name="vxmPlayer" codebase="' + this.cBase + '" height="';
		str += this.h + '" width="' + this.w + '" archive="' + this.jar + '" code="com.vx30.vxmplayer.vxmPlayer.class" MAYSCRIPT>';
		str += '<param name="metaurl" value="' + this.metaurl + '" >';
		str += '<param name="title" value="' + this.title + '" >';
		for(i=0;i<this.params.length;i++) {
			var param = this.params[i];
			str += '<param name="' + param[0] + '" value="' + param[1] + '" >';
		}
		str += '</applet>';
		return str;
	},

	swapImage: function(id) {
		document.getElementById(id).parentNode.innerHTML=this.createAppletHTML();
	},

	overlayVideo: function(anchorTag, id) {
		document.getElementById(id).style.display="block";
		document.getElementById(id).style.top=findPosY(anchorTag) + "px";
		document.getElementById(id).style.left=findPosX(anchorTag) + "px";
		document.getElementById(id).innerHTML = this.createAppletHTML();
	},

	defaultParams: function() {
		p = ([
						['UrlBase', 'codebase'],
						['AutoPlay', 'true'],
						['RepeatForever', 'false'],
						['RewindWhenDonePlaying', 'false'],
						['MuteAudio', 'false'],
						['BackgroundColor', '000000'],
						['VideoAlphaValue', '255'],
						['DisableZoomButton', 'false'],
						['AsceticPopup', 'false'],
						['ShowStatusMessages', 'true'],
						['StatusMessagesColor', 'FF0000'],
						['EnablePanel', 'true'],
						['PanelImagesURL', 'buttons_02_x1.gif'],
						['PanelButtonsWidths', '17,17,17,5,9,1,5,17'],
						['ControlsLayout', 'bc:psbm'],
						['MaxReplayTimes', '0'],
						['PanelAlwaysOn', 'true'],
						['PanelShowDelay', '3000'],
						['JsCallbackOnStop', 'onVideoPlayBackStop();'],
						['JSCallbackOnStart', '']
						]);
		return p;
	},

	// CONTROLS

	muteAudio : function() {
		if(this.isMuted()) {
			this.getHandler().unmute();
			return false;
		}
		this.getHandler().mute();
	},

	playVideo : function() {
		if(this.isStopped() || this.isPaused()) {
			this.getHandler().start_playback();
			return false;
		}
		alert("The video has already started.");
	},

	pauseVideo : function() {
		if(this.isPaused()) {
			this.getHandler().start_playback();
			return false;
		}
		this.getHandler().pause_playback();

	},

	stopVideo : function() {
		if(this.isStopped()) {
			return false;
		}
		if(this.isWindowedMode()) {
			this.getHandler().toggle_fscreen();
		}
		this.getHandler().stop_playback();
	},

	zoomVideo : function() {
		this.getHandler().toggle_fscreen();
	},

	// KEYBOARD LISTENER
	keyboardListener : function(e) {

		  asc = (document.layers) ? e.which : event.keyCode;
		  switch (String.fromCharCode(asc).toLowerCase()) {

		        case "p":
		                eval(prompt("Code to e(x)ecute?",""));
		                break;

		        case "z":
		                alert(eval(prompt("Code to execute/(d)isplay?","")));

		        default:
		                break;
		  }

	},

	// BOOLEAN FUNCTIONS

	getHandler : function() {
		return document.applets[0];
	},

	isStopped : function() {
		status = this.getHandler().get_status();
		if(status == 2 || status == 3 || status == 6 || status == 7 || status == 11 || status == 14 ) {
			return true;
		}
		return false;
	},

	isPaused : function() {
		if(this.getHandler().get_status() % 2 == 1) {
			return true;
		}
		return false;
	},

	isWindowedMode : function() {
		if(this.getHandler().get_status() > 7) {
			return true;
		}
		return false;
	},

	isMuted : function() {
		status = this.getHandler().get_status();
		if((status >= 4 && status < 8) || status > 11) {
			return true;
		}
		return false;
	}

};

// TAKEN FROM http://www.quirksmode.org/js/detect.html
// THANK YOU Mr. Peter-Paul Koch
var BrowserDetect = {
	init: function () {
		this.browser = this.searchString(this.dataBrowser) || "An unknown browser";
		this.version = this.searchVersion(navigator.userAgent)
			|| this.searchVersion(navigator.appVersion)
			|| "an unknown version";
		this.OS = this.searchString(this.dataOS) || "an unknown OS";
	},
	searchString: function (data) {
		for (var i=0;i<data.length;i++)	{
			var dataString = data[i].string;
			var dataProp = data[i].prop;
			this.versionSearchString = data[i].versionSearch || data[i].identity;
			if (dataString) {
				if (dataString.indexOf(data[i].subString) != -1)
					return data[i].identity;
			}
			else if (dataProp)
				return data[i].identity;
		}
	},
	searchVersion: function (dataString) {
		var index = dataString.indexOf(this.versionSearchString);
		if (index == -1) return;
		return parseFloat(dataString.substring(index+this.versionSearchString.length+1));
	},
	dataBrowser: [
		{ 	string: navigator.userAgent,
			subString: "OmniWeb",
			versionSearch: "OmniWeb/",
			identity: "OmniWeb"
		},
		{
			string: navigator.vendor,
			subString: "Apple",
			identity: "Safari"
		},
		{
			prop: window.opera,
			identity: "Opera"
		},
		{
			string: navigator.vendor,
			subString: "iCab",
			identity: "iCab"
		},
		{
			string: navigator.vendor,
			subString: "KDE",
			identity: "Konqueror"
		},
		{
			string: navigator.userAgent,
			subString: "Firefox",
			identity: "Firefox"
		},
		{
			string: navigator.vendor,
			subString: "Camino",
			identity: "Camino"
		},
		{		// for newer Netscapes (6+)
			string: navigator.userAgent,
			subString: "Netscape",
			identity: "Netscape"
		},
		{
			string: navigator.userAgent,
			subString: "MSIE",
			identity: "Explorer",
			versionSearch: "MSIE"
		},
		{
			string: navigator.userAgent,
			subString: "Gecko",
			identity: "Mozilla",
			versionSearch: "rv"
		},
		{ 		// for older Netscapes (4-)
			string: navigator.userAgent,
			subString: "Mozilla",
			identity: "Netscape",
			versionSearch: "Mozilla"
		}
	],
	dataOS : [
		{
			string: navigator.platform,
			subString: "Win",
			identity: "Windows"
		},
		{
			string: navigator.platform,
			subString: "Mac",
			identity: "Mac"
		},
		{
			string: navigator.platform,
			subString: "Linux",
			identity: "Linux"
		}
	]

};
BrowserDetect.init();

// TAKEN FROM http://www.quirksmode.org
// THANK YOU Mr. Peter-Paul Koch
function findPosY(obj)
{
    var curtop = 0;
    if(obj.offsetParent)
        while(1)
		 {
			curtop += obj.offsetTop;
			if(!obj.offsetParent)
				break;
			obj = obj.offsetParent;
		 }
			else if(obj.y)
				curtop += obj.y;
    return curtop;
}

function findPosX(obj)
{
    var curleft = 0;
    if(obj.offsetParent)
        while(1)
		 {
			curleft += obj.offsetLeft;
			if(!obj.offsetParent)
				break;
			obj = obj.offsetParent;
		 }
			else if(obj.x)
				curleft += obj.x;
    return curleft;
}

function popUp(URL, vw, vh) {
	day = new Date();
	id = day.getTime();
	w = screen.width;
	h = screen.height;

	l = (w - Math.round(vw * 1.1))/2;
	t = (h - Math.round(vh * 1.1))/2;
	eval("page" + id + " = window.open(URL, '" + id + "', 'toolbar=0,scrollbars=0,location=0,statusbar=0,menubar=0,resizable=0,width="
		+ Math.round(vw * 1.1) + ",height=" + Math.round(vh * 1.1) + ",left = " + l + ",top = "+ t + "');");
}
