xbDetectBrowser();

var MAC = (navigator.OS == "mac");
var WIN9X = (navigator.appVersion.indexOf("Win9") != -1) || (navigator.appVersion.indexOf("Windows 9") != -1);
var WINNT =	(navigator.appVersion.indexOf("WinNT") != -1) || (navigator.appVersion.indexOf("Windows NT") != -1);
var WIN32 = (navigator.OS == "win");
var NAV3 = (navigator.family == "nn3");
var NAV4 = (navigator.family == "nn4");
var GECKO = (navigator.family == "gecko");
var IE3 = (navigator.family == "ie3");
var IE4 = (navigator.family == "ie4");
var OPERA = navigator.family == "opera" && false; // currently unsupported, but maybe someday?

var AppVer = parseFloat(navigator.appVersion);

var ieVerbose = false;

var LIVE_CONNECT = true;
if ((OPERA && WIN32) || ((IE3 || IE4) && MAC)) LIVE_CONNECT = false;

var JS_MAJOR_VERSION = 5;
var JS_MINOR_VERSION = 0;

if (NAV3 || NAV4) { 
  var CURRENT_VERSION = "5.0.2.4504";	// Current Netscape 4 shell version
  var UPGRADE_VERSION = "5.0.2.4503";
} else if (GECKO) {
  var CURRENT_VERSION = "5.2.0.6335";	// Current Netscape 6 shell version
  var UPGRADE_VERSION = "5.2.0.6237";
} else {
  var CURRENT_VERSION = "5.0.1.3749";	// Current IE shell version
  var UPGRADE_VERSION = "5.0.1.3748";
}

var SILENT_INSTALL = false;			// As silent as possible

var PLAYER_INSTALL_DIR = "http://a320.g.akamai.net/7/320/1456/v50245/www.pulse3d.com/players/";	// must be absolute URL (e.g. http://www.pulse3d.com/players/).
// var PLAYER_INSTALL_DIR = "http://stage.pulse3d.com/players/";

// The next line specifies where the install help and message pages are kept.  This should not be changed.
// var PLAYER_MSG_DIR = "http://a320.g.akamai.net/7/320/1456/v43113/www.pulse3d.com/players/";
var PLAYER_MSG_DIR = "http://www.pulse3d.com/players/";

var NAV3_FORCE = 1;			// By adding these to the INSTALL_OPTIONS variable you can
var NAV4_FORCE = 2;			// have installation start when the user first opens an install page
var IE4_FORCE = 4;			// (instead of having to click to start).  They can still decline the installation though.
var INSTALL_OPTIONS = 0;	// NAV3_FORCE | NAV4_FORCE | IE4_FORCE;

var WIN_CAB_FILE="PulsePlayer5AxWin.cab";
var WIN_JAR_FILE="PulsePlayer5NsWin.jar";
var WIN_XPI_FILE="PulsePlayer5MzWin.xpi";
var MAC_JAR_FILE="PulsePlayer5NsMac.jar";
var WIN_NS_INSTALLER="PulsePlayer5NsWin.exe";
var MAC_NS_INSTALLER="PulsePlayer5NsMac.hqx";

var withImage = true;

/*
MAC = false; WIN9X = false; WINNT =	false; WIN32 = true;
NAV3 = false; NAV4 = false; IE3 = true; IE4 = false; OPERA = false;
*/

var FORCE_INSTALL = 5;
var PLAYER_INSTALLING = 4;
var PLAYER_UPGRADING = 3;
var PLAYER_UPGRADE_REQ = 2;
var PLAYER_INSTALLED = 1;
var PLAYER_NOT_INSTALLED = 0;
var BROWSER_NO_JAVA = -1;
var BROWSER_UPGRADE_REQ = -2;
var BROWSER_UNSUPPORTED = -3;
var BROWSER_NO_COOKIES = -4;
var BROWSER_NO_SMARTUPDATE = -5;
var BROWSER_SMARTUPDATE_FAIL = -6;
var PLAYER_INSTALL_FINISHED = -7;

var COREFLAG_CODEBASE = 1;
var COREFLAG_PLUGINSPAGE = 2;
var COREFLAG_COREVER = 4;
var COREFLAG_CODEBASE_FULL = 8;

