//var tableauToSort = new Array();

// Variable qui permet de conserver la trace de la colonne et de l'ordre en fonction
// desquels le tableau est tri�.
 var indiceTri = 1; 
 var indiceGlobale;

	
	// Permet de convertir une date du format JJ/MM/AAAA en un entier AAAAMMJ
 	function convDate(chaine){
 		var jour = chaine.substring(0,2)
 		var mois = chaine.substring(3,5)
 		var annee = chaine.substring(6)
 		var intdate = parseInt(annee + mois + jour);
 		return(intdate)
 	}
 	
	// Permet de tester si une chaine de caract�res est une date au format JJ.MM.AAAA
	function testDate(chaine) {
		if (chaine.length < 10){return false};
		var jour = chaine.substring(0,2);
		var mois = chaine.substring(3,5);
		var annee = chaine.substring(6);
		jour = parseInt(jour);
		mois = parseInt(mois)-1;
		annee = parseInt(annee);
		var rDate = new Date(annee,mois,jour,0,0);
		
		if(rDate.toString() == "NaN"){return false};
		
		return true;
	} 
 	
	// Permet de tester si une chaine de caract�res est un entier
	function testEntier(chaine){
		if(isNaN(chaine))
			{return false;}
		else
			{return true}
	}
	
	// Fonctions "crit�res" de tri pour le tableau javascript
	// Tri croissant en fonction d'une colonne date
	function evalOrdreCroissantDate(x1,x2) {
		return (convDate(x1[indiceGlobale]) < convDate(x2[indiceGlobale]))? -1 : 1;
	}

	// Tri d�croissant en fonction d'une colonne date
	function evalOrdreDecroissantDate(x1,x2) {
		return (convDate(x1[indiceGlobale]) > convDate(x2[indiceGlobale]))? -1 : 1;
	}

	// Tri croissant en fonction d'une colonne num�rique
	function evalOrdreCroissantNum(x1,x2) {
		return (parseInt(x1[indiceGlobale]) < parseInt(x2[indiceGlobale]))? -1 : 1;
	}
	
	// Tri d�croissant en fonction d'une colonne num�rique
	function evalOrdreDecroissantNum(x1,x2) {
		return (parseInt(x1[indiceGlobale]) > parseInt(x2[indiceGlobale]))? -1 : 1;
	}
	
	// Tri croissant en fonction d'une colonne texte
	function evalOrdreCroissantTxt(x1,x2) {
		return (x1[indiceGlobale].toLowerCase() < x2[indiceGlobale].toLowerCase())? -1 : 1;
	}

	// Tri d�croissant en fonction d'une colonne texte
	function evalOrdreDecroissantTxt(x1,x2) {
		return (x1[indiceGlobale].toLowerCase() > x2[indiceGlobale].toLowerCase())? -1 : 1;
	} 
	
	function triTable (tab,indiceCol,sensTri) {
		var nbLigne = tab.length;
		var nbColonne = tab[0].length;
		var fctEval = null;
		var j=null;
		indiceGlobale = indiceCol; // on r�cup�re l'indice de la colonne s�lectionn�e
		// et on le passe en variable globale pouvant �tre
		// utilis�e par la suite par toutes les fonctions
		// "crit�res" de tri.
		// Dans la suite, en fonction du sens de tri et de la nature de la colonne
		// en fonction de laquelle on trie, on d�termine le nom de la fonction "crit�re"
		// utilis�.
		for(i=0;i<nbLigne;i++){
		    if(!tab[i][indiceCol]){
			tab[i][indiceCol]='zzzzzzzz';
		    }else if(!j){
			j=i;
		    }
		}
		if (sensTri>0) {
			if (testDate(tab[j][indiceCol])) { // si c'est une date
				fctEval = evalOrdreCroissantDate
			}else { // si ce n'est pas une date
				if (testEntier(tab[j][indiceCol])) {
					fctEval = evalOrdreCroissantNum
				}else { // si ce n'est ni une date ni un nombre, c'est une chaine de caract�res
					fctEval = evalOrdreCroissantTxt
				}
			}
			fctEval2=evalOrdreCroissantNum
		}else {
			if (testDate(tab[j][indiceCol])) {
				fctEval = evalOrdreDecroissantDate
			}else {
				if (testEntier(tab[j][indiceCol])) {
					fctEval = evalOrdreDecroissantNum
				}else {
					fctEval = evalOrdreDecroissantTxt
				}
			}fctEval2=evalOrdreDecroissantNum
		}
		// On trie le tableau javascript gr�ce � la m�thode .sort et au crit�re retenu.
		tempInd=indiceCol;
		indiceCol=0;
		tab.sort(fctEval2);
		indiceCol=tempInd;
		tab.sort(fctEval);
		for(i=0;i<nbLigne;i++){
		    if(tab[i][indiceCol]=='zzzzzzzz'){
			tab[i][indiceCol]='';
		    }
		}
		return tab;
	}

	function triTable2 (tab,indiceCol,sensTri) {
		var nbLigne = tab.length;
		var nbColonne = tab[0].length;
		var fctEval = null;
		var j=null;
		indiceGlobale = indiceCol; // on r�cup�re l'indice de la colonne s�lectionn�e
		// et on le passe en variable globale pouvant �tre
		// utilis�e par la suite par toutes les fonctions
		// "crit�res" de tri.
		// Dans la suite, en fonction du sens de tri et de la nature de la colonne
		// en fonction de laquelle on trie, on d�termine le nom de la fonction "crit�re"
		// utilis�.
		for(i=0;i<nbLigne;i++){
		    if(!tab[i][indiceCol]){
			tab[i][indiceCol]='a';
		    }else if(!j){
			j=i;
		    }
		}
		if (sensTri>0) {
			if (testDate(tab[j][indiceCol])) { // si c'est une date
				fctEval = evalOrdreCroissantDate
			}else { // si ce n'est pas une date
				if (testEntier(tab[j][indiceCol])) {
					fctEval = evalOrdreCroissantNum
				}else { // si ce n'est ni une date ni un nombre, c'est une chaine de caract�res
					fctEval = evalOrdreCroissantTxt
				}
			}
			fctEval2=evalOrdreCroissantNum
		}else {
			if (testDate(tab[j][indiceCol])) {
				fctEval = evalOrdreDecroissantDate
			}else {
				if (testEntier(tab[j][indiceCol])) {
					fctEval = evalOrdreDecroissantNum
				}else {
					fctEval = evalOrdreDecroissantTxt
				}
			}
			fctEval2=evalOrdreDecroissantNum
		}
		// On trie le tableau javascript gr�ce � la m�thode .sort et au crit�re retenu.
		tempInd=indiceCol;
		indiceCol=0;
		tab.sort(fctEval2);
		indiceCol=tempInd;
		tab.sort(fctEval);
		for(i=0;i<nbLigne;i++){
		    if(tab[i][indiceCol]=='a'){
			tab[i][indiceCol]='';
		    }
		}
		return tab;
	}
	  
	//fonction qui trie un tableau en fonction de l'indice de la colonne pass� en param�tre	
	function sortTable(indCol, id_tab){//1 : croissant   -1 : decroissant		
		var tableauToSort = new Array();
		var indiceColonne = indCol;
					
		//var tableau_document = document.getElementsByTagName("TABLE")[numTab];
		var tableau_document = document.getElementById(id_tab); 
		
		for (i=0; i<tableau_document.rows.length-1; i++){
			tableauToSort[i] = new Array();
		}
		//On remplis le tableau du contenu de la table concert
		for (j=0; j<tableau_document.rows[0].cells.length; j++){
			for (i=0; i<tableau_document.rows.length-1; i++) {
				tableauToSort[i][j] = tableau_document.rows[i+1].cells[j].innerHTML;
			}
		}		
		
		// On trie le tableau suivant le sens voulu et la colonne consid�r�e
		tableauToSort = triTable(tableauToSort,indiceColonne,indiceTri); 
						
		// On met � jour le tableau HTML
		for (i=0; i<tableau_document.rows.length-1; i++){
			for (j=0; j<tableau_document.rows[0].cells.length; j++){
				tableau_document.rows[i+1].cells[j].innerHTML = tableauToSort[i][j];
				
			}
		}		
		
		// On renseigne la variable globale d�finissant le dernier tri effectu�
		indiceTri = -indiceTri; 
				
	}

	function sortTable2(indCol, id_tab){//1 : croissant   -1 : decroissant		
		var tableauToSort = new Array();
		var indiceColonne = indCol;
					
		//var tableau_document = document.getElementsByTagName("TABLE")[numTab];
		var tableau_document = document.getElementById(id_tab); 
		
		for (i=0; i<tableau_document.rows.length-1; i++){
			tableauToSort[i] = new Array();
		}
		//On remplis le tableau du contenu de la table concert
		for (j=0; j<tableau_document.rows[0].cells.length; j++){
			for (i=0; i<tableau_document.rows.length-1; i++) {
				tableauToSort[i][j] = tableau_document.rows[i+1].cells[j].innerHTML;
			}
		}		
		
		// On trie le tableau suivant le sens voulu et la colonne consid�r�e
		tableauToSort = triTable2(tableauToSort,indiceColonne,indiceTri); 
						
		// On met � jour le tableau HTML
		for (i=0; i<tableau_document.rows.length-1; i++){
			for (j=0; j<tableau_document.rows[0].cells.length; j++){
				tableau_document.rows[i+1].cells[j].innerHTML = tableauToSort[i][j];
				
			}
		}		
		
		// On renseigne la variable globale d�finissant le dernier tri effectu�
		indiceTri = -indiceTri; 
				
	}
	
		
	function haveBaliseImg(chaine){		
	 	if((chaine.search(/IMG .+/) != -1) | (chaine.search(/img .+/) != -1)){	 		
	 		return true;
	 	}else{	 		
	 		return false;
	 	}
	  		
	}
	
	function changeImgToCaract(ch){
				
		var reg1 = new RegExp("<img src=\"\/images\/img-etoile-1b.gif\" alt=\"\">", "g");
		var reg2 = new RegExp("<img src=\"\/images\/img-etoile-2b.gif\" alt=\"\">", "g");
		var reg3 = new RegExp("<img src=\"\/images\/img-etoile-3b.gif\" alt=\"\">", "g");

		var reg11 = new RegExp("<img alt=\"\" src=\"\/images\/img-etoile-1b.gif\">", "g");
		var reg21 = new RegExp("<img alt=\"\" src=\"\/images\/img-etoile-2b.gif\">", "g");
		var reg31 = new RegExp("<img alt=\"\" src=\"\/images\/img-etoile-3b.gif\">", "g");

		var reg1 = new RegExp("<img src=\"\/images\/img-etoile-1b.gif\" alt=\"\">", "g");
		var reg2 = new RegExp("<img src=\"\/images\/img-etoile-2b.gif\" alt=\"\">", "g");
		var reg3 = new RegExp("<img src=\"\/images\/img-etoile-3b.gif\" alt=\"\">", "g");

		


		
		/*var reg1 = '<img src="/images/img-etoile-1b.gif" alt="">';
		var reg2 = '<img src="/images/img-etoile-2b.gif" alt="">';
		var reg3 = '<img src="/images/img-etoile-3b.gif" alt="">';

		var reg11 = '<img src="/images/img-etoile-1b.gif">';
		var reg21 = '<img src="/images/img-etoile-2b.gif">';
		var reg31 = '<img src="/images/img-etoile-3b.gif">';*/

		//var reg2 = new RegExp(/<img src=\"\/images\/img-etoile-2b.gif\">/g);
		//var reg3 = new RegExp(/<img src=\"\/images\/img-etoile-3b.gif\">/g);		
		/*var reg11 = new RegExp("(<img src=\"http:\/\/91\.www\.music-story\.com\/images\/img-etoile-1b.gif\">)", "g");
		var reg21 = new RegExp("(<img src=\"http:\/\/91\.www\.music-story\.com\/images\/img-etoile-2b.gif\">)", "g");
		var reg31 = new RegExp("(<img src=\"http:\/\/91\.www\.music-story\.com\/images\/img-etoile-3b.gif\">)", "g");*/
		
		ch = ch.toLowerCase();
								
		ch = ch.replace(reg1,'a');
		ch = ch.replace(reg11,'a');
		ch = ch.replace(reg2,"b");
		ch = ch.replace(reg21,"b");
		ch = ch.replace(reg3,"c");
		ch = ch.replace(reg31,"c");

		reg1 = new RegExp("<img src=\"http:\/\/www\.music-story\.com\/images\/img-etoile-1b.gif\">", "g");
		reg2 = new RegExp("<img src=\"http:\/\/www\.music-story\.com\/images\/img-etoile-2b.gif\">", "g");
		reg3 = new RegExp("<img src=\"http:\/\/www\.music-story\.com\/images\/img-etoile-3b.gif\">", "g");

		reg11 = new RegExp("(<img src=\"\/images\/img-etoile-1b.gif\">)", "g");
		reg21 = new RegExp("(<img src=\"\/images\/img-etoile-2b.gif\">)", "g");
		reg31 = new RegExp("(<img src=\"\/images\/img-etoile-3b.gif\">)", "g");
		ch = ch.replace(reg1,'a');
		ch = ch.replace(reg11,'a');
		ch = ch.replace(reg2,"b");
		ch = ch.replace(reg21,"b");
		ch = ch.replace(reg3,"c");
		ch = ch.replace(reg31,"c");

		reg1 = new RegExp("<img alt=\"\" src=\"http:\/\/www\.music-story\.com\/images\/img-etoile-1b.gif\">", "g");
		reg2 = new RegExp("<img alt=\"\" src=\"http:\/\/www\.music-story\.com\/images\/img-etoile-2b.gif\">", "g");
		reg3 = new RegExp("<img alt=\"\" src=\"http:\/\/www\.music-story\.com\/images\/img-etoile-3b.gif\">", "g");

	      ch = ch.replace(reg1,'a');
		ch = ch.replace(reg11,'a');
		ch = ch.replace(reg2,"b");
		ch = ch.replace(reg21,"b");
		ch = ch.replace(reg3,"c");
		ch = ch.replace(reg31,"c");
		
		//alert(ch);		
		return ch;
	}
	
	function changeCaractToImg(ch){
		//alert(ch);
						
		var cha = '<img src=\"\/images\/img-etoile-1b.gif\">';	
		var chb = '<img src=\"\/images\/img-etoile-2b.gif\">';
		var chc = '<img src=\"\/images\/img-etoile-3b.gif\">';	
		
		var result = '';
		
		var reg = new RegExp("()", "g");
		
		var tabCaract = ch.split(reg);
		for (var i=0; i<tabCaract.length; i++) {
			if(tabCaract[i] == 'a'){
				result = result+cha;
			}else if(tabCaract[i] == 'b'){
				result = result+chb;
			}else if(tabCaract[i] == 'c'){
				result = result+chc;			
			}
			
		}
								
		return result;
		
	}
	
			
	function sortCote(indCote, id_tab){	
		var tableauToSort = new Array();		
		var indiceColonne = indCote;
					
		//var tableau_document = document.getElementsByTagName("TABLE")[numTab];
		var tableau_document = document.getElementById(id_tab);
		
		for (i=0; i<tableau_document.rows.length-1; i++){
			tableauToSort[i] = new Array();
		}
							
		//On remplis le tableau du contenu de la table concert
		var content;
		for (j=0; j<tableau_document.rows[0].cells.length; j++){
			for (i=0; i<tableau_document.rows.length-1; i++) {
			
				content = tableau_document.rows[i+1].cells[j].innerHTML;
				
				if(j == indCote ){
					content = changeImgToCaract(content);
					tableauToSort[i][j] = content;
				}else{
					tableauToSort[i][j] = content; 
				}				
			}			
		}		
		
		// On trie le tableau suivant le sens voulu et la colonne consid�r�e
		tableauToSort = triTable(tableauToSort,indiceColonne,indiceTri); 
		var res = '';
		var result = '';				
		// On met � jour le tableau HTML
		for (i=0; i<tableau_document.rows.length-1; i++){
			for (j=0; j<tableau_document.rows[0].cells.length; j++){
				res = tableauToSort[i][j];
				if(j == indCote ){
					var img = changeCaractToImg(res);
					tableau_document.rows[i+1].cells[j].innerHTML = img;
					
					
				}else{
					tableau_document.rows[i+1].cells[j].innerHTML = res;
				}
						
			}
		}
		
		res=''; 		
		
		// On renseigne la variable globale d�finissant le dernier tri effectu�
		indiceTri = -indiceTri;	
	
	}
	
	
	
	
