/***********************************
 * Class for working with flash
 * 
 * Example 1: 
   ---------
   oFlash = new Flash(); // creating of flash object
   var sNoFlash = "Update your flash version";
   oFlash.build( "source=sample.swf,width=100,height=100,bgcolor=#ffffff,transparent=true", sNoFlash, 8, flashVariables);
 **********************************/
function Flash(){
	var aeFlash = new Array();

	this.build = function( vFlash, vNone, iVersion, flashVariables ){
		flashVariables = (flashVariables)?(flashVariables):('');
		var vVersion = this.get_version( iVersion );
		if( vVersion.toString() != "false" ){
			this.enable();
			vVersion = this.get_version( iVersion );
		}
		if( vVersion ){
			document.write(build_object( vFlash, flashVariables, vVersion ));
		} else if( vNone ){
			document.write( vNone );
		}
	}
	
	this.get_version = function( iVersion ){
		var vVersion = Cookie.get("flash");
		if( !vVersion ){
			vVersion = check_flash_version( iVersion );
			Cookie.set("flash",( vVersion ) ? vVersion : "", 1000 * 60);
			return vVersion;
		}else if( iVersion && iVersion > vVersion ){
			vVersion = false;
		}
		return ( vVersion == "false" ) ?  false : vVersion;
	}
	
	this.disable = function(){
		set_flash_disabled( true );
	}
	
	this.enable = function(){
		set_flash_disabled( false );
	}
	
	return this;

	function build_object( sOptions, sFlashVariables, vVersion ){
		sFlashVariables = (sFlashVariables)?(sFlashVariables):(null);
		var asOptions = sOptions.split( "," );
		for( var i = 0 ; i < asOptions.length ; i++){
			asPair = asOptions[i].split( "=" );
			asOptions[asPair[0]] = unescape(asPair[1]);
		}
		var sHTML = '<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000"';
		sHTML += 'codebase="http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version='+vVersion+',0,0,0" width="' + asOptions.width + '" height="' + asOptions.height + '" align="middle">' + '<param name="allowScriptAccess" value="sameDomain">' + '<param name="movie" value="' + asOptions.source + '">' + '<param name="quality" value="high">';
		if( asOptions.background ){ sHTML += '<param name="bgcolor" value="' + asOptions.background + '">'; }
		if( asOptions.transparent ){ sHTML += '<param name="wmode" value="transparent">' }
		if( sFlashVariables ){ sHTML += '<param name="flashvars" value="' + sFlashVariables + '">'; }
		sHTML += '<embed quality="high" allowScriptAccess="sameDomain" type="application/x-shockwave-flash"' + ' pluginspage="http://www.macromedia.com/go/getflashplayer"' + ' src="' + asOptions.source + '" width="' + asOptions.width + '" height="' + asOptions.height + '"';
		if( asOptions.background ){ sHTML += ' bgcolor="' + asOptions.background + '"'; }
		if( asOptions.transparent ){ sHTML += ' wmode="transparent"' }
		if( sFlashVariables ){ sHTML += ' flashvars="' + sFlashVariables + '"'; }
		sHTML += '></embed></object>';
		return sHTML;
	}
	
	function set_flash_disabled( bDisabled ){
		Cookie.set("flash",( bDisabled ) ?  "false" : "", 1000 * 60);
	}
	
	function check_flash_version( iVersion ){
		if( navigator.plugins && navigator.plugins['Shockwave Flash'] ){
			sVersion = parseInt( navigator.plugins['Shockwave Flash'].description.replace( new RegExp( "^[^\\d]+(\\d+).*$"), "$1" ) );
//document.write(sVersion);
//document.write("flash ver: " + sVersion);
//document.write("; required ver: " + iVersion);
			return ( isNaN( sVersion ) ) ? ( !iVersion ) ? false : 0 : (sVersion >= iVersion)?sVersion : false;
		}else if( dhtml.IE && !dhtml.MAC ){
			var oTemp, iMax = 20;
			iVersion = ( !iVersion ) ? 3 : iVersion;
			for( var i = iVersion ; i < iMax ; i++ ){
				try{
					oTemp = new ActiveXObject( "ShockwaveFlash.ShockwaveFlash." + i );
					iVersion = i;
				}catch(e){
					return ( i > iVersion ) ? iVersion : 0;
				}
			}
			return iVersion;
		}else{
			return ( !iVersion ) ? false : 0;
		}
	}
}