var INSTALL_PAGES = new Array(
"iewinautoinstall.html",
"nswininstall.html",
"nswinautoinstall.html",
"nswinautoupgrade.html",
"nsmacinstall.html",
"nsmacautoinstall.html",
"nsmacautoupgrade.html",
"iemacinstall.html",
"opwininstall.html"
);

var INFO_PAGES = new Array(
"info/browserjava.html",
"info/browserupgrade.html",
"info/browserunsupp.html",
"info/browsercookies.html",
"info/browsersmartupdate.html",
"info/browsersufail.html",
"info/playerinstallfinished.html"
);

var ARRAY_LESS_THAN = -1;
var ARRAY_EQUAL = 0;
var ARRAY_GREATER_THAN = 1;

document.pe_playerready = false;
document.pe_installedplayer = "0.0.0.0";

if ((NAV3 || NAV4) && (WIN32 || MAC)) {
	if ((navigator.mimeTypes["application/x-pulse-player"] != null) && (navigator.mimeTypes["application/x-pulse-player"].enabledPlugin))
		document.pe_installedplayer = pe_PlayerVer();
}
else if (GECKO && WIN32) {
	if (navigator.mimeTypes["application/x-pulse-player"] != null) {
		if (navigator.mimeTypes["application/x-pulse-player"].enabledPlugin) {			
			document.pe_installedplayer = pe_PlayerVer();
		}
	}
}
else if (IE4 && WIN32) {
	if (!pe_InstallCookie("installing") && !pe_InstallCookie("upgrading") && !(INSTALL_OPTIONS & IE4_FORCE)) {
		document.writeln('<SCR' + 'IPT LANGUAGE="VBScript">');
		document.writeln('on error resume next');
		document.writeln('document.pe_installedplayer = IsObject(CreateObject("AxPulse.AxPulse5.1"))');
		document.writeln('</SCR' + 'IPT>');

		if (document.pe_installedplayer != "0.0.0.0") {
			document.writeln("<OBJECT ID='PulsePlayerVersion' CLASSID='CLSID:A48D0309-8DA3-41aa-98E4-89194D471890' WIDTH=0 HEIGHT=0></OBJECT>");
			document.pe_installedplayer = document.all["PulsePlayerVersion"].Version;
		}
	}
}
else if (IE3 && WIN32) {
	document.pe_installedplayer = CURRENT_VERSION;
}

function pe_PlayerCheck() {
	if (IE3 && WIN32) return FORCE_INSTALL;
	else if (document.pe_installedplayer != "0.0.0.0") {
		temp = pe_CompVers(pe_PlayerVer(),UPGRADE_VERSION);
		if(temp == ARRAY_LESS_THAN || temp == ARRAY_EQUAL)
			return PLAYER_UPGRADE_REQ;
		else
			return PLAYER_INSTALLED;
	}
	else return PLAYER_NOT_INSTALLED;
}

function pe_ShowMsg(situation) {
	if (situation == BROWSER_NO_JAVA) situation = 0;
	else if (situation == BROWSER_UPGRADE_REQ) situation = 1;
	else if (situation == BROWSER_UNSUPPORTED) situation = 2;
	else if (situation == BROWSER_NO_COOKIES) situation = 3;
	else if (situation == BROWSER_NO_SMARTUPDATE) situation = 4;
	else if (situation == BROWSER_SMARTUPDATE_FAIL) situation = 5;
	else if (situation == PLAYER_INSTALL_FINISHED) situation = 6;

	pe_ShowWindow(INFO_PAGES[situation], "info");
}

