var ajaxHTML = new Array();
var ajaxAccesspending = false;

function loadPage(url) {
	if (!ajaxAccesspending)
		document.location = url;
}

function laisserCopierMonCopain(moi, hisName) {
	var him = document.getElementById(hisName);
	him.value = moi.value;
	return true;
} // fin function laisserCopierMonCopain(moi,hisName)

function string2Float(st) {
	if (st == undefined) {
		return 0;
	}
	st = st.toString().replace(',', '.');
	var fl = new String();
	for (var i = 0;i < st.length; i++) {
		if (st.charAt(i) == ' ')
			continue;
		fl = fl.concat(st.charAt(i));
	}
	return fl.valueOf();
} // fin function string2Float(st)

function money2String(st) {
	var result = string2Float(st);
	result = result.toString().split('.');
	var entier = result[0];
	var decimal = '';
	if (result.length > 1)
		decimal = result[1];
	else
		decimal = '00';
	if (decimal.length < 2) {
		decimal = decimal.concat('0');
	}
	if (decimal.length > 2) {
		decimal = decimal.substr(0, 2);
	}
	var j = 0;
	var entier_formate = '';
	for (var i = entier.length;i > 0; i--) {
		j++;
		entier_formate = entier.charAt(i - 1) + entier_formate;
		if ((i > 1) && (j % 3 == 0))
			entier_formate = ' ' + entier_formate;
	}
	return entier_formate + ',' + decimal;
} // fin function money2String(m)

function quantity2String(st) {
	var result = string2Float(st);
	result = result.toString().split('.');
	var entier = result[0];
	var decimal = '';
	if (result.length > 1)
		decimal = result[1];
	else
		decimal = '00';
	if (decimal.length < 2) {
		decimal = decimal.concat('0');
	}
	if (decimal.length > 2) {
		decimal = decimal.substr(0, 2);
	}
	var j = 0;
	var entier_formate = '';
	for (var i = entier.length;i > 0; i--) {
		j++;
		entier_formate = entier.charAt(i - 1) + entier_formate;
		if ((i > 1) && (j % 3 == 0))
			entier_formate = ' ' + entier_formate;
	}
	return entier_formate + ',' + decimal;
} // fin function quantity2String(m)

function selectThumbNail(thumbNail, selectedClassName, unselectedClassName) {
	var elements = document.getElementsByTagName('td');
	for (var i = 0;i < elements.length; i++) {
		var postfix = thumbNail.id.split(':');
		var prefix = postfix[0];
		postfix = postfix[1];
		if (thumbNail.id == elements[i].id) {
			elements[i].className = selectedClassName;
			document.getElementById('contenu_' + thumbNail.id).style.display = 'inline';
			eval(prefix + '_ongletActif = \'' + elements[i].id + '\';');
		} else {
			var postfix_e = elements[i].id.split(':');
			var prefix_e = postfix_e[0];
			postfix_e = postfix_e[1];
			if (prefix_e == prefix) {
				elements[i].className = unselectedClassName;
				document.getElementById('contenu_' + elements[i].id).style.display = 'none';
			}
		}
	}
} // fin function
// selectThumbNail(thumbNail,selectedClassName,unselectedClassName,unselectedClassNameAvecSaisie)

function updateSurfingStackThumbnail(url, folders) {
	var f = folders.split(';');
	var query = '';
	// Pour chaque classeur, déterminer l'onglet actif
	for (var i = 0;i < f.length; i++) {
		var ongletActif;
		try {
			ongletActif = eval(f[i] + '_ongletActif');
			if (ongletActif != '') {
				ongletActif = ongletActif.split(':');
				query += '&thumbnail_' + f[i] + '=' + ongletActif[1];
			}
		} catch (notDefined) {
			continue;
		}
	}
	var requete_html = 'updateSurfingStackThumbnail.php?url=' + url + query;
	var action_args = new Array();
	xml_load(html_retrieve, requete_html, 'updateSurfingStackThumbnail',
			ajaxHTML, ajaxDummy, action_args);
} // fin function updateSurfingStackThumbnail(url,folders)

function showActiveThumbNails() {
	var query = String(document.location);
	query = query.split('?');
	if (query.length > 1) {
		query = query[1].split('&');
		for (var i = 0;i < query.length; i++) {
			if (query[i].indexOf('thumbnail_') == 0) {
				var onglet = query[i].substring(10).split('=');
				onglet = document.getElementById(onglet[0] + ':' + onglet[1]);
				if (onglet)
					selectThumbNail(onglet, ongletSelect, ongletNonSelect,
							ongletNonSelectAvecSaisie)
			}
		}
	}
	return;
} // fin function showActiveThumbNails()

