


Debug = new Object();
Debug.active = false;
Debug.mode = "";
Debug.alert = function (statement) {
	if(!this.active)return;
	alert(statement);
}; 

Debug.alertObject = function (obj) {
	if(!this.active)return;
	var str = "";

	for (var i in obj)
		str += i + ' = ' + obj[i] + '\n';

	alert(str);
}; 

Debug.traceObject = function (obj) {
	if(!this.active)return;
	var str = "";

	for (var i in obj)
		str += i + ' = ' + obj[i] + '\n';

	Debug.trace(str);
}; 

Debug.traceOnly = function (statement) {
	Debug.active = true;
	Debug.trace(statement);		
	Debug.active = false;		
}
Debug.trace = function (statement) {
	if(!this.active)return;
	if(!this.mode=="alert"){	
		Debug.alert(statement);
		return;
	}
	if(document.getElementById("debugTextArea")&&statement){
		document.getElementById("debugTextArea").value += ('\n'+statement);	
		return;
	}
	var debugDiv= document.createElement('div');
	var width = "100%";
	var height = 200;
	var left = 10;
	var top = screen.availHeight - height - ((window.ActiveXObject) ? 60 : 90);
	var newStyle = 'display:inline;position:absolute;z-index:300;left:' + left + 'px;top:' + top + 'px;width:' + width + 'px;height:' + height + 'px;';	
	debugDiv.style.cssText = newStyle;
	document.body.appendChild(debugDiv);	
	var debugTextArea= document.createElement('textarea');
	debugTextArea.setAttribute("name","debugTextArea");
	debugTextArea.setAttribute("id","debugTextArea");
	debugTextArea.setAttribute("cols","130");
	debugTextArea.setAttribute("rows","8");
	debugTextArea.setAttribute("wrap","off");
	debugDiv.appendChild(debugTextArea);	
	var debugButton= document.createElement('button');
	debugButton.setAttribute("name","debugButton");
	debugButton.setAttribute("id","debugButton");
	var buttext = document.createTextNode('clear');
	debugButton.appendChild(buttext);
	debugButton.onclick = function () {
		document.getElementById("debugTextArea").value = "";
	};

	debugDiv.appendChild(debugButton);	
	if(statement){
		debugTextArea.value+=statement;
	}
	
}; 

openDebugger = function () {
	Debug.active = true;
	try {
		debugwin.focus();
	}catch(e){
		debugwin = window.open('/global/flash/logcontroller/','debugger','width=400,height=300,resizable=yes')
		debugwin.focus();
	}
}; 

/*
	unFocus.Utilities.EventManager, version 1.0b (beta) (2005/12/16)
	Copyright: 2005, Kevin Newman (http://www.unfocus.com/Projects/)
	License: http://creativecommons.org/licenses/LGPL/2.1/
*/
// make sure faux-namespace is available before adding to it
if (typeof unFocus == "undefined") var unFocus = {};
if (!unFocus.Utilities) unFocus.Utilities = {};

unFocus.Utilities.EventManager = function(arg) {
	this._listeners = {};
	for (var i = 0; i < arguments.length; i++) {
		this._listeners[arguments[i]] = [];
	}
};

unFocus.Utilities.EventManager.prototype.addEventListener = function($type, $listener) {
	for (var i = 0; i < this._listeners[$type].length; i++)
		if (this._listeners[$type][i] == $listener) return;
		
	this._listeners[$type].push($listener);
};

unFocus.Utilities.EventManager.prototype.removeEventListener = function($type, $listener) {
	for (var i = 0; i < this._listeners[$type].length; i++) {
		if (this._listeners[$type][i] == $listener) {
			this._listeners.splice(i,1);
			return;
		}
	}
};

unFocus.Utilities.EventManager.prototype.notifyListeners = function($type, $data) {
	for (var i = 0; i < this._listeners[$type].length; i++)
		this._listeners[$type][i]($data);
};

/*
unFocus.History, version 1.9 (alpha) (2006/04/14)
Copyright: 2005-2006, Kevin Newman (http://www.unfocus.com/Projects/HistoryKeeper/)
License: http://creativecommons.org/licenses/LGPL/2.1/
*/

unFocus.History = (function() {

function Keeper() {
	var _this = this,
	
	_pollInterval = 200, _intervalID,
	
	_currentHash;

	var _getHash = function() {
		return location.hash.substring(1);
	};
	_currentHash = _getHash();
	
	function _setHash($newHash) {
		window.location.hash = $newHash;
	}
	
	function _watchHash() {
		
		var $newHash = _getHash();
		
		if(!$newHash)
			$newHash = "/" + window.location.search;
			
		if (_currentHash != $newHash) {
			
			_currentHash = $newHash;
			_this.notifyListeners("historyChange", $newHash);
			
		}
	}
	
	_this.getCurrent = function() {
		return _currentHash;
	};
	
	function _createAnchor($newHash) {
		if (!_checkAnchorExists($newHash)) {
			var $anchor = document.createElement("a");
			$anchor.setAttribute("name", $newHash);
			if (/MSIE/.test(navigator.userAgent) && !window.opera)
				$anchor = document.createElement('<a name="'+$newHash+'">'+$newHash+"</a>");
			with ($anchor.style) {
				position = "absolute";
				display = "block";
				top = getScrollY()+"px";
				left = getScrollX()+"px";
			}
			document.body.insertBefore($anchor,document.body.firstChild);
		}
	}
	function _checkAnchorExists($name) {
		var $anchors = document.anchors;
		for (var i = 0; i < $anchors.length; i++)
			if ($anchors[i].name == $name)
				return true;
		return false;
	}
	if (typeof self.pageYOffset == "number") {
		function getScrollY() {
			return self.pageYOffset;
		}
	} else if (document.documentElement && document.documentElement.scrollTop) {
		function getScrollY() {
			return document.documentElement.scrollTop;
		}
	} else if (document.body) {
		function getScrollY() {
			return document.body.scrollTop;
		}
	}
	eval(String(getScrollY).toString().replace(/Top/g,"Left").replace(/Y/g,"X"));
	
	_this.addHistory = function(){};

	if (/Safari/.test(navigator.appVersion)) {
		_getHash = function() {
			var _location = location.toString();
			var i = _location.indexOf("#");
			if (i < 0) return "";
			return _location.substring(i+1);
		};
	}
	if (typeof ActiveXObject != "undefined" && window.print && 
			   !window.opera && navigator.userAgent.match(/MSIE (\d\.\d)/)[1] >= 5.5) {
		var _historyFrameObj;
		
		function _createHistoryFrame() {
			
			if(_historyFrameObj)
				return;
				
			var $historyFrameName = "unFocusHistoryFrame";
			_historyFrameObj = document.createElement("iframe");
			_historyFrameObj.setAttribute("name", $historyFrameName);
			_historyFrameObj.setAttribute("id", $historyFrameName);
			_historyFrameObj.style.position = "absolute";
			_historyFrameObj.style.top = "-3000px";
			document.body.insertBefore(_historyFrameObj,document.body.firstChild);
			_createHistoryHTML(_currentHash);
		}
		
		function _createHistoryHTML($newHash) {
			_historyFrameObj.src = "/sitewide/fbml/utils/historyUpdate.html?newHash="+escape($newHash);
		}
		
		_this._updateFromHistory = function() {
			_this._updateFromHistory = function($hash) {
				_currentHash = $hash;
				_this.notifyListeners("historyChange", $hash);
			};
		};
		
		_this.addHistory = function($newHash) {
			
			_this.addHistory = function($newHash) { // adds history and bookmark hash
			
				_createHistoryFrame();
				
				if (_currentHash != $newHash) {
					_currentHash = $newHash;
					_createHistoryHTML($newHash);
				}
			};
			_this.addHistory($newHash);
		};
		_this.addEventListener("historyChange", function($hash) { _setHash($hash) });
		
	} else /*if (!/Safari/.test(navigator.userAgent))*/ {
		
		if (setInterval)
			_intervalID = setInterval(_watchHash, _pollInterval);
		
		_this.addHistory = function($newHash) { // adds history and bookmark hash
			_this.addHistory = function($newHash) {
				if (_currentHash != $newHash) {
					_createAnchor($newHash);
					_currentHash = $newHash;
					_setHash($newHash);
					_this.notifyListeners("historyChange",$newHash);
				}
			};
		};
	}
}
Keeper.prototype = new unFocus.Utilities.EventManager("historyChange");

return new Keeper();

})();
BrowserManager_findTarget = function(url,target) {//find a browserManager instance in an iframe and call navigate on it
	var paths = BrowserManager_findPaths(target);
	if(paths){	
		url = BrowserManager_buildUrl(url,paths.newPath);
		frames[paths.fullPath].browserManager.navigate(url,paths.newPath,true);
	}
}

