MW.namespace("modules.ads");

(function(){
	
	var Event = YAHOO.util.Event;
	var Dom = YAHOO.util.Dom;
	var Con = YAHOO.util.Connect;
	
	/**
	 * The Loader object, when instantiated, 
	 * will read a specified xml file (the same used by the flash loader) contaiing a list of images with links 
	 * and randomly choose one image/link to render into the specified target element.
	 * 
	 * @param {string|object} elm id or HTMLDom element which will receive the loaded ad
	 */
	MW.modules.ads.Loader = function(elm,pathToXmlConfig)
	{
		this.element = Dom.get(elm);
		this.path = pathToXmlConfig;
		var that = this;
		var callback = {
			"success": function(o) {
				try
				{
					var img = this.loader.getRandomImage(o.responseXML);
					this.loader.assembleImage(img);
				}
				catch(Er)
				{
					alert(Er.message);
					this.failure(o);
				}
			},
			"failure": function(o) {
				// fail silently - leave default image intact, don't complain about it 
				return;
			},
			"argument": {},
			"element": this.element,
			"loader": this
		};
		callback.element = that.element;
		callback.loader = that;
		
		Con.asyncRequest("GET",this.path,callback,null);
	};
	
	/**
	 * @param {XmlDocument} xml parse the response xml, return a random image
	 * @returns {object} object hash containing image (url) and link (url)values
	 */
	MW.modules.ads.Loader.prototype.getRandomImage = function(xml)
	{
		var images = xml.getElementsByTagName("image");
		var l = images.length;
		var foo = Math.random();
		var i = Math.floor(foo*l); // select random node
		var image = images[i];
		var imageUrl = image.getElementsByTagName("url")[0].firstChild.nodeValue.replace(/^\s\s*/, '').replace(/\s\s*$/, '');
		var linkUrl = image.getElementsByTagName("link")[0].firstChild.nodeValue.replace(/^\s\s*/, '').replace(/\s\s*$/, '');
		return {"url": imageUrl, "link": linkUrl};
	}
	
	/**
	 * @param {object} image Image object returned from getRandomImage
	 */
	MW.modules.ads.Loader.prototype.assembleImage = function(image)
	{
		// remove default image children 
		if (this.element.childNodes.length > 0)
		{
			while (this.element.childNodes.length >=1)
			{
				this.element.removeChild(this.element.firstChild);
			}
		}
		var a = document.createElement("A");
		var i = document.createElement("IMG");
		a.href = image.link;
		i.src = image.url;
		a.appendChild(i);
		this.element.appendChild(a);
	}
	
	MW.modules.ads.Rotator = function()
	{
		// TODO javascript only rotator
	};
	
	
}());