// window popup code
// Thanks to Caio Chassot, http://www.alistapart.com/articles/popuplinks/

var _POPUP_FEATURES = '';

function raw_popup(url, target, features) {
    // pops up a window containing url optionally named target, optionally having features
    if (isUndefined(features)) features = _POPUP_FEATURES;
    if (isUndefined(target  )) target   = '_blank';
    var theWindow = window.open(url, target, features);
    return theWindow;
}

function link_popup(src, features) {
    // to be used in an html event handler as in: <a href="..." onclick="link_popup(this,...)" ...
    // pops up a window grabbing the url from the event source's href
    return raw_popup(src.getAttribute('href'), src.getAttribute('target') || '_blank', features);
}

// MISC CLEANING-AFTER-MICROSOFT STUFF

function isUndefined(v) {
    var undef;
    return v===undef;
}

// addEvent cross-browser event handling for IE5+, NS6 and Mozilla
// By Scott Andrew
function addEvent(elm, evType, fn, useCapture) {	
	if (elm.addEventListener) {
	  elm.addEventListener(evType, fn, useCapture); 
	  return true;
	} else if (elm.attachEvent) {
	  var r = elm.attachEvent('on' + evType, fn);
	  return r;
	} else {
	  elm['on' + evType] = fn;
	}
}


function InsertMovie(movie, width, height) {
	document.write('<object width="'+width+'" height="'+(height+16)+'" classid="clsid: 02BF25D5..." ...>\n');
	document.write('<param name="src" value="'+movie+'" />\n');
	document.write('<param name="autoplay" value="false" />\n');
	document.write('<embed src="'+movie+'" width="'+width+'" height="'+(height+16)+'" pluginspage="http://www.apple.com/quicktime/download/" autoplay="false"></embed>');
	document.write('</object>\n');
}

/*
function InsertWMV(movie, width, height) {
	height+=72;

	document.write('<OBJECT id="mediaPlayer" width="'+width+'" height="'+height+'" ');
	document.write('classid="CLSID:22d6f312-b0f6-11d0-94ab-0080c74c7e95" ');
	document.write('codebase="http://activex.microsoft.com/activex/controls/ mplayer/en/nsmp2inf.cab#Version=5,1,52,701"');
	document.write('standby="Loading Microsoft Windows Media Player componentsÉ" type="application/x-oleobject">');
	document.write('<param name="fileName" value="'+movie+'">');
	document.write('<param name="animationatStart" value="1">');
	document.write('<param name="transparentatStart" value="1">');
	document.write('<param name="autoStart" value="1">');
	document.write('<param name="ShowControls" value="1">');
	document.write('<param name="ShowDisplay" value="0">');
	document.write('<param name="ShowStatusBar" value="0">');
	document.write('<param name="loop" value="0">');
	document.write('<EMBED type="application/x-mplayer2"');
	document.write('pluginspage="http://microsoft.com/windows/mediaplayer/ en/download/"');
	document.write('id="mediaPlayer" name="mediaPlayer" displaysize="4" autosize="0" ');
	document.write('bgcolor="darkblue" showcontrols="1" showtracker="1" ');
	document.write('showdisplay="0" showstatusbar="1" videoborder3d="0" width="'+width+'" height="'+height+'"');
	document.write('src="'+movie+'" autostart="1" designtimesp="5311" loop="0">');
	document.write('</EMBED>');
	document.write('</OBJECT>');

}
*/


/*	Unobtrusive Flash Objects (UFO) v1.01 <http://www.bobbyvandersluis.com/ufo/>
	Copyright 2005 Bobby van der Sluis
	This software is licensed under the CC-GNU LGPL <http://creativecommons.org/licenses/LGPL/2.1/>
	------------------------------
	v1.01 Fixed bug: Added missing quotes around attribute values
*/