BrowserManager_findPaths = function(target) {//find a browserManager instance in an iframe and call navigate on it
	var path = '';
	var browsers  = target.split(this.delimeter);

	for(var i in browsers){

		path += (i>0 ? this.delimeter : '') + browsers[i];
		try{
			// check for browserManager
			if(frames[path].browserManager){
				// if found, truncate path thus far and pass only the remaining browsers.
				var newPath = browsers[i] + target.split(path).join("");
				return {fullPath:path,newPath:newPath};
			}
			
		}catch(e){
			// no error handling here, just move to the next browser.
		}

	}
	return null;
}

BrowserManager_buildUrl = function(url,target) {
	if(url.indexOf(',target=')>0){	
		url = url.slice(0,url.indexOf(',target='));
	}
	url += ',target=' + target;
	return url;
}

BrowserManager_removeItemAt = function (a,index) {
	var temp = [];
	for(var i = 0; i<a.length; i++)
		if(i!=index)
			temp[temp.length] = a[i]; //since there is no push on mac ie
	return temp;
}; 

BrowserManager_buildOmnitureCall = function (args) {

		var vals = args.split('&');
		var o = new Object();
		o.tVars = new Object();

		for(var item in vals){
			
			var p = vals[item].split("=");
			if(p[0] == "pageVals"){

				if(p[1].charAt(p[1].length - 1) == ";") 
			     		p[1] = p[1].substr(0, p[1].length -1);
				
				var pageValsArray = p[1].split(";");
				for(var pageValItem in pageValsArray){
					var pageValPair = pageValsArray[pageValItem].split("|");
					var pname = pageValPair[0];
					if(pname!=null && pname!=undefined && pname!="")
						o[pname] = pageValPair[1]
				}
					
			}else{
				var pname = p[0];
				if(pname!=null && pname!=undefined && pname!="")
					o.tVars[pname] = p[1];
			}
		}
		
		return o;
}; 

function BrowserManager(name,defaultBrowser,controller) {
	this.name = name;
	this.delimeter = '_';
	this.childBrowsers = new Array();
	this.defaultBrowser = defaultBrowser;
	this.pathToFrameWork = "/global/apps/fbml/mtvi/";
	this.swfName = "flash_browser.swf";
	this.controller = controller;
}

BrowserManager.prototype.routeMessage = function(type,args,target,pathSegment) {
	
		if(Debug.active)
			Debug.trace(this.name + ' BrowserManager.routeMessage(' + type + ',' + args + ','+target+','+pathSegment+');');
	
		
		if(pathSegment){
			// it's an iframe we're looking for, with a BrowserManager in it.
			// we found a path segment, so there is a childBrowser w/ the name pathSegment
			// lets continue to route to the target through it.
			var targetNew = pathSegment.slice(pathSegment.lastIndexOf('.')+1,pathSegment.length) + target.split(pathSegment).join("");
			this.childBrowsers[pathSegment].routeMessage(type,args,target);
			return;
		}
		
		if(type=="command"){
			
			var func = args.slice(0,args.indexOf(":"))
			var args = args.slice(args.indexOf(":")+1)
			
			if(this.childBrowsers[target]){
				
				// we have what we are looking for
				this.childBrowsers[target].command(target,func,args);
				
			}else{
				
				// we don't have what we're looking for and we don't have a path segment.
				// so let's see if this framework can find one.
				// if it does, it will kick it back out
				
				this.findFirstChild(target).command(target,func,args);
			}
		}
		
		if(type=="setBrowserProperty"){
			
			// here we don't have a pathSegment, so we'll dig into the first flash thing we find (since we are setting a browser property)
			// if it's in here, we'll set it
			// otherwise maybe we'll find a pathSegment
			var temp = args.split('=');
			this.findFirstChild(target).setBrowserProperty(target,temp[0],temp[1]);
		}
		
		if(type=="navigate"){
			
			var targetSwfBrowser = this.childBrowsers[this.defaultBrowser];
			if(target){

				// the full target will be sent to the SwfBrowser to handle
				args = BrowserManager_buildUrl(args,target);

				// call navigate on the first browser - slice the target down to the first browser.
				targetSwfBrowser = this.findFirstChild(target)//(target.indexOf(this.delimeter)>0) ? target.slice(0,target.indexOf(this.delimeter)) : target;
			}
			
			targetSwfBrowser.navigate(args);
		}
}

