//  (c) 2004. All Rights Reserved.  DoubleClick Inc.
if(typeof(dartMotifCreatives) == "undefined")
	var dartMotifCreatives = new Array();
if(typeof(dartCallbackObjects) == "undefined")
	var dartCallbackObjects = new Array();
if(typeof(dartGlobalTemplateObjects) == "undefined")
	var dartGlobalTemplateObjects = new Array();
if(typeof(dartCreativeDisplayManagers) == "undefined")
	var dartCreativeDisplayManagers = new Array();
if(typeof(dartMotifAds) == "undefined")
	var dartMotifAds = new Array();
if(typeof(dartFSVManagers) == "undefined")
	var dartFSVManagers = new Array();

function DARTCreativeDisplayManager_15_06(creative) {
	this.creative = creative;
	this.creativeIdentifier = creative.creativeIdentifier;
	this.previewMode = creative.previewMode;
	this.debugEventsMode = creative.debugEventsMode;
	this.renderingId = creative.renderingId;
	this.creativeType = creative.type;

	this.dartPopupArray = new Array();
	this.dartEntityPropertiesArray = new Array();
	this.noAdjustElements = new _doNotAdjustElement();
	this.isDisplayTimerRunning = false;
	this.fsCommandHandlers = new Array();

	this.globalTemplate = dartGlobalTemplateObjects[this.creativeIdentifier];
	this.browser = new DARTBrowser_15_06(this.globalTemplate);

	this.dartEventBin = null;
	if(!this.previewMode)
		this.dartEventBin = new DARTEventBin_15_06(this.creativeIdentifier, this.globalTemplate);
	else if(this.debugEventsMode && this.creativeType == "Pop") {
		this.dartDebugEventBin = opener.dartGlobalTemplateObjects[this.creativeIdentifier].debugEventBin;
		var callback = new Function("try { dartCreativeDisplayManagers['" + this.creativeIdentifier + "'].setShouldFlush('" + this.renderingId + "', false); } catch(e) {}");
		self.attachEvent("onunload", callback);
	}

	this.assets = new Array();
	for(var type in creative.assets)
		this.assets[creative.assets[type].variableName] = creative.assets[type];

	dartMotifAds[dartMotifAds.length] = creative;

	function fsHook(variableName) {
		var str = "";
		str += 'function ' + variableName + '_DoFSCommand(command, args) { \n';
		str += '    dartCreativeDisplayManagers["' + this.creativeIdentifier + '"].FSCommandHandler(command, args);\n';
		str += '}\n';
		window.eval(str);

		if(this.globalTemplate.isWindows()) {
			var flashObj = this.globalTemplate.toObject(variableName);
			var pointer = eval(variableName + "_DoFSCommand");
			this.fsCommandHandlers[variableName] = pointer;
			if(this.globalTemplate.isInternetExplorer()) {
				if(flashObj.attachEvent("FSCommand", pointer))
					this.globalTemplate.registerPageUnLoadHandler("detachFSCommandHandler()", this);
			}
			else {
				flashObj.addEventListener("FSCommand", pointer, true);
				this.globalTemplate.registerPageUnLoadHandler("detachFSCommandHandler()", this);
			}
		}
	}
	this.fsHook = fsHook;

	function detachFSCommandHandler() {
		for(var varName in this.assets) {
			if(!this.globalTemplate.isPartOfArrayPrototype(varName)) {
				var variableName = "FLASH_" + varName;
				var flashObj = this.globalTemplate.toObject(variableName);
				var pointer = this.fsCommandHandlers[variableName];
				if(this.globalTemplate.isInternetExplorer())
					flashObj.detachEvent("FSCommand", pointer);
				else
					flashObj.removeEventListener("FSCommand", pointer, true);
			}
		}
	}
	this.detachFSCommandHandler = detachFSCommandHandler;

	function FSCommandHandler(command, args) {
		var argArray = this._splitArgs(args);
		var functionCall = command + "(";
		var count = 0;
		for(var k = 0; k < argArray.length; k++) {
			if(count > 0)
				functionCall += ", ";
			functionCall += "\"" + argArray[k] + "\"";
			count++;
		}
		functionCall += ")";
		try {
			return eval("dartCreativeDisplayManagers[\"" + this.creativeIdentifier + "\"]." + functionCall);
		}
		catch(e) {
			try {eval(functionCall);}
			catch(e) {}
		}
	}
	this.FSCommandHandler = FSCommandHandler;

	function conduitInitialized(assetName) {
		var asset = this.getAsset(assetName);
		asset.conduitInitialized = true;
	}
	this.conduitInitialized = conduitInitialized;

	function getEventBin() {
		if(!this.previewMode)
			return this.dartEventBin;
		else if(this.debugEventsMode)
			return this.dartDebugEventBin;
		else
			return null;
	}
	this.getEventBin = getEventBin;

	function logEvent(eventType, eventId, erid) {
		if(eventId == "2") {
			this.logDisplayTimerEvent(eventType, erid);
		}
		else {
			var eventBin = this.getEventBin();
			if(eventBin)
				eventBin.logMetEvent(eventType, eventId, erid);
		}
	}
	this.logEvent = logEvent;

	function logDisplayTimerEvent(eventType, erid) {
		var eventBin = this.getEventBin();
		if(eventType == "Start") {
			if(!this.isDisplayTimerRunning) {
				if(eventBin)
					eventBin.logMetEvent("Start", "2", erid);
				this.isDisplayTimerRunning = true;
			}
		}
		else if(eventType == "Stop") {
			if(this.isDisplayTimerRunning) {
				if(eventBin)
					eventBin.logMetEvent("Stop", "2", erid);
				this.isDisplayTimerRunning = false;
			}
		}
	}
	this.logDisplayTimerEvent = logDisplayTimerEvent;

	function flushCounters(erid) {
		var eventBin = this.getEventBin();
		if(eventBin)
			eventBin.flushMetCounters(erid);
	}
	this.flushCounters = flushCounters;

	function setShouldFlush(erid, flag) {
		var eventBin = this.getEventBin();
		if(eventBin)
			eventBin.setMetShouldFlush(erid, flag);
	}
	this.setShouldFlush = setShouldFlush;

	function getShouldFlush(erid) {
		var eventBin = this.getEventBin();
		return (eventBin && eventBin.getShouldFlush(erid));
	}
	this.getShouldFlush = getShouldFlush;

	function registerUrl(erid, adServerUrl, startTime) {
		var eventBin = this.getEventBin();
		if(eventBin)
			eventBin.registerEventBinUrl(erid, adServerUrl, startTime);
	}
	this.registerUrl = registerUrl;

	function _logEventFlushCounters(eventType, eventId, erid) {
		this.logEvent(eventType, eventId, erid);
		this.flushCounters(erid);
	}
	this._logEventFlushCounters = _logEventFlushCounters;

	function _logEventFlushCountersOpenPopup(eventType, eventId, erid, url, dartWindowName, features, isPopUnder) {
		this.logEvent(eventType, eventId, erid);
		this.flushCounters(erid);
		this.openPopup(url, dartWindowName, features, isPopUnder);
	}
	this._logEventFlushCountersOpenPopup = _logEventFlushCountersOpenPopup;

	function onMouseOver(assetName) {
		try {
			var flashObject = this.globalTemplate.toObject("FLASH_" + assetName);
			flashObject.TCallFrame("/motifExpandingController", 1);
		}
		catch(e) {
		}
	}
	this.onMouseOver = onMouseOver;

	function onMouseOut(assetName) {
		try {
			var flashObject = this.globalTemplate.toObject("FLASH_" + assetName);
			flashObject.TCallFrame("/motifExpandingController", 3);
		}
		catch(e) {
		}
	}
	this.onMouseOut = onMouseOut;
	
	this.expandAsset = function(assetId) {
		var variableName = "DIV_" + assetId;
		var exp = this.globalTemplate.toObject(variableName);
		this._adjustWindowElements(assetId, true);
		var asset = this.getAsset(assetId);
		if(asset.pushContents) {
			this.startAnimation(asset, true);
		}
		else {		
			exp.style.clip = "rect(auto auto auto auto)";
		}
	}
	
	this.collapseAsset = function(assetId) {
		var variableName = "DIV_" + assetId;
		var exp = this.globalTemplate.toObject(variableName);
		var asset = this.getAsset(assetId);
		if(asset.pushContents) {
			this.startAnimation(asset, false);
		}
		else {		
			exp.style.clip = "rect(" + asset.offsetTop + "px " + asset.offsetRight + "px " + asset.offsetBottom + "px " + asset.offsetLeft + "px)";
		}
		this._adjustWindowElements(assetId, false);
	}
	
	this.startAnimation = function(asset, expandMode) {
		if(asset.animationState == null) {
			var state = new Object();
			state.isRunning = false;
			state.animateCallback = this.globalTemplate.generateGlobalCallback("updateExpandingViewPort(\"" + asset.variableName + "\")", this);
			state.expandMode = true;
			var height = parseInt(asset.height);
			state.currentHeight = height;
			var expandedHeight = parseInt(asset.expandedHeight);
			var expandLenght = expandedHeight - height;
			var animationTime = asset.animationTime * 1000;
			state.updateInterval = 50;
			var totalIntervals = Math.ceil(animationTime / state.updateInterval);
			state.stepLength = Math.ceil(expandLenght / (totalIntervals + 1));
			asset.animationState = state;
		}
		asset.animationState.expandMode = expandMode;
		if(!asset.animationState.isRunning) {
			asset.animationState.isRunning = true;
			this.updateExpandingViewPort(asset.variableName);
		}
	}
	
	this.updateExpandingViewPort = function(assetId) {
		var asset = this.getAsset(assetId);
		var state = asset.animationState;
		var animationComplete = false;
		if(state.expandMode) {
			var expandedHeight = parseInt(asset.expandedHeight);
			var top = "auto";
			var right = "auto";
			var left = "auto";
			state.currentHeight += state.stepLength;
			if(state.currentHeight >= expandedHeight) {
				state.currentHeight = expandedHeight;
				animationComplete = true;
			}
		}
		else {
			var height = parseInt(asset.height);
			var top = asset.offsetTop + "px";
			var right = asset.offsetRight + "px";
			var left = asset.offsetLeft + "px";
			state.currentHeight -= state.stepLength;
			if(state.currentHeight <= height) {
				state.currentHeight = height;
				animationComplete = true;
			}
		}
		
		var placeholder = this.globalTemplate.toObject("EXPANDO_PLACEHOLDER_" + assetId);
		placeholder.style.height = state.currentHeight + "px";
		var variableName = "DIV_" + assetId;
		var exp = this.globalTemplate.toObject(variableName);
		exp.style.clip = "rect(" + top + " " + right + " " + state.currentHeight + "px " + left + ")";
		if(animationComplete) {
			state.isRunning = false;
		}
		else {
			window.setTimeout(state.animateCallback, state.updateInterval);
		}
	}
	
	function scheduleCallbackOnLoad(callback) {
		callback = "dartCreativeDisplayManagers[\"" + this.creativeIdentifier + "\"]." + callback;
		this.globalTemplate.registerPageLoadHandler(callback, null);
	}
	this.scheduleCallbackOnLoad = scheduleCallbackOnLoad;

	function scheduleDisplay(variableName, startTime, duration, adjustElements) {
		adjustElements = (adjustElements == false || adjustElements == "false") ? false : true;
		if(this.globalTemplate._isValidStartTime(startTime)) {
			startTime = eval(startTime);
			duration = this.globalTemplate._convertDuration(duration);
			this.globalTemplate.registerTimeoutHandler(startTime * 1000, "_startDisplay('" + variableName + "', " + adjustElements + ")", this);
			if(duration == "AUTO") {
				this.globalTemplate.registerTimeoutHandler((startTime + 1) * 1000, "_autoStopPlaying('" + variableName + "')", this);
			}
			else if(duration > 0) {
				duration = eval(duration);
				this.globalTemplate.registerTimeoutHandler((startTime + duration) * 1000, "stopDisplay('" + variableName + "')", this);
			}
		}
	}
	this.scheduleDisplay = scheduleDisplay;

	function getCompanionAssetName(myName, type) {
		if(typeof(type) != "undefined") {
			for(var i in this.assets) {
				if(!this.globalTemplate.isPartOfArrayPrototype(i) && this.assets[i].assetType == type)
					return i;
			}
		}
		else {
			for(var i in this.assets) {
				if(!this.globalTemplate.isPartOfArrayPrototype(i) && i != myName)
					return i;
			}
		}

		return null;
	}
	this.getCompanionAssetName = getCompanionAssetName;

	function getAsset(name) {
		return this.assets[name];
	}
	this.getAsset = getAsset;

	function tellAssetHide(assetName) {
		this.stopDisplay(assetName);
	}
	this.tellAssetHide = tellAssetHide;

	function tellAssetShow(assetName) {
		this._startDisplay(assetName)
	}
	this.tellAssetShow = tellAssetShow;

	function tellAssetStart(assetName) {
		if(this.isFlashScriptingSupported()) {
			this.playFlash(assetName);
		}
	}
	this.tellAssetStart = tellAssetStart;

	function tellAssetStop(assetName) {
		var flashObject = this.globalTemplate.toObject("FLASH_" + assetName);
		if(flashObject && this.isFlashScriptingSupported()) {
			flashObject.StopPlay();
		}
	}
	this.tellAssetStop = tellAssetStop;

	function tellAssetGotoFrame(assetName, frameNumber) {
		var flashObject = this.globalTemplate.toObject("FLASH_" + assetName);
		if(flashObject && this.isFlashScriptingSupported()) {
			flashObject.GotoFrame(frameNumber);
		}
	}
	this.tellAssetGotoFrame = tellAssetGotoFrame;

	function tellCompanionAssetStop(myName, type) {
		var companion = this.getCompanionAssetName(myName, type);
		if(companion != null) {
			this.tellAssetStop(companion);
		}
	}
	this.tellCompanionAssetStop = tellCompanionAssetStop;

	function tellCompanionAssetStart(myName, type) {
		var companion = this.getCompanionAssetName(myName, type);
		if(companion != null) {
			this.tellAssetStart(companion);
		}
	}
	this.tellCompanionAssetStart = tellCompanionAssetStart;

	function tellCompanionAssetHide(myName, type) {
		var companion = this.getCompanionAssetName(myName, type);
		if(companion != null) {
			this.stopDisplay(companion);
		}
	}
	this.tellCompanionAssetHide = tellCompanionAssetHide;

	function tellCompanionAssetShow(myName, type) {
		var companion = this.getCompanionAssetName(myName, type);
		if(companion != null) {
			var divObject = this.globalTemplate.toObject("DIV_" + companion);
			if(divObject && divObject.style.visibility != "visible") {
				var asset = this.getAsset(companion);
				if(asset != null) {
					var flashObject = this.globalTemplate.toObject("FLASH_" + companion);
					if(flashObject && this.isFlashScriptingSupported() && asset.conduitInitialized) {
						flashObject.Rewind();
						flashObject.StopPlay();
					}
					this.scheduleDisplay(companion, 0, asset.duration);

					if(asset.isMainAsset) {
						var rid = this.getRenderingId(companion);
						this.logEvent("Start", "2", rid);
					}
				}
			}
		}
	}
	this.tellCompanionAssetShow = tellCompanionAssetShow;

	function isAssetPlaying(assetName) {
		var flashObject = this.globalTemplate.toObject("FLASH_" + assetName);
		if(flashObject && this.isFlashScriptingSupported()) {
			return flashObject.IsPlaying();
		}
		return false;
	}
	this.isAssetPlaying = isAssetPlaying;

	function openPopup(url, dartWindowName, features, isPopUnder) {
		var windowRef = window.open(url, dartWindowName, features);
		this.dartPopupArray[dartWindowName] = windowRef;
		if(eval(isPopUnder)) {
			window.focus();
		}
		return windowRef;
	}
	this.openPopup = openPopup;

	function stopDisplay(variableName) {
		var divObject = this.globalTemplate.toObject("DIV_" + variableName);
		var flash = this.globalTemplate.toObject("FLASH_" + variableName);
		if(divObject && divObject.style.visibility == "visible") {
			var rid = this.getRenderingId(variableName);
			if(rid) {
				var asset = this.getAsset(variableName);
				if(asset != null && asset.isMainAsset) {
					this.logEvent("Stop", "2", rid);
					this.logEvent("Stop", "3", rid);
				}

				this.flushCounters(rid);
				if(!this.isAnyCompanionVisible(variableName))
					this.setShouldFlush(rid, false);
			}
			flash.StopPlay();
			divObject.style.visibility = "hidden";
		}
		this._adjustWindowElements(variableName, false);
	}
	this.stopDisplay = stopDisplay;

	function isAnyCompanionVisible(variableName) {
		for(var i in this.assets) {
			if(!this.globalTemplate.isPartOfArrayPrototype(i) && i != variableName) {
				var divObject = this.globalTemplate.toObject("DIV_" + i);
				if(divObject && divObject.style.visibility == "visible")
					return true;
			}
		}

		return false;
	}
	this.isAnyCompanionVisible = isAnyCompanionVisible;

	function addEntityProperties(entityName, hideDropDowns, hideIFrames, hideScrollBars, hideObjects, hideApplets, adjustZIndex) {
		this.dartEntityPropertiesArray[entityName] = new _entityProperties(hideDropDowns, hideIFrames, hideScrollBars, hideObjects, hideApplets, adjustZIndex);
	}
	this.addEntityProperties = addEntityProperties;

	function doNotAdjustIFrame(variableName, iFrameID) {
		this.noAdjustElements.iFrames[this.noAdjustElements.iFrames.length] = iFrameID;
	}
	this.doNotAdjustIFrame = doNotAdjustIFrame;

	function doNotAdjustObject(variableName, objectID) {
		this.noAdjustElements.objects[this.noAdjustElements.objects.length] = objectID;
	}
	this.doNotAdjustObject = doNotAdjustObject;

	function getRenderingId(variableName) {
		var splitArray = variableName.split("_");
		var renderingId = (splitArray.length > 1) ? splitArray[0] : null;
		return renderingId;
	}
	this.getRenderingId = getRenderingId;

	function _splitArgs(args) {
		var parameterArray = new Array();
		var unescapedArgs = unescape(args)
		var stringArray = unescapedArgs.split("#mtf#");
		for(var k = 0; k < stringArray.length; k++) {
			parameterArray[k] = stringArray[k];
		}
		return parameterArray;
	}
	this._splitArgs = _splitArgs;

	function _startDisplay(variableName, adjustElements) {
		adjustElements = (adjustElements == false || adjustElements == "false") ? false : true;
		var divObject = this.globalTemplate.toObject("DIV_" + variableName);
		var flashObject = this.globalTemplate.toObject("FLASH_" + variableName);
		if(adjustElements) {
			this._adjustWindowElements(variableName, true);
		}
		if(divObject) {
			divObject.style.visibility = "visible";
		}
		if(flashObject && this.isFlashScriptingSupported()) {
			this.playFlash(variableName);
		}

		var rid = this.getRenderingId(variableName);
		if(flashObject && this.debugEventsMode) {
			if(!this.dartDebugEventBin.getShouldFlush(rid)) {
				this.setShouldFlush(rid, true);
				this.dartDebugEventBin.flushMetCounters(rid);
			}
		}
		else {
			if(flashObject && !this.previewMode && !this.dartEventBin.getShouldFlush(rid))
				this.setShouldFlush(rid, true);
		}
	}
	this._startDisplay = _startDisplay;

	function playFlash(variableName) {
		var flashObject = this.globalTemplate.toObject("FLASH_" + variableName);
		var asset = this.getAsset(variableName);
		if(this.globalTemplate.isInternetExplorer() || this.globalTemplate.dartIsInMMPreviewMode) {
			flashObject.Play();
		}
		else if(asset.assetType == "float" || asset.assetType == "reminder") {
			if(asset.conduitInitialized)
				flashObject.Play();
			else
				this.globalTemplate.registerTimeoutHandler(100, "playFlash('" + variableName + "')", this);
		}
	}
	this.playFlash = playFlash;

	function _autoStopPlaying(variableName) {
		var flashObject = this.globalTemplate.toObject("FLASH_" + variableName);
		if(flashObject && this.isFlashScriptingSupported()) {
			if(flashObject.PercentLoaded() == 100 && !flashObject.IsPlaying())
				this.stopDisplay(variableName);
			else
				this.globalTemplate.registerTimeoutHandler(300, "_autoStopPlaying('" + variableName + "')", this);
		}
	}
	this._autoStopPlaying = _autoStopPlaying;

	function _adjustWindowElements(entityName, shouldHide) {
		var entityProperty = this.dartEntityPropertiesArray[entityName];
		if(entityProperty) {
			if(entityProperty.hideDropDowns)
				this._adjustElements(shouldHide, "select");
			if(entityProperty.hideScrollBars && this.globalTemplate.isInternetExplorer())
				this.browser.adjustIEScrollbars(shouldHide);
			if(entityProperty.hideIFrames)
				this._adjustElements(shouldHide, "iframe");
			if(entityProperty.hideObjects) {
				this._adjustElements(shouldHide, "object");
				this._adjustElements(shouldHide, "embed");
			}
			if(entityProperty.hideApplets)
				this._adjustElements(shouldHide, "applet");
			if(entityProperty.adjustZIndex)
				this._adjustZIndex(entityName, shouldHide);
		}
	}
	this._adjustWindowElements = _adjustWindowElements;

	function _adjustZIndex(entityName, shouldHide) {
		try {
			this._adjustParentZIndex(entityName, shouldHide);
		}
		catch(e) {}
	}
	this._adjustZIndex = _adjustZIndex;

	function _adjustParentZIndex(entityName, shouldHide) {
		var div = this.globalTemplate.toObject("DIV_" + entityName);
		var parent = null;
		var asset = this.getAsset(entityName);
		if(div && typeof(asset.assetType) != "undefined" && asset.assetType == "expando") {
			parent = div.parentNode.parentNode;
		}
		else {
			return;
		}

		while(parent && parent.tagName != "BODY") {
			if(shouldHide) {
				var css = this.browser.getCascadedStyle(parent);
				if((div.style.zIndex > css.zIndex) && (css.position == "relative" || css.position == "absolute")) {
					parent.style.originalZIndex = this.browser.getCascadedStyle(parent).zIndex;
					parent.style.zIndex = div.style.zIndex;
				}
			}
			else {
				if(typeof(parent.style.originalZIndex) != "undefined") {
					parent.style.zIndex = parent.style.originalZIndex;
				}
			}
			parent = parent.parentNode;
		}
	}
	this._adjustParentZIndex = _adjustParentZIndex;

	function _adjustElements(shouldHide, tagName) {
		var arr = self.document.getElementsByTagName(tagName);
		tagName = tagName.toLowerCase();
		for(var k = 0; k < arr.length; k++) {
			var adjust = true;
			if(tagName == "iframe") {
				if(typeof(arr[k].MotifIFrameID) != "undefined")
					adjust = this._shouldAdjustIFrame(arr[k].MotifIFrameID);
			}
			else if(tagName == "object" || tagName == "embed")
				adjust = !this.isMotifObject(arr[k].id);

			if(adjust)
				shouldHide ? this.hideElement(arr[k]) : this.showElement(arr[k]);
		}
	}
	this._adjustElements = _adjustElements;

	function hideElement(element) {
		var hideCountValue = element.getAttribute("hideCount");
		if(hideCountValue == null || hideCountValue == "") {
			element.setAttribute("initialVisibility", element.style.visibility);
			element.setAttribute("hideCount", 0);
		}

		var count = parseInt(element.getAttribute("hideCount"));
		if(count == 0) {
			if((element.tagName).toLowerCase() == "iframe" && this.globalTemplate.isFirefox())
				this.browser.hideFirefoxIFrame(element);
			else
				element.style.visibility = "hidden";
		}
		count++;
		element.setAttribute("hideCount", count);
	}
	this.hideElement = hideElement;

	function showElement(element) {
		if(element.getAttribute("hideCount") != null) {
			var count = parseInt(element.getAttribute("hideCount"));
			if(count != 0)
				count--;
			element.setAttribute("hideCount", count);
			if(count == 0) {
				if((element.tagName).toLowerCase() == "iframe" && this.globalTemplate.isFirefox())
					this.browser.displayFirefoxIFrame(element);
				else
					element.style.visibility = element.getAttribute("initialVisibility");
			}
		}
	}
	this.showElement = showElement;

	function _shouldAdjustIFrame(motifIFrameId) {
		var iframes = this.noAdjustElements.iFrames;
		for(var k = 0; k < iframes.length; k++) {
			if(iframes[k] == motifIFrameId)
				return false;
		}
		return true;
	}
	this._shouldAdjustIFrame = _shouldAdjustIFrame;

	function isMotifObject(objectId) {
		for(var i = 0; i < dartMotifAds.length; i++) {
			var creative = dartMotifAds[i];
			for(var type in creative.assets) {
				if(objectId == "FLASH_" + creative.assets[type].variableName)
					return true;
			}
		}
		return false;
	}
	this.isMotifObject = isMotifObject;

	function _entityProperties(hideDropDowns, hideIFrames, hideScrollBars, hideObjects, hideApplets, adjustZIndex) {
		this.hideDropDowns = hideDropDowns;
		this.hideIFrames = hideIFrames;
		this.hideScrollBars = hideScrollBars;
		this.hideObjects = hideObjects;
		this.hideApplets = hideApplets;
		this.adjustZIndex = adjustZIndex;
	}

	function _doNotAdjustElement() {
		this.iFrames = new Array();
		this.objects = new Array();
	}

	function getPercentPosition(assetPos, adLength, screenLength) {
		assetPos = this.extractLength(assetPos);
		adLength = parseInt(adLength);
		return (screenLength - adLength) * assetPos/100;
	}
	this.getPercentPosition = getPercentPosition;

	function extractUnit(pos) {
		if(pos.indexOf("%") > -1)
			return "%";
		else
			return "px";
	}
	this.extractUnit = extractUnit;
	
	function extractLength(pos) {
		if(pos.indexOf("%") > -1)
			return parseInt(pos.substring(0, pos.indexOf("%")));
		else if(pos.indexOf("px") > -1)
			return parseInt(pos.substring(0, pos.indexOf("px")));
		else
			return parseInt(pos);
	}
	this.extractLength = extractLength;
	
	function adjustAdDiv(adDiv, asset) {
		var left = this.extractLength(asset.left);
		var top = this.extractLength(asset.top);
		var dimension = this.browser.getWindowDimension();
		var scroll = this.browser.getScrollbarPosition();
		if(this.extractUnit(asset.left) == "%")
			left = this.getPercentPosition(asset.left, asset.width, dimension.width);
		if(this.extractUnit(asset.top) == "%")
			top = this.getPercentPosition(asset.top, asset.height, dimension.height);
		if(asset.ignoreHorizontalScroll)
			left = left + scroll.scrollLeft;
		if(asset.ignoreVerticalScroll)
			top = top + scroll.scrollTop;
		
		adDiv.style.left = left + "px";
		adDiv.style.top = top + "px";
	}
	this.adjustAdDiv = adjustAdDiv;
	
	function adjustPosition() {
		for(var varName in this.assets) {
			if(!this.globalTemplate.isPartOfArrayPrototype(varName)) {
				var asset = this.getAsset(varName);
				if(asset.assetType == "float" || asset.assetType == "reminder") {
					var adDiv = this.globalTemplate.toObject("DIV_" + varName);
					if(adDiv != null)
						this.adjustAdDiv(adDiv, asset);
				}
			}
		}
	}
	this.adjustPosition = adjustPosition;    

	function registerPercentPositioningHandler() {
		var isPercentPositioned = false;
		var ignoreScroll = false;
		for(var name in this.assets) {
			if(!this.globalTemplate.isPartOfArrayPrototype(name)) {
				var asset = this.getAsset(name);
				if(asset.assetType == "float" || asset.assetType == "reminder") {
					if(this.extractUnit(asset.top) == "%" || this.extractUnit(asset.left) == "%")
						isPercentPositioned = true;
					if(asset.ignoreVerticalScroll || asset.ignoreHorizontalScroll)
						ignoreScroll = true;
				}
			}
		}
		if(isPercentPositioned || ignoreScroll)
			this.globalTemplate.registerEventHandler("resize", self, "adjustPosition()", this);
		if(ignoreScroll)
			this.globalTemplate.registerEventHandler("scroll", self, "adjustPosition()", this);
	}
	this.registerPercentPositioningHandler = registerPercentPositioningHandler;
    
	function getFloatingDiv(fl, interstitialImage) {
		var adDiv = document.createElement("DIV");
		adDiv.id = "DIV_" + fl.variableName;
		adDiv.style.position = fl.position;
		adDiv.style.visibility = "hidden";
		adDiv.style.zIndex = fl.zIndex;
		this.adjustAdDiv(adDiv, fl);
		
		var movie = fl.url + '&td=' + escape(self.location.hostname);
		var loop = (this.globalTemplate._convertDuration(fl.duration) == "AUTO") ? "false" : "true";
		adDiv.innerHTML = this.globalTemplate.getObjectHtml("id", "FLASH_" + fl.variableName, "name", "FLASH_" + fl.variableName,
							"WIDTH", fl.width, "HEIGHT", fl.height, "movie", movie, "play", "false",
							"quality", "high", "wmode", fl.wmode, "loop", loop);

		if(interstitialImage != "") {
			var imgDiv = document.createElement("DIV");
			imgDiv.style.position = "absolute";
			imgDiv.style.top = "0px";
			imgDiv.style.left = "0px";
			imgDiv.innerHTML = ' <img src="' + interstitialImage + '" style="visibility:hidden" width="1px" height="1px">';
			adDiv.appendChild(imgDiv);
		}
		this.doNotAdjustObject(fl.variableName, "FLASH_" + fl.variableName);
		return adDiv;
	}
	this.getFloatingDiv = getFloatingDiv;

	function displayFloatingAsset(fl, interstitialImage) {
		try {
			var adDiv = this.getFloatingDiv(fl, interstitialImage);
			document.body.appendChild(adDiv);
			this.fsHook("FLASH_" + fl.variableName);
			this.addEntityProperties(fl.variableName, fl.hideDropdowns, fl.hideIframes, fl.hideScrollbars, fl.hideObjects, fl.hideApplets, false);
			this.scheduleDisplay(fl.variableName, fl.startTime, fl.duration);
			this.registerUrl(this.renderingId, fl.adserverUrl, fl.startTime);
		}
		catch(e) {}
	}
	this.displayFloatingAsset = displayFloatingAsset;

	function displayFloatingFlash() {
		var fl = this.creative.assets["FloatingFlash"];
		this.displayFloatingAsset(fl, fl.interstitialImage);
		this.registerPercentPositioningHandler();
	}
	this.displayFloatingFlash = displayFloatingFlash;

	function displayFloatingWithReminder() {
		var fl = this.creative.assets["FloatingFlash"];
		this.displayFloatingAsset(fl, fl.interstitialImage);
		var rem = this.creative.assets["ReminderFlash"];
		this.displayFloatingAsset(rem, "");
		this.registerPercentPositioningHandler();
	}
	this.displayFloatingWithReminder = displayFloatingWithReminder;

	function triggerPoliteDownload() {
		for(assetName in this.assets) {
			if(!this.globalTemplate.isPartOfArrayPrototype(assetName)) {
				this.finishPoliteDownload(assetName);
			}
		}
	}
	this.triggerPoliteDownload = triggerPoliteDownload;

	function finishPoliteDownload(assetName) {
		var flashObject = this.globalTemplate.toObject("FLASH_" + assetName);
		if(flashObject && flashObject.PercentLoaded() > 0 && this.getAsset(assetName).conduitInitialized) {
			flashObject.SetVariable("_root.mtfContinue", "1");
		}
		else {
			var callback = "dartCreativeDisplayManagers['" + this.creativeIdentifier + "'].finishPoliteDownload('" + assetName + "');";
			window.setTimeout(callback, 100);
		}
	}
	this.finishPoliteDownload = finishPoliteDownload;

	function closeSelfPopup() {
		var rid = this.renderingId;
		if(rid) {
			this.flushCounters(rid);
			this.setShouldFlush(rid, false);
		}
		self.close();
	}
	this.closeSelfPopup = closeSelfPopup;

	function forceAnimation(variableName) {
		var flash = this.globalTemplate.toObject("FLASH_" + variableName);
		var div = this.globalTemplate.toObject("DIV_" + variableName);
		if(div.style.visibility == "visible") {
			flash.Zoom(50);
			flash.Zoom(0);
		}
	}
	this.forceAnimation = forceAnimation;

	function launchFullScreenVideo(url, shouldTrack, isMute) {
		var fsvManager = dartFSVManagers["FSV_" + this.globalTemplate.creativeIdentifier];
		fsvManager.launchVideo(url, eval(shouldTrack), isMute);
	}
    this.launchFullScreenVideo = launchFullScreenVideo;

    function isFlashScriptingSupported() {
    	return (this.globalTemplate.isWindows() || (this.globalTemplate.isMac() && this.globalTemplate.isFirefox()));
    }
    this.isFlashScriptingSupported = isFlashScriptingSupported;
}


