/////// constructeur
function p1jAjaxPager(p_host, p_params) {
	this.host_el 	= typeof(p_host) == "string" ? $(p_host) : p_host;
	this.params 	= p_params;
	if (!this.params.pagesize)
		this.params.pagesize = 10;
	if (!this.params.colonnes)
		this.params.colonnes = 1;
	// créer le div de chargement
	this.loadDiv = $create('div');
	this.loadDiv.className = 'scat_chgt';
	$create('img', { 'src' : '/img/ajax_snake.gif', 'height' : 16, 'width' : 16 }, null, this.loadDiv);
	$create('span', { 'innerHTML' : 'chargement ...' }, null, this.loadDiv);
	this.host_el.appendChild(this.loadDiv);
}

////// loadPage
p1jAjaxPager.prototype.loadPage = function(p_num) {
	
	this.params.page = p_num;
	var me = this;
	
	this.showLoadDiv();
	
	EdLib.makeHTTPRequest("POST", "/ws/get_page_pays_scat.php", function(p_xhr) { me.loadPage_Callback(p_xhr); }, this.params);
	
}

/////// loadPage_Callback
p1jAjaxPager.prototype.loadPage_Callback = function(p_xhr) {
		
		var reponse = null;
		
		try {
			reponse = eval('(' + p_xhr.responseText + ')');
		}
		catch(ex) { return; }
		
		this.createPagerPage(reponse);
}

/////// loadPage_Callback
p1jAjaxPager.prototype.createPagerPage = function(p_reponse) {
	var html_main = $create('div');
	
	var me = this;
	
	// table
	this.html_table = $create('table', null, null, html_main);
	this.html_table.id 				= 'scat_' + p_reponse.scat_ID + '_' + p_reponse.pays_id + '_result_table';
	this.html_table.className 		= 'scat_result_table';
	this.html_table.cellPadding 	= 0;
	this.html_table.cellSpacing 	= 0;
	this.html_table.border			= 0;
	
	// tbody (ie)
	this.html_tbody = $create('tbody', null, null, this.html_table);
	
	// tr
	this.html_rows = new Array();
	var tr = $create('tr', null, null, this.html_tbody);
	
	var ellipsis = new Array();
	
	for (var i=0; i<p_reponse.at_list.length; i++) {
		
		var at = p_reponse.at_list[i];
				
		// td_image
		var td_image = $create('td', { 'className' : 'at_line_tdphoto', 'vAlign' : 'top', 'align' : 'left' }, null, tr);
		var a_image = $create('a', null, null, td_image);
		var rnd_id = (Math.round(Math.random() * 10000000000)).toString();
		var lnk_id = 'at_img_lnk_' + rnd_id;
		a_image.id 							= lnk_id;
		a_image.className 					= 'at_min_lnk';
		a_image.style.width 				= this.params.width + "px";
		a_image.style.height 				= this.params.height + "px";
		a_image.style.borderColor 			= '#' + this.params.scat_coul;
		a_image.style.borderWidth 			= this.params.border + "px";
		a_image.style.backgroundPosition 	= (this.params.width / 2 - 8).toString() + "px " + (this.params.height / 2 - 8).toString() + "px";
		a_image.href 						= at.url;
		$addHandler(a_image, 'mouseout', function(p_event) { (p_event.srcElement || this).style.borderColor = '#' + me.params.scat_coul; });
		$addHandler(a_image, 'mouseover', function(p_event) { (p_event.srcElement || this).style.borderColor = '#' + me.params.scat_coulH; });
		
		// image
		var img_id = 'at_img_' + rnd_id + "_" + this.params.width + "_" + this.params.height;
		var image = $create('img', { 'id' : img_id });
		image.style.border = 'none';
		image.style.position = 'absolute';
		image.style.visibility = 'hidden';
		$addHandler(image, 'load', function(p_event) { adapteMini((p_event.srcElement || this)); });
		$addHandler(image, 'error', function(p_event) { setImageFail((p_event.srcElement || this)); });
		a_image.appendChild(image);
		image.src = at.img_src;
		
		// td_infos
		var td_infos = $create('td', { 'className' : 'at_line_tdinfos', 'vAlign' : 'top', 'align' : 'left' }, null, tr);
		var ville = $create('div', { 'innerHTML' : at.ville, 'className' : 'at_line_ville' }, null, td_infos);
		var nom = $create('div', { 'innerHTML' : at.nom, 'className' : 'at_line_nom' }, null, td_infos);
		$create('a', { 'innerHTML' : 'détail...', 'href' : at.url, 'className' : 'at_line_lnk' }, null, td_infos);
		if (!navigator.isIE) {
			ellipsis.push(ville);
			ellipsis.push(nom);
		}
		
		// changer de ligne
		if (((i + 1) % this.params.colonnes == 0 && i > 0) || this.params.colonnes == 1) {
			this.html_rows.push(tr);
			tr = $create('tr', null, null, this.html_tbody);
		}
		
	}
	
	this.html_rows.push(tr);	
	
	// ajouter le tableau à l'hôte
	html_main.appendChild(this.html_table);
	
	// pager ?
	this.pager = null;
	if (this.params.countAT > this.params.pagesize) {
		
		// générer le pager
		this.pager = this.createPager(p_reponse.page_index);
		html_main.appendChild(this.pager);
	}
	
	// créer le div de chargement
	html_main.appendChild(this.loadDiv);

	// ellipsis
	for (var i=0; i<ellipsis.length; i++) {
		EdLib.Ellipsis(ellipsis[i]);	
	}
	
	// permuter
	this.host_el.appendChild(html_main);
	if (this.last_html != null)
		this.host_el.removeChild(this.last_html);
	this.last_html = html_main;
	
	// masquer chargement ...
	$undisplay(this.loadDiv);
}

