/**
 * flashembed 0.31. Adobe Flash embedding script
 *
 * http://flowplayer.org/tools/flash-embed.html
 *
 * Copyright (c) 2008 Tero Piirainen (tipiirai@gmail.com)
 *
 * Released under the MIT License:
 * http://www.opensource.org/licenses/mit-license.php
 *
 * >> Basically you can do anything you want but leave this header as is <<
 *
 * version 0.01 - 03/11/2008
 * version 0.31 - Tue Jul 22 2008 06:30:31 GMT+0200 (GMT+02:00)
 */

function flashembed(root,userParams,flashvars) {

	function getHTML() {
		var html="";
		if(typeof flashvars=='function') {
			flashvars=flashvars();
		}
		if(navigator.plugins&&navigator.mimeTypes&&navigator.mimeTypes.length) {
			html='<embed type="application/x-shockwave-flash" ';
			if(params.id) {
				extend(params,
				 	   {name:params.id}
				 	  );
			}
			for (var key in params) {
				if(params[key]!==null) {
					html+=[key]+'="'+params[key]+'"\n\t';
				}
			}
			if(flashvars) {
				html+='flashvars=\''+concatVars(flashvars)+'\'';
			}
			html+='/>';
		}
		else {
			html='<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" ';
			html+='width="'+params.width+'" height="'+params.height+'"';
			if(!params.id&&document.all) {
				params.id="_"+(""+Math.random()).substring(5);
			}
			if(params.id) {
				html+=' id="'+params.id+'"';
			}
			html+='>';html+='\n\t<param name="movie" value="'+params.src+'" />';
			params.id=params.src=params.width=params.height=null;
			for (var k in params) {
				if(params[k]!==null) {
					html+='\n\t<param name="'+k+'" value="'+params[k]+'" />';
				}
			}
			if(flashvars) {
				html+='\n\t<param name="flashvars" value=\''+concatVars(flashvars)+'\' />';
			}
			html+="</object>";
			if(debug) {
				alert(html);
			}
		}
		return html;
	}

	function init(name) {
		var timer=setInterval(
			function() {
				var doc=document;
				var el=doc.getElementById(name);
				if(el) {
					flashembed(el,userParams,flashvars);
					clearInterval(timer);
				}else if(doc&&doc.getElementsByTagName&&doc.getElementById&&doc.body) {
					clearInterval(timer);
				}
				clearInterval(timer);
			}
			,13);
		return true;
	}

	function extend(to,from) {
		if(from) {
			for(key in from) {
				if(from.hasOwnProperty(key)) {
					to[key]=from[key];
				}
			}
		}
	}

	var params={	src:'#',
					width:'100%',
					height:'100%',
					version:null,
					onFail:null,
					expressInstall:null,
					debug:false,
					bgcolor:'#ffffff',
					allowfullscreen:true,
					allowscriptaccess:'always',
					quality:'high',
					type:'application/x-shockwave-flash',
					pluginspage:'http://www.adobe.com/go/getflashplayer'};
	if(typeof userParams=='string') {
		userParams={src:userParams};
	}
	extend(params,userParams);
	var version=flashembed.getVersion();
	var required=params.version;
	var express=params.expressInstall;
	var debug=params.debug;

	if(typeof root=='string') {
		var el=document.getElementById(root);
		if(el) {
			root=el;
		}else {
			return init(root);
		}
	}

	if(!root) {
		return;
	}
	if(!required||flashembed.isSupported(required)) {
		params.onFail=params.version=params.expressInstall=params.debug=null;
		root.innerHTML=getHTML();
		return root.firstChild;
	}else if(params.onFail) {
		var ret=params.onFail.call(params,flashembed.getVersion(),flashvars);
		if(ret){
			root.innerHTML=ret;
		}
	}else if(required&&express&&flashembed.isSupported([6,65])) {
		extend(params,{src:express});
		flashvars={	MMredirectURL:location.href,
					MMplayerType:'PlugIn',
					MMdoctitle:document.title};
		root.innerHTML=getHTML();
	}else {
		if(root.innerHTML.replace(/\s/g,'')!=='') {}
		else{
			root.innerHTML="<h2>Flash version "+required+" or greater is required</h2>"+"<h3>"+(version[0]>0?"Your version is "+version:"You have no flash plugin installed")+"</h3>"+"<p>Download latest version from <a href='"+params.pluginspage+"'>here</a></p>";
		}
  	}
  	alert(root.innerHTML);

	function concatVars(vars) {
		var out="";
		for(var key in vars) {
			if(vars[key]) {
				out+=[key]+'='+asString(vars[key])+'&';
			}
		}
		return out.substring(0,out.length-1);
	}

	function asString(obj) {
		switch(typeOf(obj)) {
			case'string':	return'"'+obj.replace(new RegExp('(["\\\\])','g'),'\\$1')+'"';
			case'array':	return'['+map(obj,function(el){return asString(el);}).join(',')+']';
			case'function':	return'"function()"';
			case'object':	var str=[];
							for(var prop in obj){
								if(obj.hasOwnProperty(prop)){
									str.push('"'+prop+'":'+asString(obj[prop]));
								}
							}
							return'{'+str.join(',')+'}';
		}
		return String(obj).replace(/\s/g," ").replace(/\'/g,"\"");
	}

	function typeOf(obj) {
		if(obj===null||obj===undefined){
			return false;
		}
		var type=typeof obj;
		return(type=='object'&&obj.push)?'array':type;
	}

	if(window.attachEvent){
		window.attachEvent("onbeforeunload",
							function() {
								__flash_unloadHandler=function(){};
								__flash_savedUnloadHandler=function(){};
							}
						   );
	}

	function map(arr,func) {
		var newArr=[];
		for(var i in arr) {
			if(arr.hasOwnProperty(i)) {
				newArr[i]=func(arr[i]);
			}
		}
		return newArr;
	}

	return root;

}

if(typeof jQuery=='function') {
	(function($) {
		$.fn.extend(
			{
				flashembed:
				function(params,flashvars) {
					return this.each(
						function(){
							flashembed(this,params,flashvars);
						}
					);
				}
			}
		);
	}
	)
	(jQuery);
}

flashembed=flashembed||{};

flashembed.getVersion=function() {
	var version=[0,0];
	if(navigator.plugins&&typeof navigator.plugins["Shockwave Flash"]=="object") {
		var _d=navigator.plugins["Shockwave Flash"].description;
		if(typeof _d!="undefined") {
			_d=_d.replace(/^.*\s+(\S+\s+\S+$)/,"$1");
			var _m=parseInt(_d.replace(/^(.*)\..*$/,"$1"),10);
			var _r=/r/.test(_d)?parseInt(_d.replace(/^.*r(.*)$/,"$1"),10):0;version=[_m,_r];
		}
	}else if(window.ActiveXObject) {
		try {
			var _a=new ActiveXObject("ShockwaveFlash.ShockwaveFlash.7");
		}
		catch(e) {
			try {
				_a=new ActiveXObject("ShockwaveFlash.ShockwaveFlash.6");
				version=[6,0];_a.AllowScriptAccess="always";
			}
			catch(ee) {
				if(version[0]==6) {
					return;
				}
			}
			try {
				_a=new ActiveXObject("ShockwaveFlash.ShockwaveFlash");
			}
			catch(eee) {}
		}
		if(typeof _a=="object") {
			_d=_a.GetVariable("$version");
			if(typeof _d!="undefined") {
				_d=_d.replace(/^\S+\s+(.*)$/,"$1").split(",");
				version=[parseInt(_d[0],10),parseInt(_d[2],10)];
			}
		}
	}
	return version;
};

flashembed.isSupported=function(version) {
	var now=flashembed.getVersion();
	var ret=(now[0]>version[0])||(now[0]==version[0]&&now[1]>=version[1]);
	return ret;
};