
function listeChateaux(fichierListe, max, ajax, http, lang){
	this.region_ref = 0;
	this.appelation = 0;
	this.liste = new Array();
	this.source = fichierListe;
	this.maxLigne = max;
	this.page = 1;
	this.ajax = ajax;	
	this.http = http;
	this.deverouille = null;
	this.is_loaded = new Array();
	this.langue = lang;
	
	//Initialisation de l'object AJAX
	if(window.XMLHttpRequest) // FIREFOX
		this.xhr_object = new XMLHttpRequest();
	else if(window.ActiveXObject) // IE
		this.xhr_object = new ActiveXObject("Microsoft.XMLHTTP");
	else
		return(false);	
	/**
	 * Met à jour un bloc dans la page
	 * @param {Object} div
	 * @param {Object} script
	 * @param {Object} ref
	 * @param {Object} ref2
	 */
	this.updateDiv = function(div, script, ref, ref2, deverouille){
		this.region_ref = ref != 'undefined' ? ref : 0;
		this.appelation_ref = ref2 != 'undefined' ? ref2 : 0;
		
		var link = (ref != null && ref != 'undefined') ? '?region=' + this.region_ref : '';
		var link_appelation = (ref2 != null && ref2 != 'undefined') ? '&appelation=' + this.appelation_ref : '';
		var link_deverouille = deverouille != null  && deverouille != 'undefined' ? '&deverouille='+deverouille : '';
		
		var text = file(script + link + link_appelation + link_deverouille);
		document.getElementById(div).innerHTML = text;
	}
	
	this.updateNav = function(nom, lien)
	{
		if(document.getElementById('li_appelation') && nom != "")
		{
			var chaine = ' > ';
			if(lien != '')
			 chaine += '<a href="' + lien +'" title="' + nom + '">';
			 
			chaine += nom;
			
			if(lien != '')
				'</a>';
			
			document.getElementById('li_appelation').innerHTML = chaine;			
		}
		else
			document.getElementById('li_appelation').innerHTML = "";
		
		if(document.getElementById('h1_appelation'))
		{
			if(nom != "")
				document.getElementById('titrePage').innerHTML = '<h1>- ' + nom + '</h1>';
			else	
				document.getElementById('h1_appelation').innerHTML = '';				
		}
				
	}
	
	this.updateTitrePage = function(titre)
	{
		
		if(document.getElementById('titrePage2'))
			document.getElementById('titrePage2').innerHTML = titre;
	}
	
	this.updateTitle = function(title)
	{
		document.title = title;
	}
	
	/**
	 * Met à jour la liste des châteaux
	 * @param {int} region
	 * @param {int} appelation
	 * @param {String} order
	 * @param {String} recherche
	 * @param {int} deverouille
	 */
	this.updateListe = function(region, appelation, order, recherche, deverouille){		
		
		var testClass = new TestClass();
		
		this.page = 1;
		
		if(deverouille !== '' && deverouille !== "undefined")
		{
			this.deverouille = deverouille;
		}
		else if(deverouille === 0)
			this.deverouille = 0;
		else
			this.deverouille = '';

		if(region !== null && region != 'undefined' && region != '')
			this.region_ref = region;
		else
			this.region_ref = 0;
		
		if(appelation != 'undefined' && appelation !== '' && appelation !== null)
		{
			this.appelation_ref = appelation;
			document.getElementById('recherche').value = '';
		}
		else
			this.appelation_ref = 0;
		
		//Mise à jour des champs
		document.getElementById('champRegion').value = this.region_ref;
		document.getElementById('champAppelation').value = this.appelation_ref;
		document.getElementById('champOrder').value = order;
		document.getElementById('champDeverouille').value = this.deverouille;
		
		var link =  '?region=' + this.region_ref;
		var link_appelation = '&appelation=' + this.appelation_ref;
		var link_order = (order != null && order != 'undefined') ? '&order=' + order : '';
		
		if(this.deverouille !== 0 && (this.deverouille === '' || this.deverouille == "undefined"))
		{
			var link_dev = '';
		}
		else
			var link_dev = '&deverouille='+deverouille;
			
		var link_recherche = (recherche != null && recherche != 'undefined') ? '&recherche=' + recherche : '';

		//Calcul du nombre de pages
		this.totalRows = this.getNumChateau(this.region_ref, this.appelation_ref, order, recherche, this.deverouille); 
		
		if(this.totalRows > 0)
			this.totalPage = Math.ceil(this.totalRows / this.maxLigne);
		else	
			this.totalPage = 0; 
		
		for(i=1;i<=this.totalPage;i++)
			this.is_loaded[i] = false;
		
		//Liste des châteaux
		var fichier = this.source + link + link_appelation + link_order + link_recherche + link_dev;

		testClass.listeRequest(fichier);
		
		//Mise à jour du nb de chateaux affichés		
		document.getElementById('totalChateau').innerHTML = this.totalRows;
				
		//DEBUG
		//document.getElementById('listeChateaux').innerHTML += this.totalPage;
		//this.enablePngImages('listeChateaux', 1, this.http);	
	}
	
	this.getNumChateau = function(region, appelation, order, recherche, deverouille)
	{		
		this.ajax.appendData("action", "num_rows");		
		this.ajax.appendData("region", ""+this.region_ref+"");		
		this.ajax.appendData("appelation", ""+this.appelation_ref+"");		
		this.ajax.appendData("order", ""+order+"");		
		this.ajax.appendData("recherche", ""+recherche+"");
		this.ajax.appendData("deverouille", ""+deverouille+"");
		
		var retour = this.ajax.send();
		
		return retour.responseText;
	}
	
	this.suivant = function(){
		if(this.page < this.totalPage)
		{
			this.page = this.page + 1;		
			this.navigation();
		}
	}
	
	this.precedent = function(){
		if(this.page > 1)
		{
			this.page = this.page - 1;
			this.navigation();
		}
	}
	
	this.changePage = function(i){
		if(i <= this.totalPage && i >= 1)
		{
			this.page = i;
			this.navigation();
		}
	}
	
	this.navigation = function(){
				
		//Calcul de la plage à afficher		
		var debut = (this.page - 1) * this.maxLigne;
		var fin = debut + this.maxLigne;
		
		if(fin > this.totalRows) fin = this.totalRows;
		
		if(this.totalPage == null)
		{
			this.totalPage = Math.ceil(this.totalRows / this.maxLigne); 
		}
		
		//Cache les blocs affichés
		//Avant
		for(i=0;i < debut;i++)
		{
			if(document.getElementById('ligne'+ i +''))
				document.getElementById('ligne'+ i +'').style.display = 'none';
		}
		
		//Après
		for(i=fin;i < this.totalRows;i++)
		{
			if(document.getElementById('ligne'+ i +''))
				document.getElementById('ligne'+ i +'').style.display = 'none';
		}
		
		//Affichage et des blocs		
		for(i=debut; i< fin; i++)
		{
			if(document.getElementById('ligne'+ i))
				document.getElementById('ligne'+ i).style.display = 'block';
			
			if(this.is_loaded[this.page] != true)
			{		
				if(document.getElementById('photo' + i))
				{
					document.getElementById('photo' + i).src = document.getElementById('champPhoto'+i).value;
					document.getElementById('photo' + i).alt = document.getElementById('champTitre'+i).value;
				}
				else{
					document.getElementById('divImage' + i).innerHTML = '<img id="photo' + i + '" src="' + document.getElementById('champPhoto'+i).value + '" class="photoChateau" alt="'+ document.getElementById('champTitre'+i).value+'" />';
					document.getElementById('divImage' + i).innerHTML += '<img src="'+ document.getElementById('champPuce'+i).value +'" class="couleurVin" alt="'+ document.getElementById('champTitreBtl'+i).value +'" id="btl'+ i + '" />';
				}
			}			
		}
		
		//Mise en forme de la pagination
		var html = "";
		
		var start = this.page -(Math.floor(10/2));
		var nbTotPage = 0;
		
		start = start > (this.totalPage) - 10 ? (this.totalPage) - 10 : start;
		start = start < 0 ? 0 : start;
		
		/*
		if((this.totalPage + 1 - 10) <= 0)
		{
			nbTotPage = this.totalPage;
		}
		else{
			nbTotPage = start + 10 < this.totalPage ? 10 + start : this.totalPage;
		}
		*/
		nbTotPage = this.totalPage;
		
		for(i=start;i< nbTotPage;i++)
		{
			if(i + 1 == this.page)
				html = html + '<b>'+(i + 1)+'</b>';
			else
				html = html + '<a href="#haut_liste" onclick="liste.changePage('+(i + 1)+');">'+(i + 1)+'</a>';
		}
			//alert(document.getElementById('conteneur').innerHTML);	
		if(this.totalPage == 1)
		{
			if(document.getElementById('lien_prec'))
				document.getElementById('lien_prec').style.visibility = 'hidden';
			if(document.getElementById('lien_suiv'))
				document.getElementById('lien_suiv').style.visibility = 'hidden';
		}
		else{
			
			if(this.page == 1)
			{
				if(document.getElementById('lien_prec'))
					document.getElementById('lien_prec').style.visibility = 'hidden';
			}
			else
			{
				if(document.getElementById('lien_prec'))
					document.getElementById('lien_prec').style.visibility = 'visible';
			}
				
			if(this.page == this.totalPage)
			{
				if(document.getElementById('lien_suiv'))
					document.getElementById('lien_suiv').style.visibility = 'hidden';
				window.location.href = '#haut_liste';
			}
			else
			{
				if(document.getElementById('lien_suiv'))
					document.getElementById('lien_suiv').style.visibility = 'visible';
			}
			if(document.getElementById('pagination'))	
			document.getElementById('pagination').innerHTML = html;
		}
		
		this.is_loaded[this.page] = true;		
	}
	
	this.enablePngImages = function enablePngImages(div, type, chemin)	
	{
		// detection du navigateur
		var Navi = navigator.appName.substring(0,3);	
		
		// Mic => Microsoft
		// Net => Mozilla
		if(Navi == "Mic")
		{
			//Récupération des étoiles
			var tabImg = DomMgr.getElementsByMaskId('puce_etoile[%i]','img');
			
			for(i=0;i < tabImg.length;i++)
			{
				// recupération des valeur de l'image
				var imgArr = document.getElementById(tabImg[i].id);
				//alert(imgArr);
				// src
				if(type == 1 && imgArr.src.toLowerCase().lastIndexOf(".png") != -1){
		
					imgArr.style.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" + imgArr.src + "', sizingMethod='auto')";
		
					imgArr.src = chemin + "_image/spacer.png";
				}
		
				// style backgroundImage
				if(type == 2 && imgArr.currentStyle.backgroundImage.lastIndexOf(".png") != -1){
		
					var img = imgArr.currentStyle.backgroundImage.substring(5,imgArr.currentStyle.backgroundImage.length-2);
		
					imgArr.style.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='"+img+"', sizingMethod='crop')";
		
					imgArr.style.backgroundImage = "url(" + chemin + "_image/spacer.png)";
				}
			}
		}
	}
	
	this.alertFunction = function(){
		alert('Fonction OK');
	}
}
