/***************************************************************************
 *				javascript.js
 *				-------------
 *	Cree le		: 23 Janvier 2008
 *	Derniere modif.	: 23 Janvier 2008
 *	Auteur		: Agence ici - Asselin Benoit
 *	Site		: http://www.agenceici.com/
 *
 ***************************************************************************/



function ClassTravel3(p_id) {
	this.id = Doc.id(p_id);
	this.ul = this.id.getElementsByTagName('ul').item(0);
	this.li = this.ul.getElementsByTagName('li');
	
	this.width = new Object();
	this.width.ul = 0;
	this.width.li = new Array();
	
	this.ul_s = new Array();
	
	this.left = 0;
	this.timeout = null
	this.speedPx = 1;
	this.speedMs = 20;
	
	this.getWidth();
	this.setCss();
	this.makeNewULs();
	this.setEvents();
	this.run();
}

ClassTravel3.prototype = {
	getWidth : function() {
		for(var v_i = 0, v_l = this.li.length; v_i < v_l; v_i++) {
			this.width.li[v_i] = this.li[v_i].getElementsByTagName('img').item(0).offsetWidth;
			this.width.ul += this.width.li[v_i];
		}
	},
	setCss : function() {
		this.ul.style.left = this.left + 'px'
		this.ul.style.width = this.width.ul + 'px';
		
		var v_left = 0;
		for(var v_i = 0, v_l = this.li.length; v_i < v_l; v_i++) {
			this.li[v_i].style.position = 'absolute';
			this.li[v_i].style.left = v_left + 'px';
			this.li[v_i].style.top = '0';
			this.li[v_i].style.width = this.width.li[v_i] + 'px';
			
			v_left += this.width.li[v_i];
		}
	},
	makeNewULs : function() {
		var v_innerHTML = this.id.innerHTML;
		for(var v_i = 1; v_i <= 2; v_i++) { /* +2 clones */
			var v_div = document.createElement('div');
			v_div.innerHTML = v_innerHTML;
			this.id.appendChild(v_div.getElementsByTagName('ul').item(0));
		}
		
		this.ul_s = this.id.getElementsByTagName('ul');
		
		var v_left = 0;
		for(var v_i = 0, v_l = this.ul_s.length; v_i < v_l; v_i++) {
			this.ul_s[v_i].style.left = v_left + 'px';
			v_left += this.width.ul;
		}
	},
	setEvents : function() {
		this.id.onmouseout = this.start._bindEvent(this);
		this.id.onmouseover = this.stop._bindEvent(this);
	},
	run : function() {
		this.cssEffect();
		
		this.left -= this.speedPx;
		if(this.left <= -this.width.ul) { this.left = 0; }
		
		this.timeout = setTimeout(this.run._bind(this), this.speedMs);
	},
	cssEffect : function() {
		var v_left = this.left;
		for(var v_i = 0, v_l = this.ul_s.length; v_i < v_l; v_i++) {
			this.ul_s[v_i].style.left = v_left + 'px';
			v_left += this.width.ul;
		}
	},
	start : function() {
		this.run();
	},
	stop : function() {
		clearTimeout(this.timeout);
	}
}