function pe_PlayerInstall() {
	if (IE3 && WIN32) {
		if (!pe_SetInstallCookie("installing")) pe_ShowMsg(BROWSER_NO_COOKIES);
		else self.location.replace(self.location + "");
	}
	else if (IE4 && WIN32) {
		if (!pe_SetInstallCookie("installing")) pe_ShowMsg(BROWSER_NO_COOKIES);
		else document.location.reload();
	}
	else if (NAV4 && (WIN32 || MAC)) {
		if (document.pe_dialog && !document.pe_dialog.closed) {
			clearInterval(document.pe_interval);
			document.pe_dialog.close();
		}

		if (document.pe_playerready && NAV4) {
			if (!pe_SetInstallCookie("installing")) pe_ShowMsg(BROWSER_NO_COOKIES);
			else document.location.reload();
			return;
		}

		if (AppVer >= 4.5) {
			var enabledJava = navigator.javaEnabled();
			var enabledUpdate = netscape.softupdate.Trigger.UpdateEnabled();

			if (enabledJava && enabledUpdate) {
				if (document.pe_installedplayer == "0.0.0.0") showWindow = WIN32 ? 2 : 5;
				else showWindow = WIN32 ? 3 : 6;
				pe_ShowWindow(INSTALL_PAGES[showWindow]);
				setTimeout("pe_SmartUpdateInstall()", 500);
			}
			else {
				if (WIN32) pe_ShowWindow(INSTALL_PAGES[1]);
				else if (MAC) pe_ShowWindow(INSTALL_PAGES[4]);
			}
		}
		else {
			if (WIN32) pe_ShowWindow(INSTALL_PAGES[1]);
			else if (MAC) pe_ShowWindow(INSTALL_PAGES[4]);
		}
	}
	else if (GECKO && WIN32 && (navigator.org == "compuserve")) {
		pe_ShowWindow("mzwininstall.html");
	}
	else if (GECKO && WIN32 && (navigator.org != "compuserve")) {
		var xpiPath = PLAYER_INSTALL_DIR + CURRENT_LANGUAGE + JS_MAJOR_VERSION + "." + JS_MINOR_VERSION;
		xpiPath += "/win/" + WIN_XPI_FILE;
		xpi={'Pulse Player Install':xpiPath};
		InstallTrigger.install(xpi,xpinstallCallback);
	}
	
	else if (NAV3 && (WIN32 || MAC)) {
		if (WIN32) pe_ShowWindow(INSTALL_PAGES[1]);
		else if (MAC) pe_ShowWindow(INSTALL_PAGES[4]);
	}
	else if (OPERA && WIN32) {
		pe_ShowWindow(INSTALL_PAGES[8]);
	}
	else pe_ShowMsg(BROWSER_UNSUPPORTED);
}

function xpinstallCallback(url, status)
{
	if (status == 0)
	{
		pe_SetInstallCookie("success");
		navigator.plugins.refresh();
		setTimeout("document.location.reload()",2000);
	}
	else
	{
		msg = "XPInstall installation has failed.  \nVisit www.pulse3d.com for other Pulse Player installation options.";
		alert(msg);
	}
}

function pe_PlayerVer() {
	if (IE3 && WIN32) return CURRENT_VERSION;
	else if (IE4 && WIN32) return document.pe_installedplayer;
	else if ((NAV3 || NAV4) && (WIN32 || MAC)) {
		temp = navigator.plugins["PulsePlayer"].description;
		theVer = temp.substring(temp.lastIndexOf("v") + 1);
		if (theVer.indexOf(".") == "0") {
			theVer = theVer.substring(1);
		}
		return theVer;
	} else if (GECKO && WIN32) {
		temp = navigator.plugins["PulsePlayer"].description;
		theVer = temp.substring(temp.lastIndexOf("v") + 1);
		if (theVer.indexOf(".") == "0") {
			theVer = theVer.substring(1);
		}
		return theVer;
	}
	else return "0.0.0.0";
}

function pe_ShowWindow(windowURL, secondWin) {
	if (SILENT_INSTALL) return;

	msgLang = pe_BrowserLang();

	install_page = PLAYER_MSG_DIR + msgLang + windowURL;
	if (secondWin == "info") {
		document.pe_dialogtwo = window.open(install_page,"pulsedialogwin","status=0,resizable=1,scrollbars=1,width=600,height=300");
	} else {
		document.pe_dialog = window.open(install_page,"pulsedialogwin","status=0,resizable=1,scrollbars=1,width=600,height=300");
	}
}

function pe_InstallTimer() {
	document.pe_installtime++;

	if (document.pe_dialog && document.pe_dialog.closed) {
		if (!pe_InstallCookie("upgrading")) pe_SetInstallCookie("verify");
		clearInterval(document.pe_interval);
		if (withImage) {
		 self.location.reload();
		}
		return;
	}

	if (pe_InstallCookie("installing")) {
		if (navigator.mimeTypes["application/x-pulse-player"] != null && navigator.mimeTypes["application/x-pulse-player"].enabledPlugin) {
			if (document.pe_dialog && !document.pe_dialog.closed) document.pe_dialog.close();
			clearInterval(document.pe_interval);
			pe_SetInstallCookie("success");
			self.location.reload();
			return;
		}
	}
	else if (pe_InstallCookie("upgrading")) {
		// self.status = document.pe_installtime;
	}
	if (document.pe_installtime == 10) pe_ShowMsg(PLAYER_INSTALL_FINISHED);
}

