function $(s) {	return document.getElementById(s); }

BrowserDescription = function () {
	this.appN = navigator.appName.toLowerCase();
	this.appV = parseInt(navigator.appVersion);
	this.ua = navigator.userAgent.toLowerCase();
	this.plt = navigator.platform.toLowerCase();
	this.lang = (navigator.language || navigator.userLanguage).substring(0,2); 
	if (this.ua.indexOf('opera/7') != -1 || this.ua.indexOf('opera 7') != -1) {
		this.appV = 7;
	}
	this.ax = window.ActiveXObject != "undefined";
	this.isSafari = (this.ua.indexOf('safari') != -1); 
	if(this.ua.indexOf('safari') != -1) 
	{
		var wk = 'applewebkit/';
		var kitpos = this.ua.indexOf(wk);
		if(kitpos == -1) return null;
		var kit = this.ua.substring(kitpos+wk.length);
		kit = kit.substring(0,kit.indexOf(" "));
		this.kitV = parseInt(kit);
	}
	return this;
}
var browser = new BrowserDescription();
var fobjs = [];
function registerSWFObject(fobj,domtarg) {
	if(browser.ax && !browser.isSafari) {
		$(domtarg).style.visibility="hidden";
		fobjs.push({ob:fobj,dm:domtarg});
		writeFOArr();
	} else { fobj.write(domtarg); }
}
function writeFOArr() {
	if(!fobjs) return 0;
	for(var i=0,len=fobjs.length;i<len;i++) {
		var fobj = fobjs[i];
		$(fobj.dm).style.visibility="visible";
		fobj.ob.write(fobj.dm);
		fobj=null;
	}
	return 1;
}
if(typeof com=="undefined"){var com=new Object();}
if(typeof com.deconcept=="undefined"){com.deconcept=new Object();}
if(typeof com.deconcept.util=="undefined"){com.deconcept.util=new Object();}
if(typeof com.deconcept.SWFObjectUtil=="undefined"){com.deconcept.SWFObjectUtil=new Object();}
com.deconcept.SWFObject = function( obj ){
	if (!document.createElement || !document.getElementById) return;
	if( typeof obj.swf == "undefined" ) return;
	var swf = obj.swf;
	if( typeof obj.id == "undefined" ) return;
	var id = obj.id;
	if( typeof obj.w == "undefined" ) return;
	var w = obj.w;
	if( typeof obj.h == "undefined" ) return;
	var h = obj.h;
	var ver 		= ( typeof obj.ver == "undefined" ) ? "6" : obj.ver;
	var c			= ( typeof obj.c == "undefined" ) ? "#ffffff" : obj.c;
	var q			= ( typeof obj.q == "undefined" ) ? "high" : obj.q;
	var useExpressInstall = ( typeof obj.useExpressInstall == "undefined" ) ? false : obj.useExpressInstall;
	var xir 		= ( typeof obj.xiRedirectUrl == "undefined" ) ? window.location : obj.xiRedirectUrl;
	var redirectUrl = ( typeof obj.redirectUrl == "undefined" ) ? "" : obj.redirectUrl;
	var salign 		= ( typeof obj.salign == "undefined" ) ? "tl" : obj.salign;
	var wmode 		= ( typeof obj.wmode == "undefined" ) ? "window" : obj.wmode;
	var menu 		= ( typeof obj.menu == "undefined" ) ? "false" : obj.menu;
	var onFailFunc 	= ( typeof obj.onFailFunc == "undefined" ) ? "" : obj.onFailFunc;
	var objID 		= ( typeof obj.objID == "undefined" ) ? "" : obj.objID;
	var embedID 	= ( typeof obj.embedID == "undefined" ) ? "" : obj.embedID;
	var name 		= ( typeof obj.name == "undefined" ) ? "" : obj.name;
	var pluginspage = ( typeof obj.pluginspage == "undefined" ) ? "" : obj.pluginspage;
	var codebase	= ( typeof obj.codebase == "undefined" ) ? "" : obj.codebase;
	this.DETECT_KEY = ( typeof obj.detectKey == "undefined" ) ? "detectflash" : obj.detectKey ;
	this.skipDetect = com.deconcept.util.getRequestParameter(this.DETECT_KEY);
	this.params = new Object();
	this.variables = new Object();
	this.attributes = new Array();
	this.useExpressInstall = useExpressInstall;
	this.isInlineInstall = ( obj.isInlineInstall == "true" );
	this.setAttribute( 'swf', swf );
	this.setAttribute( 'id', id );
	this.setAttribute( 'width', w );
	this.setAttribute( 'height', h );
	this.setAttribute( 'version', new com.deconcept.PlayerVersion(ver.toString().split(".")) );
	this.installedVer = com.deconcept.SWFObjectUtil.getPlayerVersion(this.getAttribute('version'), useExpressInstall);
	this.addParam( 'bgcolor', c );
	this.addParam( 'quality', q );
	this.setAttribute( 'redirectUrl', redirectUrl );
	if( typeof obj.scale != "undefined" )
	this.addParam( 'scale', obj.scale ); 
	this.addParam( 'salign', salign );
	this.addParam( 'wmode', wmode );
	this.addParam( 'menu', menu );
	this.setAttribute( 'onFailFunc', onFailFunc );
	this.setAttribute( 'objID', objID );
	this.setAttribute( 'embedID', embedID );
	this.setAttribute( 'name', name );
	this.setAttribute( 'codebase', codebase );
	if( pluginspage != "" )	this.addParam( 'pluginspage', pluginspage );

}
com.deconcept.SWFObject.prototype = {
	setAttribute: function(name, value){ this.attributes[name] = value;	},
	getAttribute: function(name){ return this.attributes[name];	},
	addParam: function(name, value){ this.params[name] = value;	},
	getParams: function(){ return this.params; },
	addVariable: function(name, value){ this.variables[name] = value; },
	getVariable: function(name){ return this.variables[name]; },
	getVariables: function(){ return this.variables; },
	createParamTag: function(n, v){
		var p = document.createElement('param');
		p.setAttribute('name', n);
		p.setAttribute('value', v);
		return p;
	},
	getVariablePairs: function(){
		var variablePairs = new Array();
		var key;
		var variables = this.getVariables();
		for(key in variables){ variablePairs.push(key +"="+ variables[key]); }
		return variablePairs;
	},
	getFlashHTML: function() {
		var flashNode = "";
		if (navigator.plugins && navigator.mimeTypes && navigator.mimeTypes.length) { 
			var $ID = this.getAttribute( 'embedID' );
			if( $ID == "" ) $ID = this.getAttribute( 'id' );
			var $name = this.getAttribute( 'name' );
			if( $name == "" ) $name = $ID;
			if (this.getAttribute("doExpressInstall")) this.addVariable("MMplayerType", "PlugIn");
			if( browser.isSafari && browser.kitV < 420 )
			flashNode = '';
			// flashNode += '<img src="/images/pixel.gif" name="objectMask" width="'+this.getAttribute( 'width' )+'" height="'+this.getAttribute( 'height' ) + '" class="off" />';
			flashNode += '<embed type="application/x-shockwave-flash" src="'+ this.getAttribute('swf') +'" width="'+ this.getAttribute('width') +'" height="'+ this.getAttribute('height') +'"';
			flashNode += ' id="'+ $ID +'" name="'+ $name +'" ';
			var params = this.getParams();
			for(var key in params){ flashNode += [key] +'="'+ params[key] +'" '; }
			if( this.isInlineInstall ) this.addVariable( "MMPlayerType", "PlugIn" );
			var pairs = this.getVariablePairs().join("&");
			if (pairs.length > 0){ flashNode += 'flashvars="'+ pairs +'"'; }
			flashNode += '/>';
			
		} else { 
			var $ID = this.getAttribute( 'objID' );
			if( $ID == "" ) $ID = this.getAttribute( 'id' );
			if (this.getAttribute("doExpressInstall")) this.addVariable("MMplayerType", "ActiveX");
			if( browser.isSafari && browser.kitV < 420  )
	
			flashNode = '';
			//flashNode = '<img src="/images/pixel.gif" name="objectMask" width="'+this.getAttribute( 'width' )+'" height="'+this.getAttribute( 'height' ) + '" class="off" />';
			flashNode += '<object id="'+ $ID +'" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" width="'+ this.getAttribute('width') +'" height="'+ this.getAttribute('height') + '"';
			if( this.getAttribute('codebase') == "" )
			flashNode += '>';
			else
			flashNode += ' codebase="'+ this.getAttribute('codebase') + '">';
			flashNode += '<param name="movie" value="'+ this.getAttribute('swf') +'" />"';
			var params = this.getParams();
			for(var key in params) {
				flashNode += '<param name="'+ key +'" value="'+ params[key] +'">';
			}
			if( this.isInlineInstall ) this.addVariable( "MMPlayerType", "ActiveX" );
			var pairs = this.getVariablePairs().join("&");
			if(pairs.length > 0) flashNode += '<param name="flashvars" value="'+ pairs +'">';
			flashNode += "</object>";
			
		}
//		alert( "writing:\n"+flashNode);
		return flashNode;
	},
	write: function(elementId){

		if(this.useExpressInstall) {
			var expressInstallReqVer = new com.deconcept.PlayerVersion([6,0,65]);
			if (this.installedVer.versionIsValid(expressInstallReqVer) && !this.installedVer.versionIsValid(this.getAttribute('version'))) {
				this.setAttribute('doExpressInstall', true);
				this.addVariable("MMredirectURL", escape(this.getAttribute('xiRedirectUrl')));
				document.title = document.title.slice(0, 47) + " - Flash Player Installation";
				this.addVariable("MMdoctitle", document.title);
			}
		} else { this.setAttribute('doExpressInstall', false); }
		if(this.skipDetect || this.getAttribute('doExpressInstall') || this.installedVer.versionIsValid(this.getAttribute('version'))){
			var n = (typeof elementId == 'string') ? document.getElementById(elementId) : elementId;
			n.innerHTML = this.getFlashHTML();
		} else {
			if(this.getAttribute('redirectUrl') != "") {
				document.location.replace(this.getAttribute('redirectUrl'));
			}
			if( this.getAttribute('onFailFunc') != "" )	{
				var func = this.getAttribute( 'onFailFunc' );
				func();
			}
		}
	}
}
com.deconcept.SWFObjectUtil.getPlayerVersion = function(reqVer, xiInstall){
	var PlayerVersion = new com.deconcept.PlayerVersion(0,0,0);
	if(navigator.plugins && navigator.mimeTypes.length){
		var x = navigator.plugins["Shockwave Flash"];
		if(x && x.description) {
			PlayerVersion = new com.deconcept.PlayerVersion(x.description.replace(/([a-z]|[A-Z]|\s)+/, "").replace(/(\s+r|\s+b[0-9]+)/, ".").split("."));
		}
	} else {
		try {
			var axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash");
			for (var i=3; axo!=null; i++) {
				axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash."+i);
				PlayerVersion = new com.deconcept.PlayerVersion([i,0,0]);
			}
		} catch(e) {}
		if (reqVer && PlayerVersion.major > reqVer.major) return PlayerVersion; 
		if (!reqVer || ((reqVer.minor != 0 || reqVer.rev != 0) && PlayerVersion.major == reqVer.major) || PlayerVersion.major != 6 || xiInstall) {
			try {
				PlayerVersion = new com.deconcept.PlayerVersion(axo.GetVariable("$version").split(" ")[1].split(","));
			} catch(e) {}
		}
	}
	return PlayerVersion;
}
com.deconcept.PlayerVersion = function(arrVersion){
	this.major = parseInt(arrVersion[0]) || 0;
	this.minor = parseInt(arrVersion[1]) || 0;
	this.rev = parseInt(arrVersion[2]) || 0;
}
com.deconcept.PlayerVersion.prototype.versionIsValid = function(fv){
	if(this.major < fv.major) return false;
	if(this.major > fv.major) return true;
	if(this.minor < fv.minor) return false;
	if(this.minor > fv.minor) return true;
	if(this.rev < fv.rev) return false;
	return true;
}
com.deconcept.util = {
	getRequestParameter: function(param){
		var q = document.location.search || document.location.href.hash;
		if(q){
			var startIndex = q.indexOf(param +"=");
			var endIndex = (q.indexOf("&", startIndex) > -1) ? q.indexOf("&", startIndex) : q.length;
			if (q.length > 1 && startIndex > -1) { return q.substring(q.indexOf("=", startIndex)+1, endIndex); }
		}
	return "";
	},
	removeChildren: function(n){ while (n.hasChildNodes()) n.removeChild(n.firstChild);	}
}

if (Array.prototype.push == null) { Array.prototype.push = function(item) { this[this.length] = item; return this.length; }}
var getQueryParamValue = com.deconcept.util.getRequestParameter;
var SWFObject = com.deconcept.SWFObject;
var SWFObjectUtil = com.deconcept.SWFObjectUtil;
