// Title: SuperPlayer js script
// Version: 0.0.2
// Last Mod: 14 Nov 2005
// Author: Andrei K. <me at andrei DOT homeip DOT net>
// Notes: Authorization is requires to use this script on your web site.
// Copyright (c) 2005 by Andrei K.

var wmmedia=new Object();
var rmmedia=new Object();
var qtmedia=new Object();

wmmedia.installed=false;
wmmedia.checked=0;
wmmedia.name="Windows Media";
wmmedia.version='0.0';
wmmedia.v7=0;
wmmedia.wmClsidStr='6BF52A52-394A-11d3-B153-00C04F79FAA6';
wmmedia.redirect = "";
wmmedia.getUrl="get_plugin.php?ptype=w";
wmmedia.msgImg="images/noWM.png";

rmmedia.installed=false;
rmmedia.checked=0;
rmmedia.name="Real Video";
rmmedia.version='0.0';
rmmedia.redirect = "";
rmmedia.getUrl="get_plugin.php?ptype=r";
rmmedia.msgImg="images/noRM.png";

qtmedia.installed=false;
qtmedia.checked=0;
qtmedia.name="QuickTime";
qtmedia.version='0.0';
qtmedia.redirect = "";
qtmedia.getUrl="get_plugin.php?ptype=q";
qtmedia.msgImg="images/noQT.png";


var caughtErr;

function genPlgTble(objName, width, height)
{
pName=objName.name;
pUrl=objName.getUrl;
str='<div class="missing_plugin" style="height:'+height+'px; width:'+width+'px;"><br><br><table width="98%" border="0" align="center" cellpadding="0" cellspacing="0">'+
'<tr align="center">'+
"<td>Je n'arrive pas &agrave; trouver le plugin "+pName+'&nbsp;!</td>'+
'</tr><tr align="center">'+
'<td>Installez-le &agrave; partir de <a href="'+pUrl+'">ce lien</a></td>'+
'</tr></table></div>';
return str;
}

function chkMimeType(mtype) {
 /*alert("mtype "+mtype);*/
 return  navigator.mimeTypes 
              && navigator.mimeTypes[mtype]
              && navigator.mimeTypes[mtype].enabledPlugin;
}

function getPlugIn() {  
  plugInsCollection = navigator.plugins;
  for (i=0; i<plugInsCollection.length; i++) {
    plugInDescription = " " + plugInsCollection[i].description;
    plugInName = " " + plugInsCollection[i].name;
    for (j=0; j<arguments.length; j++) {
      /*alert("need " + arguments[0] + " " + plugInName);*/
      if (plugInDescription.indexOf(" " + arguments[j])!=-1 || plugInName.indexOf(" " + arguments[j])!=-1) {        
	return true;
      }
    }
  }
  return false;
}

// Check for GeckoActiveXObject and co-inciding Plug-In
var gkoaxwma=false;
if (navigator.plugins && navigator.plugins.length)
{ for (x=0; x<navigator.plugins.length; x++)
  { if (navigator.plugins[x].name.indexOf('ActiveX') != -1 && window.GeckoActiveXObject)
    { gkoaxwma=true; break; }
  }
}

// Create an ActiveX/GeckoActiveX constructor
function OBJAXO(id) {
  /*alert("OBJAXO");*/
  var control = null;
  try {
     if (window.ActiveXObject && navigator.userAgent.indexOf('Win') != -1) control = new ActiveXObject(id);
     else if (gkoaxwma) control = new GeckoActiveXObject(id);
  }
  catch (caughtErr) {}
  return control;
}

wmmedia.detect = function (is_win) {

  if(this.checked) return this.installed;
  this.installed=false;
  this.checked=1;

  if(!is_win)
  {
    this.installed=chkMimeType("application/x-mplayer2");
  }
  else
  {
    if (window.ActiveXObject || gkoaxwma)
    {
      wmObj=0;
      try
      {
	wmObj=new OBJAXO('WMPlayer.OCX.7');
      }
      catch (caughtErr) {}
      if(!wmObj)
      {
	try
	{
	  wmObj=new OBJAXO('MediaPlayer.MediaPlayer.1');
	}
	catch (caughtErr) {}
      }
      if(!wmObj)
      {
	try
	{
	  wmObj=new OBJAXO('WMPlayer.OCX');
	  this.wmClsidStr='22D6F312-B0F6-11D0-94AB-0080C74C7E95';
	}
	catch (caughtErr) {}
      }

      try
      {
	if(wmObj)
	{
	   this.installed=true;

	   // A wierd bug in the Gecko ActiveX plug-in will return
	   // undefined at the first call, but the correct value on the second.
	   // This "fix" doesnt seem to hurt IE at all.
	   parseFloat(wmObj.versionInfo);
	   this.version=parseFloat(wmObj.versionInfo);
	   if (this.version.toString().length == 1) this.version+='.0';
	   this.v7=(this.installed && parseInt(this.version) >= 7) ? true:false;
	}
      }
      catch (caughtErr) {}
    }
    else if (navigator.plugins && navigator.plugins.length)
    {
       this.installed=getPlugIn('Windows Media');
    }
  }
  return this.installed;
}

