
var BROWSER = function()
{
	var usrAgnt = navigator.userAgent.toUpperCase();
	if (usrAgnt.indexOf("MSIE") != -1) {return "IE"; }
	else if (usrAgnt.indexOf("OPERA")!=-1) {return "OP"; }
	else if (usrAgnt.indexOf("FIREFOX")!=-1) {return "FF"; }
	else if (usrAgnt.indexOf("CHROME")!=-1) { return "CH"; }
	else if (usrAgnt.indexOf("SAFARI")!=-1) { return "SF"; }
	else { return ""; }
}();

if(BROWSER=="OP")
	location.href = "http://demo.admotion.com.ar/msg/?mc=noOpera";

var Flash = new function()
{
	var ObjectElement = function()
	{
		var _str = "<object>";
		var isException = function(name)
		{
			var exceptions = ['name', 'type', 'style'];
			for(var i=0; i<exceptions.length; i++)
				if (name.toLowerCase()==exceptions[i])
					return true;
		}
		this.setAttribute = function(name, value)
		{
			if (isException(name))
				_str = _str.replace("<object", "<object " + name + "='" + value + "'");
			else
				_str += "<param name='" + name + "' value='" + value + "'>";
		}
		this.appendTo = function(node)
		{
			_str += "</object>";
			var container = node.ownerDocument.createElement("div");
			node.insertBefore(container, node.firstChild);
			container.innerHTML = _str;
			return container.firstChild;
		}
	}
	var EmbedElement = function()
	{
		var _str = "<embed";
		this.setAttribute = function(name, value)
		{
			_str += " " + name + "='" + value + "'";
		}
		this.appendTo = function(node)
		{
			_str += "></embed>";
			var container = node.ownerDocument.createElement("div");
			node.insertBefore(container, node.firstChild);
			container.innerHTML = _str;
			return container.firstChild;
		}
	}
	var create = this.create = function(node, src, _width, _height, name, fvars, _left, _top)
	{
		var obj = new (BROWSER=='IE' ? ObjectElement : EmbedElement);
		with(obj)
		{
			setAttribute("type", "application/x-shockwave-flash");
			setAttribute("wmode", "transparent");
			setAttribute("allowFullscreen", "true");
			setAttribute("flashvars", fvars);
			setAttribute("movie", src);
			setAttribute("src", src);
			setAttribute("allowScriptAccess", "always");
			setAttribute("name", name);
			setAttribute("style", "width:"+_width+"px; height:"+_height+"px");
		}
		obj = obj.appendTo(node);
		with(obj.style)
		{
			if (_left!=undefined || _top!=undefined)
			{
				position = 'absolute';
				if (_left)
					left = _left + 'px';
				if (_top)
					top = _top + 'px';
			}
//			width = _width + 'px';
//			height = _height + 'px';
		}
		return obj;
	}
	var addLoadEvent = this.addLoadEvent = function(object, callback)
	{
		var TTL = 40;
		var isLoaded = false;
		try
		{
			isLoaded = object.PercentLoaded()==100;
		}
		catch(_){}
		if(isLoaded || arguments[2]===0)
			callback(object);
		else
		{
			var waiting = arguments.callee;
			setTimeout(function()
			{
				waiting(object, callback, arguments[2] ? arguments[2]-1 : TTL);
			}, 50);
		}
	}
	var remove = this.remove = function(object)
	{
		try
		{
			object.parentNode.parentNode.removeChild(object.parentNode);
			return null;
		}
		catch (_)
		{
			return object;
		}
	}
	this.addFSCommandCallback = function(object, callback)
	{
		if(BROWSER=='IE')
			object.attachEvent('FSCommand', callback);
		else
			object.ownerDocument.defaultView[object.getAttribute("name") + "_DoFSCommand"] = callback;
	}
	this.preload = function(swfCollection, callback)
	{
		if(swfCollection.constructor==String)
			swfCollection=[swfCollection];
		var flash = create(document.body, swfCollection.shift(), 320, 82, 'preloading', '', -2000, 1);
		var next = arguments.callee;
		addLoadEvent(flash, function(flashLoaded)
		{
			remove(flashLoaded);
			if(swfCollection.length>0)
				next(swfCollection, callback);
			else
				callback();
		});
	}
}

