var CSAdBoxLoaded = true;

CSAdBox = function(el, userConfig)
{
	CSAdBox.superclass.constructor.call(this, el, userConfig);
	this.initCS(userConfig);
}

YAHOO.extend(CSAdBox, Object, {
	initCS: function(config)
	{
		this.numAds = config.numAds;
		this.currentAd = 0;
		this.baseId = config.baseId;
		this.anim1 = null;
		this.anim2 = null;
		this.animating = false;
		this.hookup();
		this.startLoop(4000);
	},
	
	startLoop: function(ms)
	{
		var denna = this;
		this.timer = setTimeout(function() {
			var to = denna.currentAd < denna.numAds - 1 ? denna.currentAd + 1 : 0;
			denna.doSwap(denna.currentAd, to);
		}, ms);
	},

	initAnim: function(img, fromVal, toVal)
	{
		var attributes = {
			opacity: { from: fromVal, to: toVal }
		};
		var a = new YAHOO.util.Anim(img, attributes, 0.1);
		a.animate();
		this.animating = true;
		return a;
	},

	doSwap: function(i1, i2)
	{
		var img1 = $(this.baseId + "image" + i1);
		var img2 = $(this.baseId + "image" + i2);
		this.anim1 = this.initAnim(img1, 1, 0);
		this.anim2 = this.initAnim(img2, 0, 1);

		this.currentAd = i2;
		YAHOO.util.Dom.setStyle(img1, "zIndex", 1);
		YAHOO.util.Dom.setStyle(img1, "zIndex", 3);

		var denna = this;
		this.anim2.onComplete.subscribe(function() {
			denna.startLoop(4000);
			denna.animating = false;
		});
	},

	relocate: function()
	{
		var first = $(this.baseId + "image0");
		var pos = YAHOO.util.Dom.getXY(first);
		var x = Math.round(pos[0]);
		var y = Math.round(pos[1]);
		for (var i=1; i<this.numAds; i++)
			{
				var img = $(this.baseId + "image" + i);
				img.style.left = x + "px";
				img.style.top = y + "px";
				img.style.display = "block";
			}
	},

	hookup: function()
	{
		var denna = this;

		var first = $(this.baseId + "image0");
		var pos = YAHOO.util.Dom.getXY(first);
		var x = Math.round(pos[0])/* - 2*/;
		var y = Math.round(pos[1])/* - 2*/;
		
		this.links = [];
		for (var i=0; i<this.numAds; i++)
			{
				var lnkTxt = $(this.baseId + "textlink" + i);
				lnkTxt.index = i;
				this.links[this.links.length] = lnkTxt.href;
				
				if (i > 0)
					{
						var img = $(this.baseId + "image" + i);
						img.style.left = x + "px";
						img.style.top = y + "px";
						img.style.display = "block";
					}
				
				YAHOO.util.Event.on(lnkTxt, "mouseover", function(e) {
					denna.linkEnter(e);
				});
				YAHOO.util.Event.on(lnkTxt, "mouseover", function(e) {
					denna.linkExit(e);
				});
				
				var lnkImg = $(this.baseId + "imagelink" + i);
				lnkImg.index = i;
				YAHOO.util.Event.on(lnkImg, "click", function(e) {
					return denna.linkClicked(e);
				});
			}
			
		YAHOO.util.Event.addListener(window, "resize", function() {
			denna.relocate();
		});
	},
	
	linkEnter: function(e)
	{
		var vilken = YAHOO.util.Event.getTarget(e);
		vilken = YAHOO.util.Dom.getAncestorByTagName(vilken, "a");
		vilken = vilken.index;
		if (vilken != this.currentAd)
			{
				clearTimeout(this.timer);
				if (this.animating)
					{
						this.anim1.stop();
						this.anim2.stop();
					}
				for (var i=0; i<this.numAds; i++)
					{
						var en = $(this.baseId + "image" + i);
						var opac = i == vilken ? 1 : 0;
						var zi = i == vilken ? 3 : 1;
						YAHOO.util.Dom.setStyle(en, "opacity", opac);
						YAHOO.util.Dom.setStyle(en, "zIndex", zi);
					}
				this.currentAd = vilken;
				this.startLoop(4000);
			}
	},
	
	linkExit: function(e)
	{
	},
	
	linkClicked: function(e)
	{
		YAHOO.util.Event.stopEvent(e);
		var vilken = YAHOO.util.Event.getTarget(e);
		vilken = YAHOO.util.Dom.getAncestorByTagName(vilken, "a");
		vilken = vilken.index;
		var hrf = this.links[this.currentAd];
		window.location.href = hrf;
		return false;
	}
});

