var InternetExplorer = navigator.appName.indexOf("Microsoft") != -1;

var jLogApplet = null;
function jLog( msg ) {
	if (jLogApplet===null) {
		jLogApplet = getPlugin("lmsImpl");
		if (jLogApplet==null)
			jLogApplet = getPlugin("scormhlp");
		if (jLogApplet==null)
			jLogApplet = false;
	}
	try {
		if (jLogApplet)
			jLogApplet.log( msg );
	} catch(x) {
	}
}

function isUndefined(o) {
	return typeof(o)=="undefined";
}
function isEmpty(o) {
	return o===null || isUndefined(o) || (typeof(o)=="string" && o.length==0);
}
function getObj(id) {
	var o = (document.all?document.all[id]:document.getElementById(id));
	if (isUndefined(o))
		o = null;
	return o;
}
function isValidApplet(id) {
	var o = getObj(id);
	if (o!=null) {
		try {
			o.getAppletInfo();
			return true;
		} catch( e ) {
		}
	}
	return false;
}
function getPlugin(id) {
	var o = InternetExplorer ? window[id] : window.document[id];
	if (isEmpty(o))
		return null;
	return o;
}

function isValidFlash(id) {
	var o = getPlugin(id);
	if (o!=null) {
		return true;
/*		try {
			o.SetVariable("_jscheck","1");
			return true;
		} catch( e ) {
			jLog("isValidFlash SetVariable() error: "+e.message);
		}
		try {
			o.GetVariable("_level0");
			return true;
		} catch( e ) {
			jLog("isValidFlash GetVariable(_level0) error: "+e.message);
		}
*/
	}
	return false;
}

function getParam( url, param, def ) {
	if (isUndefined(def))
		def = null;
	var vname = param+"=";
	var vurl = url.toString();
	var idx = vurl.indexOf('?');
	var v = def;
	if (idx!=-1) {
		vurl = vurl.substring(idx+1);
		//vurl = unescape(vurl);
		idx = vurl.indexOf(vname);
		if (idx!=-1) {
			v = vurl.substring(idx+vname.length);
			idx = v.indexOf('&');
			if (idx!=-1) {
				v = v.substring(0,idx);
			}
			v = v.replace(/\+/g," ");
			v = decodeURIComponent(v); //unescape(v);
		}
	}
	return v;
}
function removeParams( url ) {
	var idx = url.indexOf('?');
	if (idx!=-1) {
		url = url.substring( 0, idx );
	}
	return url;
}
function getParams( url ) {
	var idx = url.indexOf('?');
	var params = "";
	if (idx!=-1) {
		params = url.substring( idx+1 );
	}
	return params;
}
function parseParams(encoded) {
	var o = new Object();
	var params = encoded.split("&");
	for(var i=0; i<params.length; i++) {
		var p = params[i];
		var idx = p.indexOf("=");
		if (idx==-1) {
			o[p] = true;
		} else {
			var key = p.substring(0,idx);
			var val = p.substring(idx+1);
			val = decodeURIComponent(val);
			o[key] = val;
		}
	}
	return o;
}
function makeParams(paramsAsObject) {
	var params = "";
	var value;
	var key;
	var i = 0;
	for(key in paramsAsObject) {
		value = paramsAsObject[key];
		if (value===null)
			continue;
		if (i>0)
			params += '&';
		params += key+'='+encodeURIComponent(value);
		i++;
	}
	return params;
}
function removeParam( url, name ) {
	var params = getParams(url);
	params = parseParams(params);
	if (!isEmpty(params[name])) {
		params[name] = null;
		params = makeParams(params);
		url = removeParams(url);
		if (!isEmpty(params))
			url = url+"?"+params;
	}
	return url;
}
function getExtension( url ) {
	url = removeParams(url);
	var idx = url.lastIndexOf('.');
	var ext = "";
	if (idx!=-1) {
		var idx2 = url.lastIndexOf('/');
		if (idx==-1 || idx>idx2) {
			ext = url.substring(idx+1);
		}
	}
	return ext;
}
function addParam( url, name, value ) {
	var idx = url.indexOf('?');
	if (idx!=-1) {
		url += "&";
	} else {
		url += "?";
	}
	url += name+"="+encodeURIComponent(value);
	return url;
}

