if(typeof swfObj == "undefined") swfObj = new Object();

if(typeof swfObj.util == "undefined") swfObj.util = new Object();

if(typeof swfObj.swfObjUtil == "undefined") swfObj.swfObjUtil = new Object();



swfObj.ObjSwf = function(swf, id, w, h, ver, skipDetect, useExpressInstall, xiRedirectUrl, redirectUrl){

   if (!document.createElement || !document.getElementById) { return; }   

   this.params = new Object();

   this.variables = new Object();

   this.attributes = new Array();

   if(swf) { this.setAttribute('swf', swf); }

   if(id) { this.setAttribute('id', id); }

   if(w) { this.setAttribute('width', w); }

   if(h) { this.setAttribute('height', h); }

   this.skipDetect = skipDetect ? skipDetect : false;

   if(ver) {

      this.setAttribute('version', new swfObj.PlayerVersion(ver.toString().split(".")));

   }

   this.installedVer = swfObj.swfObjUtil.getPlayerVersion(this.getAttribute('version'), useExpressInstall);

   this.setAttribute('useExpressInstall', useExpressInstall);

   this.setAttribute('doExpressInstall', false);

   var xir = (xiRedirectUrl) ? xiRedirectUrl : window.location;

   this.setAttribute('xiRedirectUrl', xir);

   this.setAttribute('redirectUrl', '');

   if(redirectUrl) {

      this.setAttribute('redirectUrl', redirectUrl);

   }   

}



swfObj.ObjSwf.prototype = {

   setAttribute: function(name, value){

      this.attributes[name] = value;

   },

   getAttribute: function(name){

      return this.attributes[name];

   },

   addParam: function(name, value){

      this.params[name] = value;

   },

   getParams: function(){

      return this.params;

   },

   addVariable: function(name, value){

      this.variables[name] = value;

   },

   getVariable: function(name){

      return this.variables[name];

   },

   getVariables: function(){

      return this.variables;

   },

   createParamTag: function(n, v){

      var p = document.createElement('param');

      p.setAttribute('name', n);

      p.setAttribute('value', v);

      return p;

   },

   getVariablePairs: function(){

      var variablePairs = new Array();

      var key;

      var variables = this.getVariables();

      for(key in variables){

         variablePairs.push(key +"="+ variables[key]);

      }

      return variablePairs;

   },

   getFlashHTML: function() {

      var flashNode = "";

      //NETSCAPE

      if (navigator.plugins && navigator.mimeTypes && navigator.mimeTypes.length) {

         if (this.getAttribute("doExpressInstall")) this.addVariable("MMplayerType", "PlugIn");

         flashNode = '<embed type="application/x-shockwave-flash" src="'+ this.getAttribute('swf') +'" width="'+ this.getAttribute('width') +'" height="'+ this.getAttribute('height') +'"';

         flashNode += ' id="'+ this.getAttribute('id') +'" name="'+ this.getAttribute('id') +'" ';

         var params = this.getParams();

         for(var key in params){

            flashNode += [key] +'="'+ params[key] +'" ';

         }

         var pairs = this.getVariablePairs().join("&");

         if (pairs.length > 0){

            flashNode += 'flashvars="'+ pairs +'"';

         }

         flashNode += '/>';

      }

      //IE

      else{

         if (this.getAttribute("doExpressInstall")) this.addVariable("MMplayerType", "ActiveX");

         flashNode = '<object id="'+ this.getAttribute('id') +'" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" width="'+ this.getAttribute('width') +'" height="'+ this.getAttribute('height') +'">';

         flashNode += '<param name="movie" value="'+ this.getAttribute('swf') +'" />';

         var params = this.getParams();

         for(var key in params) {

            flashNode += '<param name="'+ key +'" value="'+ params[key] +'" />';

         }

         var pairs = this.getVariablePairs().join("&");

         if(pairs.length > 0) {

            flashNode += '<param name="flashvars" value="'+ pairs +'" />';

         }

         flashNode += "</object>";

      }

      return flashNode;

   },

   write: function(elementId){

      if(this.useExpressInstall) {

         // Express Install

         var expressInstallReqVer = new swfObj.PlayerVersion([6,0,65]);

         if (this.installedVer.versionIsValid(expressInstallReqVer) && !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);

         }

      }

      else {

         this.setAttribute('doExpressInstall', false);

      }

      var ObjLocation = (typeof elementId == 'string') ? document.getElementById(elementId) : elementId;

      if(this.skipDetect || this.getAttribute('doExpressInstall') || this.installedVer.versionIsValid(this.getAttribute('version'))){

         ObjLocation.innerHTML = this.getFlashHTML();

      }

      else{

         if(this.getAttribute('redirectUrl') != "") {

            document.location.replace(this.getAttribute('redirectUrl'));

         }

         else{

            var place = document.location.toString();            

            if (place.indexOf("http:\/\/localhost\/")!=-1){

               place = place.split("http://localhost/").join("");               

            }

            else {

               place = place.split("http://").join("");

               place = place.split("https://").join("");

            }   

            var j = 0;

            if (place.indexOf("\/")!=-1){

               place = place.split("\/");

               j = place.length-2;

            }

            place = "";

            for (i=0; i<j; i++){

               place += "../";

            }            

            var txt = "<a href='http://www.macromedia.com/shockwave/download/download.cgi?P1_Pro d_Version=ShockwaveFlash'>";

            txt += "<img src='" + place + "ObjSwf/images/GetFlashPlayer.gif' width='99' height='40' border=0>";

            txt += "</a>";

            ObjLocation.innerHTML = txt;

         }

      }

   }

}



/* ---- Player Version ---- */

swfObj.swfObjUtil.getPlayerVersion = function(reqVer, xiInstall){

   ver = reqVer.major + "." + reqVer.minor + "." + reqVer.rev;   

   var PlayerVersion = new swfObj.PlayerVersion(ver.toString().split("."));

   if(navigator.plugins && navigator.mimeTypes.length){

      var x = navigator.plugins["Shockwave Flash"];      

      if(x && x.description) {

         PlayerVersion = new swfObj.PlayerVersion(x.description.replace(/([a-z]|[A-Z]|\s)+/, "").replace(/(\s+r|\s+b[0-9]+)/, ".").split("."));

      }

   }

   else{      

      try{

         var axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash");

         for (var i=3; axo!=null; i++) {

            axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash."+i);

            PlayerVersion = new swfObj.PlayerVersion([i,0,0]);   

         }

      }

      catch(e){}      

      if (reqVer && PlayerVersion.major > reqVer.major) return PlayerVersion; // version is ok, skip minor detection

      if (!reqVer || ((reqVer.minor != 0 || reqVer.rev != 0) && PlayerVersion.major == reqVer.major) || PlayerVersion.major != 6 || xiInstall) {

         try{

            PlayerVersion = new swfObj.PlayerVersion(axo.GetVariable("$version").split(" ")[1].split(","));

         }

         catch(e){}

      }

   }   

   return PlayerVersion;

}



swfObj.PlayerVersion = function(arrVersion){

   this.major = parseInt(arrVersion[0]) || 0;

   this.minor = parseInt(arrVersion[1]) || 0;

   this.rev = parseInt(arrVersion[2]) || 0;   

}



swfObj.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;

}



if (Array.prototype.push == null) {

   Array.prototype.push = function(item) {

      this[this.length] = item;

      return this.length;

   }

}



var ObjSwf = swfObj.ObjSwf;