// SITE TARTAN NATIONAL BRETON
// 19/11/2002 - Web Project (www.web-project.com) - SCROLLER UNIVERSEL

var us_mx=0, us_my=0, tinit=0, razx=false, razy=false;
var us_datas= new Array(), us_ok=new Array();		// mémo des paramètres de chaque scroller
// création du scroller de nom NAME
function us_create(name,txt,xret) {
	var ret= xret ? xret : false;
	var p=us_datas[name];
	us_ok[name]=false;			// bloque le scroll initial

	// calcul des offsets X / Y initiaux
	if(p[6]>0) {				// scroll vers droite
		us_mx= p[4]-p[0];
		p[2]= -us_mx - p[6];
	}
	else if(p[6]<0) {			// vers gauche
		us_mx=0;
		p[2]=-p[6];
	}

	if(p[7]>0) {				// vers bas
		us_my= p[5]-p[1];
		p[3]= -us_my - p[7];
	}
	else if(p[7]<0) {
		us_my=0;
		p[3]=-p[7];				// vers haut
	}

	// création du scroller
	var l=p[0], h=p[1]
	if (document.all) {					// IE4+ : 1 relative DIV to place the scroll, then 1 absolute DIV to crop
										// (IE4 doesn't crop a relative DIV, IE5+ does)
		var t= '<div style="position:relative;overflow:hidden;width:'+l+';height:'+h+'" ';
		t+= 'onmouseover="us_ok[\'' + name + '\']=false;" onmouseout="us_ok[\'' + name + '\']=true">';
		t+= '<div id="' + name + '" style="position:absolute;width:'+p[4]+';height:'+p[5]+';'
		t+= 'clip:rect(0 '+l+' '+h+' 0);display:none">';
		t+= txt + '</div></div>';
	}
	else if(document.getElementById) {	// NS6+
		var t= '<div style="position:relative;overflow:hidden;width:'+l+';'
		t+= 'height:'+h+';border:0;clip:rect(0 '+l+' '+h+' 0)" ';
		t+= 'onmouseover="us_ok[\'' + name + '\']=false;" onmouseout="us_ok[\'' + name + '\']=true">'
		t+= '<div id="' + name + '" style="position:relative">' + txt + '</div></div>';
	}
	else if (top.document.layers) {		// Netscape
		var t='<ilayer width="' + l + '" height="' + h + '" overflow="hide">';
		t+= '<layer name="' + name + '" width="' + p[4] + '" height="' + p[5]
		t+= '" onmouseover="us_ok[\'' + name + '\']=false" onmouseout="us_ok[\'' + name + '\']=true"'
		t+= ' visibility=hide>' + txt + '</layer></ilayer>&nbsp;<br>';
	}

	if(p[11]) tinit= p[11];	//pause initiale
	else {
		tinit=p[8];		// pas de pause initiale
		p[10]=0;		// donc : pas de pause multiple !
	}

	if(!ret) {document.write(t); t=''}
	return(t);			// bug Communicator 4.01
}

// Scroll d'un step, scroller NAME
// selon paramètres us_datas[name]
function us_scroll(name) {

	//1. init
	var p= us_datas[name];	//paramètres du bandeau
	var ok=false;			//demande pause prolongée
	var t = p[8];			//délai step	
	var xw,o;

	//2. calcul new offset horizontal
	if(us_ok[name]) {
		var end=false;
		if(razx) {
			razx=false;
			x = (p[6]<0) ? 0 : p[4]-p[0];
			us_mx= x;
			tinit= (p[10]==2) ? 0 : p[11];
		}

		else {
			var x = -p[2] - p[6];			// prochain offset clip horizontal (vs top)
			if(p[6]) {
				if(p[10] && Math.abs(x - us_mx) >= p[0]) {	// scroll par multiples de largeurs
					x=(p[6]<0)?  us_mx + p[0] : us_mx - p[0];
					us_mx = x;
					ok=true;
				}
				if(p[6]<0 && (x + p[0] >= p[4])) {	// arrivé à droite
					end=true;
					x=p[4] - p[0];
				}
				if(p[6] > 0 && x <= 0) {			// arrivé à gauche (ou début)
					end=true;
					x= 0
				}
			}

			if(end) {	// arrivée sur une butée
				ok=true;
				if(p[9]==0) {
					if(p[11]) razx= true;	// demande RAZ au prochain passage (après pause éventuelle)
					else {
						x = (p[6]<0) ? 0 : p[4]-p[0];
						us_mx= x;
					}
				}
				if(p[9]==1) p[6]= -p[6];
			}
	
		}
		p[2]= -x;

		//3. calcul new offset vertical
		end=false;
		if(razy) {
			razy=false;
			y = (p[7]<0) ? 0 : p[5]-p[1];
			us_my= y;
			tinit= (p[10]==2) ? 0 : p[11];
		}

		else {
			var y = -(p[3] + p[7]);			// prochain offset clip vertical (vs top)
			if(p[7]) {
				if(p[10] && Math.abs(y - us_my) >= p[1]) {	// scroll par multiples de hauteur
					y=(p[7]<0)?  us_my + p[1] : us_my - p[1];
					us_my = y;
					ok=true;
				}
				if(p[7]<0 && (y + p[1] >= p[5])) {	// arrivé en bas
					end=true;
					y=p[5] - p[1];
				}
				if(p[7] > 0 && y <= 0) {	// arrivé en haut (ou début)
					end=true;
					y=0
				}
			}

			// OK vrai si pause demandée (multiple de hauteur atteint)
			// end vrai si butée haut / bas atteinte
			if(end) {
				ok= true;					// pause butée
				if(p[9]==0) {				// pas de changement de sens
					if(p[11]) razy= true;	// demande RAZ au prochain passage (après pause éventuelle)
					else {					// pas de pause -> RAZ immédiate
						y = (p[7]<0) ? 0 : p[5]-p[1];
						us_my= y;
					}
				}
				if(p[9]==1) p[7]= -p[7];	// changement du sens -> inversion du pas
			}
		}
		p[3]= -y;

		if(tinit) {
			t=tinit;
			tinit=0;
		}
		else if(ok && p[11]) t=p[11];	// pause 'butée'

		//4. Déplacement bannière
		if(document.all) {					// IE4+
			div= document.all[name].style;
			div.clip = "rect(" + y + "," + (x + p[0]) + "," + (y + p[1]) + "," + x +")";
			div.pixelLeft = -x;
			div.pixelTop = -y;
			div.display= 'block';
		}
		else if(document.getElementById) {	// NS6+
			div= document.getElementById(name).style;
			div.left= -x;
			div.top= -y;
			div.display= 'block';
		}
		else if(document.layers) {		// NS4
			var i=0,j,div=document[name];
			while(!div && i<document.layers.length) {
				div=document.layers[i].document[name];
				if(!div && document.layers[i].document.layers) {
					j=0;
					while(!div && j<document.layers[i].document.layers.length) {
						div=document.layers[i].document.layers[j++].document[name];
					}
				}
				i++;
			}
			if(div) {
				div.top= -y;
				div.left= -x;
				div.visibility= 'show';
			}
		}
	}
	setTimeout("us_scroll('" + name + "')", t);
}
