/**
 * Class for swap image and url of partner.
 *
 * Description of array (pTabPartner) :
 * One element of array is a string. String is split in 3 values.
 * First value : URL of link
 * Second value : URL of img src
 * Third value : Timeout before to swap these link and img
 */
function SwapImgPartenaire(pTarget, pTabPartner)
{
	/**
	 * Don't touch or you die.
	 */
	var obj = this;

	/**
	 * Array of partner.
	 */
	obj.tabPart = new Array();

	/**
	 * Target element for insert link and img.
	 */
	obj.target = null;

	/**
	 * Constant indice URL of partner in array
	 */
	obj.INDURL = 0;
	
	/**
	 * Constant indice SRC img of partner in array
	 */
	obj.INDSRC = 1;
	
	/**
	 * Constant indice timeout of partner in array
	 */
	obj.INDTIMEOUT = 2;

	/**
	 * Position in tabPart for know the next to display.
	 */
	obj.currentPart = 0;
	
	/**
	 * Next partner to display.
	 */
	obj.nextPart = 0;

	/**
	 * Timeout of setTimeout function.
	 */
	obj.timeout = 0;

	/**
	 * Init all
	 */
	obj.init = function()
	{
		if (pTabPartner.length <= 0) {
			return;
		}
		obj.target = document.getElementById(pTarget);
		obj.createTabPartner(pTabPartner);
		obj.showPartner();
	}

	/**
	 * Create array of string after parser traitment (split -> array).
	 */
	obj.createTabPartner = function(pTabPartner)
	{
		for (var i = 0; i < pTabPartner.length; i++) {
			var t = pTabPartner[i].match(/(.*)~@~(.*)~@~(.*)/);
			obj.tabPart.push(new Array(t[1], t[2], t[3]));
		}
	}

	/**
	 * Append element HTML to document.
	 */
	obj.showPartner = function()
	{
		if (obj.timeout) {
			clearTimeout(obj.timeout);
		}
		obj.currentPart = obj.nextPart;
		var link = obj.target.getElementsByTagName('A');
		var img = link[0].getElementsByTagName('IMG');
		img[0].src = obj.tabPart[obj.currentPart][obj.INDSRC];
		link[0].href = obj.tabPart[obj.currentPart][obj.INDURL];
		/*obj.addEvent(link[0], 'click', obj.popup);*/
		if (obj.tabPart[obj.currentPart + 1] != undefined) {
			obj.nextPart++;
		}
		else {
			obj.nextPart = 0;
		}
		obj.timeout = setTimeout(obj.showPartner, obj.tabPart[obj.currentPart][obj.INDTIMEOUT]);
	}

	/**
	 * Open a popup
	 */
	obj.popup = function()
	{
		window.open(obj.tabPart[obj.currentPart][obj.INDURL]);
	}

	/**
	 * For add a event to target element.
	 */
	obj.addEvent = function(target, event, func)
	{
		if (target.addEventListener) {
			target.addEventListener(event, func, false);
		}
		else {
			target.attachEvent('on' + event, func);
		}
	}

	/**
	 * For detach a event to target element.
	 */
	obj.delEvent = function(target, event, func)
	{
		if (target.addEventListener) {
			target.removeEventListener(event, func, false);
		}
		else {
			target.detachEvent('on' + event, func);
		}
	}

	obj.addEvent(window, 'load', obj.init);
}