function DARTBrowser_15_06(globalTemplate) {
	this.iframePlaceHolderDivIndex = 0;
	this.hiddenIframes = new Array();
	this.globalTemplate = globalTemplate;

	function hideFirefoxIFrame(iframe) {
		var div = null;
		var iframeInfo = null;
		if(!iframe.hasAttribute("Motif_IFramePlaceHolderDivIndex")) {
			div = document.createElement("DIV");
			div.id = "MOTIF_IFRAMEPLACEHOLDER_" + this.iframePlaceHolderDivIndex;
			div.style.width = "0px";
			div.style.height = "0px";
			div.style.visibility = "hidden";
			div.style.padding = "0px";
			div.style.margin = "0px";
			div.style.display = "inline";
			iframe.parentNode.insertBefore(div, iframe);
			div.innerHTML = '<img src="" width="0px" height="0px" padding="0px" margin="0px"></img>';
			iframe.setAttribute("Motif_IFramePlaceHolderDivIndex", this.iframePlaceHolderDivIndex);
			iframeInfo = new Object();
			this.hiddenIframes[this.iframePlaceHolderDivIndex] = iframeInfo;
			this.iframePlaceHolderDivIndex++;
		}
		else {
			var index = iframe.getAttribute("Motif_IFramePlaceHolderDivIndex");
			var id = "MOTIF_IFRAMEPLACEHOLDER_" + index;
			div = document.getElementById(id);
			iframeInfo = this.hiddenIframes[parseInt(index)];
		}
		iframeInfo.width = iframe.width;
		iframeInfo.height = iframe.height;
		div.style.width = iframeInfo.width;
		div.style.height = iframeInfo.height;
		div.firstChild.width = iframeInfo.width;
		div.firstChild.height = iframeInfo.height;
		iframe.style.visibility = "hidden";
		iframe.width = 0;
		iframe.height = 0;
	}
	this.hideFirefoxIFrame = hideFirefoxIFrame;

	function displayFirefoxIFrame(iframe) {
		var index = iframe.getAttribute("Motif_IFramePlaceHolderDivIndex");
		var id = "MOTIF_IFRAMEPLACEHOLDER_" + index;
		var div = document.getElementById(id);
		var iframeInfo = this.hiddenIframes[parseInt(index)];
		if(div != null) {
			iframe.width = iframeInfo.width;
			iframe.height = iframeInfo.height;
			div.style.width = "0px";
			div.style.height = "0px";
			div.firstChild.width = 0;
			div.firstChild.height = 0;
		}
		iframe.style.visibility = iframe.getAttribute("initialVisibility");
	}
	this.displayFirefoxIFrame = displayFirefoxIFrame;

	function adjustIEScrollbars(hide) {
		var doc = self.document.documentElement;
		var standardCSSMode = ((typeof(document.compatMode) != "undefined" && document.compatMode == "CSS1Compat") ? true : false);
		if(hide) {
			if(standardCSSMode) {
				doc.style.originalOverflow = doc.currentStyle.overflow;
				doc.style.overflow = "hidden"
			}
			else
				self.document.body.scroll = "no";
		}
		else {
			if(standardCSSMode) {
				if(typeof(doc.style.originalOverflow) != "undefined")
					doc.style.overflow = doc.style.originalOverflow;
			}
			else
				self.document.body.scroll = "yes";
		}
	}
	this.adjustIEScrollbars = adjustIEScrollbars;

	function getCascadedStyle(obj) {
		if(this.globalTemplate.isInternetExplorer())
			return obj.currentStyle;
		else
			return obj.style;
	}
	this.getCascadedStyle = getCascadedStyle;
	
	this.getWindowDimension = function() {
		var dimension = new Object();
		if(document.documentElement && document.compatMode == "CSS1Compat") {
			dimension.width = document.documentElement.clientWidth;
			dimension.height = document.documentElement.clientHeight;
		} else if(document.body && (document.body.clientWidth || document.body.clientHeight)) {
			dimension.width = document.body.clientWidth;
			dimension.height = document.body.clientHeight;
		} else if(typeof(window.innerWidth) == 'number') {
			dimension.width = window.innerWidth;
			dimension.height = window.innerHeight;
		}
		return dimension;
	}
	
	this.getScrollbarPosition = function() {
		var scrollPos = new Object();
		scrollPos.scrollTop = 0;
		scrollPos.scrollLeft = 0;
		if(typeof(window.pageYOffset) == 'number') {
			scrollPos.scrollTop = window.pageYOffset;
			scrollPos.scrollLeft = window.pageXOffset;
		} else if(document.body && (document.body.scrollLeft || document.body.scrollTop)) {
			scrollPos.scrollTop = document.body.scrollTop;
			scrollPos.scrollLeft = document.body.scrollLeft;
		} else if(document.documentElement && (document.documentElement.scrollLeft || document.documentElement.scrollTop)) {
			scrollPos.scrollTop = document.documentElement.scrollTop;
			scrollPos.scrollLeft = document.documentElement.scrollLeft;
		}
		return scrollPos;
	}
}