var Arguments = function()
{
	var url = location.href;
	var ret = new Object, splitTmp;
	if (url.indexOf('?')!=-1)
		var parameters = url.split('?')[1].split('&');
	else return ret;
	for (var i = 0; i < parameters.length; i++)
	{
		splitTmp = parameters[i].split('=');
		ret[splitTmp[0]] = unescape(splitTmp[1]);
	}
	return ret;
}();

var Standard = new function()
{
	var getFlashVersion = function()
	{
		var ver = 0;
		if (navigator.userAgent.indexOf("MSIE") != -1)
		{
			try
			{
				var objAx = new ActiveXObject("ShockwaveFlash.ShockwaveFlash");
				ver=objAx.GetVariable("$version");
				ver=parseInt(ver.substring(ver.indexOf('WIN')+4));
			}
			catch(e) {}
		}
		else
		{
			if (navigator.plugins && navigator.plugins.length)
			{
				var x = navigator.plugins["Shockwave Flash"];
				if (x && x.description)
				{
					var i = x.description.indexOf('.');
					ver = x.description.charAt(i-1);
					if(x.description.charAt(i-2) != ' ')
						ver = x.description.charAt(i-2)+ ver;
				}
			}
			ver = parseInt(ver);
		}
		return ver;
	}
	var getFlashVars = function()
	{
		return 'clickTAG=' + escape(Config.clickURL) + '&host=demo&movieNum=0000&hostAdserver=nspmotion.com';
	}
	// public:
	this.getPath = function(name)
	{
		if(name && name.indexOf('.')!=-1 && (name.indexOf('.swf')!=-1 || name.indexOf('.SWF')!=-1))
			return name;
		else
			throw new Error("Invalid swf name");
	}
	this.FLASH_VERSION = getFlashVersion();
	this.FLASHVARS = getFlashVars();
}

var Mouse = new function()
{
	var _moving = false;
	var _timeout;
	document.onmousemove = function()
	{
		_moving = true;
		clearTimeout(_timeout);
		_timeout = setTimeout(function() { _moving = false; }, 50);
	}
	this.getMoving = function() { return _moving; }
}

