/* Copyright (c) 2008 Tero Piirainen (tero@flowplayer.org)
 *
 * $LastChangedDate: 12.03.2008
 * Version: 0.1.1
 * 
 * Tested with: jQuery 1.2.3+
 */

(function($){$.fn.extend({flashembed:function(params,flashvars){return this.each(function(){new $.flashembed(this,params,flashvars)})}});$.flashembed=function(el,params,flashvars){this.init(el,params,flashvars)};$.extend($.flashembed.prototype,{init:function(el,params,flashvars){var p={src:'#',width:320,height:240,expressInstall:null,version:null,allowfullscreen:true,allowscriptaccess:'always',quality:'high',bgcolor:'#ffffff',type:'application/x-shockwave-flash',pluginspage:'http://www.adobe.com/go/getflashplayer'};$.extend(p,params);this.id=p.id;this.width=p.width;this.height=p.height;this.src=p.src;this.version=this.getVersion();var required=p.version;var express=p.expressInstall;p.width=p.id=p.height=p.src=p.version=p.expressInstall=null;this.params=p;this.flashvars=flashvars;if(!required||this.isSupported(required)){$(el).html(this.getHTML()).show()}else if(required&&express&&this.isSupported([6,0,65])){$.extend(this.params,{src:express});this.flashvars={MMredirectURL:location.href,MMplayerType:'PlugIn',MMdoctitle:$('title').text()};$(el).html(this.getHTML()).show()}else{el=$(el);if(el.html()!='')el.show();else el.html("<h2>Flash version "+required+" or greater is required</h2><h3>"+(this.version[0]>0?"Your version is "+this.version:"You have no flash plugin installed")+"</h3><p>Download latest version from <a href='"+this.params.pluginspage+"'>here</a></p>")}},isSupported:function(version){var my=this.version;return my[0]>=version[0]&&my[1]>=version[1]&&(my[2]==null||my[2]>=version[2])},getHTML:function(){var html="";if(navigator.plugins&&navigator.mimeTypes&&navigator.mimeTypes.length){html='<embed type="application/x-shockwave-flash" ';var params={width:this.width,height:this.height,src:this.src,id:this.id};$.extend(params,this.params);for(var key in params){if(params[key]!=null)html+=[key]+'="'+params[key]+'"\n\t'}if(this.flashvars){html+='flashvars=\'';for(var key in this.flashvars){html+=[key]+'='+this.asString(this.flashvars[key])+'&'}html+='\''}html+='/>'}else{html='<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" ';html+='width="'+this.width+'" height="'+this.height+'"';if(this.id)html+=' id="'+this.id+'"';html+='>';html+='\n\t<param name="movie" value="'+this.src+'" />';for(var key in this.params){if(this.params[key]!=null)html+='\n\t<param name="'+key+'" value="'+this.params[key]+'" />'}if(this.flashvars){html+='\n\t<param name="flashvars" value=\'';for(var key in this.flashvars){html+=[key]+'='+this.asString(this.flashvars[key])+'&'}html+='\' />'}html+="</object>"}return html},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},asString:function(obj){var self=this;switch(typeOf(obj)){case'string':return'"'+obj.replace(new RegExp('(["\\\\])','g'),'\\$1')+'"';case'array':return'['+$.map(obj,function(el){return self.asString(el)}).join(',')+']';case'object':var str=[];for(var property in obj){str.push('"'+property+'":'+self.asString(obj[property]))}return'{'+str.join(',')+'}'}return String(obj)}});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(){}})}})(jQuery);
