/*CVS Add-ins*/
/* 
$Revision: 1.2 $
$RCSfile: behaviour_quicktime.js,v $
author: JDE
Copyright (c) A&B.face2net GmbH
*/

var agt = navigator.userAgent.toLowerCase();
var ie  = (agt.indexOf("msie") != -1);
var gTagAttributes	= null;
var qtinstalled = false;

if (ie){ qtinstalled = detectQtPlugin();}

function detectQtPlugin() {
 var doc = '<scr' + 'ipt language="VBScript"\> \n';
	      doc += 'On Error Resume Next \n';
	      doc += 'Set theObject = CreateObject("QuickTimeCheckObject.QuickTimeCheck.1") \n';
	      doc += 'On Error goto 0 \n';
	      doc += 'If IsObject(theObject) Then \n';
	      doc += '  If theObject.IsQuickTimeAvailable(0) Then \n';
	      doc += '    qtinstalled = true\n';
	      doc += '  End If \n';
	      doc += 'End If \n';
	      doc += '</scr' + 'ipt\> \n';
	      document.write(doc);
		  return qtinstalled;
}

if(navigator.plugins){
  for (var i=0; i<navigator.plugins.length; i++){
  
    if (navigator.plugins[i].name.indexOf("QuickTime") >= 0){ 
	  qtinstalled = true; 
	}
  }
}

if ((navigator.appVersion.indexOf("Mac") > 0) && (navigator.appName.substring(0,9) == "Microsoft") && (parseInt(navigator.appVersion) < 5) ){ 
  qtinstalled = true; 
}


function _addAttributes(prefix, slotName, tagName){
  var value;
  value = gTagAttributes[prefix + slotName];
  
  if (null == value)  value = gTagAttributes[slotName];
  if (null != value){
    if (0 == slotName.indexOf(prefix) && (null == tagName))
      tagName = slotName.substring(prefix.length); 
      
      if ( null == tagName ) tagName = slotName;
      
      return '' + tagName + '="' + value + '"';
	
    }else return "";
}

function _addObjAttributes(slotName, tagName){
  if (0 == slotName.indexOf("emb#"))  return "";
  if (0 == slotName.indexOf("obj#") && (null == tagName)) tagName = slotName.substring(4); 
  
  return _addAttributes("obj#", slotName, tagName);
}

function _addEmbAttributes(slotName, tagName){
  if (0 == slotName.indexOf("obj#"))  return "";
  if (0 == slotName.indexOf("emb#") && (null == tagName)) tagName = slotName.substring(4); 
  
  return _addAttributes("emb#", slotName, tagName);
}


function _addObjParams(slotName, generateXHTML){
  var paramValue;
  var paramStr = "";
  var endTagChar = (generateXHTML) ? ' />' : '>';

  if (-1 == slotName.indexOf("emb#"))	{
    paramValue = gTagAttributes["obj#" + slotName];
    
    if (null == paramValue)             paramValue = gTagAttributes[slotName];
    if (0 == slotName.indexOf("obj#"))  slotName = slotName.substring(4); 
	if ( null != paramValue )           paramStr = '<param name="' + slotName + '" value="' + paramValue + '"' + endTagChar;
  }

  return paramStr;
}

function _deleteTagAttributes(){
  for (var ndx = 0; ndx < arguments.length; ndx++){
    var attrName = arguments[ndx];
    delete gTagAttributes[attrName];
    delete gTagAttributes["emb#" + attrName];
    delete gTagAttributes["obj#" + attrName];
  }
}

function _builtQuicktimeMarkup(callingFcnName, generateXHTML, args){
  if ( args.length < 4 || (0 != (args.length % 2)) ){ return "";   }
  
  gTagAttributes = new Object();
  gTagAttributes["src"] = args[0];
  gTagAttributes["width"] = args[1];
  gTagAttributes["height"] = args[2];
  gTagAttributes["classid"] = "clsid:02BF25D5-8C17-4B23-BC80-D3488ABDDC6B";
  gTagAttributes["pluginspage"] = "http://www.apple.com/quicktime/download/";

  /*set up codebase attribute with specified or default version before parsing args so anything passed in will override*/
  var activexVers = args[3]
  
  if ((null == activexVers) || ("" == activexVers)) activexVers = "6,0,2,0";
  
  gTagAttributes["codebase"] = "http://www.apple.com/qtactivex/qtplugin.cab#version=" + activexVers;
  var attrName;
  var attrValue;
  
  for ( var ndx = 4; ndx < args.length; ndx += 2){
    attrName = args[ndx].toLowerCase();
	attrValue = args[ndx + 1];
    
    if ( "name" == attrName || "id" == attrName ){
      gTagAttributes["name"] = attrValue;
    }else {
      gTagAttributes[attrName] = attrValue;
    }
  }

  var objTag =  '<object ' 
  + _addObjAttributes("classid") + _addObjAttributes("width") + _addObjAttributes("height")
  + _addObjAttributes("codebase") + _addObjAttributes("name", "id") + _addObjAttributes("tabindex")
  + _addObjAttributes("hspace") + _addObjAttributes("vspace") + _addObjAttributes("border")
  + _addObjAttributes("align") + _addObjAttributes("class") + _addObjAttributes("title")
  + _addObjAttributes("accesskey") + _addObjAttributes("noexternaldata") + '>'
  + _addObjParams("src", generateXHTML);
  
  var embedTag = '<embed '
  + _addEmbAttributes("src") + _addEmbAttributes("width") + _addEmbAttributes("height") + _addEmbAttributes("pluginspage")
  + _addEmbAttributes("name") + _addEmbAttributes("align") + _addEmbAttributes("tabindex");
  
  _deleteTagAttributes("src","width","height","pluginspage","classid","codebase","name","tabindex","hspace","vspace","border","align","noexternaldata","class","title","accesskey");
  
  for(var attrName in gTagAttributes) {
    attrValue = gTagAttributes[attrName];
    
    if(null != attrValue) {
      embedTag += _addEmbAttributes(attrName);
      objTag += _addObjParams(attrName, generateXHTML);
    }
  } 
  
  return objTag + embedTag + '></em' + 'bed></ob' + 'ject' + '>';
}

function writeErrorMessage() {
    if(document.getElementById("nonscript") && document.getElementById("basic_txt") ){
      document.getElementById("basic_txt").removeChild(document.getElementById("nonscript")); 
    }  
}

function remove_allchildren( containerID ){
	if (!document.getElementById) return;
	var myParent 	= document.getElementById(containerID);
    var myChildren 	= myParent.childNodes;   
    var numChildren = myChildren.length; 
    for(var i = numChildren-1; i >= 0; i--) {  
        var c = myParent.removeChild(myChildren[i]); 
    }
}

function writeQuicktimeVR(){
  if(document.getElementById("quicktime") && qtinstalled) {
    remove_allchildren("quicktime");
    document.writeln(_builtQuicktimeMarkup("writeQuicktimeVR", true, arguments));
	
  }else writeErrorMessage();
}