function pe_SmartUpdateInstall() {
	JARCHIVE_PATH = PLAYER_INSTALL_DIR + CURRENT_LANGUAGE + JS_MAJOR_VERSION + "." + JS_MINOR_VERSION;
	
	if (document.pe_installedplayer != "0.0.0.0") pe_SetInstallCookie("upgrading");
	else pe_SetInstallCookie("installing");
	document.pe_installtime = 0;
	document.pe_interval = setInterval("pe_InstallTimer()", 1000);

	if (NAV4 && (WIN32 || MAC)) {
		var JARCHIVE_NAME;
		if (MAC)
		 JARCHIVE_PATH = JARCHIVE_PATH + "/mac/";
		if (WIN32)
		 JARCHIVE_PATH = JARCHIVE_PATH + "/win/";
		 
		JARCHIVE_NAME = (MAC ? MAC_JAR_FILE : WIN_JAR_FILE);

	    if (!navigator.javaEnabled()) pe_ShowMsg(BROWSER_NO_JAVA);
		else {
			installTrigger = netscape.softupdate.Trigger;
			installMode = SILENT_INSTALL ? installTrigger.SILENT_MODE : installTrigger.DEFAULT_MODE;

			if (!(installTrigger.UpdateEnabled())) {
				clearInterval(document.pe_interval);
				pe_ShowMsg(BROWSER_NO_SMARTUPDATE);
			}
			else if (!(installTrigger.StartSoftwareUpdate(JARCHIVE_PATH + JARCHIVE_NAME, installMode))) {
				clearInterval(document.pe_interval);
				pe_ShowMsg(BROWSER_SMARTUPDATE_FAIL);
			}
		}
	}
}

function pe_PlayerStatus() {
	if (pe_InstallCookie("installing")) return PLAYER_INSTALLING;
	else if (pe_InstallCookie("upgrading")) return PLAYER_UPGRADING;
	else if (pe_InstallCookie("upgraded")) return PLAYER_INSTALLED;
	else if (pe_InstallCookie("success")) return PLAYER_INSTALLED;
	else if (IE4 && WIN32 && (INSTALL_OPTIONS & IE4_FORCE)) return FORCE_INSTALL;
	else if (NAV3 && (WIN32 || MAC) && (INSTALL_OPTIONS & NAV3_FORCE)) return FORCE_INSTALL;
	else if (NAV4 && (WIN32 || MAC) && (INSTALL_OPTIONS & NAV4_FORCE)) return FORCE_INSTALL;

	if ((IE3 || IE4) && MAC)
		return BROWSER_UNSUPPORTED;
	else if (IE4 && WIN32)
		return pe_PlayerCheck();
	else if (IE3 && WIN32 && AppVer >= 3.02)
		return pe_PlayerCheck();
	else if (IE3 && WIN32 && AppVer < 3.02)
		return BROWSER_UPGRADE_REQ;
	else if (NAV3 && (WIN32 || MAC) && AppVer < 3.04)
		return BROWSER_UPGRADE_REQ;
	else if ((NAV3 || NAV4) && (WIN32 || MAC))
		return pe_PlayerCheck();
	else if (GECKO && WIN32)
		return pe_PlayerCheck();
	else
		return BROWSER_UNSUPPORTED;
}