function DARTEventBin_15_06(creativeIdentifier, globalTemplate) {

	this.dartIntervalArray = new Array(6, 12, 20, 38, 76, 120, 240);
	this.dartEventBinCollection = new Array();
	this.dartRegistrationTime = null;
	this.dartMaxTimeMilliseconds = (20 * 60 * 1000);
	this.dartCreativeIdentifier = creativeIdentifier;
	this.dartGlobalTemplate = globalTemplate;

	function registerEventBinUrl(erid, adServerUrl, startTime) {
		if(!this.dartEventBinCollection[erid] && this.dartGlobalTemplate._isValidStartTime(startTime)) {
			startTime = (startTime) ? eval(startTime) : 0;
			var eventBin = new Array();
			eventBin["counter"]  = new Array();
			eventBin["timer"]    = new Array();
			eventBin["duration"] = new Array();
			eventBin["startEventCounter"] = new Array();
			eventBin["specialCounterFlags"] = new Array();
			eventBin["flushUrl"] = adServerUrl;
			eventBin["shouldFlush"] = true;
			this.dartEventBinCollection[erid] = eventBin;
			this.dartRegistrationTime = new Date();
			this.dartGlobalTemplate.registerTimeoutHandler(startTime * 1000, "setFlushInterval('" + erid + "')", this);
		}
	}
	this.registerEventBinUrl = registerEventBinUrl;

	function logMetEvent(eventType, eventId, erid) {
		if(this.dartEventBinCollection[erid] && eventId && !isNaN(eventId)) {
			switch(eventType)   {
				case "Count": {
					this.processCounter(eventId, erid);
					break;
				}
				case "Start": {
					this.processStart(eventId, erid);
					break;
				}
				case "Stop": {
					this.processStopTimer(eventId, erid);
					break;
				}
				default : break;
			}
		}
	}
	this.logMetEvent = logMetEvent;

	function processCounter(eventId, erid) {
		var specialCounterFlags = this.getSpecialCounterFlags(erid);
		var counterArray = this.getCounterArray(erid);

		if(eventId == 2 || eventId == 3) {
			if(!specialCounterFlags[eventId])
				counterArray[eventId] = 1;
			specialCounterFlags[eventId] = true;
		}
		else {
			if(!counterArray[eventId])
				counterArray[eventId] = 0;
			counterArray[eventId] = counterArray[eventId]+1;
		}
	}
	this.processCounter = processCounter;

	function processStart(eventId, erid) {
		var timerArray = this.getTimerArray(erid);
		var startEventCounter = this.getStartEventCounter(erid);
		if(!timerArray[eventId]) {
			timerArray[eventId] = new Date();
			startEventCounter[eventId] = 0;
			this.processCounter(eventId, erid);
		}
		else {
			if(!startEventCounter[eventId])
				startEventCounter[eventId] = 0;
			startEventCounter[eventId] = startEventCounter[eventId]+1;
		}
	}
	this.processStart = processStart;

	function processStopTimer(eventId, erid, isFlushing) {
		var timerArray = this.getTimerArray(erid);
		var durationArray = this.getDurationArray(erid);
		var startEventCounter = this.getStartEventCounter(erid);
		if(timerArray[eventId]) {
			if(isFlushing || startEventCounter[eventId] <= 0) {
				var start = timerArray[eventId];
				var end = new Date();
				var duration = end.getTime() - start.getTime();
				if(duration < 0 || duration > this.dartMaxTimeMilliseconds)
					duration = 0;
				durationArray[eventId] = durationArray[eventId] ? durationArray[eventId] + duration : duration;
				timerArray[eventId] = false;
				return true;
			}
			else {
				startEventCounter[eventId] = startEventCounter[eventId]-1;
			}
		}
		return false;
	}
	this.processStopTimer = processStopTimer;

	function flushMetCounters(erid) {
		if(this.dartEventBinCollection[erid] && this.getShouldFlush(erid)) {
			var activityUrl = "";
			var counterArray = this.getCounterArray(erid);
			var durationArray = this.getDurationArray(erid);
			var timerArray = this.getTimerArray(erid);
			var counter = 1;
			if(this.isInAllowedTimeframe()) {
				for(var eventId in counterArray) {
					if(!this.dartGlobalTemplate.isPartOfArrayPrototype(eventId)) {
						var wasStopped = this.processStopTimer(eventId, erid, true);
						var counterValue = counterArray[eventId];
						if(!durationArray[eventId])
							durationArray[eventId] = 0;
						var durationValue = this.roundNumber((durationArray[eventId] ? parseFloat(String(durationArray[eventId] / 1000)) : 0));
						if(counterValue > 0 || durationValue > 0) {
							activityUrl += "eid" + counter + "=" + eventId + ";";
							activityUrl += "ecn" + counter + "=" + counterValue + ";";
							activityUrl += "etm" + counter + "=" + durationValue + ";";
						}
						counterArray[eventId] = counterArray[eventId] - counterValue;
						durationArray[eventId] = durationArray[eventId] - durationValue * 1000;
						if(wasStopped) {
							timerArray[eventId] = new Date();
						}
						counter++;
					}
				}
				this.postData(activityUrl, erid);
			}
		}
	}
	this.flushMetCounters = flushMetCounters;

	function postData(activityUrl, erid) {
		if(activityUrl.length) {
			var timeStamp = new Date();
			var activityArray = this.splitActivity(activityUrl);
			for(var k = 0; k < activityArray.length; k++) {
				var postImage = document.createElement("IMG");
				var singleActivityString = activityArray[k];
				var postUrl = this.getFlushUrl(erid) + "&timestamp=" + timeStamp.getTime() + ";" + singleActivityString;
				postImage.src = postUrl;
			}
		}
	}
	this.postData = postData;

	function splitActivity(activity) {
		var activityArray = new Array();
		for(var key = "etm", postSize = 950, index = 0; activity.length > 0; activity = activity.substr(index)) {
			var copy = activity;
			var startString = copy.substr(0, postSize);
			index = startString.lastIndexOf(key) + key.length;
			startString = copy.substr(0, index);
			copy = copy.substr(index);
			index += copy.indexOf(";")+1;
			activityArray[activityArray.length] = activity.substr(0, index);
		}
		return activityArray;
	}
	this.splitActivity = splitActivity;

	function getCounterArray(erid) {
		var eventBin = this.dartEventBinCollection[erid];
		return eventBin["counter"];
	}
	this.getCounterArray = getCounterArray;

	function getTimerArray(erid) {
		var eventBin = this.dartEventBinCollection[erid];
		return eventBin["timer"];
	}
	this.getTimerArray = getTimerArray;

	function getDurationArray(erid) {
		var eventBin = this.dartEventBinCollection[erid];
		return eventBin["duration"];
	}
	this.getDurationArray = getDurationArray;

	function getStartEventCounter(erid) {
		var eventBin = this.dartEventBinCollection[erid];
		return eventBin["startEventCounter"];
	}
	this.getStartEventCounter = getStartEventCounter;

	function getSpecialCounterFlags(erid) {
		var eventBin = this.dartEventBinCollection[erid];
		return eventBin["specialCounterFlags"];
	}
	this.getSpecialCounterFlags = getSpecialCounterFlags;

	function getFlushUrl(erid) {
		var eventBin = this.dartEventBinCollection[erid];
		return eventBin["flushUrl"];
	}
	this.getFlushUrl = getFlushUrl;

	function getShouldFlush(erid) {
		var eventBin = this.dartEventBinCollection[erid];
		return eventBin["shouldFlush"];
	}
	this.getShouldFlush = getShouldFlush;

	function setMetShouldFlush(erid, flag) {
		var eventBin = this.dartEventBinCollection[erid];
		if(eventBin)
			eventBin["shouldFlush"] = flag;
	}
	this.setMetShouldFlush = setMetShouldFlush;

	function isInAllowedTimeframe() {
		var now = new Date();
		if(now.getTime() - this.dartRegistrationTime.getTime() > this.dartMaxTimeMilliseconds)
			return false;
		return true;
	}
	this.isInAllowedTimeframe = isInAllowedTimeframe;

	function roundNumber(number, X) {
		X = (X ? X : 0);
		return (Math.round(number*Math.pow(10,X))/Math.pow(10,X));
	}
	this.roundNumber = roundNumber;

	function setFlushInterval(erid) {
		for(var k = 0; k < this.dartIntervalArray.length; k++) {
			var timeout = (this.dartIntervalArray[k] * 1000);
			this.dartGlobalTemplate.registerTimeoutHandler(timeout, "flushMetCounters('" + erid + "')", this);
		}
	}
	this.setFlushInterval = setFlushInterval;
}



