// Must have Java enabled
function checkJava() {
   javaOn = navigator.javaEnabled() ;
   if (javaOn == false) {
      alert("You do not have java turned on, please enable Java, restart, and try again") ;
      return false ;
   }
   return true ;
} 

// SmartUpdate must be turned on.
function checkASD() {
   SUEnabled = netscape.softupdate.Trigger.UpdateEnabled() ;
   if (SUEnabled == false) {
      alert("AutoInstall is not turned on in Advanced Preferences, please enable it, restart, and try again") ;
      return false ;
   }
   return true ;
} 

// Conditionally displays a message only when debugging.
function dbgIfMsg(condition, message) {
   if(debugOutput && condition)
      java.lang.System.out.println(message) ;
}

// Displays a message only when debugging.
function dbgMsg(message) {
   if(debugOutput)
      java.lang.System.out.println(message) ;
}

// Pops an alert window only when NOT installing in silent mode.
function cAlert(message) {
   dbgMsg("In cAlert: " + message);
   if(!silentValue)
      alert(message) ;
}

// Checks OS and version information
function checkSystemEnvironment() {

   if(debugOutput) {
      registry_vi = netscape.softupdate.Trigger.GetVersionInfo(packageName) ;
      dbgIfMsg( (registry_vi == null ), WarningMsg1) ;
      if (registry_vi != null) {
         dbgIfMsg( (vi.compareTo(registry_vi) <= 0), WarningMsg2) ;
      }
   }

   //Check version
   dbgMsg("appVersion: " + parseFloat(navigator.appVersion)) ;
   if(RequiredVersion != "")
   {
     if(parseFloat(navigator.appVersion) < parseFloat(RequiredVersion))
       return -22;
   }

   //Check for platform specific install
   dbgMsg("Platform: " + navigator.platform) ;
   if(PlatformSpecific) {
      if(TgtPlatform == "UNIX") {
         if( (navigator.platform.indexOf("Win") == 0 ) || (navigator.platform.indexOf("Mac") == 0) ) {
            return -21 ; // wrong OS
         }
      }
      else
      if(navigator.platform != TgtPlatform) {
         return -21 ; // wrong OS
      }
   }

   return 0 ;
}

// A wrapper for calling the AddSubcomponent() function.
function newSub(fName, jarFilePath, tgtVI, tgtFolder, tgtFilePath, forceFlag) {
   dbgMsg(Msg3 + jarFilePath) ;
   var err = su.AddSubcomponent(fName, tgtVI, jarFilePath, tgtFolder, tgtFilePath, forceFlag) ;
   dbgIfMsg( (err != 0), ErrorMsg2 + fName + ": " + err) ;
   if(err != 0) {
      newSubFailure = true ;
   }
}

// This prepares the specific directories/files to be installed
function setupFiles(su) {
   var err = 0 ;

   if (su == null) {
      dbgMsg(ErrorMsg3 + err) ;
      return -1 ;
   }

   err = su.StartInstall(packageName,
                         vi,
                         netscape.softupdate.SoftwareUpdate.FULL_INSTALL);
   if (err !=0) {
      dbgMsg(ErrorMsg4 + err) ;
      return err ;
   }

   if (navigator.platform == "Win32") {
      if (navigator.userAgent.indexOf("Win9") > -1)
         var WinDesktopSubdir = "Desktop";
      else
         var WinDesktopSubdir = "Profiles/All Users/Desktop";
   }