BrowserManager.prototype.omniture = function(args) {
	
	if(Debug.active)
		Debug.trace('omniture = ' + args)
		
	try {

		var o = BrowserManager_buildOmnitureCall(args)
		if(Debug.active){

			str = "";
			for(var i in o) {
				str+= '\t' + i + ' = ' + o[i] + '\n';
				for(oi in o[i])
					str+= '\t\t' + oi + ' = ' + o[i][oi] + '\n';

			}

			Debug.trace(str);

		}
		REPORTING.makeCall('fbml_pv',o);

	}catch(e) {
		
		Debug.trace("ominiture error: " + e + " ->\nomniture object :");
		for(var i in o) {
			Debug.trace('\t' + i + ' = ' + o[i]);
			for(oi in o[i])
				Debug.trace('\t\t' + oi + ' = ' + o[i][oi]);

		}
	}
}

BrowserManager.prototype.omniture_grid = function(args) {
    var o = BrowserManager_buildOmnitureCall(args);
    REPORTING.makeCall("fbml_grid", o.tVars);
}


BrowserManager.prototype.omniture_lev = function(args) {
    var o = BrowserManager_buildOmnitureCall(args);
    REPORTING.makeCall("fbml_lev", o.tVars);
}

BrowserManager.prototype.updateTitle = function(title) {
	window.document.title = title ? unescape(unescape(title)) : "";
}

BrowserManager.prototype.updateUrl = function(url) {
	this.controller.onNavigate(url);
}

BrowserManager.prototype.createWindow = function(parentWindow,type,name,position,left,top,width,height,src) {
	
	try{
		
		this.childBrowsers[name] = eval(' new ' + type + '()');
		var temp = BrowserManager_removeItemAt(arguments,1);
		this.childBrowsers[name].createWindow.apply(this.childBrowsers[name],temp);

	}catch(e){
		
		//window.status = 'Error creating ' + name + ' : ' + e;	
	}
}

BrowserManager.prototype.updateWindow = function(name,position,left,top,width,height,src) {
	
	try{
		
		var temp = BrowserManager_removeItemAt(arguments,0);
		this.childBrowsers[name].updateWindow.apply(this.childBrowsers[name],temp);
		
	}catch(e){
		//window.status = 'Error updating ' + name + ' : ' + e;	
	}
}

BrowserManager.prototype.destroyWindow = function(name) {
	
	try{
		
		this.childBrowsers[name].destroyWindow();
		
	}catch(e){
		//window.status = 'Error destroying ' + name + ' : ' + e;	
	}
}

BrowserManager.prototype.findFirstChild = function(name) {
	var path = '';
	var browsers = name.split(this.delimeter);
	for (var i in browsers){
		
		path += (i>0 ? this.delimeter : '') + browsers[i];
		
		try{
			
			var b = this.childBrowsers[path];
			if(b)
				return b;
				
		}catch(e){ /** no error handling here, just move to the next browser.**/}
	}
}

BrowserManager.prototype.onPageLoad = function() {
	for (i in this.childBrowsers){
		this.childBrowsers[i].onPageLoad();
	}
}
BrowserManager.prototype.navigateTop = function(args) {
	top.location.href = args;
}

BrowserManager.prototype.targetOpener = function(args) {
	try {
	
		if(navigator.platform.toLowerCase().indexOf('win') == -1)
			throw "mac"; //weird bug with losing querystring params using gateway.swf
			
		window.opener.browserManager.routeMessage("navigate",args);
		window.opener.focus();
	}catch(e){
		try{
			window.opener.location.href = args;
			window.opener.focus();
		}catch(e){
			var w = window.open(args,"targetOpen");
			w.focus();
			//browserManager.routeMessage("navigate",args);
		}
		
	}
}

function HistoryController() {
	var navigateToUrl;
	var browserModel;
	this.onNavigate = function(hash) {
		
		if(!hash)
			hash = "/"+window.location.search;
		
		this.onNavigate = function(hash) {
			navigateToUrl = hash;
			unFocus.History.addHistory(hash);
		};
		this.onNavigate(hash);
	};

	this.historyListener = function(historyHash) {
		
		if(!historyHash)
			return;
			
		if (historyHash != navigateToUrl) 
			browserModel.routeMessage("navigate", historyHash);
			
		navigateToUrl = null;
	};
	
	this.setBrowser = function(b) {
		browserModel = b;
	}

	unFocus.History.addEventListener('historyChange', this.historyListener);
};
function SwfBrowser() { 
	SwfBrowser.swfBrowserArray.push(this);
}

SwfBrowser.swfBrowserArray = new Array();
SwfBrowser.initReadyCalled = false;

SwfBrowser.initRequest = function() {
	return true;
}

//*************************************


