/*******************************
  Flash Object Usage:
  
  <script type="text/javascript">
    var flash_obj = new Flash(file, width, height, [version, [no_flash_html, [query_string]]]);
    flash_obj.displayFlash();
  </script>

*******************************/

var flashVersion = 0; // required

function Flash(_file, _width, _height, _version, _no_flash, _query) 
{
  this.file = _file;
  this.width = _width;
  this.height = _height;
  this.default_version = 6;
  this.default_query = '';
  this.required_version = (arguments.length > 3) ? arguments[3] : this.default_version;
  this.query = (arguments.length > 5) ? arguments[5] : this.default_query;
  this.latest_flash_version = 12;
  this.agent = navigator.userAgent.toLowerCase(); 
  this.flashVersion_DONTKNOW = -1;
  this.flash_detected = false;
  this.default_no_flash = '';
  this.default_no_flash += '<table border="0" align="left" cellpadding="0" cellspacing="0" style="width:'+this.width+'px; height:'+this.height+'px; text-align:center; vertical-align:middle;">'+"\n";
  this.default_no_flash += '  <tr>'+"\n";
  this.default_no_flash += '    <td>'+"\n";
  this.default_no_flash += '      <h2>The Flash Player '+this.required_version+' or higher <br />is needed to display this content.</h2>'+"\n";
  this.default_no_flash += '      <p><a href="http://www.adobe.com/shockwave/download/download.cgi?P1_Prod_Version=ShockwaveFlash&promoid=BIOW" target="_blank">Download the Flash Player here.</a> <br />'+"\n";
  this.default_no_flash += '      It will only take a minute.</p>'+"\n";
  this.default_no_flash += '    </td>'+"\n";
  this.default_no_flash += '  </tr>'+"\n";
  this.default_no_flash += '</table>'+"\n";
  this.flash_content = '';
  this.flash_content += '<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,29,0" width="'+this.width+'" height="'+this.height+'">'+"\n";
  this.flash_content += '  <param name="movie" value="'+this.file+this.query+'" />'+"\n";
  this.flash_content += '  <param name="quality" value="high" />'+"\n";
  this.flash_content += '  <param name="wmode" value="transparent" />'+"\n";
  this.flash_content += '  <embed wmode="transparent" src="'+this.file+this.query+'" quality="high" pluginspage="http://www.macromedia.com/go/getflashplayer" type="application/x-shockwave-flash" width="'+this.width+'" height="'+this.height+'"></embed>'+"\n";
  this.flash_content += '</object>'+"\n";
  if (arguments.length > 4) {
    if (arguments[4] != "") {
      this.no_flash = arguments[4];
    } else {
      this.no_flash = this.default_no_flash;
    }
  }
  
  // Flash Version Detector  v1.2.1
  // documentation: http://www.dithered.com/javascript/flash_detect/index.html
  // license: http://creativecommons.org/licenses/by/1.0/
  // code by Chris Nott (chris[at]dithered[dot]com)
  // with VBScript code from Alastair Hamilton (now somewhat modified)
  this.getFlashVersion = function() {
    // NS3+, Opera3+, IE5+ Mac (support plugin array):  check for Flash plugin in plugin array
    if (navigator.plugins != null && navigator.plugins.length > 0) {
      var flashPlugin = navigator.plugins['Shockwave Flash'];
      if (typeof(flashPlugin) == 'object') { 
        for (var i = this.latest_flash_version; i >= 3; i--) {
          if (flashPlugin.description.indexOf(i + '.') != -1) {
            flashVersion = i;
            break;
          }
        }
      }
    } // IE4+ Win32:  attempt to create an ActiveX object using VBScript
    else if (this.agent.indexOf("msie") != -1 && parseInt(navigator.appVersion) >= 4 && this.agent.indexOf("win")!=-1 && this.agent.indexOf("16bit")==-1) {
       var doc = '<scr' + 'ipt language="VBScript"\> \n';
        doc += 'On Error Resume Next \n';
        doc += 'Dim obFlash \n';
        doc += 'For i = ' + this.latest_flash_version + ' To 3 Step -1 \n';
        doc += '   Set obFlash = CreateObject("ShockwaveFlash.ShockwaveFlash." & i) \n';
        doc += '   If IsObject(obFlash) Then \n';
        doc += '      flashVersion = i \n';
        doc += '      Exit For \n';
        doc += '   End If \n';
        doc += 'Next \n';
        doc += '</scr' + 'ipt\> \n';
        document.writeln(doc);
    }
    else if (this.agent.indexOf("webtv/2.5") != -1) flashVersion = 3;  // WebTV 2.5 supports flash 3
    else if (this.agent.indexOf("webtv") != -1) flashVersion = 2; // older WebTV supports flash 2
    else {
      flashVersion = this.flashVersion_DONTKNOW;  // Can't detect in all other cases
    }
    return flashVersion;
  }

  this.flashFound = function(_version, _required) {
    if (_version >= _required) {
      this.flash_detected = true;
      return true;
    } else {
      return false;
    }
  }

  this.displayFlash = function() { 
    if (this.flash_detected) {
      document.writeln( this.flash_content );
    } else {
      document.writeln( this.no_flash );
    }
  }
  
  this.flash_version = this.getFlashVersion();
  this.flash_detected = this.flashFound(this.flash_version, this.required_version);
  
} // end flash object