function pe_PlayerTag(pwcURL, pwcWidth, pwcHeight, frameRate, coreFlags, bHardware, backColor, playerName, sCommand) {
	if (!playerName) playerName = "PulsePlayer";
	if (!pwcWidth) pwcWidth = 0;
	if (!pwcHeight) pwcHeight = 0;
	if (!frameRate || frameRate < 0) frameRate = 30;
	if (!backColor && (NAV3 || NAV4)) backColor = document.bgColor;
	if (backColor && backColor.indexOf("#") == 0) backColor = backColor.substring(1);
	else if (backColor && backColor.indexOf("0x") == 0) backColor = backColor.substring(2);

	if ((NAV3 || NAV4 || GECKO) && (MAC || WIN32)) {
		if (document.pe_dialogtwo && !document.pe_dialogtwo.closed) document.pe_dialogtwo.close();
		temp = "<EMBED NAME=\""+playerName+"\" TYPE=\"application/x-pulse-player\" MAYSCRIPT"
		temp += " SRC=\""+pwcURL+"\""
		temp += " HEIGHT="+pwcHeight+" WIDTH="+pwcWidth+" FRAMERATE="+frameRate;
		temp += " BGCOLOR=0x" + backColor;
		if (bHardware) temp += " HARDWARE=1";
		if (sCommand) temp += " COMMAND=\"" + sCommand + "\"";
		if (coreFlags & COREFLAG_PLUGINSPAGE) temp += " PLUGINSPAGE=\""+ PLAYER_INSTALL_DIR +"\"";
		// temp += " COREVERSION=\""+ CURRENT_CORE_VERSION +"\"";
		temp += "></EMBED>";
		document.write(temp);
	}
	else if ((IE3 || IE4) && WIN32) {
	
		CODEBASE_VALUE = PLAYER_INSTALL_DIR + CURRENT_LANGUAGE + JS_MAJOR_VERSION + "." + JS_MINOR_VERSION + "/win/" + WIN_CAB_FILE + "#version=" + pe_CommaVersion(CURRENT_VERSION);

		document.writeln("<OBJECT NAME=\"" + playerName + "\" CLASSID=\"CLSID:A48D0309-8DA3-41aa-98E4-89194D471890\" HEIGHT=" + pwcHeight + " WIDTH=" + pwcWidth + " CODEBASE=\""+CODEBASE_VALUE+"\">");
		document.writeln("<PARAM NAME=\"URL\" VALUE=\""+pwcURL+"\">");
		document.writeln("<PARAM NAME=\"FrameRate\" VALUE=\""+frameRate+"\">");
		if (bHardware) document.writeln("<PARAM NAME=\"Hardware\" VALUE=\"1\">");
		if (backColor) document.writeln("<PARAM NAME=\"BgColor\" VALUE=\"0x" + backColor + "\">");
		if (sCommand) document.writeln("<PARAM NAME=\"Command\" VALUE=\"" + sCommand + "\">");
		document.writeln("</OBJECT>");
	}
	document.pe_playerready = true;
}

function pe_ImageTag(imageURL, imageWidth, imageHeight, destinationURL, useTarget) {
	var temp = "";
	if (imageURL) {
		if (destinationURL) temp = "<A HREF=" + destinationURL;
		if (useTarget && destinationURL) temp += " target=pulse3d";
		if (destinationURL) temp += ">";
		temp += "<IMG SRC='" + imageURL + "' BORDER=0";
		if (imageWidth) temp += " WIDTH=" + imageWidth;
		if (imageHeight) temp += " HEIGHT=" + imageHeight;
		temp += ">";
		if (destinationURL) temp += "</A>";
		document.write(temp);
	} else {
		temp = "<table cellpadding=0 cellspacing=0";
		if (imageWidth) temp += " width=" + imageWidth;
		if (imageHeight) temp += " height=" + imageHeight;
		temp +=" border=0><tr><td valign=middle><div align='center'>";
		if (destinationURL) temp += "<A HREF=" + destinationURL;
		if (useTarget && destinationURL) temp += " target=pulse3d";
		if (destinationURL) temp += ">";
		temp += "<font face='arial,helvetica,sans-serif'>Click to bring this page to life with the Pulse Player!</font>";
		if (destinationURL) temp += "</A>";
		if ((IE4 && WIN32) && ieVerbose) {
			temp += "</div><div align='left'></div><br><font face='arial,helvetica,sans-serif' size=1>Note: If you are a Windows NT, 2000, or XP user and have \"Restricted User\" rights, the Pulse Player will not install. Contact your Administrator.";
			temp += "<br><br>Also, security warnings will reflect your security settings. If a Security Warning dialog box appears, click \"Yes\" to accept and begin the installation.</font>";
		}
		temp += "</div></td></tr></table>";
		document.write(temp);
	}
}

