// If you're seeing this text in your web browser, your server
// does not have a javascript mime type for .js files!
// What to do:
// On your server create a mime type as follows:
// type=application/x-javascript exts=js
// This will associate .js files with the javascript mime type.
// We have only seen this necessary for Netscape 3.0 browsers.

/* This should be included in the *_onEvent function to hide all the installation stuff.

if (msg == "Load Main")
{
	document.cookie = "pulseinstall=success";
	if (POPUP_WINDOW) POPUP_WINDOW.close();
	PULSE_PLAYER_READY = true;
	// Whatever else you want handled by "Load Main"
}

*/

var LOCAL_INSTALL = false; 				// if LOCAL_INSTALL is true we will look for an install directory below the current document for installer files.
var PLAYER_INSTALL_DIR = "http://www.pulse3d.com/players/";	// if LOCAL_INSTALL is false we will look here for install files (must be absolute URL).
var CURRENT_LANGUAGE = "english/";

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 CURRENT_VERSION="3.5.2.5";
var CURRENT_VERSION_COMMA="3,5,2,5";	// Sometimes the version number has to be specified with commas
var VERSION_FAMILY="3.5.2.0";
var VERSION_FAMILY_COMMA="3,5,2,0";
var UPGRADE_VERSION = "3.5.1.9";		// If you have this version or lower we're going to ask you to upgrade

var WIN_CAB_FILE="PulsePlayerAxWin.cab";
var WIN_JAR_FILE="PulsePlayerNsWin.jar";
var MAC_JAR_FILE="PulsePlayerNsMac.jar";

var AppName = navigator.appName;
var AppVer = parseFloat(navigator.appVersion);
var UserAgent = navigator.userAgent;

if (UserAgent.indexOf("Opera") != -1) 
{
	AppName = "Opera";
	AppVer = parseFloat(UserAgent.substring((UserAgent.indexOf("Opera") + 5)));
}
else if (AppName == "Microsoft Internet Explorer")
{
	AppVer = parseFloat(navigator.appVersion.substring((navigator.appVersion.indexOf("MSIE") + 4)));
}

var MAC = (navigator.appVersion.indexOf("Macintosh") != -1);
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 = WIN9X || WINNT;
var NAV3 = (AppName == "Netscape" && AppVer >= 3.0 && AppVer < 4.0);
var NAV4 = (AppName == "Netscape" && AppVer >= 4.0);
var IE3 = (AppName == "Microsoft Internet Explorer" && AppVer >= 3.0 && AppVer < 4.0);
var IE4 = (AppName == "Microsoft Internet Explorer" && AppVer >= 4.0);
var OPERA = (AppName == "Opera") && false;	

/*
MAC = false;
WIN9X = false;
WINNT =	false;
WIN32 = true;
NAV3 = false;
NAV4 = false;
IE3 = true;
IE4 = false;
OPERA = false;	
*/

var LIVE_CONNECT = true;
if ((OPERA && WIN32) || ((IE3 || IE4) && MAC)) LIVE_CONNECT = false;

function INSTALL_COOKIE() 
{
	if (NAV3 || (NAV4 && AppVer < 4.5)) return false;
	else return (document.cookie.indexOf("pulseinstall=installing") != -1);
}
function UPGRADE_COOKIE() 
{
	if (NAV3 || (NAV4 && AppVer < 4.5)) return false;
	else return (document.cookie.indexOf("pulseinstall=upgrade") != -1);
}
function SUCCESS_COOKIE() 
{
	if (NAV3 || (NAV4 && AppVer < 4.5)) return false;
	else return (document.cookie.indexOf("pulseinstall=success") != -1);
}
function FAILURE_COOKIE() 
{
	if (NAV3 || (NAV4 && AppVer < 4.5)) return false;
	else return (document.cookie.indexOf("pulseinstall=failed") != -1);
}

var PLAYER_INSTALL_COOKIE = 255;
var PLAYER_UPGRADED = 3;
var PLAYER_NEEDS_UPGRADE = 2;
var PLAYER_INSTALLED = 1;
var PLAYER_NOT_INSTALLED = 0;
var BROWSER_NEEDS_JAVA = -1;
var BROWSER_NEEDS_UPGRADE = -2;
var BROWSER_NOT_SUPPORTED = -3;
var NSMAC_ERROR = -4;
var PLAYER_3D_CHECK = -5;
var PLAYER_INSTALL_TIME = -6;

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(
"playerupgrade.html",
"playerinstall.html",
"browsernojava.html",
"browserupgrade.html",
"browserunsupp.html",
"nsmacproblem.html",
"player3dcheck.html",
"playerinsttime.html"
);

