// A continuación viene la detección estándard de JavaScript que usa el array navigator.plugins. Metemos el detector en una función para que precargue antes de que se corra.

function detectFlash() {  
  // Si el navigator.plugins existe...
  if (navigator.plugins) {
    // ... entonces checa para flash 2 o flash 3+.
    if (navigator.plugins["Shockwave Flash 2.0"]
        || navigator.plugins["Shockwave Flash"]) {

      // Algunas versiones de Flash fueron encontradas. Es tiempo de encontrar cuáles.
      
      // Pone referencias convenientes para Flash 2 y la descripción del plugin.
      var isVersion2 = navigator.plugins["Shockwave Flash 2.0"] ? " 2.0" : "";
      var flashDescription = navigator.plugins["Shockwave Flash" + isVersion2].description;

      // DEBUGGING: Quitar comentarios a las siguientes líneas para ver la descripción actual.
      // alert("Flash plugin description: " + flashDescription);
      
      // Una descripción de plugin se ve así: Shockwave Flash 4.0 r5
      // Podemos obtener la versión mayor tomando los caracteres antes del punto. Nota que no nos preocupamos por la detección de versiones menores.
      // Realiza esto en la película con $version o getVersion().
      var flashVersion = parseInt(flashDescription.substring(16));

      // Encontramos la versión, ahora debemos poner los flags de versiones apropiados. Asegurate de usar >= en la versión mayor para prevenir que los usuarios con versiones futuras puedan accesar al sitio.
      flash2Installed = flashVersion == 2;    
      flash3Installed = flashVersion == 3;
      flash4Installed = flashVersion == 4;
      flash5Installed = flashVersion == 5;
      flash6Installed = flashVersion == 6;
      flash7Installed = flashVersion == 7;
      flash8Installed = flashVersion == 8;
      flash9Installed = flashVersion >= 9;
    }
  }
  
  // Loop a todas las versiones que estamos checando y asignar a actualVersion versión más alta que detectamos.
  for (var i = 2; i <= maxVersion; i++) {  
    if (eval("flash" + i + "Installed") == true) actualVersion = i;
  }
  
  // Si estamos en msntv (antes webtv), la versión soportada es 4 (a partir del 1 de Enero del 2004). No vamos a molestarnos sniffiando variedades de msntv.
  if(navigator.userAgent.indexOf("WebTV") != -1) actualVersion = 4;  
  
  // DEBUGGING: Quitar comentarios a las siguientes líneas para ver la versión de flash.
  // alert("version detected: " + actualVersion);


  // Terminamos de obtener las versiones en todos los browsers que permiten detección. Es tiempo de tomar las medidas apropiadas.

  // Si el usuario tiene una versión suficientemente nueva ...
  if (actualVersion >= requiredVersion) {
    // ... entonces lo redirigiremos a la página flash a menos que nos digan que no redirigiramos.
    if (useRedirect) {
      // Necesita javascript1.1 para hacer location.replace
      if(jsVersion > 1.0) {
        // Se puede usar use replace(). Bien ... no necesitaremos romper el boton atras.
        window.location.replace(flashPage);  
      } else {
        // La versión de JavaScript es demasiada vieja, entonces usa .location para cargar la página flash.
        window.location = flashPage;
      }
    }
    
    // Si llegamos aqui, no redirigimos. Entonces debemos escribir las tags de object/embed después.
    hasRightVersion = true;                
  } else {  
    // El usuario no tiene una versión suficientemente nueva. Si la opción de redirigir esta en "true" entonces carga la página alterna apropiada.
    if (useRedirect) {
      // Haz lo mismo .replace() llámalo sólo si js1.1+ está disponible.
      if(jsVersion > 1.0) {
        window.location.replace((actualVersion >= 2) ? upgradePage : noFlashPage);
      } else {
        window.location = (actualVersion >= 2) ? upgradePage : noFlashPage;
      }
    }
  }
}

detectFlash();  // Llama a nuestro detector ahora que está seguramente está cargado. 