



<!DOCTYPE html>
<html>
<head>
 <link rel="icon" type="image/vnd.microsoft.icon" href="http://www.gstatic.com/codesite/ph/images/phosting.ico">
 
 <script type="text/javascript">
 
 
 
 
 var codesite_token = null;
 
 
 var CS_env = {"token":null,"assetHostPath":"http://www.gstatic.com/codesite/ph","domainName":null,"assetVersionPath":"http://www.gstatic.com/codesite/ph/14069251744736806309","projectName":"swfobject","projectHomeUrl":"/p/swfobject","absoluteBaseUrl":"http://code.google.com","relativeBaseUrl":"","urlPrefix":"p","loggedInUserEmail":null};
 </script>
 
 
 <title>swfobject.js - 
 swfobject -
 
 
 SWFObject is an easy-to-use and standards-friendly method to embed Flash content, which utilizes one small JavaScript file - Google Project Hosting
 </title>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" >
 <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" >
 
 <meta name="ROBOTS" content="NOARCHIVE">
 
 <link type="text/css" rel="stylesheet" href="http://www.gstatic.com/codesite/ph/14069251744736806309/css/ph_core.css">
 
 <link type="text/css" rel="stylesheet" href="http://www.gstatic.com/codesite/ph/14069251744736806309/css/ph_detail.css" >
 
 
 <link type="text/css" rel="stylesheet" href="http://www.gstatic.com/codesite/ph/14069251744736806309/css/d_sb.css" >
 
 
 
<!--[if IE]>
 <link type="text/css" rel="stylesheet" href="http://www.gstatic.com/codesite/ph/14069251744736806309/css/d_ie.css" >