var ALERT_STRINGS = new Array();
ALERT_STRINGS[0] = "Cookies need to be enabled in your browser preferences to install the Pulse Player.";
ALERT_STRINGS[1] = "Cookies need to be enabled in your browser preferences to upgrade the Pulse Player.";
ALERT_STRINGS[2] = "Java must be enabled to AutoInstall the Pulse Player./n/n(Check your Netscape Preferences.)";
ALERT_STRINGS[3] = "SmartUpdate must be enabled to AutoInstall the Pulse Player./n/n(Check your Netscape Preferences.)";
ALERT_STRINGS[4] = "AutoInstall failed./n/nPlease try the other installation options,/nor visit www.pulse3d.com for more information.";

var ARRAY_LESS_THAN = -1;
var ARRAY_EQUAL = 0;
var ARRAY_GREATER_THAN = 1;

var PULSE_PLAYER_READY = false;
var INSTALL_TIMER;
var POPUP_WINDOW;
var PlayerFound = false;

if ((INSTALL_OPTIONS & IE4_FORCE) && IE4 && WIN32 && !SUCCESS_COOKIE() && !FAILURE_COOKIE())
{
	document.cookie = "pulseinstall=false";
}

if (((NAV3 || NAV4) && (WIN32 || MAC)) || (OPERA && WIN32))
{
	PlayerFound = (navigator.mimeTypes["application/x-pulse-player"] != null);
	if (PlayerFound) PlayerFound = navigator.mimeTypes["application/x-pulse-player"].enabledPlugin
}
else if (IE4 && WIN32 && (!(INSTALL_COOKIE() || INSTALL_OPTIONS & IE4_FORCE) || SUCCESS_COOKIE() || FAILURE_COOKIE()))
{
	document.writeln('<SCR' + 'IPT LANGUAGE="VBScript">');
	document.writeln('on error resume next');
	document.writeln('PlayerFound = IsObject(CreateObject("AxPulse.AxPulse.1"))');
	document.writeln('</SCR' + 'IPT>');
	
	if (PlayerFound)
	{
		document.writeln("<OBJECT ID='PulsePlayerVersion' CLASSID='CLSID:D6016EE7-A8FF-11D1-B37E-A4759ECD7909' WIDTH=0 HEIGHT=0></OBJECT>");
		PlayerFound = PulsePlayerVersion.Version;
	}
}
else if (IE3 && WIN32)
{
	PlayerFound = true;
}

function CheckPlugin()
{
	var temp, temp1, temp2;

	if (IE4 && WIN32 && (INSTALL_COOKIE() || (INSTALL_OPTIONS & IE4_FORCE)) && !SUCCESS_COOKIE() && !FAILURE_COOKIE())
	{
		document.cookie = "pulseinstall=installing";
		return PLAYER_INSTALL_COOKIE;
	}
	if (IE3 && WIN32)
	{
		if (!SUCCESS_COOKIE() && !FAILURE_COOKIE()) 
		{
			document.cookie = "pulseinstall=installing";
			return PLAYER_INSTALL_COOKIE;
		}
		else return PLAYER_INSTALLED;
	}
	else if (((NAV4 && (INSTALL_OPTIONS & NAV4_FORCE)) || (NAV3 && (INSTALL_OPTIONS & NAV3_FORCE))) && !SUCCESS_COOKIE() && !FAILURE_COOKIE() && !INSTALL_COOKIE() && !UPGRADE_COOKIE())
	{
		document.cookie = "pulseinstall=installing"
		if (!PlayerFound) 
		{
			setTimeout("PopInstall();", 500);
			return PLAYER_NOT_INSTALLED;
		}
		else if (PlayerFound)
		{
			temp = CompareVersions(ReturnPlayerVersion(),UPGRADE_VERSION);
			if(temp == ARRAY_LESS_THAN || temp == ARRAY_EQUAL)
				return PLAYER_NEEDS_UPGRADE;
			else
				return PLAYER_INSTALLED;
		}
	}
	else if (PlayerFound)
	{
		if (UPGRADE_COOKIE()) return PLAYER_UPGRADED;
		
		temp = CompareVersions(ReturnPlayerVersion(),UPGRADE_VERSION);
		if(temp == ARRAY_LESS_THAN || temp == ARRAY_EQUAL)
			return PLAYER_NEEDS_UPGRADE;
		else
			return PLAYER_INSTALLED;
	}
	else return PLAYER_NOT_INSTALLED;
}