function FullScreenVideoManager_15_06(displayManager, fsvCreativeIdentifier) {
	this.displayManager = displayManager;
	this.globalTemplate = displayManager.globalTemplate;
	this.fsvCreativeIdentifier = fsvCreativeIdentifier;
	this.wmpPlayer = null;
	this.videoDiv = null;
	this.intervalId = null;
	this.isBufferingDone = false;
	this.isWMVStart = false;
	this.shouldTrack = true;
	this.isWideScreen = (screen.width/screen.height)>(4/3);
	this.scrHeight = screen.height;
	this.scrWidth = this.isWideScreen ? ((2/3)*this.scrHeight+(1/2)*screen.width) : screen.width;
	this.btnWidth = this.scrWidth * 0.056;
	this.topBorder = this.scrHeight * .8875;
	this.muteLeft = this.scrWidth * 0.766;
	this.playLeft = this.scrWidth * .825;
	this.pauseLeft = this.scrWidth * .884;
	this.closeLeft = this.scrWidth * .944;


	function createFSVPlayer() {
		var wmpObjectName = "OBJECT_" + this.fsvCreativeIdentifier;
		var divVideoName = "DIV_" + this.fsvCreativeIdentifier;

		var obj = '<object id="' + wmpObjectName + '" CLASSID="CLSID:6BF52A52-394A-11D3-B153-00C04F79FAA6"';
		obj += 'TYPE="application/x-oleobject" width="0" height="0">';
		obj += '<param name="AutoStart" value="false">';
		obj += '<param name="uiMode" value="none">';
		obj += '<param name="fullScreen" value="false">';
		obj += '<param name="enableErrorDialogs" value="false">';
		obj += '</object>';

		var vidDiv = document.createElement("DIV");
		vidDiv.style.visibility = "hidden";
		vidDiv.id = divVideoName;
		vidDiv.align = "left";
		vidDiv.innerHTML = obj;

		window.document.body.appendChild(vidDiv);

		this.wmpPlayer = this.globalTemplate.toObject("OBJECT_" + this.fsvCreativeIdentifier);
		this.videoDiv = this.globalTemplate.toObject("DIV_" + this.fsvCreativeIdentifier);

		this.wmpPlayer.attachEvent("PlayStateChange", new Function("newState", "dartFSVManagers['" + this.fsvCreativeIdentifier + "'].onPlayStateChange(newState);"));
		this.wmpPlayer.attachEvent("KeyDown", new Function("keyCode", "shiftState", "dartFSVManagers['" + this.fsvCreativeIdentifier + "'].onKeyDown(keyCode, shiftState);"));
		this.wmpPlayer.attachEvent("MouseDown", new Function("nButton", "shiftState", "fX", "fY", "dartFSVManagers['" + this.fsvCreativeIdentifier + "'].onMouseDown(nButton, shiftState, fX, fY);"));
		this.wmpPlayer.attachEvent("DoubleClick", new Function("nButton", "shiftState", "fX", "fY", "dartFSVManagers['" + this.fsvCreativeIdentifier + "'].onDoubleClick(nButton, shiftState, fX, fY);"));
	}
	this.createFSVPlayer = createFSVPlayer;

	function launchVideo(url, shouldTrack, isMute) {
		this.shouldTrack = shouldTrack;
		this.wmpPlayer.URL = url;
		this.isBufferingDone = false;
		this.isWMVStart = false;
		this.wmpPlayer.controls.play();
		this.videoDiv.style.visibility = "visible";
		this.wmpPlayer.settings.mute = isMute;
		this.intervalId = setInterval('dartFSVManagers["' + this.fsvCreativeIdentifier + '"].monitorPlayer();', 100);
	}
	this.launchVideo = launchVideo;


	function hideVideoPlayer() {
		this.videoDiv.style.visibility = "hidden";
		this.wmpPlayer.controls.stop();
		this.wmpPlayer.fullscreen;
		clearInterval(this.intervalId);
		this.logFSVEvent("Stop", 7);
		this.flushFSVCounters();
	}
	this.hideVideoPlayer = hideVideoPlayer;

	function logFSVEvent(eventType, eventId) {
		if(this.shouldTrack) {
			this.displayManager.logEvent(eventType, eventId, this.displayManager.renderingId);
		}
	}
	this.logFSVEvent = logFSVEvent;


	function flushFSVCounters() {
		if(this.shouldTrack) {
			var shouldFlash = this.displayManager.getShouldFlush(this.displayManager.renderingId);
			this.displayManager.setShouldFlush(this.displayManager.renderingId, true);
			this.displayManager.flushCounters(this.displayManager.renderingId);
			this.displayManager.setShouldFlush(this.displayManager.renderingId, shouldFlash);
		}
	}
	this.flushFSVCounters = flushFSVCounters;

	function isWMV() {
		var regMatch = this.wmpPlayer.URL.toLowerCase().match(/.*\.(wmv|asf)[\s]*$/);
		return regMatch ? true: false;
	}
	this.isWMV = isWMV;

	function playFSV() {
		if(this.isBufferingDone == false) {
			this.logFSVEvent("Count", 5);
			this.hideProgressBar();
		}
		this.logFSVEvent("Start", 7);
		this.wmpPlayer.fullscreen = true;
		this.isBufferingDone = true;
	}
	this.playFSV = playFSV;

	function onPlayStateChange(newState) {
		try {
			if(newState == 3) {   // play
				if(this.isWMV()) {
					if(this.isWMVStart == false) {
						this.isWMVStart = true;
					}
					else {
						this.playFSV();
					}
				}
				else {
					this.playFSV();
				}
			}
			else if(newState == 2) {  // pause
				this.logFSVEvent("Stop", 7);
			}
		} catch(exception) {}
	}
	this.onPlayStateChange = onPlayStateChange;

	function onKeyDown(nKeyCode, nShiftState) {
		if (nKeyCode == 27) {   // escape
			this.hideVideoPlayer();
		}
	}
	this.onKeyDown = onKeyDown;

	function monitorPlayer() {
		if(this.checkFSVError()) {
			return;
		}

		if(this.wmpPlayer.currentMedia && this.wmpPlayer.controls.currentPosition) {
			if(!this.isBufferingDone && this.wmpPlayer.controls.currentPosition > 0) {
				this.playFSV();
			}
			if(this.isBufferingDone && this.wmpPlayer.controls.currentPosition > 0 && !this.wmpPlayer.fullScreen) {
				this.hideVideoPlayer();
				return;
			}
			var totalLength = this.wmpPlayer.currentMedia.duration;
			var currentPosition = this.wmpPlayer.controls.currentPosition;
			var diff = totalLength - currentPosition;

			if(diff < 0.2) {
				this.logFSVEvent("Count", 6);
				this.hideVideoPlayer();
			}
		}
	}
	this.monitorPlayer = monitorPlayer;

	function onDoubleClick(nButton, nShiftState, fX, fY) {
		this.hideVideoPlayer();
	}
	this.onDoubleClick = onDoubleClick;
	
	function onMouseDown(nButton, nShiftState, fX, fY) {
		// the value of "1" for nButton is the value for the left mouse click
		if ((nButton == 1) && (fY > this.topBorder)) {
			// if mute button is clicked
			if((fX > this.muteLeft) && (fX < (this.muteLeft+this.btnWidth))) {
				this.wmpPlayer.settings.mute = !(this.wmpPlayer.settings.mute);
			}
			// if play button is clicked
			if ((fX > this.playLeft) && (fX < (this.playLeft+this.btnWidth))) {
				this.wmpPlayer.controls.play();
			}
			// if pause button is clicked
			if ((fX > this.pauseLeft) && (fX < (this.pauseLeft+this.btnWidth))) {
				if(this.wmpPlayer.playState == 2) {
					this.wmpPlayer.controls.play();
				}
				else {
					this.wmpPlayer.controls.pause();
				}
			}
			// if close button is clicked
			if ((fX > this.closeLeft) && (fX < (this.closeLeft+this.btnWidth))) {
				this.hideVideoPlayer();
			}
		}
	}
	this.onMouseDown = onMouseDown;

	function checkFSVError() {
		var err = this.wmpPlayer.error;
		if(err.errorCount > 0) {
			this.hideVideoPlayer();
			err.clearErrorQueue();
			this.hideProgressBar();
			return true;
		}
		else {
			return false;
		}
	}
	this.checkFSVError = checkFSVError;

	function hideProgressBar() {
		for(assetName in this.displayManager.assets) {
			if(!this.globalTemplate.isPartOfArrayPrototype(assetName)) {
				var flashObject = this.globalTemplate.toObject("FLASH_" + assetName);
				if(flashObject) {
					flashObject.SetVariable("_root.g_isVideoBufferComplete", "true");
				}
			}
		}
	}
	this.hideProgressBar = hideProgressBar;
}   // end of class