var UFO = {
	requiredAttrParams: ["movie", "width", "height", "majorversion", "build"],
	optionalAttrEmb: ["name", "swliveconnect", "align"],
	optionalAttrObj: ["id", "align"],
	optionalAttrParams: ["play", "loop", "menu", "quality", "scale", "salign", "wmode", "bgcolor", "base", "flashvars", "devicefont", "allowscriptaccess"],
	
	create: function(FO, id) {
		UFO.setElementDisplay(id, "none");
		var loadfn = function() {
			if (UFO.hasRequiredAttrParams(FO) && UFO.hasFlashVersion(FO.majorversion, FO.build)) {
				UFO.writeFlashObject(FO, id);
			}
			UFO.setElementDisplay(id, "block");
		};
		UFO.addLoadEvent(loadfn);
	},

	setElementDisplay: function(id, display) {
		if (!document.createElement || !document.getElementsByTagName) return;
		var selector = "#" + id;
		var property = "display: " + display;
		var style = document.createElement("style");
		style.setAttribute("type", "text/css");
		style.setAttribute("media", "screen");
		document.getElementsByTagName("head")[0].appendChild(style);
		var agt = navigator.userAgent.toLowerCase(); 
		var is_ie = ((agt.indexOf("msie") != -1) && (agt.indexOf("opera") == -1));
		var is_win = (agt.indexOf("win") != -1);
		if (!(is_ie && is_win)) {
			var styles = document.getElementsByTagName("style");
			if (styles && styles.length > 0 && document.createTextNode) {
				var lastStyle = styles[styles.length - 1];
				var rule = document.createTextNode(selector + " {" + property + ";}");
				lastStyle.appendChild(rule); // Hopelessly bugs in IE/Win
			}
		}
		else if (document.styleSheets && document.styleSheets.length > 0) {
			var stylesheet = document.styleSheets[document.styleSheets.length - 1];
			if (typeof stylesheet.addRule == "object"){ // This test bugs in IE/Mac and Safari
				stylesheet.addRule(selector, property);
			}
		}
	},

	hasRequiredAttrParams: function(FO) {
		for (var i = 0; i < UFO.requiredAttrParams.length; i++) {
			if (typeof FO[UFO.requiredAttrParams[i]] == "undefined") return false;
		}
		return true;
	},
	
	hasFlashVersion: function(majorVersion, build) {
		var reqVersion = parseFloat(majorVersion + "." + build);
		if (navigator.plugins && typeof navigator.plugins["Shockwave Flash"] == "object") {
			var desc = navigator.plugins["Shockwave Flash"].description;
			if (desc) {
				var descArr = desc.split(" ");
				var majorArr = descArr[2].split(".");
				var major = majorArr[0];
				if (descArr[3] != "") {
					var minorArr = descArr[3].split("r");
				}
				else {
					var minorArr = descArr[4].split("r");
				}
				var minor = minorArr[1] > 0 ? minorArr[1] : 0;
				var flashVersion = parseFloat(major + "." + minor);
			}
		}
		else if (window.ActiveXObject) {
			try {
				var flash = new ActiveXObject("ShockwaveFlash.ShockwaveFlash");
				var desc = flash.GetVariable("$version");
				if (desc) {
					var descArr = desc.split(" ");
					var versionArr = descArr[1].split(",");        
					var major = versionArr[0];
					var minor = versionArr[2];
					var flashVersion = parseFloat(major + "." + minor);
				}
			}
			catch(e) {}
		}
		if (typeof flashVersion != "undefined"){
			return (flashVersion >= reqVersion ? true : false); 
		}
		return false;
	},

	writeFlashObject: function(FO, id) {
		if (!document.getElementById) return;
		var el = document.getElementById(id);
		if (typeof el.innerHTML == "undefined") return;
		var embHTML = "";
		var objAttrHTML = "";
		var objParamHTML = "";
		for (var i = 0; i < UFO.optionalAttrEmb.length; i++) {
			if (typeof FO[UFO.optionalAttrEmb[i]] != "undefined" && FO[UFO.optionalAttrEmb[i]] != "") {
				embHTML += ' ' + UFO.optionalAttrEmb[i] + '="' + FO[UFO.optionalAttrEmb[i]] + '"';
			}
		}
		for (var i = 0; i < UFO.optionalAttrObj.length; i++) {
			if (typeof FO[UFO.optionalAttrObj[i]] != "undefined" && FO[UFO.optionalAttrObj[i]] != "") {
				objAttrHTML += ' ' + UFO.optionalAttrObj[i] + '="' + FO[UFO.optionalAttrObj[i]] + '"';
			}
		}
		for (var i = 0; i < UFO.optionalAttrParams.length; i++) {
			if (typeof FO[UFO.optionalAttrParams[i]] != "undefined" && FO[UFO.optionalAttrParams[i]] != "") {
				embHTML += ' ' + UFO.optionalAttrParams[i] + '="' + FO[UFO.optionalAttrParams[i]] + '"';
				objParamHTML += '<param name="' + UFO.optionalAttrParams[i] + '" value="' + FO[UFO.optionalAttrParams[i]] + '" />';
			}
		}
		if (navigator.plugins && typeof navigator.plugins["Shockwave Flash"] == "object") {
			var foHTML = '<embed type="application/x-shockwave-flash" src="' + FO.movie + '" width="' + FO.width + '" height="' + FO.height + '" pluginspage="http://www.macromedia.com/go/getflashplayer"';
			foHTML += embHTML;
			foHTML += '></embed>';
		}
		else {
			var foHTML = '<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"' + objAttrHTML + ' width="' + FO.width + '" height="' + FO.height + '" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=' + FO.majorversion + ',0,' + FO.build + ',0">';
			foHTML += '<param name="movie" value="' + FO.movie + '" />';
			foHTML += objParamHTML;
			foHTML += '</object>';
		}
		el.innerHTML = foHTML;
	},

	addLoadEvent: function(fn) {
		if (window.addEventListener) {
			window.addEventListener("load", fn, false);
		}
		else if (document.addEventListener) {
			document.addEventListener("load", fn, false);
		}
		else if (window.attachEvent) {
			window.attachEvent("onload", fn);
		}
		else if (typeof window.onload == "function") {
			var fnOld = window.onload;
			window.onload = function(){
				fnOld();
				fn();
			};
		}
		else {
			window.onload = fn;
		}
	}
};