function PopDialog(situation)
{
	if (situation == PLAYER_NEEDS_UPGRADE) situation = 0;
	else if (situation == PLAYER_NOT_INSTALLED) situation = 1;
	else if (situation == BROWSER_NEEDS_JAVA) situation = 2;
	else if (situation == BROWSER_NEEDS_UPGRADE) situation = 3;
	else if (situation == BROWSER_NOT_SUPPORTED) situation = 4;
	else if (situation == NSMAC_ERROR) situation = 5;
	else if (situation == PLAYER_3D_CHECK) situation = 6;
	else if (situation == PLAYER_INSTALL_TIME) situation = 7;

	if (LOCAL_INSTALL) tempPath = InstallPath();
	else tempPath = PLAYER_INSTALL_DIR;

	info_page = tempPath + CURRENT_LANGUAGE + INFO_PAGES[situation];

	POPUP_WINDOW = window.open(info_page,"installpopup","status=0,resizable=1,scrollbars=1,width=600,height=300");
}

function PopInstall()
{
	if (IE3 && WIN32)
	{
		document.cookie = "pulseinstall=installing"
		if (!INSTALL_COOKIE()) alert(ALERT_STRINGS[0]);
		else self.location.replace(self.location + "");
	}
	else if (IE4 && WIN32)
	{
		document.cookie = "pulseinstall=installing"
		if (!INSTALL_COOKIE()) alert(ALERT_STRINGS[0]);
		else document.location.reload();
	}
	else if (NAV4 && (WIN32 || MAC))
	{	
		if (POPUP_WINDOW && !POPUP_WINDOW.closed)
		{
			POPUP_WINDOW.close();
			return;
		}
		
		if (AppVer >= 4.5)
		{
			var enabledJava = navigator.javaEnabled();
			var enabledUpdate = netscape.softupdate.Trigger.UpdateEnabled();
			
			if (enabledJava && enabledUpdate)
			{
				document.cookie = "pulseinstall=installing"
				if (MAC)
				{
					if (!PlayerFound) ShowWindow(5);
					else 
					{
						document.cookie = "pulseinstall=upgrade;path=/";
						if (!UPGRADE_COOKIE())
						{
							alert(ALERT_STRINGS[1]);
							return;
						}
						ShowWindow(6);
					}
				}
				else if (WIN32)
				{
					if (!PlayerFound) ShowWindow(2);
					else 
					{
						document.cookie = "pulseinstall=upgrade;path=/";
						if (!UPGRADE_COOKIE())
						{
							alert(ALERT_STRINGS[1]);
							return;
						}
						ShowWindow(3);
					}
				}
				setTimeout("AutoInstallPulsePlayer()", 500);
			}
			else
			{
				if (MAC) ShowWindow(4);
				else if (WIN32) ShowWindow(1);
			}
		}
		else
		{
			if (MAC) ShowWindow(4);
			else if (WIN32) ShowWindow(1);
		}
	}
	else if (NAV3 && (WIN32 || MAC))
	{
		if (MAC) ShowWindow(4);
		else if (WIN32) ShowWindow(1);
	}
	else if (OPERA && WIN32)
	{
		ShowWindow(8);
	}
	else PopDialog(BROWSER_NOT_SUPPORTED);
}

function ReturnPlayerVersion()
{
	if (PlayerFound)
	{
		if (IE3 && WIN32) return VERSION_FAMILY;
		else if (IE4 && WIN32) return PlayerFound;
		else if (NAV3 || NAV4 || OPERA)
		{
			temp = navigator.plugins["PulsePlayer"].description;
			return temp.substring(temp.lastIndexOf("v.") + 2);
		}
	}
	else return "0.0.0.0";
}

function ShowWindow(which)
{
	if (LOCAL_INSTALL) tempPath = InstallPath();
	else tempPath = PLAYER_INSTALL_DIR;
	
	if (which == 2 || which == 3 || which == 5 || which == 6) 
		INSTALL_TIMER = setTimeout("InstallTimeout()", 1000);

	install_page = tempPath + CURRENT_LANGUAGE + INSTALL_PAGES[which];
	POPUP_WINDOW = window.open(install_page,"installpopup","status=0,resizable=1,scrollbars=1,width=600,height=300");
}