function MotifCreativeDisplayScheduler_15_06() {
	function getDisplayManager(creative) {
		var manager = new DARTCreativeDisplayManager_15_06(creative);
		dartCreativeDisplayManagers[creative.creativeIdentifier] = manager;
		return manager;
	}
	this.getDisplayManager = getDisplayManager;

	function getFullScreenManager(displayManager) {
		var fsvCreativeIdentifier = "FSV_" + displayManager.globalTemplate.creativeIdentifier;
		var manager = new FullScreenVideoManager_15_06(displayManager, fsvCreativeIdentifier);
		dartFSVManagers[fsvCreativeIdentifier] = manager;
		return manager;
	}
	this.getFullScreenManager = getFullScreenManager;

	function displayCreative(creative) {
		var type = creative.type;
		var globalTemplate = dartGlobalTemplateObjects[creative.creativeIdentifier];
		var mgr = getDisplayManager(creative);
		var fsvManager = (creative.isFSV) ? getFullScreenManager(mgr) : null;

		if(creative.isFSV) {
			fsvManager.createFSVPlayer();
		}

		if(type == "FloatingFlash") {
			mgr.displayFloatingFlash();
		}
		else if(type == "Pop") {
			var pop = creative.assets["PopFlash"];
			mgr.fsHook("FLASH_" + pop.variableName);
			mgr.registerUrl(creative.renderingId, pop.adserverUrl, 0);
			mgr.scheduleDisplay(pop.variableName, 0, "none");
			var duration = globalTemplate._convertDuration(pop.duration);
			if(typeof(duration) == "number" && duration > 0) {
				globalTemplate.registerTimeoutHandler(duration * 1000, "closeSelfPopup()", mgr);
			}
		}
		else if(type == "ExpandingFlash") {
			var exp = creative.assets["ExpandingFlash"];
			mgr.doNotAdjustIFrame(exp.variableName, exp.placeholderIframe);
			mgr.doNotAdjustObject(exp.variableName, "FLASH_" + exp.variableName);
			mgr.fsHook("FLASH_" + exp.variableName);
			mgr.registerUrl(creative.renderingId, exp.adserverUrl, exp.startTime);
			mgr.addEntityProperties(exp.variableName, exp.hideDropdowns, exp.hideIframes, exp.hideScrollbars, exp.hideObjects, exp.hideApplets, true);
			mgr.scheduleDisplay(exp.variableName, exp.startTime, exp.duration, false);
			mgr.collapseAsset(exp.variableName);
		}
		else if(type == "FloatingFlashReminderFlash") {
			mgr.displayFloatingWithReminder();
		}
		mgr.scheduleCallbackOnLoad("triggerPoliteDownload()");
	}
	this.displayCreative = displayCreative;
}