var HalfbannerExpaDemo = function(files)
{
	var _lastBan, _lastExp;
	var _pl = files.placement;
	var _bn = files.ban;
	var _ex = files.exp;
//	var _collapseTimeout;
	var _expanded = true;

	var fscommandHandler = function(arg1, arg2)
	{
		switch(arg1)
		{
			case "expand":
				showExpandedBanner();
				break;
			case "collapse":
				showHalfBanner();
				break;
			case "setWindowed":
				showHalfBanner();
				break;
//			case "isExpanded":
//				clearTimeout(_collapseTimeout);
//				break;
			case "click":
				self.open(arg2);
				showHalfBanner();
				break;
			case "widget":
				launchWidget(arguments[1]);
				break;
		}
	}
	var mustBeCollapsed = function()
	{
		if(Mouse.getMoving())
			showHalfBanner();
	}
	var launchWidget = function(flashData){
		flashData = (typeof flashData!="undefined")?escape(flashData):"";
		var ifURL = 'http://nspmotion.com/js/msnactivity/'+Config.widgetLanguage+'/ifcookie.htm?wc='+Config.widgetWC+'&fd='+flashData+'&r='+Math.round(Math.random()*99999999);
		if (!document.getElementById('ADMifCookie')){
			var ifCookie = document.createElement("IFRAME");
			ifCookie.id = 'ADMifCookie';
			ifCookie.style.width = '1px';
			ifCookie.style.height = '1px';
			ifCookie.style.position = 'absolute';
			document.body.insertBefore(ifCookie, document.body.firstChild);
		}
		document.getElementById('ADMifCookie').src = ifURL;
	}
	var showHalfBanner = function()
	{
		if (!_expanded)
			return;
		_expanded = false;
		_lastBan = Flash.remove(_lastBan);
		_lastBan = Flash.create(document.body, _bn.url, _bn.width, _bn.height, "halfbanner", Standard.FLASHVARS, _pl.left, _pl.top);
		Flash.addFSCommandCallback(_lastBan, fscommandHandler);
		Flash.addLoadEvent(_lastBan, function()
		{
			_lastExp = Flash.remove(_lastExp);
		}, 25);
	}
	var showExpandedBanner = function()
	{
		if (_expanded)
			return;
		_expanded = true;
		_lastExp = Flash.remove(_lastExp);
		var expTop = Config.expandUpward ? _pl.top-_ex.height+_bn.height+1 : _pl.top-1;
//		_lastExp = Flash.create(document.body, _ex.url, _ex.width, _ex.height, "halfbannerExp", Standard.FLASHVARS, _pl.left-1, expTop);
		_lastExp = Flash.create(document.body, _ex.url, _ex.width, _ex.height, "halfbannerExp", Standard.FLASHVARS, _pl.left-((_ex.width-_bn.width)/2), _pl.top-((_ex.height-_bn.height)/2));
		Flash.addFSCommandCallback(_lastExp, fscommandHandler);
		_lastExp.style.zIndex = 1000;
		_lastExp.style.visibility = 'hidden';
		Flash.addLoadEvent(_lastExp, function()
		{
			_lastExp.style.visibility = 'visible';
//			_collapseTimeout = setTimeout(mustBeCollapsed, 60);
			_lastBan = Flash.remove(_lastBan);
		}, 25);
	}
	document.onclick = function(event)
	{
		event = event || window.event;
		if(!event.target || event.target.nodeName.toLowerCase()!="embed")
			showHalfBanner();
	}
	showHalfBanner();
}

var Main = function()
{
	var _this = this;
	var urlBanner = Standard.getPath((Arguments.ban ? Arguments.ban.split('?')[0] : 0) || Config.banner.url);
	var urlExpanded = Standard.getPath((Arguments.exp ? Arguments.exp.split('?')[0] : 0) || Config.expanded.url);

	Flash.preload([urlBanner, urlExpanded], function()
	{
		setTimeout(function()
		{
			if(_this.onloadall)
				_this.onloadall();
		}, 0);
		var banSize = Arguments.ban ? Arguments.ban.split('?') : [];
		var expSize = Arguments.ban ? Arguments.ban.split('?') : [];
		var files = {
			ban: {
				url: urlBanner,
				width: parseInt(banSize[1] ? banSize.split('x')[0] : Config.banner.width),
				height: parseInt(banSize[1] ? banSize.split('x')[1] : Config.banner.height)
			},
			exp: {
				url: urlExpanded,
				width: parseInt(expSize[1] ? expSize.split('x')[0] : Config.expanded.width),
				height: parseInt(expSize[1] ? expSize.split('x')[1] : Config.expanded.height)
			},
			placement: Config.placement
		};
		new HalfbannerExpaDemo(files);
	});
	this.onloadall = null;
}

var start = function()
{
	if(started)
		return;
	started = true;
	preloadBG.onload = function()
	{
		try
		{
			var main = new Main();
		}
		catch (e)
		{
			alert(e.description || e);
		}
		main.onloadall = function()
		{
			var __h3=document.getElementsByTagName("h3");
			if(__h3.length>0)
				__h3[0].parentNode.removeChild(__h3[0]);
			document.body.style.backgroundRepeat = "no-repeat";
			document.body.style.backgroundImage = "url(" + Config.background + ")";
			document.body.scrollTop = 5000;
		}
	}
	preloadBG.src = Config.background;
}

var started = false;
var preloadBG = new Image;
window.onload = start;
setTimeout(start, 6000);
