//This script detects the following:
//Flash
//Windows Media Player
//Java
//Shockwave
//RealPlayer
//QuickTime
//Acrobat Reader
//SVG Viewer


var agt=navigator.userAgent.toLowerCase();
var ie  = (agt.indexOf("msie") != -1);
var ns  = (navigator.appName.indexOf("Netscape") != -1);
var win = ((agt.indexOf("win")!=-1) || (agt.indexOf("32bit")!=-1));
var mac = (agt.indexOf("mac")!=-1);

if (ie && win) {	pluginlist = detectIE("ShockwaveFlash.ShockwaveFlash.4","Shockwave Flash") + detectIE("QuickTimeCheckObject.QuickTimeCheck.1","QuickTime") + detectIE("MediaPlayer.MediaPlayer.1","Windows Media Player"); }
if (ns || !win) {
		nse = ""; for (var i=0;i<navigator.mimeTypes.length;i++) nse += navigator.mimeTypes[i].type.toLowerCase();
		pluginlist = detectNS("application/x-shockwave-flash","Shockwave Flash",4) + detectNS("audio/x-pn-realaudio-plugin","RealPlayer") + detectNS("video/quicktime","QuickTime") + detectNS("application/x-mplayer2","Windows Media Player");
}

function detectIE(ClassID,name) { result = false; document.write('<SCRIPT LANGUAGE=VBScript>\n on error resume next \n result = IsObject(CreateObject("' + ClassID + '"))</SCRIPT>\n'); if (result) return name+','; else return ''; }
function detectNS(ClassID,name,version) {
	n = "";
	//Comprueba que el 'ClassID' que le paso esta presente entre todos los plugins (variable nse)
	if (nse.indexOf(ClassID) != -1){ 
		
		if (version){ //Compruebo si se ha introducido el parametro para testear la version del plugin
			//Asigno a la variable 'descripcion' el texto de descripcion completo del plugin correspondiente
			descripcion=new String(navigator.mimeTypes[ClassID].enabledPlugin.description)
			
			tmp_version=0
			//Cadena String de los caracteres numericos validos para las versiones
			ValidChars = "0123456789"

			for(i=0;i<descripcion.length;i++){
				//Cojo uno a uno los caracteres de la variable 'descripcion' y los comparo con la cadena de la variable 'ValidChars' para quedarme con el primer valor numerico de la cadena descripcion
				if(ValidChars.indexOf(descripcion.charAt(i))!=-1){
					tmp_version=descripcion.charAt(i)
					i=descripcion.length
				}
			}
			
			//Paso el valor capturado de formato texto a formato numerico para hacer la comparacion
			tmp_version=parseInt(tmp_version)

			//Comparo que el numerico capturado 'tmp_version' sea igual o mayor que el valor 'version'			
			if (tmp_version>=version){
					//Devuelvo la cadena contenida en 'name' si el el plugin y su version con correctas
					n = name+","; 
					return n; 
			}
		}
		else{
			if (navigator.mimeTypes[ClassID].enabledPlugin != null) {
				n = name+","; 
				return n; 
			}
		}
	}
}

pluginlist += navigator.javaEnabled() ? "Java," : "";
if (pluginlist.length > 0) pluginlist = pluginlist.substring(0,pluginlist.length-1);