function DARTGlobalTemplate_15_06(creativeIdentifier) {
	this.creativeIdentifier = creativeIdentifier;

	function _isValidStartTime(startTime) {
		return this._isValidNumber(startTime);
	}
	this._isValidStartTime = _isValidStartTime;

	function _convertDuration(duration) {
		if(duration) {
			duration = duration.toString().toUpperCase();
			switch(duration) {
				case "AUTO": return "AUTO";
				case "NONE": return 0;
				default: return (this._isValidNumber(duration) ? eval(duration) : 0);
			}
		}
		return 0;
	}
	this._convertDuration = _convertDuration;

	function _isValidNumber(num) {
		var floatNum = parseFloat(num);
		if(isNaN(floatNum) || floatNum < 0)
			return false;
		return ((floatNum == num) ? true : false);
	}
	this._isValidNumber = _isValidNumber;

	function isPartOfArrayPrototype(subject) {
		for(var prototypeItem in Array.prototype) {
			if(prototypeItem == subject) {
				return true;
			}
		}
		return false;
	}
	this.isPartOfArrayPrototype = isPartOfArrayPrototype;

	function isWindows() {
		return (navigator.appVersion.indexOf("Windows") != -1);
	}
	this.isWindows = isWindows;

	function isFirefox() {
		var appUserAgent = navigator.userAgent.toUpperCase();
		if(appUserAgent.indexOf("GECKO") != -1) {
			if(appUserAgent.indexOf("FIREFOX") != -1) {
				var version = parseFloat(appUserAgent.substr(appUserAgent.lastIndexOf("/") + 1));
				return (version >= 1) ? true : false;
			}
			else if(appUserAgent.indexOf("NETSCAPE") != -1) {
				var version = parseFloat(appUserAgent.substr(appUserAgent.lastIndexOf("/") + 1));
				return (version >= 8) ? true : false;
			}
		}
		else
			return false;
	}
	this.isFirefox = isFirefox;

	function isMac() {
		return (navigator.appVersion.indexOf("Mac") != -1);
	}
	this.isMac = isMac;

	function isInternetExplorer() {
		return (navigator.appVersion.indexOf("MSIE") != -1 && navigator.userAgent.indexOf("Opera") < 0);
	}
	this.isInternetExplorer = isInternetExplorer;

	function getIEVersion() {
		var version = 0;
		if(this.isInternetExplorer()) {
			var key = "MSIE ";
			var index = navigator.appVersion.indexOf(key) + key.length;
			var subString = navigator.appVersion.substr(index);
			version = parseFloat(subString.substring(0, subString.indexOf(";")));
		}
		return version;
	}
	this.getIEVersion = getIEVersion;

	function getPlatform() {
		return navigator.platform;
	}
	this.getPlatform = getPlatform;

	function getPluginInfo() {
		return (this.isInternetExplorer() && this.isWindows()) ? this._getIeWindowsVersion() : this._detectNonWindows();
	}
	this.getPluginInfo = getPluginInfo;

	function _getIeWindowsVersion() {
		var lineFeed = "\r\n";
		var majorVersion = 10;
		var str = 'counter = ' + majorVersion + lineFeed +
				  'isOk = ' + false + lineFeed +
				  'Do' + lineFeed +
					'On Error Resume Next' + lineFeed +
					'isOk = (IsObject(CreateObject(\"ShockwaveFlash.ShockwaveFlash.\" & counter & \"\")))' + lineFeed +
					'If isOk = true Then Exit Do' + lineFeed +
					'counter = counter - 1' + lineFeed +
				 'Loop While counter > 0';
		window.execScript(str, "VBScript");
		return (isOk == true) ? counter : 0;
	}
	this._getIeWindowsVersion = _getIeWindowsVersion;

	function _detectNonWindows() {
		var flashVersion = 0;
		var key = "Shockwave Flash";
		if(navigator.plugins && (navigator.plugins["Shockwave Flash 2.0"] || navigator.plugins[key])) {
			var version2Offset = navigator.plugins["Shockwave Flash 2.0"] ? " 2.0" : "";
			var flashDescription = navigator.plugins[key + version2Offset].description;
			var keyIndex = flashDescription.indexOf(key) + (key.length+1);
			var majorVersion = flashDescription.substring(keyIndex, keyIndex+1);
			var minorVersion = "0";
			var minorVersionKey = "r";
			var minorVersionKeyIndex = flashDescription.indexOf(minorVersionKey ) + (minorVersionKey.length);
			if(minorVersionKeyIndex > 1) {
				minorVersion = flashDescription.substring(minorVersionKeyIndex)
			}
			flashVersion = parseFloat(majorVersion + "." + minorVersion);
			if(flashVersion > 6.0 && flashVersion < 6.65) {
				flashVersion = 0 ;
			}
		}
		return flashVersion;
	}
	this._detectNonWindows = _detectNonWindows;
	function toObject(variableName) {
		if(document.layers) {
			return (document.layers[variableName]) ? eval(document.layers[variableName]) : null;
		}
		else if(document.all && !document.getElementById) {
			return (eval("window." + variableName)) ? eval("window." + variableName) : null;
		}
		else if(document.getElementById && document.body.style) {
			return (document.getElementById(variableName)) ? eval(document.getElementById(variableName)) : null;
		}
	}
	this.toObject = toObject;

	function getObjectHtml() {
		var ret = this.getArgs(arguments);
		return this.generateObj(ret.objAttrs, ret.params, ret.embedAttrs);
	}
	this.getObjectHtml = getObjectHtml;

	function getArgs(args) {
		var ret = new Object();
		ret.embedAttrs = new Object();
		ret.params = new Object();
		ret.objAttrs = new Object();
		for(var i=0; i < args.length; i=i+2) {
			var currArg = args[i].toLowerCase();
			switch(currArg) {
				case "codebase":
				case "pluginspage":
				case "type":
				case "classid":
				case "minversion":
					break;
				case "src":
				case "movie":
					args[i+1] = args[i+1] + '&br=' + escape(this.getBrowser()) + '&os=' + escape(this.getOS());
					ret.params["movie"] = ret.embedAttrs["src"] = args[i+1];
					break;
				case "width":
				case "height":
				case "align":
				case "vspace":
				case "hspace":
				case "class":
				case "title":
				case "accesskey":
				case "name":
				case "id":
				case "tabindex":
				case "alt":
					ret.embedAttrs[args[i]] = ret.objAttrs[args[i]] = args[i+1];
					break;
				case "swliveconnect":
					ret.embedAttrs[args[i]] = args[i+1];
					break;
				default:
					ret.embedAttrs[args[i]] = ret.params[args[i]] = args[i+1];
			}
		}
		ret.objAttrs["classid"] = "clsid:D27CDB6E-AE6D-11cf-96B8-444553540000";
		ret.embedAttrs["type"] = "application/x-shockwave-flash";
		ret.params["allowScriptAccess"] = "always";
		ret.embedAttrs["allowScriptAccess"] = "always";
		return ret;
	}
	this.getArgs = getArgs;

	function generateObj(objAttrs, params, embedAttrs) {
		var str = "";
		if(this.isInternetExplorer()) {
			str += '<object ';
			for (var i in objAttrs) {
				if(!this.isPartOfArrayPrototype(i)) {
					str += i + '="' + objAttrs[i] + '" ';
				}
			}
			str += '>';
			for (var i in params) {
				if(!this.isPartOfArrayPrototype(i)) {
					str += '<param name="' + i + '" value="' + params[i] + '" /> ';
				}
			}
		}
		str += '<embed ';
		for (var i in embedAttrs) {
			if(!this.isPartOfArrayPrototype(i)) {
				str += i + '="' + embedAttrs[i] + '" ';
			}
		}
		str += ' ></embed>';
		if(this.isInternetExplorer()) {
			str += '</object>';
		}
		return str;
	}
	this.generateObj = generateObj;

	function getCallbackObjectIndex(obj) {
		for(var i = 0; i < dartCallbackObjects.length; i++) {
			if(dartCallbackObjects[i] == obj)
				return i;
		}
		dartCallbackObjects[dartCallbackObjects.length] = obj;
		return dartCallbackObjects.length - 1;
	}
	this.getCallbackObjectIndex = getCallbackObjectIndex;

	function registerPageLoadHandler(handler, obj) {
		if(obj) {
			var index = this.getCallbackObjectIndex(obj);
			handler = "dartCallbackObjects["+ index +"]." + handler;
		}
		var callback = new Function(handler);
		if(this.isInternetExplorer()) {
			if(this.isMac()) {
				this.scheduleCallbackOnLoad(handler);
			}
			else {
				if(self.document.readyState == "complete")
					callback();
				else
					self.attachEvent("onload", callback);
			}
		}
		else if(this.isFirefox()) {
			if(typeof(g_motifPageLoadedFlag) != "undefined" && g_motifPageLoadedFlag) {
				callback();
			}
			else {
				self.addEventListener("load", callback, true);
			}
		}
	}
	this.registerPageLoadHandler = registerPageLoadHandler;

	function registerPageUnLoadHandler(handler, obj) {
		if(obj) {
			var index = this.getCallbackObjectIndex(obj);
			handler = "dartCallbackObjects["+ index +"]." + handler;
		}
		var callback = new Function(handler);
		if(this.isInternetExplorer() && this.isWindows()) {
			self.attachEvent("onunload", callback);
		}
		else if(this.isFirefox()) {
			self.addEventListener("unload", callback, true);
		}
	}
	this.registerPageUnLoadHandler = registerPageUnLoadHandler;

	function registerTimeoutHandler(timeout, handler, obj) {
		var index = this.getCallbackObjectIndex(obj);
		window.setTimeout("dartCallbackObjects[" + index + "]." + handler, timeout);
	}
	this.registerTimeoutHandler = registerTimeoutHandler;

	function generateGlobalCallback(handler, obj) {
		if(obj) {
			var index = this.getCallbackObjectIndex(obj);
			handler = "dartCallbackObjects["+ index +"]." + handler;
		}
		return new Function(handler);
	}
	this.generateGlobalCallback = generateGlobalCallback;
	
    function registerEventHandler(event, element, handler, obj) {
		var callback = this.generateGlobalCallback(handler, obj);
		if(this.isInternetExplorer() && this.isWindows()) {
			self.attachEvent("on" + event, callback)
		}
		else if(this.isFirefox()) {
			element.addEventListener(event, callback, false);
		}
    }
    this.registerEventHandler = registerEventHandler;

	function scheduleCallbackOnLoad(callback) {
		var onloadCheckInterval = 200;
		if(window.document.readyState.toLowerCase() == "complete")
			eval(callback);
		else
			this.registerTimeoutHandler(onloadCheckInterval, "scheduleCallbackOnLoad('" + callback + "')", this);
	}
	this.scheduleCallbackOnLoad = scheduleCallbackOnLoad;

	function getBrowser() {
		if(this.isInternetExplorer())
			return "ie";
		else if(this.isFirefox())
			return "ff";
		else
			return "NOT_SUPPORTED";
	}
	this.getBrowser = getBrowser;
	
	function getOS() {
		if(this.isWindows())
			return "win"
		if(this.isMac())
			return "mac";
		else
			return "NOT_SUPPORTED";
	}
	this.getOS = getOS;
}

