//This is NETSCAPE SPECIFIC

// only for debugging
var debug = false;


// Pops an  window in debug mode
function cAlert(message) 
{
   if(debug)
      alert(message);
}

			/* simple browser check */
function IsBrowser()
{
	var AppString = navigator.appName;
	var isNS = (AppString == "Netscape" ); 
	if (isNS )
	{
		var NSVer = parseInt(navigator.appVersion);
		if (NSVer >= 4)
		{
			result = 'n4';
		}
		else
		{
			result = 'n3';
		}
	}
	else
	if (AppString.indexOf('Explorer') != -1) 
	{
		result = 'ie';
	}
			
	return result;
}
			/* if mime type for client exist */
function IsClientInstalled()
{
	var mimetype = navigator.mimeTypes["application/x-print-everything-content"];
	if (mimetype )
	{
		result = 'yes';
	}
	else
	{
		result = 'no';
	}

	return result;
}


			/* detect plugin client if installed using plugin Wizard */
function is_plugin_client_old( versionMaj, versionMin, versionRel, versionBld )
{
	result = 'none';
	if (navigator.appName.indexOf("Netscape") >= 0)
    {
		if (navigator.plugins)
        {
			var     havePlugin        = false;
			var     haveCurrentVersion= false;

			//All other versions of Navigator
			for (i = 0; i < navigator.plugins.length; i++)
			{
				   if (navigator.plugins[i].name.indexOf("ExpressIt.com Graphics Display Plugin") >= 0 ||
					   navigator.plugins[i].name.indexOf("Graphics Display Plugin") >= 0)
					{
							var desc = navigator.plugins[i].description;
							var     str;
							var idx;
														
							havePlugin = true;
							
							idx = desc.lastIndexOf("v,");
							if (idx < 0)
							{
							   cAlert("No Version Detected");
							   continue; // not recent enough
							}

							//Retrieve the version string
							desc = desc.substring(idx + 2, desc.length);

							//Parse the version string
							//Major version
							idx = desc.indexOf(",");
							if (idx < 0)
							{
								cAlert("Major Version Missing");
									continue;
							}

							//Minor product version
							str = desc.substring(0, idx);
							if (str < versionMaj )
							{
								cAlert("Older Version. Major version number is off.");
									continue;
							}
							else if (str > versionMaj)
							{
								cAlert("Newer Version Found . Major version number is off.");

								haveCurrentVersion = true;
								result = 'no';
								break;
							}

							//Minor product version
							desc = desc.substring(idx + 1, desc.length);
							idx = desc.indexOf(",");
							if (idx < 0)
							{
								cAlert("Minor Version Missing");
									continue;
							}

							str = desc.substring(0, idx);
							if (str < versionMin)
							{
								cAlert("Older Version. Minor version number is off.");
									continue;
							}
							else if (str > versionMin)
							{
								cAlert("Newer Version Found . Minor version number is off.");

								haveCurrentVersion = true;
								result = 'no';
								break;
							}

							//Major build version
							desc = desc.substring(idx + 1, desc.length);
							idx = desc.indexOf(",");
							if (idx < 0)
							{
								cAlert("Sub-Minor Version Missing");
									continue;
							}

							str = desc.substring(0, idx);
							if (str < versionRel )
							{
								cAlert("Older Version. Sub-Minor version number is off.");
									continue;
							}
							else if (str > versionRel)
							{
								cAlert("Newer Version Found . Sub-Minor version number is off.");

								haveCurrentVersion = true;
								result = 'no';
								break;
							}

							//Minor build version
							desc = desc.substring(idx + 1, desc.length);
							if (desc >= 0)
							{
								cAlert(desc);
								
								if (desc < versionBld)
								{
									cAlert("Older Version. Build number is off.");
										continue;
								}
								else if (desc >= versionBld)
								{								
									haveCurrentVersion = true;
									result = 'no';
									break;
								}
							}
							else
							{
								cAlert("Build Number Missing");
									continue;
							}

					}
			} // end for loop

			if (!haveCurrentVersion)
					result = 'yes';
         }	
         else
				result = 'none';
     }	
	 return result;

}	// function ends


			/*  detect plugin client version */
function IsClientOld(versionMaj, versionMin, versionRel, versionBld)
{
	result = 'none';
	if (IsClientInstalled() == 'yes' )
	{

		// bVersion -> version check thru File description property of the plug-in
		var bVersion = is_plugin_client_old(versionMaj, versionMin, versionRel, versionBld);
		cAlert(bVersion);

		if (IsBrowser() == 'n4' )
		{
			cAlert("Using Netscape 4");
			//--detect plugin client version if installed using JIM

			var trigger = netscape.softupdate.Trigger;
			var new_install = new netscape.softupdate.VersionInfo(versionMaj, versionMin, versionRel, versionBld);

			//installed_version -> version maintained by Netscape in client version registry updated only thru JIM

			if ( bVersion == 'yes' )
				result = 'yes';
			else
				result = 'no';
		}
		else if (IsBrowser() == 'n3' )
		{
			//--detect plugin client version if installed using other some other method 

			if ( bVersion == 'yes' )
				result = 'yes';
			else
				result = 'no';
		}
	}
	else
		result = 'none';

	return result;
}

		/* install most recent client */
function InstallClient(sInstallPath)
{
		// chk for platfoem support
		if (navigator.platform == "Win32")
		{
			cAlert("Win32 Detected");

			// chk if java is enabled
			if (navigator.javaEnabled())
			{
				cAlert("Java Enabled");
						
					var trigger = netscape.softupdate.Trigger;
												
					// chk if autoinstall enabled
					if ( trigger.UpdateEnabled() )
					{
						cAlert("AutoInstall enabled");

						// if component has'nt been registered int the Client Registry or registered with null version or
						// if plugin registered with mime-type but No JIM information, so it was installed some other way.
						// so download unconditionally
						
						var bret2 = trigger.StartSoftwareUpdate(sInstallPath,trigger.DEFAULT_MODE);
						cAlert("bret2= " + bret2);
								
					}	// end jim enable chk
						else
							alert("You must enable AutoInstall (see Advanced preferences) to initiate perform this download.");						
			}
			else
				alert("You must enable Java (see Advanced preferences) to perform this download.");
		}	
		else
			alert("This automated plug-in install only works on Windows95/NT");
					
						
}	// end download function