function pe_DrawPulse(pwcURL, imageURL, playerWidth, playerHeight, iFramerate, bHardware, backColor, sCommand, playerName) {
	if (!bHardware) bHardware = false;
	if (!iFramerate) iFramerate = 0;
	if (!backColor) backColor = "";
	if (!sCommand) sCommand = "";
	if (!playerName) playerName = "";
	coreParam = 0;

	grantUpgradeText = "This content requires a new version of Pulse Player. \nClick OK to begin upgrade.";
	confirmUpgradeText = "Netscape may still show the previous version number for Pulse Player. \nIf the upgrade process completed successfully click OK \notherwise click cancel";

	playerStatus = pe_PlayerStatus();

	if (playerStatus == FORCE_INSTALL) {
		coreParam |= (COREFLAG_CODEBASE_FULL | COREFLAG_PLUGINSPAGE);
		pe_PlayerTag(pwcURL,playerWidth,playerHeight,iFramerate,coreParam,bHardware,backColor,playerName,sCommand);
		if ((NAV3 || NAV4) && document.pe_installedplayer == "0.0.0.0") setTimeout("pe_PlayerInstall()", 500);
		pe_SetInstallCookie("verify");
	}
	else if (playerStatus == PLAYER_INSTALLING) {
		if (IE3 || IE4) {
			coreParam |= (COREFLAG_CODEBASE_FULL | COREFLAG_PLUGINSPAGE);
			pe_PlayerTag(pwcURL,playerWidth,playerHeight,iFramerate,coreParam,bHardware,backColor,playerName,sCommand);
			pe_SetInstallCookie("verify");
		}
		else if (NAV3 || NAV4) {
			pe_ImageTag(imageURL, playerWidth, playerHeight, "javascript:pe_PlayerInstall()", 0);
			if (!pe_SetInstallCookie("upgrading")) pe_ShowMsg(BROWSER_NO_COOKIES);
			else setTimeout("pe_PlayerInstall()", 500);
		}
	}
	else if (playerStatus == PLAYER_UPGRADING) {
		if (NAV4) confirmUpgrade = confirm(confirmUpgradeText);
		if (NAV4 && !confirmUpgrade) {
			pe_ImageTag(imageURL, playerWidth, playerHeight, "javascript:pe_PlayerInstall()", 0);
			pe_SetInstallCookie("verify");
		}
		else {
			coreParam |= (COREFLAG_CODEBASE_FULL | COREFLAG_PLUGINSPAGE);
			pe_PlayerTag(pwcURL,playerWidth,playerHeight,iFramerate,coreParam,bHardware,backColor,playerName,sCommand);
			if ((IE3 || IE4) && WIN32) pe_SetInstallCookie("verify");
			else pe_SetInstallCookie("upgraded");
		}
	}
	else if (playerStatus == PLAYER_UPGRADE_REQ) {
		if (!pe_InstallCookie("request")) {
			if (!pe_SetInstallCookie("request")) pe_ShowMsg(BROWSER_NO_COOKIES);
			else grantUpgrade = confirm(grantUpgradeText);
		}
		else grantUpgrade = false;
		if (grantUpgrade) {
			pe_ImageTag(imageURL, playerWidth, playerHeight, "javascript:pe_PlayerInstall()", 0);
			// setTimeout("pe_PlayerInstall()", 500);
		}
		else pe_PlayerTag(pwcURL,playerWidth,playerHeight,iFramerate,coreParam,bHardware,backColor,playerName,sCommand);
		/**
		else {
			pe_SetInstallCookie("poopie");
			pe_ImageTag(imageURL, playerWidth, playerHeight, "javascript:self.location.reload()", 0);
		} **/
	}
	else if (playerStatus == PLAYER_NOT_INSTALLED) {
		pe_ImageTag(imageURL, playerWidth, playerHeight, "javascript:pe_PlayerInstall()", 0);
		if (!pe_SetInstallCookie("verify")) pe_ShowMsg(BROWSER_NO_COOKIES);
	}
	else if (playerStatus == BROWSER_NO_JAVA || playerStatus == BROWSER_UPGRADE_REQ || playerStatus == BROWSER_UNSUPPORTED) {
		/** if (!pe_InstallCookie("dialogshown")) {
			pe_ShowMsg(playerStatus);
			pe_SetInstallCookie("dialogshown", 7);
		} **/
		pe_ImageTag(imageURL, playerWidth, playerHeight, "javascript:pe_ShowMsg(" + playerStatus + ")", 0);
	}
	else pe_PlayerTag(pwcURL,playerWidth,playerHeight,iFramerate,coreParam,bHardware,backColor,playerName,sCommand);
}