function getElement( eid, showAlert ) {
	var e = null;
	if (typeof(showAlert)=="undefined")
		showAlert = true;
	
	 if (document.getElementById)
		e = document.getElementById(eid);
	 else if (document.layers) {
		e = document.layers[eid];
		if ( !e ) {	
			e = document.embeds[eid];
		}
		if ( !e ) {
			e = document.applets[eid];
		}
		if ( !e )
			e = document.forms[eid];
	}
	 else if (document.all)
		e = document.all[eid];
	 else if (showAlert)
	 	alert( "dont know how to find: "+eid );
	/*
	if (InternetExplorer)
		e = eval("document.all."+eid);
	else
		e = document.getElementById(eid);
	*/
	return e;
}

function decodeTime( time ) {
	time = String(time);
	var pi = 0;
	var i = time.indexOf(':',pi);
	var h = time.substring(pi,i);
	pi = i+1;
	i = time.indexOf(':',pi);
	var m = time.substring(pi,i);
	pi = i+1;
	i = time.indexOf('.',pi);
	var s = time.substring(pi,(i!=-1?i:time.length));
	s = Number(h)*3600+Number(m)*60+Number(s);
	return s;
}

function formatTime( s ) {
	var h = Math.floor(s/3600);
	var m = Math.floor((s-h*3600)/60);
	s = s % 60;
	var time = (h<10?"0":"")+h+":"+(m<10?"0":"")+m+":"+(s<10?"0":"")+s;
	return time;
}

function setSize(elemid,datoX,datoY) {
	if (document.all && !document.getElementById) {
		jLog( "document.all[elemid].style.pixelWidth ="+ datoX);
		document.all[elemid].style.pixelWidth = datoX;
		document.all[elemid].style.pixelHeight = datoY;
	}else{
		jLog( "document.getElementById(elemid).style.width ="+ datoX);
		document.getElementById(elemid).style.width = datoX+"px";
		document.getElementById(elemid).style.height = datoY+"px";
	}
}

/**
	XMLHttpRequest
*/
function createXMLHttpRequest() {
	var req = null;
	// branch for native XMLHttpRequest object
	if (window.XMLHttpRequest) {
		try {
			req = new XMLHttpRequest();
		} catch(e) {
		}
	// branch for IE/Windows ActiveX version
	} else if (window.ActiveXObject) {
		try {
			req = new ActiveXObject("Msxml2.XMLHTTP");
		} catch(e) {
			try {
				req = new ActiveXObject("Microsoft.XMLHTTP");
			} catch(e2) {
				alert("Microsoft XMLHttpRequest create error: "+e2.message);
			}
		}
	}
	return req;
}

/**
	Sends request using XMLHttpRequest
	@param url (string) - request url
	@param data (string) - data sent during request. optional.
	@param type (string) - "POST" or "GET". optional - if data is null it is GET
	@return XMLHttpRequest object or false
*/
function sendRequest(url,data,type) {
	if (isUndefined(data))
		data = null;
	if (isUndefined(type))
		type = (data===null?"GET":"POST");
	var async = false;
	var req = createXMLHttpRequest();
	if (req) {
		req.open( type, url, async );
		if (type=="POST") {
			req.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
		}
		req.send(data);
	}
	return req;
}

function setBackground(bg) {
	if (typeof(bg)=="undefined")
		bg = getParam(window.location,"bg");
	if (bg===null || bg.length==0)
		bg = "#FFFFFF";
	if (bg.charAt(0)!="#")
		bg = "#"+bg;
	window.document.body.style.background = bg;
	return bg;
}

function popup( url, width, height, target, wparams ) {
	if (isUndefined(width))
		width = 350;
	if (isUndefined(height))
		height = 400;
	if (isUndefined(target))
		target = "_blank";
	if (isUndefined(wparams))
		wparams = "location=0,menubar=0,resizeable=1,scrollbars=1,status=0,titlebar=0";
	var w = window;
	if (!isEmpty(w.top))
		w = w.top;
	var left = (w.screen.width-width)/2;
	var top = w.screen.height*0.4-height/2;
	wparams = "height="+height+",width="+width
		+",left="+left+",top="+top
		+","+wparams;
	w.open( url, target, wparams );
}

