
// The main WMP object
WMPObject = function(stream, id, w, h) {
    this.stream = stream;
    this.id = id;
    this.width = w;
    this.height = h;
    this.redirect = "";
    this.sq = document.location.search.split("?")[1] || "";
    this.altTxt = "This content requires the Microsoft Windows Media Plugin. <a href='http://www.microsoft.com/windows/windowsmedia/download/'>Down load Windows Media Player</a>.";
    this.bypassTxt = "<p>Already have Windows Media Player? <a href='?detectwmp=false&"+ this.sq +"'>Click here.</a></p>";
    this.params = new Object();
    this.doDetect = getQueryParamValue('detectwmp');
}

// Deal with any parameters that are passed
WMPObject.prototype.addParam = function(name, value) {
    this.params[name] = value;
}

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

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

WMPObject.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;
}

// Generate the core HTML (Returns a string of HTML code.)
WMPObject.prototype.getHTML = function() {
    var wmpHTML = "";
    if (navigator.plugins && navigator.plugins.length) { // not ie
	//wmpHTML += '<embed type="application/x-mplayer2"'
    wmpHTML += '<embed type="application/x-ms-wmp"'
	    + ' pluginspage="http://www.microsoft.com/Windows/MediaPlayer/"'
	    + ' src="' + this.stream + '" width="' + this.width
	    + '" height="' + this.height + '" id="' + this.id + '"';
	for (var param in this.getParams()) {
	    wmpHTML += ' ' + param + '="' + this.getParam(param) + '"';
	}
	wmpHTML += '></embed>';
    } else { // pc ie
	wmpHTML += '<object classid="CLSID:6BF52A52-394A-11d3-B153-00C04F79FAA6"'
	    + ' width="' + this.width + '" height="' + this.height
	    + '" id="' + this.id + '" type="application/x-oleobject">';
	this.addParam("URL", this.stream);
	if (this.getParamTags() != null) {
	    wmpHTML += this.getParamTags();
	}
	wmpHTML += '</object>';
    }
    return wmpHTML;
}

// Deal with attributes
WMPObject.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;
    }
}

// Write the generated HTML out to the page
WMPObject.prototype.write = function(elementId) {
    if(isWMPInstalled() || 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);
	    }
	}
    }
}

// Plugin detection
function isWMPInstalled() {
    var wmpInstalled = false;
    wmpObj = 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 Player") > -1) {
        console.debug("isWMPInstalled: plugin.name="+plugin.name+", plugin.description="+plugin.description);
        if ( plugin.name.indexOf("Microsoft") > -1 ) {
		  wmpInstalled = true;
        }
	    }
	}
    } else {
//	execScript('on error resume next: wmpObj = IsObject(CreateObject("MediaPlayer.MediaPlayer.1"))',
//		   'VBScript');
//	wmpInstalled = wmpObj;
        return true;
    }
    return wmpInstalled;
}

// Plugin detection
function isWMPReallyInstalled() {
    var wmpInstalled = false;
    wmpObj = 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 Player") > -1) {
        console.debug("isWMPInstalled: plugin.name="+plugin.name+", plugin.description="+plugin.description);
        if ( plugin.name.indexOf("Microsoft") > -1 ) {
		  wmpInstalled = true;
        }
	    }
	}
    } else {
	execScript('on error resume next: wmpObj = IsObject(CreateObject("MediaPlayer.MediaPlayer.1"))',
		   'VBScript');
	wmpInstalled = wmpObj;
        return true;
    }
    return wmpInstalled;
}

// Get value of query parameter 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 "";
    }
}

function changeStream(container_id, wma, stream) {
    console.debug("changeStream: container_id="+container_id+", wma="+wma+", stream="+stream);
    console.debug("changeStream: wma.id="+wma.id);
    wma.stream = stream;
    wma.write(container_id);
    var p = document.getElementById(wma.id);
    p.controls.play();
}

