var oeTags = "";
// Globals
// Major version of Flash required
var requiredMajorVersion = 8;
// Minor version of Flash required
var requiredMinorVersion = 0;
// Revision of Flash required
var requiredRevision = 0;
// the version of javascript supported
var jsVersion = 1.0;
// -----------------------------------------------------------------------------
var isIE  = (navigator.appVersion.indexOf("MSIE") != -1) ? true : false;
var isWin = (navigator.appVersion.toLowerCase().indexOf("win") != -1) ? true : false;
var isOpera = (navigator.userAgent.indexOf("Opera") != -1) ? true : false;
jsVersion = 1.1;

function getXMLHTTPRequest() {
    var xRequest = null;
    if (window.XMLHttpRequest) {
        xRequest = new XMLHttpRequest();        
    } else if (typeof ActiveXObject != "undefined") {
        xRequest = new ActiveXObject("Microsoft.XMLHTTP"); 
    }
    return xRequest;
}


// JavaScript helper required to detect Flash Player PlugIn version information
function JSGetSwfVer(i){
	// NS/Opera version >= 3 check for Flash plugin in plugin array
	if (navigator.plugins != null && navigator.plugins.length > 0) {
		if (navigator.plugins["Shockwave Flash 2.0"] || navigator.plugins["Shockwave Flash"]) {
			var swVer2 = navigator.plugins["Shockwave Flash 2.0"] ? " 2.0" : "";
      		var flashDescription = navigator.plugins["Shockwave Flash" + swVer2].description;
			descArray = flashDescription.split(" ");
			tempArrayMajor = descArray[2].split(".");
			versionMajor = tempArrayMajor[0];
			versionMinor = tempArrayMajor[1];
			if ( descArray[3] != "" ) {
				tempArrayMinor = descArray[3].split("r");
			} else {
				tempArrayMinor = descArray[4].split("r");
			}
      		versionRevision = tempArrayMinor[1] > 0 ? tempArrayMinor[1] : 0;
            flashVer = versionMajor + "." + versionMinor + "." + versionRevision;
      	} else {
			flashVer = -1;
		}
	}
	// MSN/WebTV 2.6 supports Flash 4
	else if (navigator.userAgent.toLowerCase().indexOf("webtv/2.6") != -1) flashVer = 4;
	// WebTV 2.5 supports Flash 3
	else if (navigator.userAgent.toLowerCase().indexOf("webtv/2.5") != -1) flashVer = 3;
	// older WebTV supports Flash 2
	else if (navigator.userAgent.toLowerCase().indexOf("webtv") != -1) flashVer = 2;
	// Can't detect in all other cases
	else {
		
		flashVer = -1;
	}
	return flashVer;
} 
// If called with no parameters this function returns a floating point value 
// which should be the version of the Flash Player or 0.0 
// ex: Flash Player 7r14 returns 7.14
// If called with reqMajorVer, reqMinorVer, reqRevision returns true if that version or greater is available
function DetectFlashVer(reqMajorVer, reqMinorVer, reqRevision) 
{
 	reqVer = parseFloat(reqMajorVer + "." + reqRevision);
   	// loop backwards through the versions until we find the newest version	
	for (i=25;i>0;i--) {	
		if (isIE && isWin && !isOpera) {
			versionStr = VBGetSwfVer(i);
		} else {
			versionStr = JSGetSwfVer(i);		
		}
		if (versionStr == -1 ) { 
			return false;
		} else if (versionStr != 0) {
			if(isIE && isWin && !isOpera) {
				tempArray         = versionStr.split(" ");
				tempString        = tempArray[1];
				versionArray      = tempString .split(",");				
			} else {
				versionArray      = versionStr.split(".");
			}
			versionMajor      = versionArray[0];
			versionMinor      = versionArray[1];
			versionRevision   = versionArray[2];
			
			versionString     = versionMajor + "." + versionRevision;   // 7.0r24 == 7.24
			versionNum        = parseFloat(versionString);
        	// is the major.revision >= requested major.revision AND the minor version >= requested minor
			if ( (versionMajor > reqMajorVer) && (versionNum >= reqVer) ) {
				return true;
			} else {
				return ((versionNum >= reqVer && versionMinor >= reqMinorVer) ? true : false );	
			}
		}
	}	
	return (reqVer ? false : 0.0);
}