qtmedia.detect = function (is_win) {

  if(this.checked) return this.installed;
  this.installed=false;
  this.checked=1;
  
  if(!is_win)
  {
    this.installed=chkMimeType("video/quicktime");
  }
  else
  {
    if(isIE7())
    {
      //ie7 fucked up qt detection
      this.installed=1;
      this.version=6;
      return this.installed;
    }
    
    if (window.ActiveXObject || gkoaxwma)
    {
      try
      {
	qtObj = new OBJAXO("QuickTimeCheckObject.QuickTimeCheck.1");
	if (qtObj)
	{
	  this.installed=qtObj.IsQuickTimeAvailable(0);
	  this.version=parseInt(qtObj.QuickTimeVersion.toString(16).substring(0,3))/100;
	}
      }
      catch (caughtErr) {}
    }
    else if(navigator.plugins && navigator.plugins.length)
    {
      this.installed = getPlugIn("QuickTime Plug-in");
    }
  }
  return this.installed;
}

rmmedia.detect = function (is_win) {

  if(this.checked) return this.installed;
  this.installed = false;
  this.checked=1;
  
  if(!is_win)
  {
    this.installed=chkMimeType("video/x-pn-realvideo");
  }
  else
  {
    if (window.ActiveXObject || gkoaxwma)
    {
      try
      {
	rmObj = new OBJAXO("R1P ActiveXObject");
	this.installed=true;
      }
      catch (caughtErr) { }

      if(!this.installed)
      {
	try
	{
	  rmObj = new OBJAXO("rmocx.RealPlayer G2 Control");
		this.version = rmObj.GetVersionInfo();
		versionArray=this.version.split(".");
		conditionA = versionArray[0]>=6; conditionB = versionArray[1]>=0;
		conditionC = versionArray[2]>=6; conditionD = versionArray[3]>=131;
		this.installed = (conditionA && conditionB && conditionC && conditionD);
	}
	catch (caughtErr) { }
      }
    }
    if(navigator.plugins && navigator.plugins.length)
    {
      this.installed = getPlugIn("realone", "RealOne", "realplayer", "RealPlayer");
    }
  }
  return this.installed;
}

function getMediaObjByType(mType) {
  if(mType == "w") return wmmedia;
  if(mType == "q") return qtmedia;
  if(mType == "r") return rmmedia;
}

function showMedia(os_id, mType, elementId, img_width, img_height, objCode) {

  var smedia = getMediaObjByType(mType);

  if(!smedia.checked) smedia.detect((os_id=="ux"?0:1));

  if(smedia.installed) {
    if (elementId != "" && document.getElementById && document.getElementById(elementId) != null) {
	    document.getElementById(elementId).innerHTML = objCode;
    } else {
	    document.write(objCode);
	  }
  }
  else {
     if (smedia.redirect != "undefined" && smedia.redirect != "") {
	 document.location.replace(smedia.redirect);
      }
      else
      {
	 /*objCode = "<a href='"+smedia.getUrl+"'><img src='"+smedia.msgImg+
	     "' width="+img_width+" height="+img_height+" alt='Installez lecteur " + smedia.name + " svp !'></a>";*/
	 objCode=genPlgTble(smedia, img_width, img_height);   
	 if (elementId && document.getElementById && document.getElementById(elementId) != null) {
	     document.getElementById(elementId).innerHTML = objCode;
	 }
	 else
	 {
	     document.write(objCode+"<br>");
	 }
      }
  }
}

function isIE7()
{
  var is_major = parseInt(navigator.appVersion);
  var agt=navigator.userAgent.toLowerCase();
  if ((agt.indexOf("msie") != -1) && (agt.indexOf("opera") == -1));
  {
    return (is_major == 4) && (agt.indexOf("msie 7.")!=-1);
  }
  return false;
}