function DARTIFrame_15_06() {
	function setGlobals(creative) {
		creative.toolkitPreviewMode = false;
		creative.previewMode = (typeof(doubleClick_dartIsInPrevMode) != "undefined") ? (doubleClick_dartIsInPrevMode == true) : false;
		creative.debugEventsMode = (typeof(doubleclick_dartIsInDebugEventsMode) != "undefined") ? (doubleclick_dartIsInDebugEventsMode == true) : false;
	}
	this.setGlobals = setGlobals;

	function getBasicCreative(type, rid) {
		var creative = new Object();
		creative.type = type;
		creative.renderingId = rid;
		creative.creativeIdentifier = "GlobalTemplate_" + rid + (new Date()).getTime();
		creative.assets = new Array();
		this.setGlobals(creative);
		return creative;
	}
	this.getBasicCreative = getBasicCreative;

	function getFloatingFlash(variableName, position, zIndex, left, ignoreHorizontalScroll, top, ignoreVerticalScroll, width, height, url, wmode, interstitialImage, duration, startTime, hideDropDowns, hideIFrames, hideScrollbars, hideObjects, hideApplets, adserverUrl, assetType, isMainAsset) {
		var fl = new Object();
		fl.variableName = variableName;
		fl.position = position;
		fl.zIndex = zIndex;
		fl.left = left;
		fl.ignoreHorizontalScroll = ignoreHorizontalScroll;
		fl.top = top;
		fl.ignoreVerticalScroll = ignoreVerticalScroll;
		fl.width = width;
		fl.height = height;
		fl.url = url;
		fl.wmode = wmode;
		fl.interstitialImage = interstitialImage;
		fl.duration = duration;
		fl.startTime = startTime;
		fl.hideDropdowns = hideDropDowns;
		fl.hideIframes = hideIFrames;
		fl.hideScrollbars = hideScrollbars;
		fl.hideObjects = hideObjects;
		fl.hideApplets = hideApplets;
		fl.adserverUrl = adserverUrl;
		fl.assetType = assetType;
		fl.isMainAsset = isMainAsset;
		return fl;
	}
	this.getFloatingFlash = getFloatingFlash;

	function getFloatingCreative(variableName, position, zIndex, left, ignoreHorizontalScroll, top, ignoreVerticalScroll, width, height, url, wmode, interstitialImage, duration, startTime, hideDropDowns, hideIFrames, hideScrollbars, hideObjects, hideApplets, renderingId, adserverUrl) {
		var creative = this.getBasicCreative("FloatingFlash", renderingId);
		creative.assets["FloatingFlash"] = this.getFloatingFlash(variableName, position, zIndex, left, ignoreHorizontalScroll, top, ignoreVerticalScroll, width, height, url, wmode, interstitialImage, duration, startTime, hideDropDowns, hideIFrames, hideScrollbars, hideObjects, hideApplets, adserverUrl, "float", true);
		return creative;
	}
	this.getFloatingCreative = getFloatingCreative;

	function processFloatingBreakout(creativeParameters, motifIFrameId, scheduler, isFSV) {
		var creative = eval("this.getFloatingCreative(" + creativeParameters + ");");
		creative.isFSV = isFSV;
		var cid = creative.creativeIdentifier;
		dartGlobalTemplateObjects[cid] = new DARTGlobalTemplate_15_06(cid);
		scheduler.displayCreative(creative);
		dartCreativeDisplayManagers[cid].doNotAdjustIFrame(creative.assets["FloatingFlash"].variableName, motifIFrameId);
	}
	this.processFloatingBreakout = processFloatingBreakout;

	function getExpandingDivElement(ec, globalTemplate) {
		var top = "" + (0 - ec.offsetTop) + "px";
		var left = "" + (0 - ec.offsetLeft) + "px";
		var adDiv = document.createElement("DIV");
		adDiv.id = "DIV_" + ec.variableName;
		adDiv.style.position = "absolute";
		adDiv.style.top = top;
		adDiv.style.left = left;
		adDiv.style.visibility = "visible";
		adDiv.style.zIndex = ec.zIndex;
		adDiv.style.textAlign = "left";

		var mouseOutMethod = "dartCreativeDisplayManagers['" + globalTemplate.creativeIdentifier + "'].onMouseOut('" + ec.variableName + "');";
		adDiv.onmouseout = new Function(mouseOutMethod);

		var mouseOverMethod = "dartCreativeDisplayManagers['" + globalTemplate.creativeIdentifier + "'].onMouseOver('" + ec.variableName + "');";
		adDiv.onmouseover = new Function(mouseOverMethod);

		var movie = ec.url + '&td=' + escape(self.location.hostname);
		adDiv.innerHTML = globalTemplate.getObjectHtml("id", "FLASH_" + ec.variableName, "name", "FLASH_" + ec.variableName,
									 "WIDTH", ec.expandedWidth, "HEIGHT", ec.expandedHeight,
									 "movie", movie, "quality", "high", "wmode", ec.wmode);
		return adDiv;
	}
	this.getExpandingDivElement = getExpandingDivElement;

	function getExpandingCreative(variableName, wmode, zIndex, width, height, expWidth, expHeight, offsetTop, offsetLeft, offsetRight, offsetBottom, url, duration, startTime, hideDropDowns, hideIFrames, hideScrollbars, hideObjects, hideApplets, renderingId, adserverUrl, pushContents, animationTime) {
		var creative = this.getBasicCreative("ExpandingFlash", renderingId);
		var exp = new Object();
		exp.variableName = variableName;
		exp.wmode = wmode;
		exp.zIndex = zIndex;
		exp.width = width;
		exp.height = height;
		exp.expandedWidth = expWidth;
		exp.expandedHeight = expHeight;
		exp.offsetTop = offsetTop;
		exp.offsetLeft = offsetLeft;
		exp.offsetRight = offsetRight;
		exp.offsetBottom = offsetBottom;
		exp.url = url;
		exp.duration = duration;
		exp.startTime = startTime;
		exp.hideDropdowns = hideDropDowns;
		exp.hideIframes = hideIFrames;
		exp.hideScrollbars = hideScrollbars;
		exp.hideObjects = hideObjects;
		exp.hideApplets = hideApplets;
		exp.adserverUrl = adserverUrl;
		exp.placeholderIframe = -1;
		exp.assetType = "expando";
		exp.isMainAsset = true;
		exp.pushContents = pushContents;
		exp.animationTime = animationTime;
		creative.assets["ExpandingFlash"] = exp;
		return creative;
	}
	this.getExpandingCreative = getExpandingCreative;

	function processExpandingBreakout(creativeParameters, motifIFrameId, scheduler, mediaServer, isFSV) {
		try {
			var adIFrame = this.getAdIFrame(motifIFrameId);
			if(adIFrame == null)
				return;
			var creative = eval("this.getExpandingCreative(" + creativeParameters + ");");
			creative.isFSV = isFSV;
			var globalTemplate = new DARTGlobalTemplate_15_06(creative.creativeIdentifier);
			dartGlobalTemplateObjects[creative.creativeIdentifier] = globalTemplate;
			var ec = creative.assets["ExpandingFlash"];
			ec.placeholderIframe = motifIFrameId;

			var divElement = document.createElement("DIV");
			divElement.id = "OUTER_DIV_" + ec.variableName;
			divElement.style.position = "relative";
			divElement.style.zIndex = ec.zIndex;

			var parentNode = adIFrame.parentNode;
			parentNode.insertBefore(divElement, adIFrame);
			if(globalTemplate.isFirefox()) {
				var img = document.createElement("IMG");
				img.id = "EXPANDO_PLACEHOLDER_" + ec.variableName;
				img.width = adIFrame.width;
				img.height = adIFrame.height;
				img.src = mediaServer + "/dot.gif";
				img.style.visibility = "hidden";
				adIFrame.width = 0;
				adIFrame.height = 0;
				divElement.appendChild(img);
			}
			else {
				divElement.appendChild(adIFrame);
				adIFrame.id = "EXPANDO_PLACEHOLDER_" + ec.variableName;
				adIFrame.style.visibility = "hidden";
			}

			var adDiv = this.getExpandingDivElement(ec, globalTemplate);
			divElement.appendChild(adDiv);
			scheduler.displayCreative(creative);
		}
		catch(e){}
	}
	this.processExpandingBreakout = processExpandingBreakout;

	function getAdIFrame(motifIFrameId) {
		var frames = document.getElementsByTagName("iframe");
		for(var i = 0; i < frames.length; i++) {
			if(typeof(frames[i].MotifIFrameID) != "undefined" && frames[i].MotifIFrameID == motifIFrameId)
				return frames[i];
		}
		return null;
	}
	this.getAdIFrame = getAdIFrame;
	
	function getFloatingWithReminderCreative(fltVarName,fltPosition,fltZIndex,fltLeft,fltIgnoreHorizontalScroll,fltTop,fltIgnoreVerticalScroll,fltWidth,fltHeight,fltURL,fltWMode,interstitialImage,fltDuration,fltStartTime,hideDropDowns,hideIFrames,hideScrollbars,hideObjects,hideApplets,renderingId,adserverUrl,rmdVarName,rmdPosition,rmdZIndex,rmdLeft,rmdIgnoreHorizontalScroll,rmdTop,rmdIgnoreVerticalScroll,rmdWidth,rmdHeight,rmdURL,rmdWMode,rmdDuration,rmdStartTime) {
		var creative = this.getBasicCreative("FloatingFlashReminderFlash", renderingId);
		creative.assets["FloatingFlash"] = this.getFloatingFlash(fltVarName,fltPosition,fltZIndex,fltLeft,fltIgnoreHorizontalScroll,fltTop,fltIgnoreVerticalScroll,fltWidth,fltHeight,fltURL,fltWMode,interstitialImage,fltDuration,fltStartTime,hideDropDowns,hideIFrames,hideScrollbars,hideObjects,hideApplets,adserverUrl,"float",true);
		creative.assets["ReminderFlash"] = this.getFloatingFlash(rmdVarName,rmdPosition,rmdZIndex,rmdLeft,rmdIgnoreHorizontalScroll,rmdTop,rmdIgnoreVerticalScroll,rmdWidth,rmdHeight,rmdURL,rmdWMode,"",rmdDuration,rmdStartTime,false,false,false,false,false,adserverUrl,"reminder",false);
		return creative;
	}
	this.getFloatingWithReminderCreative = getFloatingWithReminderCreative;

	function processFloatingWithReminderBreakOut(creativeParameters, motifIFrameId, scheduler, isFSV) {
		var creative = eval("this.getFloatingWithReminderCreative(" + creativeParameters + ");");
		creative.isFSV = isFSV;
		var cid = creative.creativeIdentifier;
		dartGlobalTemplateObjects[cid] = new DARTGlobalTemplate_15_06(cid);
		scheduler.displayCreative(creative);
		dartCreativeDisplayManagers[cid].doNotAdjustIFrame(creative.assets["FloatingFlash"].variableName, motifIFrameId);
	}
	this.processFloatingWithReminderBreakOut = processFloatingWithReminderBreakOut;

	function isWaitingForBreakout(motifIFrameId) {
		var varName = this.getCreativeVariableName(motifIFrameId);
		return (eval("typeof(" + varName + ")") != "undefined");
	}
	this.isWaitingForBreakout = isWaitingForBreakout;

	function getCreativeVariableName(motifIFrameId) {
		return "dartIFrameCreative_" + motifIFrameId + "_15_06";
	}
	this.getCreativeVariableName = getCreativeVariableName;

	function doIFrameBreakout(creative, motifIFrameId) {
		var scheduler = new MotifCreativeDisplayScheduler_15_06();
		var creativeParameters = creative.creativeInfo;
		var creativeType = creative.creativeType;
		var isFSV = creative.fullScreenVideoEnabled;

		if(creativeType == "FLOATING")
			this.processFloatingBreakout(creativeParameters, motifIFrameId, scheduler, isFSV);
		else if(creativeType == "EXPANDO")
			this.processExpandingBreakout(creativeParameters, motifIFrameId, scheduler, creative.mediaServer, isFSV);
		else if(creativeType == "FLOATINGWITHREMINDER")
			this.processFloatingWithReminderBreakOut(creativeParameters, motifIFrameId, scheduler, isFSV);
	}
	this.doIFrameBreakout = doIFrameBreakout;

	function doIFrameBreakouts() {
		var frames = self.document.getElementsByTagName("iframe");
		for(var i = 0; i < frames.length; i++) {
			if(typeof(frames[i].MotifIFrameID) != "undefined") {
				var motifIFrameId = frames[i].MotifIFrameID;
				if(this.isWaitingForBreakout(motifIFrameId)) {
					var creative = eval(getCreativeVariableName(motifIFrameId));
					this.doIFrameBreakout(creative, motifIFrameId);
				}
			}
		}
	}
	this.doIFrameBreakouts = doIFrameBreakouts;
}