function InstallTimeout()
{
	// this is currently geared to NS3.0 and higher
	clearTimeout(INSTALL_TIMER);

	if (NAV4 && INSTALL_COOKIE() && navigator.mimeTypes["application/x-pulse-player"] != null)
	{
		if (navigator.mimeTypes["application/x-pulse-player"].enabledPlugin) document.cookie = "pulseinstall=success";
	} 

	if (SUCCESS_COOKIE())
	{
		if (POPUP_WINDOW && !POPUP_WINDOW.closed) POPUP_WINDOW.close();
		
		if (IE3) self.location.replace(self.location + "");
		else self.location.reload();
	}
	else if (POPUP_WINDOW && POPUP_WINDOW.closed) 
	{
		if (!UPGRADE_COOKIE())
		{
			if (!IE4 && !IE3) document.cookie = "pulseinstall=failed";
			else document.cookie = "pulseinstall=success";
		}
		if (IE3) self.location.replace(self.location + "");
		else self.location.reload();
	}
	else INSTALL_TIMER = setTimeout("InstallTimeout()", 1000);
}

function AutoInstallPulsePlayer()
{
	if (LOCAL_INSTALL)
		JARCHIVE_PATH = InstallPath() + CURRENT_LANGUAGE;
	else
		JARCHIVE_PATH = PLAYER_INSTALL_DIR + CURRENT_LANGUAGE;

	if (NAV4 && (WIN32 || MAC))
	{
		var JARCHIVE_NAME;
		var temp1, temp2, hasCurrentVersion;

		if (MAC) JARCHIVE_NAME = MAC_JAR_FILE;
		else JARCHIVE_NAME = WIN_JAR_FILE;
			
		if (!navigator.javaEnabled()) alert(ALERT_STRINGS[2]);
		else
		{
			installTrigger = netscape.softupdate.Trigger;

			if (!(installTrigger.UpdateEnabled())) alert(ALERT_STRINGS[3]);
			else if (!(installTrigger.StartSoftwareUpdate(JARCHIVE_PATH + JARCHIVE_NAME, installTrigger.DEFAULT_MODE))) alert(ALERT_STRINGS[4]);
		}
	}
}

function CheckPlayerVersion()
{
	if ((IE3 || IE4) && MAC)
		return BROWSER_NOT_SUPPORTED;
	else if (IE4 && WIN32)
		return CheckPlugin();
	else if (IE3 && WIN32 && AppVer >= 3.02)
		return CheckPlugin();
	else if (IE3 && WIN32 && AppVer < 3.02)
		return BROWSER_NEEDS_UPGRADE;
	else if (NAV3 && (WIN32 || MAC) && AppVer < 3.04)
		return BROWSER_NEEDS_UPGRADE;
	else if ((NAV3 || NAV4) && (!navigator.javaEnabled()))
		return BROWSER_NEEDS_JAVA;
	else if ((NAV3 || NAV4) && (WIN32 || MAC))
		return CheckPlugin();
	else if (OPERA && WIN32)
		return CheckPlugin();
	else
		return BROWSER_NOT_SUPPORTED;
}