function ShowMask(){
    var mask = document.createElement("DIV");
    mask.id = "video_mask";
    mask.className = "mask";
    mask.innerHTML = "&nbsp;";
    var maskClick = function(e, obj) {
     YAHOO.util.Event.stopEvent(e);
    };

    var firstChild = document.body.firstChild;
    if (firstChild)	{
 	document.body.insertBefore(mask, document.body.firstChild);
    } else {
	document.body.appendChild(mask);
   }  
    YAHOO.util.Dom.addClass(document.body, "masked");
    mask.style.height = YAHOO.util.Dom.getDocumentHeight()+"px";
    mask.style.width = YAHOO.util.Dom.getDocumentWidth()+"px";
    mask.style.display = "block";
}


function CloseWin(){
   RemoveElement(document.getElementById('video'));
   RemoveElement(document.getElementById('video_mask'));
}


function Close(){   
   RemoveElement(document.getElementById('object'));	
   RemoveElement(document.getElementById('video'));
   RemoveElement(document.getElementById('video_mask'));
}

function RemoveElement(el){    
    el.parentNode.removeChild(el);  
}

function getVideo(url){
 if (document.getElementById('video') == null)
 {

   var xmlDocument = getData();
   var elem = xmlDocument.getElementsByTagName('file');  
   for (var i=0; i < elem.length; i++)
   {
	if (elem[i].getAttribute("path") == url)
	{
	    var ttl = (elem[i].getElementsByTagName('title')[0].firstChild==null ? "" : elem[i].getElementsByTagName('title')[0].firstChild.nodeValue);	
	    var cite = (elem[i].getElementsByTagName('cite')[0].firstChild==null ? "" : elem[i].getElementsByTagName('cite')[0].firstChild.nodeValue);	
	    var author = (elem[i].getElementsByTagName('author')[0].firstChild==null ? "" :elem[i].getElementsByTagName('author')[0].firstChild.nodeValue);	
	    break;
        }	
   }

   var title = document.title;
   var div = document.createElement('div');
   var alink = document.createElement('a');
   var httl = document.createElement('h2');
   var hcite = document.createElement('h3');
   var hauthor = document.createElement('h4'); 
   httl.innerHTML = ttl;
   hcite.innerHTML = cite.replace("$","&iuml;");
   hauthor.innerHTML = author;


   div.id = "video";    
   var hasRightVersion = DetectFlashVer(requiredMajorVersion, requiredMinorVersion, requiredRevision);
   if(hasRightVersion) {  // if we've detected an acceptable version    
    oeTags = '<object id="object" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"'
    + 'width="680" height="440"'
    + 'codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab">'
    + '<param name="movie" value="'+ url + '" /><param name="loop" value="false" /><param name="quality" value="high" /><param name="bgcolor" value="#666666" />'
    + '<embed src="' + url + '" loop="false" quality="high" bgcolor="#666666" '
    + 'width="680" height="440" name="01-chatman" align="middle"'
    + 'play="true"'
    + 'loop="false"'
    + 'quality="high"'
    + 'allowScriptAccess="sameDomain"'
    + 'type="application/x-shockwave-flash"'
    + 'pluginspage="http://www.macromedia.com/go/getflashplayer">'
    + '<\/embed>'
    + '<\/object>';

    div.className = "video-layer";
    div.style.left = (YAHOO.util.Dom.getDocumentWidth() - 680)/2 + "px";
    div.innerHTML = oeTags;        
    alink.href = "javascript:Close(document.getElementById('video'))";
    alink.innerHTML = "Close";
    div.appendChild(alink);

    ShowMask();    
    document.body.insertBefore(div, document.body.firstChild);

    div.insertBefore(httl, document.getElementById("object"));
    div.appendChild(hcite);
    div.appendChild(hauthor);

    document.title = title;

  } else {  // flash is too old or we can't detect the plugin
    var alternateContent = '<p>Alternate HTML content should be placed here.</p>'
  	+ '<p>This content requires the Macromedia Flash Player. '
   	+ '<a href=http://www.macromedia.com/go/getflash/>Get Flash</a></p>';
    div.className = "flash-note";
    div.innerHTML = alternateContent;    
    alink.href = "javascript:CloseWin()";
    alink.className = "close";
    alink.innerHTML = "Close";
    div.appendChild(alink);
    ShowMask(); 
    document.body.insertBefore(div, document.body.firstChild);  
  }
 }
}

function getData(){
   var xml = getXMLHTTPRequest();;
   xml.open('GET', 'data/data.xml', false);
   xml.send(null);
   return xml.responseXML; 
}