p1jAjaxPager.prototype.createPager = function(p_page) {
	
	var me = this;
	
	var nbPages = Math.floor(this.params.countAT / this.params.pagesize);
	if (this.params.countAT % this.params.pagesize > 0)
		nbPages += 1;
	pagenum = p_page + 1;
	
	// div principal
	var main_div = $create("div", { "className" : "scat_pager" });
	// bouton first
	var pager_first = $create("img", { "width" : 6, "height" : 11, "src" : "/img/pager_first.gif", "className" : "img_first" }, null, main_div);
	if (pagenum != 1)
		pagerfirst_handler = $addHandler(pager_first, "click", function() { me.loadPage(0); });
	// bouton gauche
	var pager_left = $create("img", { "width" : 6, "height" : 11, "src" : "/img/pager_left.gif", "className" : "img_left" }, null, main_div);
	if (pagenum > 1)
		pagerleft_handler = $addHandler(pager_left, "click", function() { me.loadPage(p_page - 1); });
	// page
	$create("span", { "innerHTML" : "page " + pagenum + " / " + nbPages, "className" : "pages_span" }, null, main_div);
	// bouton droit
	var pager_right = $create("img", { "width" : 6, "height" : 11, "src" : "/img/pager_right.gif", "className" : "img_right" }, null, main_div);
	if (pagenum < nbPages)
		pagerright_handler = $addHandler(pager_right, "click", function() { me.loadPage(p_page + 1); });
	// bouton first
	var pager_last = $create("img", { "width" : 6, "height" : 11, "src" : "/img/pager_last.gif", "className" : "img_last" }, null, main_div);
	if (pagenum != nbPages)
		pagerflast_handler = $addHandler(pager_last, "click", function() { me.loadPage(nbPages - 1); });
	
	return main_div;
}

/////// showLoadDiv
p1jAjaxPager.prototype.showLoadDiv = function () {
	if (this.last_html) {
		this.loadDiv.className = "scat_chgt chgt_reloading";
		$addCssClass(this.html_table, "tabresult_reloading");
	}
	$display(this.loadDiv);
}