function SwfBrowser() { 
	SwfBrowser.swfBrowserArray.push(this);
}

SwfBrowser.swfBrowserArray = new Array();
SwfBrowser.initReadyCalled = false;

SwfBrowser.initRequest = function(target,commandName,args) {

	if(SwfBrowser.initReadyCalled)
		return;

	SwfBrowser.initReadyCalled = true;

	for(var i in SwfBrowser.swfBrowserArray){
		var swfBrowser = SwfBrowser.swfBrowserArray[i];
		SwfBrowser_setVariable(swfBrowser.name,"browserWatcher.initReady",true)
	}
		
}

//*************************************


SwfBrowser.prototype.createWindow = function(parentWindow,name,position,left,top,width,height,flashVarArray,src,args) {
	this.name = name;
	this.wmode = args ? args : "transparent";

	if(!flashVarArray)
		flashVarArray = new Array();


	if(src){
		this.swfSrc = src;
		//flashVars = 'documentSrc=' + this.initialUrl;	
	}else{
		this.swfSrc = browserManager.pathToFrameWork + browserManager.swfName;
	}

	if(BrowserManager.version){
		var concatStr = (this.swfSrc.indexOf('?')>=0) ? '&' : '?'; 
		this.swfSrc += concatStr + '_EsiFBMLVersion=' + BrowserManager.version;
		flashVarArray["_EsiFBMLVersion"] = BrowserManager.version;
	}


	flashVarArray["name"] = name;

	var flashVars = SwfBrowser_buildFlashVarString(flashVarArray);

	if(browserManager.swfQuality==undefined)
		this.quality = "autohigh";
	else 
		this.quality = browserManager.swfQuality;

	var buff = '<div id="' + this.name + '_div" style="width:' + width + ';height=' + height + ';position:relative;left:' + 0 + ';top:' + 0 + ';">\n' + 
	'<object id="' + this.name + '" classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=7,0,0,0" width="' + width  + '" height="' + height + '" align="middle">\n' + 
	'<param name="movie" value="' + this.swfSrc + '" />\n' +
	'<param name="swLiveConnect" value="true" />\n' +
	'<param name="flashVars" value="'+ flashVars + '" />\n' +
	'<param name="quality" value="' + this.quality + '" />\n' +
	'<param name="scale" value="noscale" />\n' +
	'<param name="salign" value="lt" />\n' +
	'<param name="wmode" value="' + this.wmode + '" />\n'

	if(SwfBrowser.bgcolor)
		buff += '<param name="bgcolor" value="' + SwfBrowser.bgcolor + '" />\n'

	buff += '<embed src="' + this.swfSrc + '" quality="' + this.quality + '" ' + 
	'flashVars="'+ flashVars + '"' + 
	'wmode="' + this.wmode + '" scale="noscale" salign="lt" width="' + width + '" height="' + height + '" '
	 
	if(SwfBrowser.bgcolor)
		buff += 'bgcolor="' + SwfBrowser.bgcolor + '" '

	
	buff += 'align="middle" type="application/x-shockwave-flash" ' + 
	'pluginspage="http://www.macromedia.com/go/getflashplayer" swLiveConnect="true" NAME="' + this.name + '"/>\n' +

	'</object>\n' + 
	'</div>\n';
	//Debug.trace(buff);	
	document.getElementById(parentWindow).innerHTML = buff;
	document.write(this.writeFSCommand());	
}
function SwfBrowser_buildFlashVarString(flashVars) {

	var buff = "";

	for(i in flashVars)
		buff += i + "=" + escape(flashVars[i]) + "&";

	return buff.slice(0,buff.length-1);

}

function SwfBrowser_setVariable(id,name,value) {
	//Debug.alert('SwfBrowser_setVariable(' + id + ',' + name + ',' + value + ')');		
	//if(0){		
	if(navigator.platform.toLowerCase().indexOf('win') != -1){			
		try {
			document.getElementById(id).SetVariable(name, value);	
		}catch(e) {
			window.document[id].SetVariable(name, value);	
		}
	}else{
		var diff = (new Date().getTime()-this.time);

		if(diff<20){
			this.divId++;
			SwfBrowser_writeLocalConnectionDiv(this.divId,id,name,value);
		}else{
			this.divId=0;
			SwfBrowser_writeLocalConnectionDiv(0,id,name,value);
		}
		
		this.time = new Date().getTime();
	}
}
SwfBrowser_writeLocalConnectionDiv = function (divid,id,name,value) {

	var gateway = browserManager.pathToFrameWork + "gateway.swf";

	var divcontainer = "flash_setvariables_"+divid;
	if(!document.getElementById(divcontainer)){
			var divholder = document.createElement("div");
			divholder.id = divcontainer;
			document.body.appendChild(divholder);
	}

	document.getElementById(divcontainer).innerHTML = "";
	var flashquery = name + '=' + value;
	var divinfo = "<embed src='" + gateway + "' FlashVars='lc="+id+"&fq="+escape(flashquery)+"' width='0' height='0' type='application/x-shockwave-flash'></embed>";
	document.getElementById(divcontainer).innerHTML = divinfo;

}; 
SwfBrowser.prototype.navigate = function(navigateToUrl) {
	//SwfBrowser_setVariable(this.name,"navigateToUrl",navigateToUrl);	
	SwfBrowser_setVariable(this.name,"browserWatcher.navigateToUrl",navigateToUrl);
}
SwfBrowser.prototype.command = function(target,commandName,args) {
	//Debug.trace("SwfBrowser_setVariable(" + this.name + ",browserWatcher.command,"+target+","+commandName+","+args+");")		
	SwfBrowser_setVariable(this.name,"browserWatcher.command",target+','+commandName+','+args);
}
SwfBrowser.prototype.setBrowserProperty = function(target,property,args) {
	//Debug.trace("SwfBrowser_setBrowserProperty(" + this.name + ",browserWatcher.property,"+target+","+property+","+args+");")			
	SwfBrowser_setVariable(this.name,"browserWatcher.property",target+','+property+','+args);
}
SwfBrowser.prototype.writeFSCommand = function() {
	var buff = "<script language=\"javascript\">\n" + 
			"\tfunction " + this.name + "_DoFSCommand(command, arguments) {\n" + 
			//"\t\tprompt('',arguments);\n" + 				
			"\t\tvar args = arguments.split(\",\");\n" + 
			"var scriptCall = command + \"(\" + args + \")\";\n" + 
			"eval(scriptCall);\n" + 
			"\t}\n" + 
			"</script>\n"; 
	if (navigator.appName && navigator.appName.indexOf("Microsoft") != -1 && navigator.userAgent.indexOf("Windows") != -1 && navigator.userAgent.indexOf("Windows 3.1") == -1) {
		document.write('<script language=\"VBScript\"\>\n');
		document.write('On Error Resume Next\n');
		document.write('Sub ' + this.name + '_FSCommand(ByVal command, ByVal args)\n');
		document.write('\tCall ' + this.name + '_DoFSCommand(command, args)\n');
		document.write('End Sub\n');
		document.write('</script\>\n');
	}
	return buff;
}
SwfBrowser.prototype.onPageLoad = function() { }
SwfBrowser.prototype.updateWindow = function() { }
SwfBrowser.prototype.destroyWindow = function() { }
