DEBUG = false;

// Versions and file location and name strings.
// This version *MUST* match the VERSION variable in 
// WindowsPluginInstall.js and LinuxPluginInstall.js 
// for the jar file for updating to work.
VERSION_MAJ=2;
VERSION_MIN=1;
VERSION_REV=2;
VERSION_BLD=2047;

// How Netscape recognizes the plugin.  See navigotor object for more details.
MIMETYPE = "application/x-goglobal-xp-plugin";

// THis *MUST* match the SU_REGISTRYPATH in WindowsPluginInstalld.js, 
// WindowsPluginInstall.js and LinuxPluginInstall.js in the deployment directory.
PLUGIN_DIRECTORY = "Graphon";

// Jar file containing plugin and other files required for the plugin.
// This file is different for Windows and Linux, and between Netscape 6
// and previous versions of Netscape.  



var browser = new whatPlatform();
if (browser.win)
{
    if (browser.ns6up)
    {
        JARFILE = "goglobal-ns6plugin.windows.xpi";
    }
    else

    {
        JARFILE = "goglobal-nsplugin.windows.jar";
    }
}
else 
{
    if (browser.ns6up)
    {
        JARFILE = "goglobal-ns6plugin.linux.xpi";
    }
    else
    {
        JARFILE = "goglobal-nsplugin.linux.jar";
    }
}

function DebugMsg( message )
{
    if ( DEBUG )
    {
        alert( message );
    }
}

function AlreadyInstalled_SmartUpdate()
{
    var myMimeType = navigator.mimeTypes[MIMETYPE];
    
    if ( myMimeType )
    {     
        registry_vi = netscape.softupdate.Trigger.GetVersionInfo(PLUGIN_DIRECTORY);
        DebugMsg("Current version is: " + registry_vi );

        if (registry_vi != null)
        {
            vi = new netscape.softupdate.VersionInfo(VERSION_MAJ, VERSION_MIN, VERSION_REV, VERSION_BLD);
            DebugMsg("New version is: " + vi );
            if (vi.compareTo(registry_vi) <= 0)
            {
                DebugMsg("Version is no newer than previously installed version.");
                return true;
            }
            else
            {       
                DebugMsg("Version is newer than installed; upgrade is in order.");
                return false;
            }
        }
    }   
    else
    {
       DebugMsg("GraphOn GO-Global:GGXP Plug-in is not already installed");
       return false;
    }
}

function downloadNow_SmartUpdate() 
{ 

    if ( navigator.javaEnabled() ) 
    {
        trigger = netscape.softupdate.Trigger;

        if ( trigger.UpdateEnabled() ) 
        {
            // removed navigator.platform == win32 check.  Assume no 
            // changes needed for /'s and file paths so far.
            // Currently untested under linux/unix.

            vi = new netscape.softupdate.VersionInfo(VERSION_MAJ, VERSION_MIN, VERSION_REV, VERSION_BLD);
            this_url = new String(location.href);
            backslash = this_url.lastIndexOf("/");
            this_urls_path = this_url.substring(0, backslash+1);    
            jarUrl = this_urls_path.concat(JARFILE);

            // Using this method instead of ConditionalSoftwareUpdate is better
            // because if an older version was removed by deleting the dll in the
            // plugin directory this conditional update will not work. It will still
            // think that the plugin is installed.
            trigger.StartSoftwareUpdate(jarUrl,trigger.DEFAULT_MODE);

//            trigger.ConditionalSoftwareUpdate( jarUrl,
//                                                PLUGIN_DIRECTORY,
//                                                vi, 
//                                                trigger.DEFAULT_MODE);      
        }
        else
        {
            alert("Enable SmartUpdate before running this script.");
        }
    }
    else 
    {

        alert("Enable Java before running this script.");
    }
}

function pluginUpdateNeeded(existing_version, new_version)
{
    var existing_tokens = existing_version.split(".");
    var new_tokens = new_version.split(".");
	
	if( existing_tokens.length == 4 && new_tokens.length == 4 )
	{
		var existing_val = new Number( existing_tokens[0] );
		var new_val = new Number( new_tokens[0] );
		if (existing_val < new_val)
		{
			DebugMsg("Version is newer  in major version.");
			return true;
		}

		existing_val = new Number( existing_tokens[1] );
		new_val = new Number( new_tokens[1] );
		if (existing_val < new_val)
		{
			DebugMsg("Version is newer  in minor version.");
			return true;
		}

		existing_val = new Number( existing_tokens[2] );
		new_val = new Number( new_tokens[2] );
		if (existing_val < new_val)
		{
			DebugMsg("Version is newer  in revision version.");
			return true;
		}

		existing_val = new Number( existing_tokens[3] );
		new_val = new Number( new_tokens[3] );
		if (existing_val < new_val)
		{
			DebugMsg("Version is newer in build version.");
			return true;
		}
	}
	else
	{
        DebugMsg("Version is not 4 numbers.");
	}

    
    return false;
   
}

function AlreadyInstalled_XPInstall()
{
    var myMimeType = navigator.mimeTypes[MIMETYPE];
    if ( myMimeType )
    {     
        existing_vi = InstallTrigger.getVersion(PLUGIN_DIRECTORY);
        DebugMsg("Current version is: " + existing_vi);
        if (existing_vi != null)
        {
            existing_vi_string = new String(existing_vi);
            new_vi_string = new String(VERSION_MAJ + "." + VERSION_MIN + "." + VERSION_REV + "." + VERSION_BLD);
            DebugMsg("New version is: " + new_vi_string );

            if ( pluginUpdateNeeded (existing_vi_string, new_vi_string) )
            {
                DebugMsg("Version is newer than installed; upgrade is in order.");
                return false;
            }
            else
            {       
                DebugMsg("Version is no newer than previously installed version.");
                return true;
            }
        }
    }   
    else
    {
       DebugMsg("GraphOn GO-Global:GGXP Plug-in is not already installed");
       return false;
    }
}

function xpinstallCallback(url, status)
{
    if ( DEBUG )
    {
        if (status == 0)
            msg = "XPInstall Test:   PASSED\n";
        else
            msg = "XPInstall Test:   FAILED\n";

        alert(msg);
    }
}


function downloadNow_XPInstall() 
{ 

    if ( navigator.javaEnabled() ) 
    {
        if ( InstallTrigger.enabled() ) 
        {
            
            this_url = new String(location.href);
            backslash = this_url.lastIndexOf("/");
            this_urls_path = this_url.substring(0, backslash+1);    
            jarUrl = this_urls_path.concat(JARFILE);
            
            xpi = new Object();
            xpi["GraphOn GO-Global"] = jarUrl;
            InstallTrigger.install(xpi, xpinstallCallback);
           
        }
        else
        {
            alert("Enable Software Installation from Preferences to install this plug-in.");
        }
    }
    else 
    {

        alert("Enable Java before running this script.");
    }
}

function AlreadyInstalled ( )
{
        if (browser.ns6up)
        {
            return AlreadyInstalled_XPInstall();
        }
        else
        {
            return AlreadyInstalled_SmartUpdate();
        }
}

function downloadNow ( )
{
        if (browser.ns6up)
        {
            return downloadNow_XPInstall();
        }
        else
        {
            return downloadNow_SmartUpdate();   
        }
}