function goBackFromWhereYouCame() {
	dontPushSurfingStack = true;
	document.location = "retour.php";
} // fin function goBackFromWhereYouCame()

function selectAllinFormiTableObject(e, listeName) {
	var coches = document.getElementsByTagName('INPUT');
	for (var i = 0;i < coches.length; i++) {
		if (coches[i].type == 'checkbox') {
			var id = coches[i].id.split(':');
			if ((id[0] == 'select') && (id[1] != 'all') && (id[2] == listeName))
				coches[i].checked = e.checked;
		}
	}
} // fin function selectAllinFormiTableObject(e,listeName)

/**
 * Charge une liste paginée dans un div d'un page HTML
 * @param uri : URL générant la pagination
 * @param id : ID du bloc de destination 
 * @param pageCourante : n° de la page courante
 * @param nomColonne : nom de la colonne de tri
 * @param croissant : booléen indicateur de tri (dé)croissant
 * @param nbParPage : nb d'elements par page
 * @param templateFile : template smarty
 * @param userCB
 * @param userArgs
 */
function FormiLoadListe(uri,id,pageCourante,templateFile,nomColonne,croissant,nbParPage) {
	var args = new Array();
	var loadListe = new Ajax.Updater($(id),uri,
							{method:'get',
							 parameters:{pgn_pageCourante:pageCourante,
							 			  pgn_nomColonne:nomColonne,
										  pgn_croissant:croissant,
										  pgn_nbParPage:nbParPage,
										  pgn_id:id,
										  pgn_templateFile:templateFile}}); 
} // fin function
// FormiLoadListe(uri,id,pageCourante,templateFile,nomColonne,croissant,nbParPage)

function FormiLoadListe2(_SmartyTemplateFile, _ID, _PageCourante, _NomColonne,
		_Croissant, _NbParPage, varATransmettre, uri, userCB, userArgs) {
	var args = new Array();
	args.push(_SmartyTemplateFile);
	args.push(_ID);
	args.push(_PageCourante);
	args.push(_NomColonne);
	args.push(_Croissant);
	args.push(_NbParPage);
	args.push(varATransmettre);
	formi_aj_call(uri, 'GetPage', args, userCB, userArgs);
} // fin function
// FormiLoadListe(_SmartyTemplateFile,_ID,_PageCourante,_NomColonne,_Croissant,_NbParPage,varATransmettre,uri)

/**
 * FormiLoadPopUp : charge un popup
 * 
 * @uri : uri...
 * @_ID : div qui contiendra le popup
 * @event : javascript event (besoin pour les évenements claviers et souris)
 * @zindex : index z du masque grisé (facultatif)
 * @opacity: opacité du masque grisé (facultatif)
 */
function ajaxLoadFormiPopup2(dbObjectUri, tableName, filtre, event, zindex,opacity) {
	var args = new Object();
	var ID = 'popup';
    var requete_http = '';

	zindex = zindex || 1;
	opacity = opacity || 25;
	if ((ID == undefined) || (dbObjectUri == undefined)) {
		return false;
	}

	args['id_target'] = ID;
	args['z_index'] = zindex + 1;
	grayOut(true, {
		'zindex' : zindex,
		'opacity' : opacity
	});
	requete_http = dbObjectUri + ((filtre != '') ? '?' + filtre : '');
	ajaxCall(requete_http, args, ID, event);
} // fin function ajaxLoadFormiPopup(dbObjectUri,tableName, filtre, event,zindex, opacity) {

/**
 * FormiLoadPopUp : charge un popup
 * 
 * @uri : uri...
 * @_ID : div qui contiendra le popup
 * @event : javascript event (besoin pour les évenements claviers et souris)
 * @zindex : index z du masque grisé (facultatif)
 * @opacity: opacité du masque grisé (facultatif)
 */
function ajaxLoadFormiPopup(dbObjectUri, titre, filtre, event, width_, maxHeight_) {
	requete_http = dbObjectUri + ((filtre != '') ? '?' + filtre : '');
	width_ = (width_ == undefined) ? 650 : width_;
	maxHeight_ = (maxHeight_ == undefined) ? 700 : maxHeight_;
	ouvrirPopup(requete_http, titre, width_, maxHeight_);
} // fin function ajaxLoadFormiPopup(dbObjectUri,tableName, filtre, event,zindex, opacity) {


/**
 * ouvrirPopup : charge un popup
 * @param url_requete_http
 * @param width
 * @param height
 * @param titre
 */