function pe_CommaVersion(version) {
	commaArray = pe_VersArray(version);
	return commaArray[0]+","+commaArray[1]+","+commaArray[2]+","+commaArray[3];
}

function pe_CompVers(version1, version2) {
	verArray1 = pe_VersArray(version1);
	verArray2 = pe_VersArray(version2);

	for (var i = 0; i < 4; i++) {
		if (verArray1[i] > verArray2[i]) {
			return ARRAY_GREATER_THAN;
		}
		else if (verArray1[i] < verArray2[i]) {
			return ARRAY_LESS_THAN;
		}
	}
	return ARRAY_EQUAL;
}

function pe_VersArray(version)
{
	versionArray = new Array(0,0,0,0);

	if (version) {
		versionArray[0] = parseFloat(version.substring(0, version.indexOf(".")));
		version = version.substring(version.indexOf(".") + 1);
		versionArray[1] = parseFloat(version.substring(0, version.indexOf(".")));
		version = version.substring(version.indexOf(".") + 1);
		versionArray[2] = parseFloat(version.substring(0, version.indexOf(".")));
		version = version.substring(version.indexOf(".") + 1);
		versionArray[3] = parseFloat(version.substring(0));
	}
	return versionArray;
}

function pe_SetInstallCookie(which, days) {
	pe_SetCookie("pulseinstall", which + "", (days ? days : 0), "/");
	return (pe_InstallCookie(which));
}

function pe_InstallCookie(which) {
	if (which) return (pe_GetCookie("pulseinstall") == which)
	else return pe_GetCookie("pulseinstall");
}

function pe_SetCookie(name, value, days, path) {
	if (days > 0) {
		var expires = new Date();
		expires.setTime(expires.getTime() + days*1000*60*60*24);
	}

	document.cookie = name + "=" + escape(value)
		+ ((expires == null) ? "" : ("; expires=" + expires.toGMTString()))
		+ ((path == null) ? "" : ("; path=" + path));
}

function pe_GetCookie(name) {
	var search = name + "=";
	if (document.cookie.length > 0) {
		// if there are any cookies
		offset = document.cookie.indexOf(search);
		if (offset != -1) {
			// if cookie exists
			offset += search.length;
			// set index of beginning of value
			end = document.cookie.indexOf(";", offset);
			// set index of end of cookie value
			if (end == -1) end = document.cookie.length;
			return unescape(document.cookie.substring(offset, end))
		}
	}
	return "";
}

function pe_BrowserLang() {
	if (NAV4 || GECKO) tempLang = navigator.language.toLowerCase();
	else if (IE4) tempLang = navigator.browserLanguage.toLowerCase();

	if (tempLang.indexOf("en") == 0) currLang = 0;
	// else if (tempLang.indexOf("fr") == 0) currLang = 1;
	// else if (tempLang.indexOf("de") == 0) currLang = 2;
	// else if (tempLang.indexOf("es") == 0) currLang = 3;
	// else if (tempLang.indexOf("ja") == 0) currLang = 6;
	// else if (tempLang.indexOf("ko") == 0) currLang = 7;
	// else if (tempLang.indexOf("zh-tw") == 0) currLang = 8;
	// else if (tempLang.indexOf("zh") == 0) currLang = 9;
	else currLang = 0;

	return LANGUAGE[currLang];
}

var LANGUAGE = new Array(
"english/",		// "en"
"french/",		// "fr"
"german/",		// "de"
"spanish/",		// "es"
"italian/",		// ""
"portuguese/",	// ""
"japanese/",	// "ja"
"korean/",		// "ko"
"tchinese/",	// "zh-TW"
"schinese/"		// "zh"
);
var CURRENT_LANGUAGE = LANGUAGE[0];

function pe_SupportedBrowser() {
	if (IE3 || IE4) return WIN32;
	else if (NAV3 || NAV4) return WIN32 || MAC;
	else return false;
}

