1/* 2Anarchy Media Player 2.0 3http://an-archos.com/anarchy-media-player 4Makes any mp3, Flash flv, Quicktime mov, mp4, m4v, m4a, m4b and 3gp as well as wmv, avi and asf links playable directly on your webpage while optionally hiding the download link. Flash movies, including YouTube etc, use SWFObject javascript embeds - usage examples at http://blog.deconcept.com/swfobject/#examples 5Anarchy.js is based on various hacks of excellent scripts - Del.icio.us mp3 Playtagger javascript (http://del.icio.us/help/playtagger) as used in Taragana's Del.icio.us mp3 Player Plugin (http://blog.taragana.com/index.php/archive/taraganas-delicious-mp3-player-wordpress-plugin/) - Jeroen Wijering's Flv Player (http://www.jeroenwijering.com/?item=Flash_Video_Player) with Tradebit modifications (http://www.tradebit.com) - EMFF inspired WP Audio Player mp3 player (http://www.1pixelout.net/code/audio-player-wordpress-plugin). Flash embeds via Geoff Stearns' excellent standards compliant Flash detection and embedding JavaScript (http://blog.deconcept.com/swfobject/). 6Distributed under GNU General Public License. 7 8For non-WP pages call script in <HEAD>: 9<script type="text/javascript" src="http://PATH TO PLAYER DIRECTORY/anarchy_media/anarchy.js"></script> 10*/ 11// Configure plugin options below 12 13var anarchy_url = 'http://PATH_TO/anarchy_media' // http address for the anarchy-media folder (no trailing slash). 14var accepted_domains=new Array("") // OPTIONAL - Restrict script use to your domains. Add root domain name (minus 'http' or 'www') in quotes, add extra domains in quotes and separated by comma. 15var viddownloadLink = 'none' // Download link for flv and wmv links: One of 'none' (to turn downloading off) or 'inline' to display the link. ***Use $qtkiosk for qt***. 16 17// MP3 Flash player options 18var playerloop = 'no' // Loop the music ... yes or no? 19var mp3downloadLink = 'none' // Download for mp3 links: One of 'none' (to turn downloading off) or 'inline' to display the link. 20 21// Hex colours for the MP3 Flash Player (minus the #) 22var playerbg ='DDDDDD' // Background colour 23var playerleftbg = 'BBBBBB' // Left background colour 24var playerrightbg = 'BBBBBB' // Right background colour 25var playerrightbghover = '666666' // Right background colour (hover) 26var playerlefticon = '000000' // Left icon colour 27var playerrighticon = '000000' // Right icon colour 28var playerrighticonhover = 'FFFFFF' // Right icon colour (hover) 29var playertext = '333333' // Text colour 30var playerslider = '666666' // Slider colour 31var playertrack = '999999' // Loader bar colour 32var playerloader = '666666' // Progress track colour 33var playerborder = '333333' // Progress track border colour 34 35// Flash video player options 36var flvwidth = '400' // Width of the flv player 37var flvheight = '320' // Height of the flv player (allow 20px for controller) 38var flvfullscreen = 'true' // Show fullscreen button, true or false (no auto return on Safari, double click in IE6) 39 40//Quicktime player options 41var qtloop = 'false' // Loop Quicktime movies: true or false. 42var qtwidth = '400' // Width of your Quicktime player 43var qtheight = '316' // Height of your Quicktime player (allow 16px for controller) 44var qtkiosk = 'false' // Allow downloads, false = yes, true = no. 45// Required Quicktime version - To set the minimum version higher than 6 go to Quicktime player section below and edit (quicktimeVersion >= 6) on or around lines 228 and 266. 46 47//WMV player options 48var wmvwidth = '400' // Width of your WMV player 49var wmvheight = '372' // Height of your WMV player (allow 45px for WMV controller or 16px if QT player - ignored by WinIE) 50 51// CSS styles 52var mp3playerstyle = 'vertical-align:bottom; margin:10px 0 5px 2px;' // Flash mp3 player css style 53var mp3imgmargin = '0.5em 0.5em -4px 5px' // Mp3 button image css margins 54var vidimgmargin = '0' // Video image placeholder css margins 55 56/* ------------------ End configuration options --------------------- */ 57 58/* --------------------- Domain Check ----------------------- */ 59//Lite protection only, you can also use .htaccss if you're paranoid - see http://evolt.org/node/60180 60var domaincheck=document.location.href //retrieve the current URL of user browser
61var accepted_ok=false //set acess to false by default 62 63if (domaincheck.indexOf("http")!=-1){ //if this is a http request 64for (r=0;r<accepted_domains.length;r++){ 65if (domaincheck.indexOf(accepted_domains[r])!=-1){ //if a match is found 66accepted_ok=true //set access to true, and break out of loop 67break 68} 69} 70} 71else 72accepted_ok=true 73 74if (!accepted_ok){ 75alert("You\'re not allowed to directly link to this .js file on our server!") 76history.back(-1) 77} 78 79/* --------------------- Flash MP3 audio player ----------------------- */ 80if(typeof(Anarchy) == 'undefined') Anarchy = {} 81Anarchy.Mp3 = { 82 playimg: null, 83 player: null, 84 go: function() { 85 var all = document.getElementsByTagName('a') 86 for (var i = 0, o; o = all[i]; i++) { 87 if(o.href.match(/\.mp3$/i) && o.className!="amplink") { 88 o.style.display = mp3downloadLink 89 var img = document.createElement('img') 90 img.src = anarchy_url+'/images/audio_mp3_play.gif'; img.title = 'Click to listen' 91 img.style.margin = mp3imgmargin 92 img.style.border = 'none' 93 img.style.cursor = 'pointer' 94 img.onclick = Anarchy.Mp3.makeToggle(img, o.href) 95 o.parentNode.insertBefore(img, o) 96 }}}, 97 toggle: function(img, url) { 98 if (Anarchy.Mp3.playimg == img) Anarchy.Mp3.destroy() 99 else { 100 if (Anarchy.Mp3.playimg) Anarchy.Mp3.destroy() 101 img.src = anarchy_url+'/images/audio_mp3_stop.gif'; Anarchy.Mp3.playimg = img; 102 Anarchy.Mp3.player = document.createElement('span') 103 Anarchy.Mp3.player.innerHTML = '<br /><object style="'+mp3playerstyle+'" classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000"' + 104 'codebase="http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,0,0"' + 105 'width="290" height="24" id="player" align="middle">' + 106 '<param name="wmode" value="transparent" />' + 107 '<param name="allowScriptAccess" value="sameDomain" />' + 108 '<param name="flashVars" value="bg=0x'+playerbg+'&leftbg=0x'+playerleftbg+'&rightbg=0x'+playerrightbg+'&rightbghover=0x'+playerrightbghover+'&lefticon=0x'+playerlefticon+'&righticon=0x'+playerrighticon+'&righticonhover=0x'+playerrighticonhover+'&text=0x'+playertext+'&slider=0x'+playerslider+'&track=0x'+playertrack+'&loader=0x'+playerloader+'&border=0x'+playerborder+'&autostart=yes&loop='+playerloop+'&soundFile='+url+'" />' + 109 '<param name="movie" value="'+anarchy_url+'/player.swf" /><param name="quality" value="high" />' + 110 '<embed style="'+mp3playerstyle+'" src="'+anarchy_url+'/player.swf" flashVars="bg=0x'+playerbg+'&leftbg=0x'+playerleftbg+'&rightbg=0x'+playerrightbg+'&rightbghover=0x'+playerrightbghover+'&lefticon=0x'+playerlefticon+'&righticon=0x'+playerrighticon+'&righticonhover=0x'+playerrighticonhover+'&text=0x'+playertext+'&slider=0x'+playerslider+'&track=0x'+playertrack+'&loader=0x'+playerloader+'&border=0x'+playerborder+'&autostart=yes&loop='+playerloop+'&soundFile='+url+'" '+ 111 'quality="high" wmode="transparent" width="290" height="24" name="player"' + 112 'align="middle" allowScriptAccess="sameDomain" type="application/x-shockwave-flash"' + 113 ' pluginspage="http://www.macromedia.com/go/getflashplayer" /></object><br />' 114 img.parentNode.insertBefore(Anarchy.Mp3.player, img.nextSibling) 115 }}, 116 destroy: function() { 117 Anarchy.Mp3.playimg.src = anarchy_url+'/images/audio_mp3_play.gif'; Anarchy.Mp3.playimg = null 118 Anarchy.Mp3.player.removeChild(Anarchy.Mp3.player.firstChild); Anarchy.Mp3.player.parentNode.removeChild(Anarchy.Mp3.player); Anarchy.Mp3.player = null 119 }, 120 makeToggle: function(img, url) { return function(){ Anarchy.Mp3.toggle(img, url) }} 121} 122 123/* ----------------- Flash flv video player ----------------------- */ 124 125if(typeof(Anarchy) == 'undefined') Anarchy = {} 126Anarchy.FLV = { 127 go: function() { 128 var all = document.getElementsByTagName('a') 129 for (var i = 0, o; o = all[i]; i++) { 130 if(o.href.match(/\.flv$/i) && o.className!="amplink") { 131 o.style.display = viddownloadLink 132 url = o.href 133 var flvplayer = document.createElement('span') 134 flvplayer.innerHTML = '<object type="application/x-shockwave-flash" wmode="transparent" data="'+anarchy_url+'/flvplayer.swf?click='+anarchy_url+'/images/flvplaybutton.jpg&file='+url+'&showfsbutton='+flvfullscreen+'" height="'+flvheight+'" width="'+flvwidth+'">' + 135 '<param name="movie" value="'+anarchy_url+'/flvplayer.swf?click='+anarchy_url+'/images/flvplaybutton.jpg&file='+url+'&showfsbutton='+flvfullscreen+'"> <param name="wmode" value="transparent">' + 136 '<embed src="'+anarchy_url+'/flvplayer.swf?file='+url+'&click='+anarchy_url+'/images/flvplaybutton.jpg&&showfsbutton='+flvfullscreen+'" ' + 137 'width="'+flvwidth+'" height="'+flvheight+'" name="flvplayer" align="middle" ' + 138 'play="true" loop="false" quality="high" allowScriptAccess="sameDomain" ' + 139 'type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer">' + 140 '</embed></object><br />' 141 o.parentNode.insertBefore(flvplayer, o) 142 }}}} 143 144/* ----------------------- QUICKTIME DETECT --------------------------- 145// Bits of code by Chris Nott (chris[at]dithered[dot]com) and 146// Geoff Stearns ([email protected], http://www.deconcept.com/) 147--------------------------------------------------------------------- */ 148 149function getQuicktimeVersion() { 150var n=navigator; 151var nua=n.userAgent; 152var saf=(nua.indexOf('Safari')!=-1); 153var quicktimeVersion = 0; 154 155if (saf) { 156quicktimeVersion='9.0'; 157} 158else { 159var agent = navigator.userAgent.toLowerCase(); 160 161 // NS3+, Opera3+, IE5+ Mac (support plugin array): check for Quicktime plugin in plugin array 162 if (navigator.plugins != null && navigator.plugins.length > 0) { 163 for (i=0; i < navigator.plugins.length; i++ ) { 164 var plugin =navigator.plugins[i]; 165 if (plugin.name.indexOf("QuickTime") > -1) { 166 quicktimeVersion = parseFloat(plugin.name.substring(18)); 167 } 168 } 169 } 170 else if (window.ActiveXObject) { 171 execScript('on error resume next: qtObj = IsObject(CreateObject("QuickTime.QuickTime.4"))','VBScript'); 172 if (qtObj == true) { 173 quicktimeVersion = 100; 174 } 175 else { 176 quicktimeVersion = 0; 177 } 178 } 179 } 180 return quicktimeVersion; 181} 182 183/* ----------------------- Quicktime player ------------------------ */ 184 185if(typeof(Anarchy) == 'undefined') Anarchy = {} 186Anarchy.MOV = { 187 playimg: null, 188 player: null, 189 go: function() { 190 var all = document.getElementsByTagName('a') 191 Anarchy.MOV.preview_images = { } 192 for (var i = 0, o; o = all[i]; i++) { 193 if(o.href.match(/\.mov$|\.mp4$|\.m4v$|\.m4b$|\.3gp$/i) && o.className!="amplink") { 194 o.style.display = 'none' 195 var img = document.createElement('img') 196 Anarchy.MOV.preview_images[i] = document.createElement('img') ; 197 Anarchy.MOV.preview_images[i].src = o.href + '.jpg' ; 198 Anarchy.MOV.preview_images[i].defaultImg = img ; 199 Anarchy.MOV.preview_images[i].replaceDefault = function() { 200 this.defaultImg.src = this.src ; 201 } 202 Anarchy.MOV.preview_images[i].onload = Anarchy.MOV.preview_images[i].replaceDefault ; 203 img.src = anarchy_url+'/images/vid_play.gif' 204 img.title = 'Click to play video' 205 img.style.margin = vidimgmargin 206 img.style.padding = '0px' 207 img.style.display = 'block' 208 img.style.border = 'none' 209 img.style.cursor = 'pointer' 210 img.height = qtheight 211 img.width = qtwidth
212 img.onclick = Anarchy.MOV.makeToggle(img, o.href) 213 o.parentNode.insertBefore(img, o) 214 }}}, 215 toggle: function(img, url) { 216 if (Anarchy.MOV.playimg == img) Anarchy.MOV.destroy() 217 else { 218 if (Anarchy.MOV.playimg) Anarchy.MOV.destroy() 219 img.src = anarchy_url+'/images/vid_play.gif' 220 img.style.display = 'none'; 221 Anarchy.MOV.playimg = img; 222 Anarchy.MOV.player = document.createElement('p') 223 var quicktimeVersion = getQuicktimeVersion() 224 if (quicktimeVersion >= 6) { 225 Anarchy.MOV.player.innerHTML = '<embed src="'+url+'" width="'+qtwidth+'" height="'+qtheight+'" loop="'+qtloop+'" autoplay="true" controller="true" border="0" type="video/quicktime" kioskmode="'+qtkiosk+'" scale="tofit"></embed><br />' 226 img.parentNode.insertBefore(Anarchy.MOV.player, img.nextSibling) 227 } 228 else 229 Anarchy.MOV.player.innerHTML = '<a href="http://www.apple.com/quicktime/download/" target="_blank"><img src="'+anarchy_url+'/images/getqt.jpg"></a>' 230 img.parentNode.insertBefore(Anarchy.MOV.player, img.nextSibling) 231 }}, 232 destroy: function() { 233 }, 234 makeToggle: function(img, url) { return function(){ Anarchy.MOV.toggle(img, url) }} 235} 236 237/* --------------------- MPEG 4 Audio Quicktime player ---------------------- */ 238 239if(typeof(Anarchy) == 'undefined') Anarchy = {} 240Anarchy.M4a = { 241 playimg: null, 242 player: null, 243 go: function() { 244 var all = document.getElementsByTagName('a') 245 for (var i = 0, o; o = all[i]; i++) { 246 if(o.href.match(/\.m4a$/i) && o.className!="amplink") { 247 o.style.display = 'none' 248 var img = document.createElement('img') 249 img.src = anarchy_url+'/images/audio_mp4_play.gif'; img.title = 'Click to listen' 250 img.style.margin = mp3imgmargin 251 img.style.border = 'none' 252 img.style.cursor = 'pointer' 253 img.onclick = Anarchy.M4a.makeToggle(img, o.href) 254 o.parentNode.insertBefore(img, o) 255 }}}, 256 toggle: function(img, url) { 257 if (Anarchy.M4a.playimg == img) Anarchy.M4a.destroy() 258 else { 259 if (Anarchy.M4a.playimg) Anarchy.M4a.destroy() 260 img.src = anarchy_url+'/images/audio_mp4_stop.gif'; Anarchy.M4a.playimg = img; 261 Anarchy.M4a.player = document.createElement('p') 262 var quicktimeVersion = getQuicktimeVersion() 263 if (quicktimeVersion >= 6) { 264 Anarchy.M4a.player.innerHTML = '<embed src="'+url+'" width="160" height="16" loop="'+qtloop+'" autoplay="true" controller="true" border="0" type="video/quicktime" kioskmode="'+qtkiosk+'" ></embed><br />' 265 img.parentNode.insertBefore(Anarchy.M4a.player, img.nextSibling) 266 } 267 else 268 Anarchy.M4a.player.innerHTML = '<a href="http://www.apple.com/quicktime/download/" target="_blank"><img src="'+anarchy_url+'/images/getqt.jpg"></a>' 269 img.parentNode.insertBefore(Anarchy.M4a.player, img.nextSibling) 270 }}, 271 destroy: function() { 272 Anarchy.M4a.playimg.src = anarchy_url+'/images/audio_mp4_play.gif'; Anarchy.M4a.playimg = null 273 Anarchy.M4a.player.removeChild(Anarchy.M4a.player.firstChild); Anarchy.M4a.player.parentNode.removeChild(Anarchy.M4a.player); Anarchy.M4a.player = null 274 }, 275 makeToggle: function(img, url) { return function(){ Anarchy.M4a.toggle(img, url) }} 276} 277 278/* ----------------------- WMV player -------------------------- */ 279 280if(typeof(Anarchy) == 'undefined') Anarchy = {} 281Anarchy.WMV = { 282 playimg: null, 283 player: null, 284 go: function() { 285 var all = document.getElementsByTagName('a') 286 for (var i = 0, o; o = all[i]; i++) { 287 if(o.href.match(/\.asf$|\.avi$|\.wmv$/i) && o.className!="amplink") { 288 o.style.display = viddownloadLink 289 var img = document.createElement('img') 290 img.src = anarchy_url+'/images/vid_play.gif'; img.title = 'Click to play video' 291 img.style.margin = '0px' 292 img.style.padding = '0px' 293 img.style.display = 'block' 294 img.style.border = 'none' 295 img.style.cursor = 'pointer' 296 img.height = qtheight 297 img.width = qtwidth 298 img.onclick = Anarchy.WMV.makeToggle(img, o.href) 299 o.parentNode.insertBefore(img, o) 300 }}}, 301 toggle: function(img, url) { 302 if (Anarchy.WMV.playimg == img) Anarchy.WMV.destroy() 303 else { 304 if (Anarchy.WMV.playimg) Anarchy.WMV.destroy() 305 img.src = anarchy_url+'/images/vid_play.gif' 306 img.style.display = 'none'; 307 Anarchy.WMV.playimg = img; 308 Anarchy.WMV.player = document.createElement('span') 309 if(navigator.userAgent.indexOf('Mac') != -1) { 310 Anarchy.WMV.player.innerHTML = '<embed src="'+url+'" width="'+qtwidth+'" height="'+qtheight+'" loop="'+qtloop+'" autoplay="true" controller="true" border="0" type="video/quicktime" kioskmode="'+qtkiosk+'" scale="tofit" pluginspage="http://www.apple.com/quicktime/download/"></embed><br />' 311 img.parentNode.insertBefore(Anarchy.WMV.player, img.nextSibling) 312 } else { 313 if (navigator.plugins && navigator.plugins.length) { 314 Anarchy.WMV.player.innerHTML = '<embed type="application/x-mplayer2" src="'+url+'" ' + 315 'showcontrols="1" ShowStatusBar="1" autostart="1" displaySize="4"' + 316 'pluginspage="http://www.microsoft.com/Windows/Downloads/Contents/Products/MediaPlayer/"' + 317 'width="'+wmvwidth+'" height="'+wmvheight+'">' + 318 '</embed><br />' 319 img.parentNode.insertBefore(Anarchy.WMV.player, img.nextSibling) 320 } else { 321 Anarchy.WMV.player.innerHTML = '<object classid="CLSID:6BF52A52-394A-11d3-B153-00C04F79FAA6" width="'+wmvwidth+'" height="'+wmvheight+'" id="player"> ' + 322 '<param name="url" value="'+url+'" /> ' + 323 '<param name="autoStart" value="True" /> ' + 324 '<param name="stretchToFit" value="True" /> ' + 325 '<param name="showControls" value="True" /> ' + 326 '<param name="ShowStatusBar" value="True" /> ' + 327 '<embed type="application/x-mplayer2" src="'+url+'" ' + 328 'showcontrols="1" ShowStatusBar="1" autostart="1" displaySize="4"' + 329 'pluginspage="http://www.microsoft.com/Windows/Downloads/Contents/Products/MediaPlayer/"' + 330 'width="'+wmvwidth+'" height="'+wmvheight+'">' + 331 '</embed>' + 332 '</object><br />' 333 img.parentNode.insertBefore(Anarchy.WMV.player, img.nextSibling) 334 }} 335 }}, 336 destroy: function() { 337 Anarchy.WMV.playimg.src = anarchy_url+'/images/vid_play.gif' 338 Anarchy.WMV.playimg.style.display = 'inline'; Anarchy.WMV.playimg = null 339 Anarchy.WMV.player.removeChild(Anarchy.WMV.player.firstChild); 340 Anarchy.WMV.player.parentNode.removeChild(Anarchy.WMV.player); 341 Anarchy.WMV.player = null 342 }, 343 makeToggle: function(img, url) { return function(){ Anarchy.WMV.toggle(img, url) }} 344} 345 346/* ----------------- Trigger players onload ----------------------- */ 347 348Anarchy.addLoadEvent = function(f) { var old = window.onload 349 if (typeof old != 'function') window.onload = f 350 else { window.onload = function() { old(); f() }} 351} 352 353Anarchy.addLoadEvent(Anarchy.Mp3.go) 354Anarchy.addLoadEvent(Anarchy.FLV.go) 355Anarchy.addLoadEvent(Anarchy.MOV.go) 356Anarchy.addLoadEvent(Anarchy.M4a.go) 357Anarchy.addLoadEvent(Anarchy.WMV.go) 358 359/** 360 * SWFObject v1.5: Flash Player detection and embed - http://blog.deconcept.com/swfobject/ 361 * 362 * SWFObject is (c) 2006 Geoff Stearns and is released under the MIT License: 363 * http://www.opensource.org/licenses/mit-license.php 364 * 365 */ 366if(typeof deconcept=="undefined"){var deconcept=new Object();}if(typeof deconcept.util=="undefined"){deconcept.util=new Object();}if(typeof deconcept.SWFObjectUtil=="undefined"){deconcept.SWFObjectUtil=new Object();}deconcept.SWFObject=function(_1,id,w,h,_5,c,_7,_8,_9,_a){if(!document.getElementById){return;}this.DETECT_KEY=_a?_a:"detectflash";this.skipDetect=deconcept.util.getRequestParameter(this.DETECT_KEY);this.params=new Object();this.variables=new Object();this.attributes=new Array();if(_1){this.setAttribute("swf",_1);}if(id){this.setAttribute("id",id);}if(w){this.setAttribute("width",w);}if(h){this.setAttribute("height",h);}if(_5){this.setAttribute("version",new deconcept.PlayerVersion(_5.toString().split(".")));}this.installedVer=deconcept.SWFObjectUtil.getPlayerVersion();if(!window.opera&&document.all&&this.installedVer.major>7){deconcept.SWFObject.doPrepUnload=true;}if(c){this.addParam("bgcolor",c);}var q=_7?_7:"high";
366this.addParam("quality",q);this.setAttribute("useExpressInstall",false);this.setAttribute("doExpressInstall",false);var _c=(_8)?_8:window.location;this.setAttribute("xiRedirectUrl",_c);this.setAttribute("redirectUrl","");if(_9){this.setAttribute("redirectUrl",_9);}};deconcept.SWFObject.prototype={useExpressInstall:function(_d){this.xiSWFPath=!_d?"expressinstall.swf":_d;this.setAttribute("useExpressInstall",true);},setAttribute:function(_e,_f){this.attributes[_e]=_f;},getAttribute:function(_10){return this.attributes[_10];},addParam:function(_11,_12){this.params[_11]=_12;},getParams:function(){return this.params;},addVariable:function(_13,_14){this.variables[_13]=_14;},getVariable:function(_15){return this.variables[_15];},getVariables:function(){return this.variables;},getVariablePairs:function(){var _16=new Array();var key;var _18=this.getVariables();for(key in _18){_16.push(key+"="+_18[key]);}return _16;},getSWFHTML:function(){var _19="";if(navigator.plugins&&navigator.mimeTypes&&navigator.mimeTypes.length){if(this.getAttribute("doExpressInstall")){this.addVariable("MMplayerType","PlugIn");this.setAttribute("swf",this.xiSWFPath);}_19="<embed type=\"application/x-shockwave-flash\" src=\""+this.getAttribute("swf")+"\" width=\""+this.getAttribute("width")+"\" height=\""+this.getAttribute("height")+"\"";_19+=" id=\""+this.getAttribute("id")+"\" name=\""+this.getAttribute("id")+"\" ";var _1a=this.getParams();for(var key in _1a){_19+=[key]+"=\""+_1a[key]+"\" ";}var _1c=this.getVariablePairs().join("&");if(_1c.length>0){_19+="flashvars=\""+_1c+"\"";}_19+="/>";}else{if(this.getAttribute("doExpressInstall")){this.addVariable("MMplayerType","ActiveX");this.setAttribute("swf",this.xiSWFPath);}_19="<object id=\""+this.getAttribute("id")+"\" classid=\"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000\" width=\""+this.getAttribute("width")+"\" height=\""+this.getAttribute("height")+"\">";_19+="<param name=\"movie\" value=\""+this.getAttribute("swf")+"\" />";var _1d=this.getParams();for(var key in _1d){_19+="<param name=\""+key+"\" value=\""+_1d[key]+"\" />";}var _1f=this.getVariablePairs().join("&");if(_1f.length>0){_19+="<param name=\"flashvars\" value=\""+_1f+"\" />";}_19+="</object>";}return _19;},write:function(_20){if(this.getAttribute("useExpressInstall")){var _21=new deconcept.PlayerVersion([6,0,65]);if(this.installedVer.versionIsValid(_21)&&!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);}}if(this.skipDetect||this.getAttribute("doExpressInstall")||this.installedVer.versionIsValid(this.getAttribute("version"))){var n=(typeof _20=="string")?document.getElementById(_20):_20;n.innerHTML=this.getSWFHTML();return true;}else{if(this.getAttribute("redirectUrl")!=""){document.location.replace(this.getAttribute("redirectUrl"));}}return false;}};deconcept.SWFObjectUtil.getPlayerVersion=function(){var _23=new deconcept.PlayerVersion([0,0,0]);if(navigator.plugins&&navigator.mimeTypes.length){var x=navigator.plugins["Shockwave Flash"];if(x&&x.description){_23=new deconcept.PlayerVersion(x.description.replace(/([a-zA-Z]|\s)+/,"").replace(/(\s+r|\s+b[0-9]+)/,".").split("."));}}else{if(navigator.userAgent&&navigator.userAgent.indexOf("Windows CE")>=0){var axo=1;var _26=3;while(axo){try{_26++;axo=new ActiveXObject("ShockwaveFlash.ShockwaveFlash."+_26);_23=new deconcept.PlayerVersion([_26,0,0]);}catch(e){axo=null;}}}else{try{var axo=new ActiveXObject("ShockwaveFlash.ShockwaveFlash.7");}catch(e){try{var axo=new ActiveXObject("ShockwaveFlash.ShockwaveFlash.6");_23=new deconcept.PlayerVersion([6,0,21]);axo.AllowScriptAccess="always";}catch(e){if(_23.major==6){return _23;}}try{axo=new ActiveXObject("ShockwaveFlash.ShockwaveFlash");}catch(e){}}if(axo!=null){_23=new deconcept.PlayerVersion(axo.GetVariable("$version").split(" ")[1].split(","));}}}return _23;};deconcept.PlayerVersion=function(_29){this.major=_29[0]!=null?parseInt(_29[0]):0;this.minor=_29[1]!=null?parseInt(_29[1]):0;this.rev=_29[2]!=null?parseInt(_29[2]):0;};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;};deconcept.util={getRequestParameter:function(_2b){var q=document.location.search||document.location.hash;if(_2b==null){return q;}if(q){var _2d=q.substring(1).split("&");for(var i=0;i<_2d.length;i++){if(_2d[i].substring(0,_2d[i].indexOf("="))==_2b){return _2d[i].substring((_2d[i].indexOf("=")+1));}}}return "";}};deconcept.SWFObjectUtil.cleanupSWFs=function(){var _2f=document.getElementsByTagName("OBJECT");for(var i=_2f.length-1;i>=0;i--){_2f[i].style.display="none";
366for(var x in _2f[i]){if(typeof _2f[i][x]=="function"){_2f[i][x]=function(){};}}}};if(deconcept.SWFObject.doPrepUnload){deconcept.SWFObjectUtil.prepUnload=function(){__flash_unloadHandler=function(){};__flash_savedUnloadHandler=function(){};window.attachEvent("onunload",deconcept.SWFObjectUtil.cleanupSWFs);};window.attachEvent("onbeforeunload",deconcept.SWFObjectUtil.prepUnload);}if(Array.prototype.push==null){Array.prototype.push=function(_32){this[this.length]=_32;return this.length;};}if(!document.getElementById&&document.all){document.getElementById=function(id){return document.all["id"];};}var getQueryParamValue=deconcept.util.getRequestParameter;var FlashObject=deconcept.SWFObject;var SWFObject=deconcept.SWFObject;
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.