function DARTPopup_15_06() {
	function processPopupCode() {
		var objectHtml = unescape(dartObjectHtml);
		var popupDiv = document.getElementById("DIV_POPUP");
		if(popupDiv != null)
			popupDiv.innerHTML = objectHtml;

		var creative = new Object();
		creative.type = "Pop";
		creative.renderingId = dartRenderingId;
		creative.creativeIdentifier = dartCreativeIdentifier;
		creative.previewMode = (typeof(doubleClick_dartIsInPrevMode) != "undefined") ? (doubleClick_dartIsInPrevMode == true) : false;
		creative.debugEventsMode = (typeof(doubleclick_dartIsInDebugEventsMode) != "undefined") ? (doubleclick_dartIsInDebugEventsMode == true) : false;
		creative.isFSV = (typeof(doubleClick_dartIsFSV) != "undefined") ? (doubleClick_dartIsFSV == true) : false;
		creative.toolkitPreviewMode = false;
		creative.assets = new Array();

		var popFlash = new Object();
		popFlash.variableName = dartVariableName;
		popFlash.duration = popupDuration;
		popFlash.adserverUrl = dartAdserverUrl;
		popFlash.assetType = "pop";
		popFlash.isMainAsset = true;
		creative.assets["PopFlash"] = popFlash;
		dartGlobalTemplateObjects[dartCreativeIdentifier] = new DARTGlobalTemplate_15_06(dartCreativeIdentifier);
		var scheduler = new MotifCreativeDisplayScheduler_15_06();
		scheduler.displayCreative(creative);
	}
	this.processPopupCode = processPopupCode;
}

var globalTemplate = new DARTGlobalTemplate_15_06();
if(typeof(dartIsPopup) != "undefined")
	globalTemplate.registerPageLoadHandler("(new DARTPopup_15_06()).processPopupCode()", null);
else
	globalTemplate.registerPageLoadHandler("(new DARTIFrame_15_06()).doIFrameBreakouts()", null);