function pe_ConsolePrint(outString) {
	// This function prints a line of text to Netscape's Java console.
	// In newer versions of Netscape this can be found under the Communicator->Tools->Java Console menu
	if (NAV3 || NAV4) java.lang.System.out.println(outString + "");
}

// PIS by Calvin Rien - Smarts like a sack of quarters.

/*
ua.js revision 0.200 2001-12-03

Contributor(s): Bob Clary, Netscape Communications, Copyright 2001

Netscape grants you a royalty free license to use, modify and 
distribute this software provided that this copyright notice 
appears on all copies.  This software is provided "AS IS," 
without a warranty of any kind.
*/

function xbDetectBrowser()
{
  var oldOnError = window.onerror;
  var element = null;

  window.onerror = null;
  
  // work around bug in xpcdom Mozilla 0.9.1
  window.saveNavigator = window.navigator;

  navigator.OS    = '';
  navigator.version  = parseFloat(navigator.appVersion);
  navigator.org    = '';
  navigator.family  = '';

  var platform;
  if (typeof(window.navigator.platform) != 'undefined')
  {
    platform = window.navigator.platform.toLowerCase();
    if (platform.indexOf('win') != -1)
      navigator.OS = 'win';
    else if (platform.indexOf('mac') != -1)
      navigator.OS = 'mac';
    else if (platform.indexOf('unix') != -1 || platform.indexOf('linux') != -1 || platform.indexOf('sun') != -1)
      navigator.OS = 'nix';
  }

  var i = 0;
  var ua = window.navigator.userAgent.toLowerCase();
  
  if (ua.indexOf('opera') != -1)
  {
    i = ua.indexOf('opera');
    navigator.family  = 'opera';
    navigator.org    = 'opera';
    navigator.version  = parseFloat('0' + ua.substr(i+6), 10);
  }
  else if ((i = ua.indexOf('msie')) != -1)
  {
    navigator.org    = 'microsoft';
    navigator.version  = parseFloat('0' + ua.substr(i+5), 10);
    
    if (navigator.version < 4)
      navigator.family = 'ie3';
    else
      navigator.family = 'ie4'
  }
  else if (ua.indexOf('gecko') != -1)
  {
    navigator.family = 'gecko';
    var rvStart = navigator.userAgent.indexOf('rv:') + 3;
    var rvEnd = navigator.userAgent.indexOf(')', rvStart);
    var rv = navigator.userAgent.substring(rvStart, rvEnd);
    var decIndex = rv.indexOf('.');
    if (decIndex != -1)
    {
      rv = rv.replace(/\./g, '')
      rv = rv.substring(0, decIndex-1) + '.' + rv.substr(decIndex)
    }
    navigator.version = parseFloat(rv);

    if (ua.indexOf('netscape') != -1)
      navigator.org = 'netscape';
    else if ((ua.indexOf('compuserve') != -1) || (ua.indexOf(' cs ') != -1))
      navigator.org = 'compuserve';
    else
      navigator.org = 'mozilla';
  }
  else if ((ua.indexOf('mozilla') !=-1) && (ua.indexOf('spoofer')==-1) && (ua.indexOf('compatible') == -1) && (ua.indexOf('opera')==-1)&& (ua.indexOf('webtv')==-1) && (ua.indexOf('hotjava')==-1))
  {
    var is_major = parseFloat(navigator.appVersion);
    
    if (is_major < 4)
      navigator.version = is_major;
    else
    {
      i = ua.lastIndexOf('/')
      navigator.version = parseFloat('0' + ua.substr(i+1), 10);
    }
    navigator.org = 'netscape';
    navigator.family = 'nn' + parseInt(navigator.appVersion);
  }
  else if ((i = ua.indexOf('aol')) != -1 )
  {
    // aol
    navigator.family  = 'aol';
    navigator.org    = 'aol';
    navigator.version  = parseFloat('0' + ua.substr(i+4), 10);
  }
  else if ((i = ua.indexOf('hotjava')) != -1 )
  {
    // hotjava
    navigator.family  = 'hotjava';
    navigator.org    = 'sun';
    navigator.version  = parseFloat(navigator.appVersion);
  }

  window.onerror = oldOnError;
}