function ouvrirPopup(url_requete_http, titre, width, height) {
	width = (width == undefined) ? 650 : width;
	height = (height == undefined) ? 700 : height;
	Dialog.info(
		{url: url_requete_http,options: {method: 'get'}},
		{className: "greylighting", width:width, maxHeight:height, title: titre,
		 resizable:true,minimizable:true,maximizable:true,closable:true,draggable:true,
		 hideEffect:Element.hide, showEffect:Element.show});
}

function ouvrirPopupIFrame(url_requete_http, titre, width, height) {
	width = (width == undefined) ? 650 : width;
	height = (height == undefined) ? 700 : height;
	var win = new Window(
				{className: "greylighting",
				 title: titre,width:width, height:width,
				 url: url_requete_http, showEffectOptions: {duration:1.5}})
	win.showCenter(true); 
}

function closeFormiPopup(popupDivID) {
	document.getElementById(popupDivID).__Window.close();
	grayOut(false);
} // fin function closeFormiPopup(popupID)

function css2js(s) {
	for (var exp = /-([a-z])/;exp.test(s); s = s.replace(exp, RegExp.$1.toUpperCase()));
	return s;
}

function _setStyle(element, declaration) {
	if (declaration == undefined)
		return;
	if (declaration.charAt(declaration.length - 1) == ';')
		declaration = declaration.slice(0, -1);
	var k, v;
	var splitted = declaration.split(';');
	for (var i = 0, len = splitted.length;i < len; i++) {
		k = css2js(splitted[i].split(':')[0]);
		v = splitted[i].split(':')[1];
		eval("element.style." + k + "='" + v + "'");
	}
}

/* affiche ou masque un calque donne */
function changeVisibility(calque) {
	var visibility = (document.getElementById(calque).style.display != "none")
			? "none"
			: "";
	_setStyle(document.getElementById(calque), "display:" + visibility);
} // fin function changeVisibility(layer)

/* alterne 2 images cliquables comme source de l'élement imgElement */
function alternateImages(imgElement, img1, img2) {
	if (imgElement.src.indexOf(img1) > 0) {
		imgElement.src = img2;
	} else if (imgElement.src.indexOf(img2) > 0) {
		imgElement.src = img1;
	}
} // fin function alternateImages(imgElement, img1, img2)

function printf() {
	var num = arguments.length;
	var oStr = arguments[0];
	for (var i = 1;i < num; i++) {
		var pattern = "\\{" + (i - 1) + "\\}";
		var re = new RegExp(pattern, "g");
		oStr = oStr.replace(re, arguments[i]);
	}
	return oStr;
} // function printf()


/*
 * Verifier les données du formulaire en le soumettant via ajax
 * @idForm : id du formulaire
 * @paramSupplementaires : parametres supplementaires à soumettre
 */
function verifFormulaireAjax(idForm, paramSupplementaires, functionCallback)
{
	functionCallback = functionCallback || handleErrorXMLReponse;
	var pars = Form.serialize(idForm) + paramSupplementaires;
	var myAjax = new Ajax.Request(actionEProject,
					{method:'post',
					 parameters:pars,
					 onSuccess:functionCallback});

} // function verifFormulaireAjax(idForm, paramSupplementaires)


function getErrorXMLObject(request)
{
	var ajaxResponse = Try.these(
		function() {
			return new DOMParser().parseFromString(request.responseText, 'text/xml');
		},
		function() {
			var xmldom = new ActiveXObject('Microsoft.XMLDOM');
			xmldom.loadXML(request.responseText); return xmldom;
		}
	);
	var success = ajaxResponse.getElementsByTagName('success')[0];
	var error = ajaxResponse.getElementsByTagName('error')[0];
	var args = new Array();
	if (success) {
		args['success'] = 1;
		args['message'] = (success.getElementsByTagName('message')[0].firstChild.nodeValue); 
	}
	else if (error) {
		args['error'] = 1;
		args['message'] = (error.getElementsByTagName('message')[0].firstChild.nodeValue);
	}
	return args;
}

function handleErrorXMLReponse(request)
{
	var errorArray = new Array();
	errorArray = getErrorXMLObject(request);
	if (errorArray['success']) {
		Dialog.alert(errorArray['message'],{
			width: 300,
			height: 100,
			okLabel: "close"
		});
	}
	else if (errorArray['error']) {
		Dialog.alert(errorArray['message'],{
			width: 300,
			height: 100,
			okLabel: "close"
		});
	}
} // function handleXMLErrorReponse(request)