/*
 * MPObject embed
 * http://blog.deconcept.com/2005/01/26/web-standards-compliant-javascript-quicktime-detect-and-embed/
 *
 * by Geoff Stearns (geoff@deconcept.com, http://www.deconcept.com/)
 *
 * v1.0.2 - 02-16-2005
 *
 * Embeds a Windows Media movie to the page, includes plugin detection
 *
 * Usage:
 *
 *	myMPObject = new MPObject("path/to/mov.wmv", "movid", "width", "height");
 *	myMPObject.altTxt = "Upgrade your Media Player!";	// optional
 *	myMPObject.addParam("autostart", "0");			// optional
 *	myMPObject.addParam("showstatusbar", "0");		// optional
 *	myMPObject.addParam("controller", "0");			// optional
 *	myMPObject.write();
 *
 */
 
function InsertWMV(movie, width, height) {
	height += 44;

	myMPObject = new MPObject(movie, "wmvmovie", width, height);
 	myMPObject.addParam("autostart", "0");			// optional
 	myMPObject.addParam("showstatusbar", "0");		// optional
 	myMPObject.addParam("controller", "1");			// optional
 	myMPObject.write();
}
 

MPObject = function(mov, id, w, h) {
	this.mov = mov;
	this.id = id;
	this.width = w;
	this.height = h;
	this.redirect = "";
	this.sq = document.location.search.split("?")[1] || "";
	this.altTxt = "This content requires the Windows Mediaplayer Plugin. <a href='http://www.microsoft.com/'>Download Media Player</a>.";
	this.bypassTxt = "<p>Already have Media Player? <a href='?detectmp=false&"+ this.sq +"'>Click here.</a></p>";
	this.params = new Object();
	this.doDetect = getQueryParamValue('detectmp');
}

MPObject.prototype.addParam = function(name, value) {
	this.params[name] = value;
}

MPObject.prototype.getParams = function() {
    return this.params;
}

MPObject.prototype.getParam = function(name) {
    return this.params[name];
}

MPObject.prototype.getParamTags = function() {
    var paramTags = "";
    for (var param in this.getParams()) {
        paramTags += '<param name="' + param + '" value="' + this.getParam(param) + '" />';
    }
    if (paramTags == "") {
        paramTags = null;
    }
    return paramTags;
}

MPObject.prototype.getHTML = function() {
    var mpHTML = "";
	if (navigator.plugins && navigator.plugins.length) { // not ie
        mpHTML += '<embed type="application/x-mplayer2" src="' + this.mov + '" width="' + this.width + '" height="' + this.height + '" id="' + this.id + '"';
        for (var param in this.getParams()) {
            mpHTML += ' ' + param + '="' + this.getParam(param) + '"';
        }
        mpHTML += '></embed>';
    }
    else { // pc ie
        mpHTML += '<object classid="clsid:05589FA1-C356-11CE-BF01-00AA0055595A" width="' + this.width + '" height="' + this.height + '" id="' + this.id + '">';
        this.addParam("src", this.mov);
        if (this.getParamTags() != null) {
            mpHTML += this.getParamTags();
        }
        mpHTML += '</object>';
    }
    return mpHTML;
}


MPObject.prototype.getVariablePairs = function() {
    var variablePairs = new Array();
    for (var name in this.getVariables()) {
        variablePairs.push(name + "=" + escape(this.getVariable(name)));
    }
    if (variablePairs.length > 0) {
        return variablePairs.join("&");
    }
    else {
        return null;
    }
}

MPObject.prototype.write = function(elementId) {
	if(isMPInstalled() || this.doDetect=='false') {
		if (elementId) {
			document.getElementById(elementId).innerHTML = this.getHTML();
		} else {
			document.write(this.getHTML());
		}
	} else {
		if (this.redirect != "") {
			document.location.replace(this.redirect);
		} else {
			if (elementId) {
				document.getElementById(elementId).innerHTML = this.altTxt +""+ this.bypassTxt;
			} else {
				document.write(this.altTxt +""+ this.bypassTxt);
			}
		}
	}		
}

function isMPInstalled() {
	var mpInstalled = false;
	mpObj = false;
	if (navigator.plugins && navigator.plugins.length) {
		for (var i=0; i < navigator.plugins.length; i++ ) {
         var plugin = navigator.plugins[i];
         if (plugin.name.indexOf("Windows Media") > -1) {
			mpInstalled = true;
         }
      }
	} else {
		execScript('on error resume next: mpObj = IsObject(CreateObject("MediaPlayer.MediaPlayer.1"))','VBScript');
		mpInstalled = mpObj;
	}
	return mpInstalled;
}

/* get value of querystring param */
function getQueryParamValue(param) {
	var q = document.location.search;
	var detectIndex = q.indexOf(param);
	var endIndex = (q.indexOf("&", detectIndex) != -1) ? q.indexOf("&", detectIndex) : q.length;
	if(q.length > 1 && detectIndex != -1) {
		return q.substring(q.indexOf("=", detectIndex)+1, endIndex);
	} else {
		return "";
	}
}

