/*==============================================================================
  Browser Normalizations
 =============================================================================*/
// for browsers that don't like array.push()
if (typeof Array.prototype.push == "undefined") { Array.prototype.push = function() { var currentLength = this.length; for (var i = 0; i < arguments.length; i++) { this[currentLength + i] = arguments[i]; } return this.length; }; }

/*==============================================================================
  Flash Object v1.0
 =============================================================================*/
Flash = function(swf, width, height, version)
{
    this.swf = swf || '';
    this.width = width || '100%';
    this.height = height || '100%';
    this.requiredVersion = version || 8;
    this.id = '';
    this.params = new Object();
    this.variables = new Object();
	this.cabVersion = '8,0,0,0';
	this.menu = 'false';
	this.altTxt = '';
};
Flash.hasVersion = function(requiredVersion)
{
    var hasVersion = false;
	if (navigator.plugins && navigator.plugins.length) {
		var description = navigator.plugins['Shockwave Flash'].description;
		var version = description.charAt(description.indexOf('.')-1);
		hasVersion = (version >= requiredVersion);
	} else if (window.ActiveXObject && window.execScript && navigator.userAgent.indexOf('Mac') == -1) { // for Win IE
        Flash.hasActiveX = false;
        window.execScript('On error resume next: Flash.hasActiveX = IsObject(CreateObject("ShockwaveFlash.ShockwaveFlash.' + requiredVersion + '"))', 'VBScript');
        hasVersion = Flash.hasActiveX;
        delete Flash.hasActiveX;
    }
    return hasVersion;
};
Flash.prototype.getSWF = function() { return this.swf; };
Flash.prototype.setSWF = function(swf) { this.swf = swf; };
Flash.prototype.getWidth = function() { return this.width; };
Flash.prototype.setWidth = function(w) { this.width = w; };
Flash.prototype.getHeight = function() { return this.height; };
Flash.prototype.setHeight = function(h) { this.height = h; };
Flash.prototype.getRequiredVersion = function() { return this.requiredVersion; };
Flash.prototype.setRequiredVersion = function(v) { this.requiredVersion = v; };
Flash.prototype.getCabVersion = function() { return this.cabVersion; };
Flash.prototype.setCabVersion = function(cabVersion) { this.cabVersion = cabVersion; };
Flash.prototype.getMenu = function() { return this.menu; };
Flash.prototype.setMenu = function(menu) { this.menu = menu; };
Flash.prototype.getId = function() { return this.id; };
Flash.prototype.setId = function(id) { this.id = id; };
Flash.prototype.getParam = function(name) { return this.params[name]; };
Flash.prototype.getParams = function() { return this.params; };
Flash.prototype.setParam = function(name, value) { this.params[name] = value; };
Flash.prototype.getVariable = function(name) { return this.variables[name]; };
Flash.prototype.getVariables = function() { return this.variables; };
Flash.prototype.setVariable = function(name, value) { this.variables[name] = value; };
Flash.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;
    }
};
Flash.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;
};
Flash.prototype.getStatic = function() { return this.altTxt; };
Flash.prototype.setStatic = function(altTxt) { this.altTxt = altTxt; };
Flash.prototype.getHTML = function()
{
	var flashHTML = "";
    if (window.ActiveXObject && navigator.userAgent.indexOf('Mac') == -1) { // PC IE
		flashHTML += '<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=' + this.getCabVersion() + '" width="' + this.getWidth() + '" height="' + this.getHeight() + '" id="' + this.getId() + '">';
		flashHTML += '<param name="movie" value="' + this.getSWF() + '" />';
		flashHTML += '<param name="menu" value="' + this.getMenu() + '" />';
		if (this.getParamTags() != null) {
			flashHTML += this.getParamTags();
		}
		if (this.getVariablePairs() != null) {
			flashHTML += '<param name="flashVars" value="' + this.getVariablePairs() + '" />';
		}
		flashHTML += '</object>';
		
	} else {
		flashHTML += '<embed type="application/x-shockwave-flash" PLUGINSPAGE="http://www.macromedia.com/go/getflashplayer" src="' + this.getSWF() + '" width="' + this.getWidth() + '" height="' + this.getHeight() + '" menu="' + this.getMenu() + '" id="' + this.getId() + '"';
		for (var param in this.getParams()) {
			flashHTML += ' ' + param + '="' + this.getParam(param) + '"';
		}
		if (this.getVariablePairs() != null) {
			flashHTML += ' flashVars="' + this.getVariablePairs() + '"';
		}
		flashHTML += '></embed>';
	}
    return flashHTML;
};
Flash.prototype.render = function(elementId)
{
	var output;
	output = this.getHTML();
	
	(elementId) ? document.getElementById(elementId).innerHTML = output : document.write(output);
};