SwfBrowser.prototype.createWindow = function(parentWindow,name,position,left,top,width,height,flashVarArray,src,args,flashVersion) {
	this.name = name;
	this.wmode = args ? args : "transparent";
	this.flashVersion = flashVersion ? flashVersion : 7;

	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 isIE = (navigator.userAgent.toLowerCase().indexOf("msie")!=-1);
	flashVarArray["isIE"] = isIE;

	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="height:' + height + 'px;width=' + width + 'px;position:relative;left:' + 0 + 'px;top:' + 0 + 'px;">\n'; 
	
	if(isIE){
		buff+='<object id="' + this.name + '" classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=' + this.flashVersion + ',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="menu" value="false" />\n' +
		'<' + 'param name="wmode" value="' + this.wmode + '" />\n' +
		'<' + 'param name="allowFullScreen" value="true" />\n' +  
		'<' + 'param name="SeamlessTabbing" value="false" />\n';
		
		if(SwfBrowser.bgcolor)
			buff += '<' + 'param name="bgcolor" value="' + SwfBrowser.bgcolor + '" />\n'
	}else{

	buff += '<' + 'embed sr' + 'c="' + 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" menu="false" type="application/x-shockwave-flash" allowFullScreen="true" AllowScriptAccess="always" ' + 
	'pluginspage="http://www.macromedia.com/go/getflashplayer" swLiveConnect="true" id="' + this.name + '" SeamlessTabbing="false" />\n';

	if(isIE)
		buff+='</object>\n'; 
		
	buff+='</div>\n';
	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_getPlugin(id){
	
	try {
		Debug.trace("document.getElementById(" + id + ") = " + document.getElementById(id))
		return document.getElementById(id);	
		
	}catch(e) {
		Debug.trace("window.document[" + id + "] = " + window.document[id])
		return window.document[id];	
	}
	
}
function SwfBrowser_setVariable(id,name,value) {
	alert('SwfBrowser_setVariable(' + id + ',' + name + ',' + value + ')');		
	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 sr' + 'c="' + 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) {
	var p = SwfBrowser_getPlugin(this.name)
	Debug.trace("p - " + p)
	p.navigate(navigateToUrl);
}

SwfBrowser.prototype.command = function(target,commandName,args) {
	SwfBrowser_getPlugin(this.name).command(target,commandName,args);
}

SwfBrowser.prototype.setBrowserProperty = function(target,property,args) {
	SwfBrowser_getPlugin(this.name).setBrowserProperty(target,property,args);
}

SwfBrowser.prototype.writeFSCommand = function() {
	var buff = "<sc" + "ript 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() { }

function IframeBrowser() { };
IframeBrowser.prototype.createWindow = function(parentWindow,name,position,left,top,width,height,src,depth,visible,scrolling) {
	Debug.trace('IframeBrowser.createWindow(' + parentWindow + ',' + name + ',' + position + ',' + left + ',' + top + ',' + width  + ',' + height + ',' + src + ',' + depth + ',' + visible + ',' + scrolling + ')');					
	try {
		var scrolling = scrolling && scrolling != "null" ? scrolling : "no";
		if(navigator.appName=="Microsoft Internet Explorer"){
			// bug in ie with creating transparency in an iframe using createElement.
			// this way is not supported in mozilla
			this.iframeBrowser = document.createElement('<iframe name="' + name + '" id="' + name + '" sr' + 'c="" allowtransparency="true" scrolling="' + scrolling + '" frameborder="0"></iframe>');
		}else{
			this.iframeBrowser = document.createElement('iframe');
			this.iframeBrowser.setAttribute("id", name);
			this.iframeBrowser.setAttribute("name", name);
			this.iframeBrowser.setAttribute("frameborder", 0);
			this.iframeBrowser.setAttribute("scrolling", scrolling);
			this.iframeBrowser.setAttribute("allowtransparency", "true"); 	
			this.iframeBrowser.setAttribute("background-color", "transparent"); 	
		}
		this.iframeBrowser.style.display = 'none';
		
		this.target = document.getElementById(parentWindow+"_div");	
		var existingNode = document.getElementById(name);
		if(existingNode){
			existingNode.parentNode.removeChild(existingNode);
		}
		this.target.appendChild(this.iframeBrowser);

		if(src){
			this.updateWindow(position,left,top,width,height,src,depth,visible);
		}

	}catch(e) {
		Debug.trace("IframeBrowser Error: " + e);
	}
}
IframeBrowser.prototype.updateWindow = function (position,left,top,width,height,src,depth,visible) {
	Debug.trace(this.iframeBrowser.id + ' IframeBrowser_updateWindow(' + position + ',' + left + ',' + top + ',' + width + ',' + height + ',' + src  + ')');					
	try {

		position = "absolute";

		// update the style of the iframe
		var display = (visible==true||visible=="true"||visible==undefined) ? 'inline' : 'none';
		this.iframeBrowser.style.cssText = 	'display:' + display + 
							';z-index:'+depth+';position:' + position + ';left:' + left + 'px;top:' + 
							top + 'px;width:' + width + 'px;height:' + height + 'px;';	

		// if there is a src and the src is different, then update.
		//if(this.iframeBrowser.contentWindow.location.pathname)
			//currentSrc = this.iframeBrowser.contentWindow.location.pathname + this.iframeBrowser.contentWindow.location.search;	
		
		this.setSrc(src);
		
	}catch(e) {
		
		this.setSrc(src);
	}
}

IframeBrowser.prototype.setSrc = function(src) {

	if(src && this.currentSrc!=src){
	
		try{
		
			if(this.iframeBrowser.contentWindow)
				this.iframeBrowser.contentWindow.location.replace(src);
			else
				this.iframeBrowser.src = src;	
			
			this.currentSrc = src;
		}catch(e){
		
			this.iframeBrowser.src = src;
			this.currentSrc = src;
		} 
	}

}

IframeBrowser.prototype.destroyWindow = function() {
	try{
		//this.iframeBrowser.src = "";
		//using replace to prevent adding to the history obj
		this.iframeBrowser.contentWindow.location.replace("about:blank");
	}catch(e){
		Debug.trace("IframeBrowser :: error clearing src");
	}
	this.target.removeChild(this.iframeBrowser);	
}
IframeBrowser.prototype.routeMessage = function(type,args,target) { 
	Debug.trace(this.iframeBrowser.name + " IframeBrowser.routeMessage(" + type + "," + args + "," + target + ")");	
	try {
		frames[this.iframeBrowser.name].browserManager.routeMessage(type,args,target);
	}catch(e){
		Debug.trace('IframeBrowser.routeMessage Error: ' + e);	
	}
}
IframeBrowser.prototype.onPageLoad = function() { }

function IBannerBrowser() { };
IBannerBrowser.prototype.createWindow = function(parentWindow,name,position,left,top,width,height,src,depth,visible) {
	try{
		
		this.iframeBrowser = document.getElementById("iBanner");


		if(src){
			this.updateWindow(position,left,top,width,height,src);
		}

	}catch(e) {
		Debug.trace("IBannerBrowser Error: " + e);
	}
}
IBannerBrowser.prototype.updateWindow = function (position,left,top,width,height,src) {
	this.iframeBrowser.src = src;
}
IBannerBrowser.prototype.destroyWindow = function() {
}
IBannerBrowser.prototype.routeMessage = function(type,args,target) { }
IBannerBrowser.prototype.onPageLoad = function() { }


function IBillboardBrowser() { };
IBillboardBrowser.prototype.createWindow = function(parentWindow,name,position,left,top,width,height,src,depth,visible) {
	try{
		
		this.iframeBrowser = document.getElementById("iBillboard");


		if(src){
			this.updateWindow(position,left,top,width,height,src);
		}

	}catch(e) {
		Debug.trace("IBillboardBrowser Error: " + e);
	}
}
IBillboardBrowser.prototype.updateWindow = function (position,left,top,width,height,src) {
	this.iframeBrowser.src = src;
}
IBillboardBrowser.prototype.destroyWindow = function() {
}
IBillboardBrowser.prototype.routeMessage = function(type,args,target) { }
IBillboardBrowser.prototype.onPageLoad = function() { }

function MediaPlayerBrowser() {
	this.noActiveX = !window.ActiveXObject; 
	this.isMac = (navigator.platform.indexOf('Mac')==0); 
	this.useMediaPlayer = true;
	try {
		this.useMediaPlayer = detectionObject.ok;
		this.noMediaPlayerProcessor = detectionObject.onError;
	}catch(e){
		Debug.trace('detection failed');
	}
}
MediaPlayerBrowser.prototype.createWindow = function(parentWindow,name,position,left,top,width,height,src,nodes) {
	
	try {
		// create browser container div
		this.mediaPlayerBrowser = document.createElement('div');
		this.id = name;
		
		// find parent window to attach this media div to.
		this.target = document.getElementById(parentWindow+"_div");	
		this.target.appendChild(this.mediaPlayerBrowser);

		// create the windows media player object
		//var existingNode = document.getElementById(name);	
		//if(existingNode){	
			//existingNode.parentNode.removeChild(existingNode);	
		//}	
		this.updateWindow(position,left,top,width,height,src);	

	}catch(e){
		Debug.trace("MediaPlayerBrowser Error: " + e);
	}

}
MediaPlayerBrowser.prototype.updateWindow = function(position,left,top,width,height,src) {
	Debug.trace(this.id + ' MediaPlayerBrowser_updateWindow(' + position + ',' + left + ',' + top + ',' + width + ',' + height + ',' + src  + ')');								
	

	this.currentSrc = src;

	if(!this.useMediaPlayer) {
		try{
			this.noMediaPlayerProcessor(src);
			return;
		}catch(e){ 
			Debug.trace('No media player error hanlder')
		};
	}

	if(this.isMac)
		return;
	// set div style
	var newStyle = 'display:inline;position:' + position + ';left:' + left + 'px;top:' + top + 'px;width:' + width + 'px;height:' + height + 'px;';	
	this.mediaPlayerBrowser.style.cssText = newStyle;


	if(this.noActiveX){
		
		//if there is a media player and there is no activex then remove the existing one.
		if(this.mediaPlayer){
			if(!src){
				return;
			}
			this.mediaPlayerBrowser.removeChild(this.mediaPlayer);
		}

		//adjust height for wmp controls
		height = parseInt(height) + 40;

		this.mediaPlayer = document.createElement('embed');
		this.mediaPlayer.setAttribute('type',"application/x-mplayer2");
		this.mediaPlayer.setAttribute('uiMode',"full");
		if(src||src==""){
			this.mediaPlayer.setAttribute('SRC',src);
		}

	}else{

		// if there is a media player, then adjust 
		if(src){
			this.trackPlayer();
		}
		if(this.mediaPlayer){

			this.mediaPlayer.uiMode = 'none';
			this.mediaPlayer.style.display = "inline";

			this.mediaPlayer.setAttribute('width',width);
			this.mediaPlayer.setAttribute('height',height);

			if(src||src==""){
				this.startImage = null;
				this.mediaPlayer.setAttribute('URL',src);
			}


			//MediaPlayerBrowser_writeEventScript(this.id);			
	
		

			return;

		}else{

			//create windows media player object
			this.mediaPlayer = document.createElement('object');
			this.mediaPlayer.setAttribute('codebase',"http://activex.microsoft.com/activex/controls/mplayer/en/nsmp2inf.cab#Version=7,0,0,1954");
			this.mediaPlayer.setAttribute('classid',"CLSID:6BF52A52-394A-11d3-B153-00C04F79FAA6");
			this.mediaPlayer.setAttribute('type',"application/x-oleobject");
			this.mediaPlayer.setAttribute('URL',src);
			this.mediaPlayer.setAttribute('uiMode',"none");
			this.mediaPlayer.setAttribute('windowlessVideo',"true");
			
		}
	}

	this.mediaPlayer.setAttribute('width',width);
	this.mediaPlayer.setAttribute('height',height);
	this.mediaPlayer.setAttribute('id',this.id + '_player');
	this.mediaPlayer.setAttribute('autoStart',"true");
	
	this.mediaPlayerBrowser.appendChild(this.mediaPlayer);

	if(MediaPlayerBrowser.maxBandwidth)
		this.mediaPlayer.network.maxBandwidth = MediaPlayerBrowser.maxBandwidth;

	defaultMediaPlayerInstance = this;

	this.mediaPlayer.attachEvent("playstatechange",this.playstatechange); 	
	this.mediaPlayer.attachEvent("currentItemChange",this.currentItemChange); 	

}
MediaPlayerBrowser.prototype.destroyWindow = function() {
	Debug.trace('MediaPlayerBrowser_destroyWindow(' + this.id + ')');			

	if(this.noActiveX){
		this.mediaPlayer.SRC = null;
		this.mediaPlayerBrowser.removeChild(this.mediaPlayer);			
	}else{
		this.mediaPlayer.controls.pause();
		this.mediaPlayer.uiMode = 'invisible';
		this.mediaPlayer.style.display = "none";
		this.mediaPlayer.URL = null;
	}

	this.target.removeChild(this.mediaPlayerBrowser);			
}
MediaPlayerBrowser.prototype.command = function(name,commandName,args) {
	Debug.trace("MediaPlayerBrowser.command(" + name + "," + commandName + "," + args + ")");	
	switch(commandName) {
		case "play":
			this.mediaPlayer.controls.play();
			this.trackPlayer();
			break;
		case "stop":
			this.mediaPlayer.close();
			MediaPlayerBrowser_setPosition(this.id,0) 
			clearInterval(this.positionInterval);
			break;
		case "pause":
			this.mediaPlayer.controls.pause();
			break;
		case "fastForward":
			this.mediaPlayer.controls.fastForward();
			break;
		case "fastReverse":
			this.mediaPlayer.controls.fastReverse();
			break;
		case "goTo":
			this.mediaPlayer.controls.currentPosition = args;
			break;
		case "setVolume":
			this.mediaPlayer.settings.volume = args;
			break;
		default:
			break;
		
	}
}
MediaPlayerBrowser.prototype.trackPlayer = function () {
	if(this.positionInterval){
		clearInterval(this.positionInterval);
	}
	this.positionInterval = setInterval("MediaPlayerBrowser_setPosition('" + this.id + "')", 250)
}; 
MediaPlayerBrowser_setPosition = function(name,position){ 
	var position = position ? position : browserManager.childBrowsers[name].mediaPlayer.controls.currentPosition
	browserManager.routeMessage("command","setPosition:"+position,"root_browser_media_mediaControl")
}	
MediaPlayerBrowser.prototype.setDuration = function(){ 
	try {
		var duration = this.mediaPlayer.currentMedia.duration
		browserManager.routeMessage("command","setDuration:"+duration,"root_browser_media_mediaControl")
	}catch(e) {
		//window.status = 'Error MediaPlayerBrowser_setDuration ' + this.id + ' : ' + e;
	}
}

MediaPlayerBrowser_writeEventScript = function (name) {

	//document.write('<SCRI' + 'PT LANGUAGE = "JScr' + 'ipt"  FOR="' + name + '_player" EVENT="playStateChange(NewState)"/>')		
}; 

MediaPlayerBrowser.prototype.showStartImage = function () {
	if(this.startImage)
		return;
	var img = "/relaunch/sitewide/components/media/od_initial.gif"
	this.startImageDiv = document.createElement("div")
	this.startImage = document.createElement("img")
	this.startImage.src = img;
	this.startImageDiv.style.cssText = "z-index:100;position:absolute;bottom:0;right:0;";
	this.startImageDiv.appendChild(this.startImage);
	this.mediaPlayerBrowser.appendChild(this.startImageDiv);

}; 


var coad = false;
var lastAdTag = "";

MediaPlayerBrowser.prototype.currentItemChange = function (state) {

	var adDisplayed = false;

	// unfortunaltely, we lose the scope here, using defaultMediaPlayerInstance is temporary and means that we can have only one media player.
	var adTag = defaultMediaPlayerInstance.mediaPlayer.currentMedia.getItemInfo("coAd");

	if((typeof adTag == "undefined") || (adTag == "") && coad == false){
	   // let the regular ad stay
	} else {
	   if((adTag == "none") && (coad == false)){
	   // let the regular ad stay
	   } else {
	      // adTag is set
	      if(adTag.indexOf("doubleclick") != -1){
		 coad = true;
	      }
	   }
	}

	//if(typeof adFrame != "undefined"){	
	   if(adTag != lastAdTag){
	      if(adTag.indexOf("doubleclick") != -1){
		try{
			document.getElementById("root_browser_media_tabMenu_ad").src = adTag;
		}catch(e){
		}
			//adFrame.location.href = adTag; 
		//top.browserManager.routeMessage("navigate",coAdUrl,"root_browser_media_mediaControl");	
	      }
	   } else{
	      // the ad is the same as last one so don't change it
	   }
	//}	

	//window.status = 'adTag = ' + adTag;
	lastAdTag = adTag;

}
MediaPlayerBrowser.prototype.playstatechange = function (state) {

	// unfortunaltely, we lose the scope here, using defaultMediaPlayerInstance is temporary and means that we can have only one media player.

	if(state=="3"){ //play
		defaultMediaPlayerInstance.showStartImage();
		defaultMediaPlayerInstance.setDuration();
	}
	if(state=="8"){ //stop 
	}
}; 

MediaPlayerBrowser.prototype.onPageLoad = function() { }

// Currently functions exactly as IframeBrowser
function AdBrowser() {
}
AdBrowser.prototype.createWindow = function(parentWindow,name,position,left,top,width,height,src,depth,visible) {
	//alert('AdBrowser.createWindow(' + parentWindow + ',' + name + ',' + position + ',' + left + ',' + top + ',' + width + ',' + height + ',' + src  + ',' + depth + ',' + visible + ')');						
	try {
		if(navigator.appName=="Microsoft Internet Explorer"){
			// bug in ie with creating transparency in an iframe using createElement.
			// this way is not supported in mozilla
			this.iframeBrowser = document.createElement('<iframe name="' + name + '" id="' + name + '" src="/global/apps/fbml/js/" allowtransparency="true" scrolling="no" frameborder="0"></iframe>');
		}else{

			this.iframeBrowser = document.createElement('iframe');
			this.iframeBrowser.setAttribute("id", name);
			this.iframeBrowser.setAttribute("name", name);
			this.iframeBrowser.setAttribute("frameborder", 0);
			this.iframeBrowser.setAttribute("scrolling", "no");
			this.iframeBrowser.setAttribute("allowtransparency", "true"); 	
			this.iframeBrowser.setAttribute("background-color", "transparent"); 	
		}
		this.iframeBrowser.style.display = 'none';
		
		this.target = document.getElementById(parentWindow+"_div");	
		this.target.appendChild(this.iframeBrowser);
		if(src){
			this.updateWindow(position,left,top,width,height,src,depth,visible);
		}

	}catch(e) {
		alert("AdBrowser Error: " + e);
	}
}
AdBrowser.prototype.updateWindow = function(position,left,top,width,height,src,depth,visible) {
	//alert(this.iframeBrowser.id + ' AdBrowser.updateWindow(' + position + ',' + left + ',' + top + ',' + width + ',' + height + ',' + src  + ')');						

	// update the style of the iframe
	var display = (visible==true||visible=="true"||visible==null) ? 'inline' : 'none';
	var cssText =  'display:' + display + 
			';z-index:'+depth+';position:' + position + ';left:' + left + 'px;top:' + 
			top + 'px;width:' + width + 'px;height:' + height + 'px;';	
	this.iframeBrowser.style.cssText = cssText;
	// if there is a src and the src is different, then update.
	if(this.iframeBrowser.contentWindow)
		var currentSrc = this.iframeBrowser.contentWindow.location.pathname + this.iframeBrowser.contentWindow.location.search;	

	if(src && currentSrc!=src){
		this.iframeBrowser.src = src;
	}
}
AdBrowser.prototype.destroyWindow = function() {
	Debug.trace('AdBrowser_destroyWindow(' + this.iframeBrowser.id + ')');			
	this.target.removeChild(this.iframeBrowser);			
}
AdBrowser.prototype.command = function() { }
AdBrowser.prototype.onPageLoad = function() { }

function PopUpBrowser() { };

PopUpBrowser.prototype.createWindow = function(parentWindow,name) {
	this.name = name;
};
PopUpBrowser.prototype.updateWindow = function(position,left,top,width,height,src,features) {
	//alert('PopUpBrowser_updateWindow(' + left + ',' + top + ',' + width + ',' + height + ',' + src + ',' + features + ')');										

	if(!src){
		return;
	}
	if(!this.popUpBrowser||this.popUpBrowser.closed){
		//alert("not open, create");			

		var agt = navigator.userAgent.toLowerCase();
		
		//if (agt.indexOf("msie") == -1 && src.indexOf("http://") == -1 && src.indexOf("/") == 0) {			
			//var host = window.location.hostname;		
			//src = "http://" + host + src;		
		//}		
	
		if ((features.indexOf("fullscreen=yes") != -1) && (agt.indexOf("msie") == -1)) {
			var newwidth = window.screen.availWidth;
			var newheight = window.screen.availHeight;
			this.popUpBrowser = window.open(src,this.name,'width='+newwidth+',height='+newheight+',left='+left+',top='+top+','+features);
		} else {

			if(width!="0" && height!="0")
				var features = this.buildFeatures(width,height,left,top,features)

			if(!features || features=="null")
				this.popUpBrowser = window.open(src,this.name);
			else 
				this.popUpBrowser = window.open(src,this.name,features);
				
		}
	}else{
		// update the style of the pop up window - THIS DOES NOT WORK CROSS DOMAIN
		//this.popUpBrowser.moveTo(top,left);	
		//this.popUpBrowser.resizeTo(width,height);	

		// if there is a src and the src is different, then update.
		if(src && this.currentSrc!=src){
			this.popUpBrowser.location.href = src;	
		}

		// bring it to the front
		this.popUpBrowser.focus();	
	}
	this.currentSrc = src;
}
PopUpBrowser.prototype.buildFeatures = function (width, height, left, top, features) {
	var blnHasAProp = false;
	var len = arguments.length;
	for(var i=0;i<len;i++){
		var arg = arguments[i];
		if(arg != '' && arg != null && arg != undefined)
			blnHasAProp = true;
	}
	return (blnHasAProp) ? 'width='+width+',height='+height+',left='+left+',top='+top+','+features : false;
}; 
PopUpBrowser.prototype.destroyWindow = function() {
	//alert('PopUpBrowser_destroyWindow(' + this.popUpBrowser + ')');					
	//if(this.popUpBrowser){	
		//this.popUpBrowser.close();	
	//}	
}

PopUpBrowser.prototype.onPageLoad = function() {
}

function ArcadeBrowser() { };

ArcadeBrowser.prototype.createWindow = function(parentWindow, name) {
	this.name = name;
};

ArcadeBrowser.prototype.updateWindow = function(position,left,top,width,height,src,features) {
	//alert(src);
	
	//If we don't have a src no need popping the window.
	if(!src) {
		return;
	}
	
	//Sets width and height from params passed in the url named width and height.
	if(width == "0" && height == "0") {
		var sParams = src.split("&");
		for(var i = 0; i < sParams.length; i++) {
			var parts = sParams[i].split("=");
			if (parts[0] == "plugWidth") {
				var width = parts[1];
				//alert(width);
			}
			
			if (parts[0] == "plugHeight") {
				var height = parts[1];
				//alert(height);
			}
		}
	}
	//BrowserManager.updateWindow('root','absolute',0,0,width,height,src);
	//genPop(src,this.name,'width='+width+',height='+height);
	window.open(src,this.name,'width='+width+',height='+height+',toolbar=no,resizable=no,scrollbars=no');
}

ArcadeBrowser.prototype.destroyWindow = function() { };

ArcadeBrowser.prototype.onPageLoad = function() { };
function RadioBrowser() { };

RadioBrowser.prototype.createWindow = function() {
};
RadioBrowser.prototype.updateWindow = function() {
	var stationID = arguments[5];
	launchRSN(stationID);
}

RadioBrowser.prototype.destroyWindow = function() { };

RadioBrowser.prototype.onPageLoad = function() { };

function BugBrowser() {
	this.noActiveX = !window.ActiveXObject; 
	this.setMediaPlayerTarget("root_browser_advideo_mediaPlayer");
}
BugBrowser.prototype.createWindow = function(parentWindow,name,position,left,top,width,height,src,nodes) {
	
	//relaunch specific...tooltip is for the media player in ie only...
	if(this.noActiveX)return;

	try {
		// create browser container div
		this.bugBrowser = document.createElement('div');
		this.id = name;

		// find parent window to attach this media div to.
		this.target = document.getElementById(parentWindow+"_div");	
		this.target.appendChild(this.bugBrowser);

		this.bugBrowser.classPointer = this;
		this.bugBrowser.style.visibility = "hidden";	
		// create the windows media player object
		this.updateWindow(position,left,top,width,height,src);	

	}catch(e){
		Debug.trace("bugBrowser Error: " + e);
	}

}
BugBrowser.prototype.updateWindow = function(position,left,top,width,height,src,depth) {
	//alert(this.id + ' BugBrowser_updateWindow(' + position + ',' + left + ',' + top + ',' + width + ',' + height + ',' + src  + ',' + depth  + ')');											

	if(this.noActiveX)return;

	var newStyle = 'display:inline;background-image:url(spacdder.gif);position:' + position + ';left:' + left + 'px;top:' + top + 'px;width:' + width + 'px;height:' + height + 'px;z-index:705;';	
	this.bugBrowser.style.cssText = newStyle;

	if(this.bugBrowserImage){
		if(this.lastSrc==src)
			return;
	}
	this.bugBrowserImage = document.createElement('img');
	this.bugBrowserImage.setAttribute('src',src);
	this.lastSrc = src;
	BugBrowser_hideBugBrowser(this.bugBrowserImage)
	
	this.bugBrowser.appendChild(this.bugBrowserImage);

}
BugBrowser.prototype.destroyWindow = function() {

	if(this.noActiveX)return;
	this.target.removeChild(this.bugBrowser);			
}
BugBrowser.prototype.command = function(name,commandName,args) {
	switch(commandName) {
		case "setOverDriveUrl":
			this.setOverDriveUrl(args);
		case "removeOverDriveUrl":
			this.removeOverDriveUrl();
		case "setMediaPlayerTarget":
			this.setMediaPlayerTarget();
		break;
	}
}

BugBrowser.prototype.setMediaPlayerTarget = function (target) {
	this.mediaPlayerTarget = target;
}

BugBrowser.prototype.setOverDriveUrl = function (url) {
	this.bugBrowser.overdriveurl = url;
	this.bugBrowser.onclick = function () {
		launchOverdrive("vid="+this.overdriveurl);
		browserManager.routeMessage("command","stop:null","root_browser_advideo_mediaPlayer");
	}; 	
	this.bugBrowser.onmouseover = function () {
		BugBrowser_showBugBrowser(this.classPointer.bugBrowserImage);	
	}; 
	this.bugBrowser.onmouseout = function () {
		BugBrowser_hideBugBrowser(this.classPointer.bugBrowserImage);	
	}; 
}; 

BugBrowser.prototype.removeOverDriveUrl = function () {

	this.bugBrowserImage.onclick = null;
	this.bugBrowserImage.onmouseout = null;
	this.bugBrowserImage.onmouseover = null;
}

BugBrowser_showBugBrowser = function (obj) {
	obj.style.visibility = "visible";	
	obj.style.cursor = "pointer";
}; 
BugBrowser_hideBugBrowser = function (obj) {
	obj.style.visibility = "hidden";	
	obj.style.cursor = "auto";
}; 
BugBrowser.prototype.onPageLoad = function() { }

function OverdriveBrowser() { };

OverdriveBrowser.prototype.createWindow = function() {
};
OverdriveBrowser.prototype.updateWindow = function() {
	launchOverdrive(arguments[5]);
}

OverdriveBrowser.prototype.destroyWindow = function() { };

OverdriveBrowser.prototype.onPageLoad = function() { };

function UrgeBrowser() { };

UrgeBrowser.prototype.createWindow = function() {
};
UrgeBrowser.prototype.updateWindow = function() {
	launchUrge(arguments[5]);
}

UrgeBrowser.prototype.destroyWindow = function() { };

UrgeBrowser.prototype.onPageLoad = function() { };
// WMPBrowser 
function WMPBrowser(targetDiv,playerName) {
	
	//private vars
	var name = "wmplayer"
	var _iframe = null;
	var _target;
	var _currentSrc;
	
	this.updateWindow = function(src,x,y,w,h) {
		
		try {
			
			if(!_iframe)
				_init();
				
			_iframe.style.cssText = 'position:absolute;float:left;padding-left:' + x + 'px;padding-top:'+y + 'px;width:' + w + 'px;height:' + h + 'px;';
			
		}catch(e) {	}

		_setSrc(src);
		
		setPlayerSize(w,h)
	}
	
	this.pause = function() {
		try {
			_getWMPPlayer().controls.pause();
		} catch (e) {}
	};
	
	this.stop = function() {
		try {
			_getWMPPlayer().controls.stop();
		} catch (e) {}
	};
	
	this.play = function() {
		try {
			_getWMPPlayer().controls.play();
		} catch (e) {}
	};
	
	this.onVideoEnd = function() {
		try{
			
			var r = this;
			setTimeout(function () { r.destroyWindow(); }, 50);
			
		}catch(e){
			
			Debug.trace("IframeBrowser :: e " + e);
		}
	}
	
	this.destroyWindow = function(){
		
		try {
			
			if(_iframe){
				_setSrc("about:blank");
				_target.removeChild(_iframe);
				_getFlashContainer().videoPlayStateChange("Media End");
			}
			
		} catch (e) {
			
			Debug.trace("doDestroy: e = " + e);
		}
	}
	
	this.getCurrentPosition = function() {
		
		try{
			return _getWMPPlayer().controls.currentPosition;
		}catch(e){
			return 0;
		}
	}
	
	this.setCurrentPosition = function(val) {
		
		try{
			_getWMPPlayer().controls.currentPosition = val;
		}catch(e){
			return 0;
		}
	}
	
	this.getDuration = function() {
		
		try{
			return _getPlayerContainer().player.currentMedia.duration;
		}catch(e){
			return 0;
		}
	}
	
	this.setPlayerSize = function(width,height){
		
		try {
				
			_iframe.setAttribute("width",width);
			_iframe.setAttribute("height",height);
			
		} catch (e) {
			
			// ping
			var r = this;
			setTimeout(function () { r.setPlayerSize(width,height); }, 100);
		}
	};
	
	this.setPlayerVolume = function(volume) {
		
		if(!_iframe)
			return;
			
		try {
			_getWMPPlayer().settings.volume = volume;
		} catch(e) {}
	};
	
	this.setPlayerPlayState = function(newstate) {
		
		try {
			
			if(newstate == "Media End")
				this.onVideoEnd();
			else
				_getFlashContainer().videoPlayStateChange(newstate);
			
		} catch (e) {
			Debug.trace("setPlayerPlayState e:" + e);
		}
	};
	
	// private methods
	
	var _getFlashContainer = function() {
		return document.getElementById(playerName);
	}
	
	var _getPlayerContainer = function() {
		return window.frames[name];
	};
	
	var _getWMPPlayer = function() {
		return _getPlayerContainer().player;
	};
	
	var _init = function()	{
		
		try {
			
			if(navigator.appName=="Microsoft Internet Explorer"){
				
				_iframe = document.createElement('<iframe name="' + name + '" id="' + name + '" allowtransparency="true" sr' + 'c="" scrolling="no" frameborder="0"></iframe>');
				
			} else {
				_iframe = document.createElement("iframe");
				_iframe.setAttribute("id", name);
				_iframe.setAttribute("name", name);
				_iframe.setAttribute("frameborder", 0);
				_iframe.setAttribute("scrolling", "no");
			}
			
			_iframe.style.cssText = "position:absolute;float:left;";
			
			var existingNode = document.getElementById(name);
			if(existingNode)
				existingNode.parentNode.removeChild(existingNode);
			
			_target = document.getElementById(targetDiv);	
			_target.appendChild(_iframe);
			
		}catch(e) {	}
	}
	
	var _setSrc = function(src) {
		
		if(src && _currentSrc!=src){
			
			try{
				
				if(_iframe.contentWindow)
					_iframe.contentWindow.location.replace(src);
				else
					_iframe.src = src;	
				
				_currentSrc = src;
				
			}catch(e){
				
				_iframe.src = _currentSrc = src;	
			} 
		}
	}
};

function messageBoardBrowser() { };

messageBoardBrowser.prototype.createWindow = function() {
};
messageBoardBrowser.prototype.updateWindow = function() {
	var boardID = arguments[5];
	boardPop(boardID);
}

messageBoardBrowser.prototype.destroyWindow = function() { };

messageBoardBrowser.prototype.onPageLoad = function() { };

function LinkEventBrowser() { };

LinkEventBrowser.prototype.createWindow = function() {
};
LinkEventBrowser.prototype.updateWindow = function() {
	// launchOverdrive(arguments[5]);
	o = new Object(); 
	o.lev = arguments[5];
	REPORTING.makeCall('fbml_lev', o);
}

LinkEventBrowser.prototype.destroyWindow = function() { };

LinkEventBrowser.prototype.onPageLoad = function() { };

function MTVMediaPlayerBrowser() { };

MTVMediaPlayerBrowser.prototype.createWindow = function() {
};
MTVMediaPlayerBrowser.prototype.updateWindow = function() {
	
	launchVideo(arguments[5]);
}

MTVMediaPlayerBrowser.prototype.destroyWindow = function() { };

MTVMediaPlayerBrowser.prototype.onPageLoad = function() { };
		
function MTVFlipbookBrowser() { };

MTVFlipbookBrowser.prototype.createWindow = function() {
};
MTVFlipbookBrowser.prototype.updateWindow = function() {
	
	popFlip(arguments[5]);
}

MTVFlipbookBrowser.prototype.destroyWindow = function() { };

MTVFlipbookBrowser.prototype.onPageLoad = function() { };

function UberBrowser() { };

UberBrowser.prototype.createWindow = function() {
};
UberBrowser.prototype.updateWindow = function() {
	window.launchBroadbandVideo(arguments[5]);
}

UberBrowser.prototype.destroyWindow = function() { };

UberBrowser.prototype.onPageLoad = function() { };