function WritePlayerTag(pwcURL, ctrlWidth, ctrlHeight, frameRate, coreFlags, bHardware, backColor, ctrlName, commandParam)
{
	var temp;

	if (!ctrlName) ctrlName = "Ctrl";
	if (!ctrlWidth) ctrlWidth = 0;
	if (!ctrlHeight) ctrlHeight = 0;
	if (!frameRate) frameRate = 30;
	if (!backColor) backColor = document.bgColor;
	if (backColor.indexOf("#") == 0) backColor = backColor.substring(1);
	else if (backColor.indexOf("0x") == 0) backColor = backColor.substring(2);

	if (((NAV3 || NAV4) && (MAC || WIN32)) || (OPERA && WIN32))
	{
		temp = "<EMBED NAME='"+ctrlName+"' TYPE='application/x-pulse-player' MAYSCRIPT" 
		temp += " SRC='"+pwcURL+"'"
		temp += " HEIGHT="+ctrlHeight+" WIDTH="+ctrlWidth+" FRAMERATE="+frameRate;
		temp += " BGCOLOR=0x" + backColor;
		if (bHardware) temp += " HARDWARE=1";
		if (commandParam) temp += " COMMAND='" + commandParam + "'";
		if (coreFlags & 2) temp += " PLUGINSPAGE='"+ PLAYER_INSTALL_DIR +"'";
		if (coreFlags & 2) temp += " PLUGINURL='"+ PLAYER_INSTALL_DIR +"'"
		if (coreFlags & 4) temp += " COREVERSION='"+ CURRENT_VERSION +"'";
		temp += "></EMBED>";
		document.write(temp);
	}
	else if ((IE3 || IE4) && WIN32)
	{
		CODEBASE_VALUE = (LOCAL_INSTALL ? InstallPath() : PLAYER_INSTALL_DIR);
		// VERSION = (IE4 ? CURRENT_VERSION_COMMA : VERSION_FAMILY_COMMA);
		
		CODEBASE_VALUE += CURRENT_LANGUAGE + WIN_CAB_FILE + "#version=" + CURRENT_VERSION_COMMA;
		
		document.writeln("<SCR" + "IPT LANGUAGE='JavaScript' FOR='" + ctrlName +"' EVENT='OnEvent(theEvent)'>");
		document.writeln(ctrlName + "_onEvent(theEvent);");
		document.writeln("</SCR" + "IPT>");

		temp = "<OBJECT NAME='"+ctrlName+"' CLASSID='CLSID:D6016EE7-A8FF-11D1-B37E-A4759ECD7909' CODETYPE=application/x-pulse-plugin HEIGHT="+ctrlHeight+" WIDTH="+ctrlWidth;
		if (coreFlags & 1 || (IE4 && INSTALL_OPTIONS & IE4_FORCE) || INSTALL_COOKIE() || IE3) temp += " CODEBASE='"+CODEBASE_VALUE+"'";
		temp += ">";
		document.writeln(temp);
		document.writeln("<PARAM NAME='URL' VALUE='"+pwcURL+"'>");
		document.writeln("<PARAM NAME='FrameRate' VALUE='"+frameRate+"'>");
		if (bHardware) document.writeln("<PARAM NAME='Hardware' VALUE='1'>");
		if (commandParam) document.writeln("<PARAM NAME='Command' VALUE='" + commandParam + "'>");
		if (coreFlags & 4) document.writeln("<PARAM NAME='CoreVersion' VALUE='" + CURRENT_VERSION + "'>");
		document.writeln("</OBJECT>");
	}
	PULSE_PLAYER_READY = PlayerFound;
}

function WriteImageTag(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);
}

function CompareVersions(version1, version2)
{
	verArray1 = new Array(0,0,0,0);
	verArray2 = new Array(0,0,0,0);

	if (version1)
	{
		verArray1[0] = parseFloat(version1.substring(0, version1.indexOf(".")));
		version1 = version1.substring(version1.indexOf(".") + 1);
		verArray1[1] = parseFloat(version1.substring(0, version1.indexOf(".")));
		version1 = version1.substring(version1.indexOf(".") + 1);
		verArray1[2] = parseFloat(version1.substring(0, version1.indexOf(".")));
		version1 = version1.substring(version1.indexOf(".") + 1);
		verArray1[3] = parseFloat(version1.substring(0));
	}
	
	if (version2)
	{
		verArray2[0] = parseFloat(version2.substring(0, version2.indexOf(".")));
		version2 = version2.substring(version2.indexOf(".") + 1);
		verArray2[1] = parseFloat(version2.substring(0, version2.indexOf(".")));
		version2 = version2.substring(version2.indexOf(".") + 1);
		verArray2[2] = parseFloat(version2.substring(0, version2.indexOf(".")));
		version2 = version2.substring(version2.indexOf(".") + 1);
		verArray2[3] = parseFloat(version2.substring(0));
	}
		
	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 PagePath()
{
	if (IE3) temp = document.location + "";
	else temp = document.URL;

	if (temp.indexOf("\\") != -1) temp = temp.substring(0, temp.lastIndexOf("\\") + 1);
	else if (temp.indexOf("/") != -1) temp = temp.substring(0, temp.lastIndexOf("/") + 1);

	return temp;
}

function InstallPath()
{
	temp = PagePath();

	if (temp.lastIndexOf("/install/") == temp.length - 9) return temp;
	else if ((temp.indexOf("file:") == 0) && (temp.lastIndexOf("/INSTALL/") == temp.length - 9)) return temp;
	else return temp + "install/";
}

function SayStatus(what)
{
	self.status = what;
}

// PIS by Calvin Rien - Smarts like a sack of quarters.