<![endif]-->
 <style type="text/css">
 .menuIcon.off { background: no-repeat url(http://www.gstatic.com/codesite/ph/images/dropdown_sprite.gif) 0 -42px }
 .menuIcon.on { background: no-repeat url(http://www.gstatic.com/codesite/ph/images/dropdown_sprite.gif) 0 -28px }
 .menuIcon.down { background: no-repeat url(http://www.gstatic.com/codesite/ph/images/dropdown_sprite.gif) 0 0; }
 
 
 
  tr.inline_comment {
 background: #fff;
 vertical-align: top;
 }
 div.draft, div.published {
 padding: .3em;
 border: 1px solid #999; 
 margin-bottom: .1em;
 font-family: arial, sans-serif;
 max-width: 60em;
 }
 div.draft {
 background: #ffa;
 } 
 div.published {
 background: #e5ecf9;
 }
 div.published .body, div.draft .body {
 padding: .5em .1em .1em .1em;
 max-width: 60em;
 white-space: pre-wrap;
 white-space: -moz-pre-wrap;
 white-space: -pre-wrap;
 white-space: -o-pre-wrap;
 word-wrap: break-word;
 font-size: 1em;
 }
 div.draft .actions {
 margin-left: 1em;
 font-size: 90%;
 }
 div.draft form {
 padding: .5em .5em .5em 0;
 }
 div.draft textarea, div.published textarea {
 width: 95%;
 height: 10em;
 font-family: arial, sans-serif;
 margin-bottom: .5em;
 }

 
 .nocursor, .nocursor td, .cursor_hidden, .cursor_hidden td {
 background-color: white;
 height: 2px;
 }
 .cursor, .cursor td {
 background-color: darkblue;
 height: 2px;
 display: '';
 }
 
 
.list {
 border: 1px solid white;
 border-bottom: 0;
}

 </style>
</head>
<body class="t4">
 <script type="text/javascript">
 var _gaq = _gaq || [];
 _gaq.push(
 ['siteTracker._setAccount', 'UA-18071-1'],
 ['siteTracker._trackPageview']);
 
 _gaq.push(
 ['projectTracker._setAccount', 'UA-2311835-2'],
 ['projectTracker._trackPageview']);
 
 (function() {
 var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
 ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
 (document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(ga);
 })();
 </script>
<div class="headbg">
 <div id="gaia">
 

 <span>
 
 <a href="#" id="projects-dropdown" onclick="return false;"><u>My favorites</u> <small>&#9660;</small></a>
 | <a href="https://www.google.com/accounts/ServiceLogin?service=code&amp;ltmpl=phosting&amp;continue=http%3A%2F%2Fcode.google.com%2Fp%2Fswfobject%2Fsource%2Fbrowse%2Ftrunk%2Fswfobject%2Fswfobject.js&amp;followup=http%3A%2F%2Fcode.google.com%2Fp%2Fswfobject%2Fsource%2Fbrowse%2Ftrunk%2Fswfobject%2Fswfobject.js" onclick="_CS_click('/gb/ph/signin');"><u>Sign in</u></a>
 
 </span>

 </div>
 <div class="gbh" style="left: 0pt;"></div>
 <div class="gbh" style="right: 0pt;"></div>
 
 
 <div style="height: 1px"></div>
<!--[if lte IE 7]>
<div style="text-align:center;">
Your version of Internet Explorer is not supported. Try a browser that
contributes to open source, such as <a href="http://www.firefox.com">Firefox</a>,
<a href="http://www.google.com/chrome">Google Chrome</a>, or
<a href="http://code.google.com/chrome/chromeframe/">Google Chrome Frame</a>.
</div>
<![endif]-->




 <table style="padding:0px; margin: 0px 0px 10px 0px; width:100%" cellpadding="0" cellspacing="0">
 <tr style="height: 58px;">
 
 <td id="plogo">
 <a href="/p/swfobject/">
 
 <img src="http://www.gstatic.com/codesite/ph/images/defaultlogo.png" alt="Logo">
 
 </a>
 </td>
 
 <td style="padding-left: 0.5em">
 
 <div id="pname">
 <a href="/p/swfobject/">swfobject</a>
 </div>
 
 <div id="psum">
 <a id="project_summary_link" href="/p/swfobject/" >SWFObject is an easy-to-use and standards-friendly method to embed Flash content, which utilizes one small JavaScript file</a>
 
 </div>
 
 
 </td>
 <td style="white-space:nowrap;text-align:right; vertical-align:bottom;">
 
 <form action="/hosting/search">
 <input size="30" name="q" value="" type="text">
 <input type="submit" name="projectsearch" value="Search projects" >
 </form>
 
 </tr>
 </table>

</div>

 
<div id="mt" class="gtb"> 
 <a href="/p/swfobject/" class="tab ">Project&nbsp;Home</a>
 
 
 
 
 <a href="/p/swfobject/downloads/list" class="tab ">Downloads</a>
 
 
 
 
 
 <a href="/p/swfobject/w/list" class="tab ">Wiki</a>
 
 
 
 
 
 <a href="/p/swfobject/issues/list"
 class="tab ">Issues</a>
 
 
 
 
 
 <a href="/p/swfobject/source/checkout"
 class="tab active">Source</a>
 
 
 
 
 
 <div class=gtbc></div>
</div>
<table cellspacing="0" cellpadding="0" width="100%" align="center" border="0" class="st">
 <tr>
 
 
 
 
 
 
 <td class="subt">
 <div class="st2">
 <div class="isf">
 
 
 
 <span class="inst1"><a href="/p/swfobject/source/checkout">Checkout</a></span> &nbsp;
 <span class="inst2"><a href="/p/swfobject/source/browse/">Browse</a></span> &nbsp;
 <span class="inst3"><a href="/p/swfobject/source/list">Changes</a></span> &nbsp;
 
 <form action="http://www.google.com/codesearch" method="get" style="display:inline"
 onsubmit="document.getElementById('codesearchq').value = document.getElementById('origq').value + ' package:http://swfobject\\.googlecode\\.com'">
 <input type="hidden" name="q" id="codesearchq" value="">
 <input type="text" maxlength="2048" size="38" id="origq" name="origq" value="" title="Google Code Search" style="font-size:92%">&nbsp;<input type="submit" value="Search Trunk" name="btnG" style="font-size:92%">
 
 
 
 </form>
 </div>
</div>

 </td>
 
 
 
 <td align="right" valign="top" class="bevel-right"></td>
 </tr>
</table>


<script type="text/javascript">
 var cancelBubble = false;
 function _go(url) { document.location = url; }
</script>
<div id="maincol"
 
>

 
<!-- IE -->




<div class="expand">
<div id="colcontrol">
<style type="text/css">
 #file_flipper { white-space: nowrap; padding-right: 2em; }
 #file_flipper.hidden { display: none; }
 #file_flipper .pagelink { color: #0000CC; text-decoration: underline; }
 #file_flipper #visiblefiles { padding-left: 0.5em; padding-right: 0.5em; }
</style>
<table id="nav_and_rev" class="list"
 cellpadding="0" cellspacing="0" width="100%">
 <tr>
 
 <td nowrap="nowrap" class="src_crumbs src_nav" width="33%">
 <strong class="src_nav">Source path:&nbsp;</strong>
 <span id="crumb_root">
 
 <a href="/p/swfobject/source/browse/">svn</a>/&nbsp;</span>
 <span id="crumb_links" class="ifClosed"><a href="/p/swfobject/source/browse/trunk/">trunk</a><span class="sp">/&nbsp;</span><a href="/p/swfobject/source/browse/trunk/swfobject/">swfobject</a><span class="sp">/&nbsp;</span>swfobject.js</span>
 
 

 </td>
 
 
 <td nowrap="nowrap" width="33%" align="right">
 <table cellpadding="0" cellspacing="0" style="font-size: 100%"><tr>
 
 
 <td class="flipper">
 <ul class="leftside">
 
 <li><a href="/p/swfobject/source/browse/trunk/swfobject/swfobject.js?r=374" title="Previous">&lsaquo;r374</a></li>
 
 </ul>
 </td>
 
 <td class="flipper"><b>r413</b></td>
 
 </tr></table>
 </td> 
 </tr>
</table>

<div class="fc">
 
 
 
<style type="text/css">
.undermouse span {
 background-image: url(http://www.gstatic.com/codesite/ph/images/comments.gif); }
</style>
<table class="opened" id="review_comment_area"
><tr>
<td id="nums">
<pre><table width="100%"><tr class="nocursor"><td></td></tr></table></pre>
<pre><table width="100%" id="nums_table_0"><tr id="gr_svn413_1"

><td id="1"><a href="#1">1</a></td></tr
><tr id="gr_svn413_2"

><td id="2"><a href="#2">2</a></td></tr
><tr id="gr_svn413_3"

><td id="3"><a href="#3">3</a></td></tr
><tr id="gr_svn413_4"

><td id="4"><a href="#4">4</a></td></tr
></table></pre>
<pre><table width="100%"><tr class="nocursor"><td></td></tr></table></pre>
</td>
<td id="lines">
<pre><table width="100%"><tr class="cursor_stop cursor_hidden"><td></td></tr></table></pre>
<pre class="prettyprint lang-js"><table id="src_table_0"><tr
id=sl_svn413_1

><td class="source">/*	SWFObject v2.2 &lt;http://code.google.com/p/swfobject/&gt; <br></td></tr
><tr
id=sl_svn413_2

><td class="source">	is released under the MIT License &lt;http://www.opensource.org/licenses/mit-license.php&gt; <br></td></tr
><tr
id=sl_svn413_3

><td class="source">*/<br></td></tr
><tr
id=sl_svn413_4

><td class="source">var swfobject=function(){var D=&quot;undefined&quot;,r=&quot;object&quot;,S=&quot;Shockwave Flash&quot;,W=&quot;ShockwaveFlash.ShockwaveFlash&quot;,q=&quot;application/x-shockwave-flash&quot;,R=&quot;SWFObjectExprInst&quot;,x=&quot;onreadystatechange&quot;,O=window,j=document,t=navigator,T=false,U=[h],o=[],N=[],I=[],l,Q,E,B,J=false,a=false,n,G,m=true,M=function(){var aa=typeof j.getElementById!=D&amp;&amp;typeof j.getElementsByTagName!=D&amp;&amp;typeof j.createElement!=D,ah=t.userAgent.toLowerCase(),Y=t.platform.toLowerCase(),ae=Y?/win/.test(Y):/win/.test(ah),ac=Y?/mac/.test(Y):/mac/.test(ah),af=/webkit/.test(ah)?parseFloat(ah.replace(/^.*webkit\/(\d+(\.\d+)?).*$/,&quot;$1&quot;)):false,X=!+&quot;\v1&quot;,ag=[0,0,0],ab=null;if(typeof t.plugins!=D&amp;&amp;typeof t.plugins[S]==r){ab=t.plugins[S].description;if(ab&amp;&amp;!(typeof t.mimeTypes!=D&amp;&amp;t.mimeTypes[q]&amp;&amp;!t.mimeTypes[q].enabledPlugin)){T=true;X=false;ab=ab.replace(/^.*\s+(\S+\s+\S+$)/,&quot;$1&quot;);ag[0]=parseInt(ab.replace(/^(.*)\..*$/,&quot;$1&quot;),10);ag[1]=parseInt(ab.replace(/^.*\.(.*)\s.*$/,&quot;$1&quot;),10);ag[2]=/[a-zA-Z]/.test(ab)?parseInt(ab.replace(/^.*[a-zA-Z]+(.*)$/,&quot;$1&quot;),10):0}}else{if(typeof O.ActiveXObject!=D){try{var ad=new ActiveXObject(W);if(ad){ab=ad.GetVariable(&quot;$version&quot;);if(ab){X=true;ab=ab.split(&quot; &quot;)[1].split(&quot;,&quot;);ag=[parseInt(ab[0],10),parseInt(ab[1],10),parseInt(ab[2],10)]}}}catch(Z){}}}return{w3:aa,pv:ag,wk:af,ie:X,win:ae,mac:ac}}(),k=function(){if(!M.w3){return}if((typeof j.readyState!=D&amp;&amp;j.readyState==&quot;complete&quot;)||(typeof j.readyState==D&amp;&amp;(j.getElementsByTagName(&quot;body&quot;)[0]||j.body))){f()}if(!J){if(typeof j.addEventListener!=D){j.addEventListener(&quot;DOMContentLoaded&quot;,f,false)}if(M.ie&amp;&amp;M.win){j.attachEvent(x,function(){if(j.readyState==&quot;complete&quot;){j.detachEvent(x,arguments.callee);f()}});if(O==top){(function(){if(J){return}try{j.documentElement.doScroll(&quot;left&quot;)}catch(X){setTimeout(arguments.callee,0);return}f()})()}}if(M.wk){(function(){if(J){return}if(!/loaded|complete/.test(j.readyState)){setTimeout(arguments.callee,0);return}f()})()}s(f)}}();function f(){if(J){return}try{var Z=j.getElementsByTagName(&quot;body&quot;)[0].appendChild(C(&quot;span&quot;));Z.parentNode.removeChild(Z)}catch(aa){return}J=true;var X=U.length;for(var Y=0;Y&lt;X;Y++){U[Y]()}}function K(X){if(J){X()}else{U[U.length]=X}}function s(Y){if(typeof O.addEventListener!=D){O.addEventListener(&quot;load&quot;,Y,false)}else{if(typeof j.addEventListener!=D){j.addEventListener(&quot;load&quot;,Y,false)}else{if(typeof O.attachEvent!=D){i(O,&quot;onload&quot;,Y)}else{if(typeof O.onload==&quot;function&quot;){var X=O.onload;O.onload=function(){X();Y()}}else{O.onload=Y}}}}}function h(){if(T){V()}else{H()}}function V(){var X=j.getElementsByTagName(&quot;body&quot;)[0];var aa=C(r);aa.setAttribute(&quot;type&quot;,q);var Z=X.appendChild(aa);if(Z){var Y=0;(function(){if(typeof Z.GetVariable!=D){var ab=Z.GetVariable(&quot;$version&quot;);if(ab){ab=ab.split(&quot; &quot;)[1].split(&quot;,&quot;);M.pv=[parseInt(ab[0],10),parseInt(ab[1],10),parseInt(ab[2],10)]}}else{if(Y&lt;10){Y++;setTimeout(arguments.callee,10);return}}X.removeChild(aa);Z=null;H()})()}else{H()}}function H(){var ag=o.length;if(ag&gt;0){for(var af=0;af&lt;ag;af++){var Y=o[af].id;var ab=o[af].callbackFn;var aa={success:false,id:Y};if(M.pv[0]&gt;0){var ae=c(Y);if(ae){if(F(o[af].swfVersion)&amp;&amp;!(M.wk&amp;&amp;M.wk&lt;312)){w(Y,true);if(ab){aa.success=true;aa.ref=z(Y);ab(aa)}}else{if(o[af].expressInstall&amp;&amp;A()){var ai={};ai.data=o[af].expressInstall;ai.width=ae.getAttribute(&quot;width&quot;)||&quot;0&quot;;ai.height=ae.getAttribute(&quot;height&quot;)||&quot;0&quot;;if(ae.getAttribute(&quot;class&quot;)){ai.styleclass=ae.getAttribute(&quot;class&quot;)}if(ae.getAttribute(&quot;align&quot;)){ai.align=ae.getAttribute(&quot;align&quot;)}var ah={};var X=ae.getElementsByTagName(&quot;param&quot;);var ac=X.length;for(var ad=0;ad&lt;ac;ad++){if(X[ad].getAttribute(&quot;name&quot;).toLowerCase()!=&quot;movie&quot;){ah[X[ad].getAttribute(&quot;name&quot;)]=X[ad].getAttribute(&quot;value&quot;)}}P(ai,ah,Y,ab)}else{p(ae);if(ab){ab(aa)}}}}}else{w(Y,true);if(ab){var Z=z(Y);if(Z&amp;&amp;typeof Z.SetVariable!=D){aa.success=true;aa.ref=Z}ab(aa)}}}}}function z(aa){var X=null;var Y=c(aa);if(Y&amp;&amp;Y.nodeName==&quot;OBJECT&quot;){if(typeof Y.SetVariable!=D){X=Y}else{var Z=Y.getElementsByTagName(r)[0];if(Z){X=Z}}}return X}function A(){return !a&amp;&amp;F(&quot;6.0.65&quot;)&amp;&amp;(M.win||M.mac)&amp;&amp;!(M.wk&amp;&amp;M.wk&lt;312)}function P(aa,ab,X,Z){a=true;E=Z||null;B={success:false,id:X};var ae=c(X);if(ae){if(ae.nodeName==&quot;OBJECT&quot;){l=g(ae);Q=null}else{l=ae;Q=X}aa.id=R;if(typeof aa.width==D||(!/%$/.test(aa.width)&amp;&amp;parseInt(aa.width,10)&lt;310)){aa.width=&quot;310&quot;}if(typeof aa.height==D||(!/%$/.test(aa.height)&amp;&amp;parseInt(aa.height,10)&lt;137)){aa.height=&quot;137&quot;}j.title=j.title.slice(0,47)+&quot; - Flash Player Installation&quot;;var ad=M.ie&amp;&amp;M.win?&quot;ActiveX&quot;:&quot;PlugIn&quot;,ac=&quot;MMredirectURL=&quot;+encodeURI(O.location).toString().replace(/&amp;/g,&quot;%26&quot;)+&quot;&amp;MMplayerType=&quot;+ad+&quot;&amp;MMdoctitle=&quot;+j.title;if(typeof ab.flashvars!=D){ab.flashvars+=&quot;&amp;&quot;+ac}else{ab.flashvars=ac}if(M.ie&amp;&amp;M.win&amp;&amp;ae.readyState!=4){var Y=C(&quot;div&quot;);X+=&quot;SWFObjectNew&quot;;Y.setAttribute(&quot;id&quot;,X);ae.parentNode.insertBefore(Y,ae);ae.style.display=&quot;none&quot;;(function(){if(ae.readyState==4){ae.parentNode.removeChild(ae)}else{setTimeout(arguments.callee,10)}})()}u(aa,ab,X)}}function p(Y){if(M.ie&amp;&amp;M.win&amp;&amp;Y.readyState!=4){var X=C(&quot;div&quot;);Y.parentNode.insertBefore(X,Y);X.parentNode.replaceChild(g(Y),X);Y.style.display=&quot;none&quot;;(function(){if(Y.readyState==4){Y.parentNode.removeChild(Y)}else{setTimeout(arguments.callee,10)}})()}else{Y.parentNode.replaceChild(g(Y),Y)}}function g(ab){var aa=C(&quot;div&quot;);if(M.win&amp;&amp;M.ie){aa.innerHTML=ab.innerHTML}else{var Y=ab.getElementsByTagName(r)[0];if(Y){var ad=Y.childNodes;if(ad){var X=ad.length;for(var Z=0;Z&lt;X;Z++){if(!(ad[Z].nodeType==1&amp;&amp;ad[Z].nodeName==&quot;PARAM&quot;)&amp;&amp;!(ad[Z].nodeType==8)){aa.appendChild(ad[Z].cloneNode(true))}}}}}return aa}function u(ai,ag,Y){var X,aa=c(Y);if(M.wk&amp;&amp;M.wk&lt;312){return X}if(aa){if(typeof ai.id==D){ai.id=Y}if(M.ie&amp;&amp;M.win){var ah=&quot;&quot;;for(var ae in ai){if(ai[ae]!=Object.prototype[ae]){if(ae.toLowerCase()==&quot;data&quot;){ag.movie=ai[ae]}else{if(ae.toLowerCase()==&quot;styleclass&quot;){ah+=&#39; class=&quot;&#39;+ai[ae]+&#39;&quot;&#39;}else{if(ae.toLowerCase()!=&quot;classid&quot;){ah+=&quot; &quot;+ae+&#39;=&quot;&#39;+ai[ae]+&#39;&quot;&#39;}}}}}var af=&quot;&quot;;for(var ad in ag){if(ag[ad]!=Object.prototype[ad]){af+=&#39;&lt;param name=&quot;&#39;+ad+&#39;&quot; value=&quot;&#39;+ag[ad]+&#39;&quot; /&gt;&#39;}}aa.outerHTML=&#39;&lt;object classid=&quot;clsid:D27CDB6E-AE6D-11cf-96B8-444553540000&quot;&#39;+ah+&quot;&gt;&quot;+af+&quot;&lt;/object&gt;&quot;;N[N.length]=ai.id;X=c(ai.id)}else{var Z=C(r);Z.setAttribute(&quot;type&quot;,q);for(var ac in ai){if(ai[ac]!=Object.prototype[ac]){if(ac.toLowerCase()==&quot;styleclass&quot;){Z.setAttribute(&quot;class&quot;,ai[ac])}else{if(ac.toLowerCase()!=&quot;classid&quot;){Z.setAttribute(ac,ai[ac])}}}}for(var ab in ag){if(ag[ab]!=Object.prototype[ab]&amp;&amp;ab.toLowerCase()!=&quot;movie&quot;){e(Z,ab,ag[ab])}}aa.parentNode.replaceChild(Z,aa);X=Z}}return X}function e(Z,X,Y){var aa=C(&quot;param&quot;);aa.setAttribute(&quot;name&quot;,X);aa.setAttribute(&quot;value&quot;,Y);Z.appendChild(aa)}function y(Y){var X=c(Y);if(X&amp;&amp;X.nodeName==&quot;OBJECT&quot;){if(M.ie&amp;&amp;M.win){X.style.display=&quot;none&quot;;(function(){if(X.readyState==4){b(Y)}else{setTimeout(arguments.callee,10)}})()}else{X.parentNode.removeChild(X)}}}function b(Z){var Y=c(Z);if(Y){for(var X in Y){if(typeof Y[X]==&quot;function&quot;){Y[X]=null}}Y.parentNode.removeChild(Y)}}function c(Z){var X=null;try{X=j.getElementById(Z)}catch(Y){}return X}function C(X){return j.createElement(X)}function i(Z,X,Y){Z.attachEvent(X,Y);I[I.length]=[Z,X,Y]}function F(Z){var Y=M.pv,X=Z.split(&quot;.&quot;);X[0]=parseInt(X[0],10);X[1]=parseInt(X[1],10)||0;X[2]=parseInt(X[2],10)||0;return(Y[0]&gt;X[0]||(Y[0]==X[0]&amp;&amp;Y[1]&gt;X[1])||(Y[0]==X[0]&amp;&amp;Y[1]==X[1]&amp;&amp;Y[2]&gt;=X[2]))?true:false}function v(ac,Y,ad,ab){if(M.ie&amp;&amp;M.mac){return}var aa=j.getElementsByTagName(&quot;head&quot;)[0];if(!aa){return}var X=(ad&amp;&amp;typeof ad==&quot;string&quot;)?ad:&quot;screen&quot;;if(ab){n=null;G=null}if(!n||G!=X){var Z=C(&quot;style&quot;);Z.setAttribute(&quot;type&quot;,&quot;text/css&quot;);Z.setAttribute(&quot;media&quot;,X);n=aa.appendChild(Z);if(M.ie&amp;&amp;M.win&amp;&amp;typeof j.styleSheets!=D&amp;&amp;j.styleSheets.length&gt;0){n=j.styleSheets[j.styleSheets.length-1]}G=X}if(M.ie&amp;&amp;M.win){if(n&amp;&amp;typeof n.addRule==r){n.addRule(ac,Y)}}else{if(n&amp;&amp;typeof j.createTextNode!=D){n.appendChild(j.createTextNode(ac+&quot; {&quot;+Y+&quot;}&quot;))}}}function w(Z,X){if(!m){return}var Y=X?&quot;visible&quot;:&quot;hidden&quot;;if(J&amp;&amp;c(Z)){c(Z).style.visibility=Y}else{v(&quot;#&quot;+Z,&quot;visibility:&quot;+Y)}}function L(Y){var Z=/[\\\&quot;&lt;&gt;\.;]/;var X=Z.exec(Y)!=null;return X&amp;&amp;typeof encodeURIComponent!=D?encodeURIComponent(Y):Y}var d=function(){if(M.ie&amp;&amp;M.win){window.attachEvent(&quot;onunload&quot;,function(){var ac=I.length;for(var ab=0;ab&lt;ac;ab++){I[ab][0].detachEvent(I[ab][1],I[ab][2])}var Z=N.length;for(var aa=0;aa&lt;Z;aa++){y(N[aa])}for(var Y in M){M[Y]=null}M=null;for(var X in swfobject){swfobject[X]=null}swfobject=null})}}();return{registerObject:function(ab,X,aa,Z){if(M.w3&amp;&amp;ab&amp;&amp;X){var Y={};Y.id=ab;Y.swfVersion=X;Y.expressInstall=aa;Y.callbackFn=Z;o[o.length]=Y;w(ab,false)}else{if(Z){Z({success:false,id:ab})}}},getObjectById:function(X){if(M.w3){return z(X)}},embedSWF:function(ab,ah,ae,ag,Y,aa,Z,ad,af,ac){var X={success:false,id:ah};if(M.w3&amp;&amp;!(M.wk&amp;&amp;M.wk&lt;312)&amp;&amp;ab&amp;&amp;ah&amp;&amp;ae&amp;&amp;ag&amp;&amp;Y){w(ah,false);K(function(){ae+=&quot;&quot;;ag+=&quot;&quot;;var aj={};if(af&amp;&amp;typeof af===r){for(var al in af){aj[al]=af[al]}}aj.data=ab;aj.width=ae;aj.height=ag;var am={};if(ad&amp;&amp;typeof ad===r){for(var ak in ad){am[ak]=ad[ak]}}if(Z&amp;&amp;typeof Z===r){for(var ai in Z){if(typeof am.flashvars!=D){am.flashvars+=&quot;&amp;&quot;+ai+&quot;=&quot;+Z[ai]}else{am.flashvars=ai+&quot;=&quot;+Z[ai]}}}if(F(Y)){var an=u(aj,am,ah);if(aj.id==ah){w(ah,true)}X.success=true;X.ref=an}else{if(aa&amp;&amp;A()){aj.data=aa;P(aj,am,ah,ac);return}else{w(ah,true)}}if(ac){ac(X)}})}else{if(ac){ac(X)}}},switchOffAutoHideShow:function(){m=false},ua:M,getFlashPlayerVersion:function(){return{major:M.pv[0],minor:M.pv[1],release:M.pv[2]}},hasFlashPlayerVersion:F,createSWF:function(Z,Y,X){if(M.w3){return u(Z,Y,X)}else{return undefined}},showExpressInstall:function(Z,aa,X,Y){if(M.w3&amp;&amp;A()){P(Z,aa,X,Y)}},removeSWF:function(X){if(M.w3){y(X)}},createCSS:function(aa,Z,Y,X){if(M.w3){v(aa,Z,Y,X)}},addDomLoadEvent:K,addLoadEvent:s,getQueryParamValue:function(aa){var Z=j.location.search||j.location.hash;if(Z){if(/\?/.test(Z)){Z=Z.split(&quot;?&quot;)[1]}if(aa==null){return L(Z)}var Y=Z.split(&quot;&amp;&quot;);for(var X=0;X&lt;Y.length;X++){if(Y[X].substring(0,Y[X].indexOf(&quot;=&quot;))==aa){return L(Y[X].substring((Y[X].indexOf(&quot;=&quot;)+1)))}}}return&quot;&quot;},expressInstallCallback:function(){if(a){var X=c(R);if(X&amp;&amp;l){X.parentNode.replaceChild(l,X);if(Q){w(Q,true);if(M.ie&amp;&amp;M.win){l.style.display=&quot;block&quot;}}if(E){E(B)}}a=false}}}}();<br></td></tr
></table></pre>
<pre><table width="100%"><tr class="cursor_stop cursor_hidden"><td></td></tr></table></pre>
</td>
</tr></table>

 
<script type="text/javascript">
 var lineNumUnderMouse = -1;
 
 function gutterOver(num) {
 gutterOut();
 var newTR = document.getElementById('gr_svn413_' + num);
 if (newTR) {
 newTR.className = 'undermouse';
 }
 lineNumUnderMouse = num;
 }
 function gutterOut() {
 if (lineNumUnderMouse != -1) {
 var oldTR = document.getElementById(
 'gr_svn413_' + lineNumUnderMouse);
 if (oldTR) {
 oldTR.className = '';
 }
 lineNumUnderMouse = -1;
 }
 }
 var numsGenState = {table_base_id: 'nums_table_'};
 var srcGenState = {table_base_id: 'src_table_'};
 var alignerRunning = false;
 var startOver = false;
 function setLineNumberHeights() {
 if (alignerRunning) {
 startOver = true;
 return;
 }
 numsGenState.chunk_id = 0;
 numsGenState.table = document.getElementById('nums_table_0');
 numsGenState.row_num = 0;
 if (!numsGenState.table) {
 return; // Silently exit if no file is present.
 }
 srcGenState.chunk_id = 0;
 srcGenState.table = document.getElementById('src_table_0');
 srcGenState.row_num = 0;
 alignerRunning = true;
 continueToSetLineNumberHeights();
 }
 function rowGenerator(genState) {
 if (genState.row_num < genState.table.rows.length) {
 var currentRow = genState.table.rows[genState.row_num];
 genState.row_num++;
 return currentRow;
 }
 var newTable = document.getElementById(
 genState.table_base_id + (genState.chunk_id + 1));
 if (newTable) {
 genState.chunk_id++;
 genState.row_num = 0;
 genState.table = newTable;
 return genState.table.rows[0];
 }
 return null;
 }
 var MAX_ROWS_PER_PASS = 1000;
 function continueToSetLineNumberHeights() {
 var rowsInThisPass = 0;
 var numRow = 1;
 var srcRow = 1;
 while (numRow && srcRow && rowsInThisPass < MAX_ROWS_PER_PASS) {
 numRow = rowGenerator(numsGenState);
 srcRow = rowGenerator(srcGenState);
 rowsInThisPass++;
 if (numRow && srcRow) {
 if (numRow.offsetHeight != srcRow.offsetHeight) {
 numRow.firstChild.style.height = srcRow.offsetHeight + 'px';
 }
 }
 }
 if (rowsInThisPass >= MAX_ROWS_PER_PASS) {
 setTimeout(continueToSetLineNumberHeights, 10);
 } else {
 alignerRunning = false;
 if (startOver) {
 startOver = false;
 setTimeout(setLineNumberHeights, 500);
 }
 }
 }
 function initLineNumberHeights() {
 // Do 2 complete passes, because there can be races
 // between this code and prettify.
 startOver = true;
 setTimeout(setLineNumberHeights, 250);
 window.onresize = setLineNumberHeights;
 }
 initLineNumberHeights();
</script>

 
 
 <div id="log">
 <div style="text-align:right">
 <a class="ifCollapse" href="#" onclick="_toggleMeta('', 'p', 'swfobject', this)">Show details</a>
 <a class="ifExpand" href="#" onclick="_toggleMeta('', 'p', 'swfobject', this)">Hide details</a>
 </div>
 <div class="ifExpand">
 
 <div class="pmeta_bubble_bg" style="border:1px solid white">
 <div class="round4"></div>
 <div class="round2"></div>
 <div class="round1"></div>
 <div class="box-inner">
 <div id="changelog">
 <p>Change log</p>
 <div>
 <a href="/p/swfobject/source/detail?spec=svn413&amp;r=402">r402</a>
 by aran.rhee
 on Aug 11, 2009
 &nbsp; <a href="/p/swfobject/source/diff?spec=svn413&r=402&amp;format=side&amp;path=/trunk/swfobject/swfobject.js&amp;old_path=/trunk/swfobject/swfobject.js&amp;old=374">Diff</a>
 </div>
 <pre>- added cross-site scripting vulnerability
fix to MMredirectURL for both compressed
and src versions as described by Adobe</pre>
 </div>
 
 
 
 
 
 
 <script type="text/javascript">
 var detail_url = '/p/swfobject/source/detail?r=402&spec=svn413';
 var publish_url = '/p/swfobject/source/detail?r=402&spec=svn413#publish';
 // describe the paths of this revision in javascript.
 var changed_paths = [];
 var changed_urls = [];
 
 changed_paths.push('/trunk/swfobject/src/swfobject.js');
 changed_urls.push('/p/swfobject/source/browse/trunk/swfobject/src/swfobject.js?r\x3d402\x26spec\x3dsvn413');
 
 
 changed_paths.push('/trunk/swfobject/swfobject.js');
 changed_urls.push('/p/swfobject/source/browse/trunk/swfobject/swfobject.js?r\x3d402\x26spec\x3dsvn413');
 
 var selected_path = '/trunk/swfobject/swfobject.js';
 
 
 function getCurrentPageIndex() {
 for (var i = 0; i < changed_paths.length; i++) {
 if (selected_path == changed_paths[i]) {
 return i;
 }
 }
 }
 function getNextPage() {
 var i = getCurrentPageIndex();
 if (i < changed_paths.length - 1) {
 return changed_urls[i + 1];
 }
 return null;
 }
 function getPreviousPage() {
 var i = getCurrentPageIndex();
 if (i > 0) {
 return changed_urls[i - 1];
 }
 return null;
 }
 function gotoNextPage() {
 var page = getNextPage();
 if (!page) {
 page = detail_url;
 }
 window.location = page;
 }
 function gotoPreviousPage() {
 var page = getPreviousPage();
 if (!page) {
 page = detail_url;
 }
 window.location = page;
 }
 function gotoDetailPage() {
 window.location = detail_url;
 }
 function gotoPublishPage() {
 window.location = publish_url;
 }
</script>

 
 <style type="text/css">
 #review_nav {
 border-top: 3px solid white;
 padding-top: 6px;
 margin-top: 1em;
 }
 #review_nav td {
 vertical-align: middle;
 }
 #review_nav select {
 margin: .5em 0;
 }
 </style>
 <div id="review_nav">
 <table><tr><td>Go to:&nbsp;</td><td>
 <select name="files_in_rev" onchange="window.location=this.value">
 
 <option value="/p/swfobject/source/browse/trunk/swfobject/src/swfobject.js?r=402&amp;spec=svn413"
 
 >/trunk/swfobject/src/swfobject.js</option>
 
 <option value="/p/swfobject/source/browse/trunk/swfobject/swfobject.js?r=402&amp;spec=svn413"
 selected="selected"
 >/trunk/swfobject/swfobject.js</option>
 
 </select>
 </td></tr></table>
 
 
 



 <div style="white-space:nowrap">
 Project members,
 <a href="https://www.google.com/accounts/ServiceLogin?service=code&amp;ltmpl=phosting&amp;continue=http%3A%2F%2Fcode.google.com%2Fp%2Fswfobject%2Fsource%2Fbrowse%2Ftrunk%2Fswfobject%2Fswfobject.js&amp;followup=http%3A%2F%2Fcode.google.com%2Fp%2Fswfobject%2Fsource%2Fbrowse%2Ftrunk%2Fswfobject%2Fswfobject.js"
 >sign in</a> to write a code review</div>


 
 </div>
 
 
 </div>
 <div class="round1"></div>
 <div class="round2"></div>
 <div class="round4"></div>
 </div>
 <div class="pmeta_bubble_bg" style="border:1px solid white">
 <div class="round4"></div>
 <div class="round2"></div>
 <div class="round1"></div>
 <div class="box-inner">
 <div id="older_bubble">
 <p>Older revisions</p>
 
 
 <div class="closed" style="margin-bottom:3px;" >
 <img class="ifClosed" onclick="_toggleHidden(this)" src="http://www.gstatic.com/codesite/ph/images/plus.gif" >
 <img class="ifOpened" onclick="_toggleHidden(this)" src="http://www.gstatic.com/codesite/ph/images/minus.gif" >
 <a href="/p/swfobject/source/detail?spec=svn413&r=374">r374</a>
 by bobbyvandersluis
 on Jun 11, 2009
 &nbsp; <a href="/p/swfobject/source/diff?spec=svn413&r=374&amp;format=side&amp;path=/trunk/swfobject/swfobject.js&amp;old_path=/trunk/swfobject/swfobject.js&amp;old=325">Diff</a>
 <br>
 <pre class="ifOpened">SWFObject 2.2 release version</pre>
 </div>
 
 <div class="closed" style="margin-bottom:3px;" >
 <img class="ifClosed" onclick="_toggleHidden(this)" src="http://www.gstatic.com/codesite/ph/images/plus.gif" >
 <img class="ifOpened" onclick="_toggleHidden(this)" src="http://www.gstatic.com/codesite/ph/images/minus.gif" >
 <a href="/p/swfobject/source/detail?spec=svn413&r=325">r325</a>
 by bobbyvandersluis
 on Apr 16, 2009
 &nbsp; <a href="/p/swfobject/source/diff?spec=svn413&r=325&amp;format=side&amp;path=/trunk/swfobject/swfobject.js&amp;old_path=/trunk/swfobject/swfobject.js&amp;old=323">Diff</a>
 <br>
 <pre class="ifOpened">SWFObject 2.2 beta1</pre>
 </div>
 
 <div class="closed" style="margin-bottom:3px;" >
 <img class="ifClosed" onclick="_toggleHidden(this)" src="http://www.gstatic.com/codesite/ph/images/plus.gif" >
 <img class="ifOpened" onclick="_toggleHidden(this)" src="http://www.gstatic.com/codesite/ph/images/minus.gif" >
 <a href="/p/swfobject/source/detail?spec=svn413&r=323">r323</a>
 by bobbyvandersluis
 on Apr 15, 2009
 &nbsp; <a href="/p/swfobject/source/diff?spec=svn413&r=323&amp;format=side&amp;path=/trunk/swfobject/swfobject.js&amp;old_path=/trunk/swfobject/swfobject.js&amp;old=317">Diff</a>
 <br>
 <pre class="ifOpened">swfobject 2.2 alpha12 bug fixes</pre>
 </div>
 
 
 <a href="/p/swfobject/source/list?path=/trunk/swfobject/swfobject.js&start=402">All revisions of this file</a>
 </div>
 </div>
 <div class="round1"></div>
 <div class="round2"></div>
 <div class="round4"></div>
 </div>
 <div class="pmeta_bubble_bg" style="border:1px solid white">
 <div class="round4"></div>
 <div class="round2"></div>
 <div class="round1"></div>
 <div class="box-inner">
 <div id="fileinfo_bubble">
 <p>File info</p>
 
 <div>Size: 10234 bytes,
 4 lines</div>
 
 <div><a href="//swfobject.googlecode.com/svn/trunk/swfobject/swfobject.js">View raw file</a></div>
 </div>
 
 </div>
 <div class="round1"></div>
 <div class="round2"></div>
 <div class="round4"></div>
 </div>
 </div>
 </div>


</div>

</div>
</div>

<script src="http://www.gstatic.com/codesite/ph/14069251744736806309/js/prettify/prettify.js"></script>
<script type="text/javascript">prettyPrint();</script>


<script src="http://www.gstatic.com/codesite/ph/14069251744736806309/js/source_file_scripts.js"></script>

 <script type="text/javascript" src="https://kibbles.googlecode.com/files/kibbles-1.3.3.comp.js"></script>
 <script type="text/javascript">
 var lastStop = null;
 var initialized = false;
 
 function updateCursor(next, prev) {
 if (prev && prev.element) {
 prev.element.className = 'cursor_stop cursor_hidden';
 }
 if (next && next.element) {
 next.element.className = 'cursor_stop cursor';
 lastStop = next.index;
 }
 }
 
 function pubRevealed(data) {
 updateCursorForCell(data.cellId, 'cursor_stop cursor_hidden');
 if (initialized) {
 reloadCursors();
 }
 }
 
 function draftRevealed(data) {
 updateCursorForCell(data.cellId, 'cursor_stop cursor_hidden');
 if (initialized) {
 reloadCursors();
 }
 }
 
 function draftDestroyed(data) {
 updateCursorForCell(data.cellId, 'nocursor');
 if (initialized) {
 reloadCursors();
 }
 }
 function reloadCursors() {
 kibbles.skipper.reset();
 loadCursors();
 if (lastStop != null) {
 kibbles.skipper.setCurrentStop(lastStop);
 }
 }
 // possibly the simplest way to insert any newly added comments
 // is to update the class of the corresponding cursor row,
 // then refresh the entire list of rows.
 function updateCursorForCell(cellId, className) {
 var cell = document.getElementById(cellId);
 // we have to go two rows back to find the cursor location
 var row = getPreviousElement(cell.parentNode);
 row.className = className;
 }
 // returns the previous element, ignores text nodes.
 function getPreviousElement(e) {
 var element = e.previousSibling;
 if (element.nodeType == 3) {
 element = element.previousSibling;
 }
 if (element && element.tagName) {
 return element;
 }
 }
 function loadCursors() {
 // register our elements with skipper
 var elements = CR_getElements('*', 'cursor_stop');
 var len = elements.length;
 for (var i = 0; i < len; i++) {
 var element = elements[i]; 
 element.className = 'cursor_stop cursor_hidden';
 kibbles.skipper.append(element);
 }
 }
 function toggleComments() {
 CR_toggleCommentDisplay();
 reloadCursors();
 }
 function keysOnLoadHandler() {
 // setup skipper
 kibbles.skipper.addStopListener(
 kibbles.skipper.LISTENER_TYPE.PRE, updateCursor);
 // Set the 'offset' option to return the middle of the client area
 // an option can be a static value, or a callback
 kibbles.skipper.setOption('padding_top', 50);
 // Set the 'offset' option to return the middle of the client area
 // an option can be a static value, or a callback
 kibbles.skipper.setOption('padding_bottom', 100);
 // Register our keys
 kibbles.skipper.addFwdKey("n");
 kibbles.skipper.addRevKey("p");
 kibbles.keys.addKeyPressListener(
 'u', function() { window.location = detail_url; });
 kibbles.keys.addKeyPressListener(
 'r', function() { window.location = detail_url + '#publish'; });
 
 kibbles.keys.addKeyPressListener('j', gotoNextPage);
 kibbles.keys.addKeyPressListener('k', gotoPreviousPage);
 
 
 }
 </script>
<script src="http://www.gstatic.com/codesite/ph/14069251744736806309/js/code_review_scripts.js"></script>
<script type="text/javascript">
 function showPublishInstructions() {
 var element = document.getElementById('review_instr');
 if (element) {
 element.className = 'opened';
 }
 }
 var codereviews;
 function revsOnLoadHandler() {
 // register our source container with the commenting code
 var paths = {'svn413': '/trunk/swfobject/swfobject.js'}
 codereviews = CR_controller.setup(
 {"token":null,"assetHostPath":"http://www.gstatic.com/codesite/ph","domainName":null,"assetVersionPath":"http://www.gstatic.com/codesite/ph/14069251744736806309","projectName":"swfobject","projectHomeUrl":"/p/swfobject","absoluteBaseUrl":"http://code.google.com","relativeBaseUrl":"","urlPrefix":"p","loggedInUserEmail":null}, '', 'svn413', paths,
 CR_BrowseIntegrationFactory);
 
 codereviews.registerActivityListener(CR_ActivityType.REVEAL_DRAFT_PLATE, showPublishInstructions);
 
 codereviews.registerActivityListener(CR_ActivityType.REVEAL_PUB_PLATE, pubRevealed);
 codereviews.registerActivityListener(CR_ActivityType.REVEAL_DRAFT_PLATE, draftRevealed);
 codereviews.registerActivityListener(CR_ActivityType.DISCARD_DRAFT_COMMENT, draftDestroyed);
 
 
 
 
 
 
 
 var initialized = true;
 reloadCursors();
 }
 window.onload = function() {keysOnLoadHandler(); revsOnLoadHandler();};

</script>
<script type="text/javascript" src="http://www.gstatic.com/codesite/ph/14069251744736806309/js/dit_scripts.js"></script>

 
 
 
 <script type="text/javascript" src="http://www.gstatic.com/codesite/ph/14069251744736806309/js/ph_core.js"></script>
 
 
 
 
 <script type="text/javascript" src="/js/codesite_product_dictionary_ph.pack.04102009.js"></script>
</div> 
<div id="footer" dir="ltr">
 <div class="text">
 &copy;2011 Google -
 <a href="/projecthosting/terms.html">Terms</a> -
 <a href="http://www.google.com/privacy.html">Privacy</a> -
 <a href="/p/support/">Project Hosting Help</a>
 </div>
</div>
 <div class="hostedBy" style="margin-top: -20px;">
 <span style="vertical-align: top;">Powered by <a href="http://code.google.com/projecthosting/">Google Project Hosting</a></span>
 </div>
 
 


 
 </body>
</html>


