/*
Page index

Récup des actus s'affichant dans la div#right.
Gestion des effets de survol.

(Au chargement de la page, l'affichage des données
se fait simplement par PHP.)
*/


function xhr() {

	if (window.ActiveXObject) {

		xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");

	} else if (window.XMLHttpRequest) {

		xmlHttp = new XMLHttpRequest();

	}

	return xmlHttp;	
	
}


function lancerRequete(e) {

	xhr();
	
	var url = 'scripts/scripts.php';
	
	SELECTED_ACTU = getCurrentElement(e).id.substr(1); 

	var param = '?actu_idactu=' + SELECTED_ACTU;
	
	xmlHttp.onreadystatechange = afficherActus;
	
	xmlHttp.open( "GET", url + param );
	
	xmlHttp.send( null );

}


function couperTexte( leTexte, maxCar) {
	
	if ( ! maxCar ) maxCar = 325;
	
	var leTexte = leTexte.substr(0, maxCar);
	
	 leTexte = leTexte.substr(0, leTexte.lastIndexOf(' '));
	 
	 var lienLireSuite = '...<a href="suite-vf.php?selected_actu='+SELECTED_ACTU+'">';
	
	return leTexte + lienLireSuite + 'Lire la suite</a>';
	
}



function afficherActus(e) {
	
	if ( xmlHttp.readyState == 4 && xmlHttp.status ==  200 ) { 

		if ( xmlHttp.responseText ) {
			
			document.getElementById('right').innerHTML = xmlHttp.responseText ;


			var contenuTexte = document.getElementById('texte').innerHTML;
			
			document.getElementById('texte').innerHTML = couperTexte( contenuTexte ) ;
			
						
			
			var lesImages = getTags('img');
			
			var lesLiens = getTags('a');			
			
			
			for (var i = 0; i < lesImages.length; i++) {
				
				if ( lesImages[i].id == 'i'+ SELECTED_ACTU ) {
				
					var leLien = document.getElementById( 'a'+ SELECTED_ACTU );
					
					addStyle( lesImages[i], leLien );
					
				} 
				else {
				
					removeStyle( lesImages[i], lesLiens[i] );
									
				}
				
			}
		
		//---	
			
		}
		else {
			
			document.getElementById('texte').innerHTML = '';
			
		}
	
	}
	
}





function getTags(tag) {
	
	var table = document.getElementById( 'tableleft' );
	
	var arrayTag = table.getElementsByTagName( tag );

	return arrayTag;
	
}



//---------------------------------

function init() {

	var lesLiens = getTags('a');
	
	for (var i = 0; i < lesLiens.length; i++) {
	
		addEventSimple( lesLiens[i], 'click', lancerRequete );
		addEventSimple( lesLiens[i], 'mouseover', elementOver );
		addEventSimple( lesLiens[i], 'mouseout', elementOut );
		
	}

	var lesImages = getTags('img');
	
	for (var i = 0; i < lesImages.length; i++) {
	
		addEventSimple( lesImages[i], 'click', lancerRequete );
		addEventSimple( lesImages[i], 'mouseover', elementOver );
		addEventSimple( lesImages[i], 'mouseout', elementOut );
		
	}	
	
	
	// SELECTED_ACTU n'est pas encore disponible quand on arrive sur la page.
	// Trouver le N° id de la div en cours à droite
	SELECTED_ACTU = DERNIERE_ACTU;


	// Au chargement de la page :
	// Afficher bordure image + couleur lien sur la 1ere actu au chargement de la page	
	addStyle( lesImages[0], lesLiens[0] );
	
	
	// Au chargement, tronquer le texte (à droite) qui s'affiche par défaut. 
	var contenuTexte = document.getElementById('texte').innerHTML;
	
	document.getElementById('texte').innerHTML = couperTexte( contenuTexte ) ;		
	
}



addEventSimple( window, 'load', init );




function elementOver(e) {
	
/*
Trouver l'élément qu'on survole
si l'id de cet élément commence par un i : mettre lien vert
si l'id de cet élément commence par un a : mettre bordure image
*/

	var currentElement = getCurrentElement(e);
	
	var currentNumIdElement = currentElement.id.substr(1);
	
	var prefix =  currentElement.id.charAt(0);
	
	
	if ( prefix == 'i') {
	
		var currentIdLink = document.getElementById('a' + currentNumIdElement);
		
		addStyle( currentElement, currentIdLink );
	
	}
	
	
	if (prefix == 'a') {
	
		var currentIdImg = document.getElementById('i' + currentNumIdElement);
		
		addStyle( currentIdImg, currentElement );
	
	}
	
}


function elementOut(e) {
	
	// Trouver l'id du lien qu'on survole à gauche
	var currentElement = getCurrentElement(e);
	
	// Trouver son N° 
	var currentNumIdElement = currentElement.id.substr(1);
	
	var prefix =  currentElement.id.charAt(0);
	
	// Actu en cours sur la droite
	// Trouver son N °
	var currentNumIdDiv = document.getElementById('div' + SELECTED_ACTU).id.substr(3);
	
	
	// Si cette actu est différente de celle qu'on survole à gauche
	// on retire partout les styles sur mouseout
	if ( currentNumIdElement != currentNumIdDiv) {
	
		if ( prefix == 'i' ) {
		
			var currentLink = document.getElementById('a' + currentNumIdElement);
	
			removeStyle( currentElement, currentLink );		
		
		}
		
		if ( prefix == 'a' ) {
		
			var currentImg = document.getElementById('i' + currentNumIdElement);
	
			removeStyle( currentImg, currentElement );		
		
		}
	
	}

}



//---------------------------------

// Ces 2 fonctions s'occupent juste d'appliquer 
// ou retirer les effets de couleur, bordure, opacité, etc.

// Met la bordure verte autour des images
// Enlève l'opacité
// Passe le lien en vert

function addStyle(image, lien) {

	image.style.border = '4px solid #00CC00';
	
	image.style.opacity = 1;
	
	image.style.filter = "progid:DXImageTransform.Microsoft.Alpha(Opacity=100)";
	
	if (lien) lien.style.color = '#0F0';	
	
}

// Passe la bordure verte en blanc
// Met l'opacité à 60
// Passe le lien en gris

function removeStyle(image, lien) {

	image.style.border = '4px solid #FFF';
	
	image.style.opacity = 0.6;
	
	image.style.filter = "progid:DXImageTransform.Microsoft.Alpha(Opacity=60)";	
	
	if (lien) lien.style.color = '#606';
	
}





//------------------------------------------------------------------------------
//------------------------------------------------------------------------------

function getCurrentElement(e) { 

	// window.event = méthode MS
  	if (!e) var e = window.event;
	
	var evtTarget = e.target || e.srcElement; 
	
	return evtTarget;

}

function addEventSimple(obj,evt,fn) {

	if (obj.addEventListener)
	
		obj.addEventListener(evt,fn,false); // Si FF ou autre
		
	else if (obj.attachEvent)
	
		obj.attachEvent('on'+evt,fn);		// Si MS

}



function removeEventSimple(obj,evt,fn) {
	
	if (obj.removeEventListener)
	
		obj.removeEventListener(evt,fn,false);
		
	else if (obj.detachEvent)
	
		obj.detachEvent('on'+evt,fn);
		
}






