
var win = "";
var AppURL = '/scripts/cgiip.exe/WService=brokResa';
var alphabet = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
var hnDisplayWeekColumn = false;
var cLastActionCom = "";
var lHideMessage = false;

var iColonneType = 0;
var iColonneDesc = 1;
var iColonneMontant = 2;

var aCommande = [];

window.onload = EndLoad;

var timeout; 
var closefunction = "";
function show_alert (AlertText, AlertTitle,iMaxTime, okfunction) {	
	//IsFunction('local_EndLoad')
	if (AlertText == "" || lHideMessage)  return;
	closefunction = "";
	if (typeof AlertTitle == "undefined")  AlertTitle = "";
	Dialog.alert(AlertText, {width:400, height:((lUniqueMessage)?150:200), className: "azureva_dialog", title: ((typeof cTitle != "undefined")?AlertTitle:""),okLabel: getTraduction(79), ok:function(win) {if(typeof okfunction == "function") okfunction.call(this);return true;}});
	if (typeof iMaxTime == "undefined") return;
	if (iMaxTime <= 0) return;
	closefunction = okfunction;
	timeout=iMaxTime; 
	setTimeout(infoTimeout, 1000) ;
}
function show_alert_warning(AlertText, AlertTitle,iMaxTime) {	
	show_alert ('<div class="warning">' + AlertText + '</div>', AlertTitle,iMaxTime)
}

var cMessage = "";
var lUniqueMessage = true;
function control_mandatory_field (obj, PhraseId)  {
	if (obj == null) return;
	if (obj.value == "" || obj.value == Format_Date) 
	{
		//100
		if (lUniqueMessage)
		{
			if (cMessage == "") cMessage = getTraduction(100)
		}
		else cMessage += '<br />' + getTraduction(PhraseId);
		addClass (obj, "ChampVide");
	}
	else removeClass (obj, "ChampVide");
}

function infoTimeout() {
	timeout--; 
	if (timeout >0) setTimeout(infoTimeout, 1000);
	else {
		Dialog.closeInfo();
		if (typeof closefunction == 'function') closefunction.call(this);
		closefunction = "";
	}
} 

function show_alert_placement (cPlacement, cLinks) {
	var cHTML = '<table id="TabInfo"" border="0" cellspacing="0" cellpadding="0" width="100%">' + 
					'<tr><td><div class="TitreRubrique">' + getTraduction(80) + '</div></td></tr>' + 
					'<tr><td class="SousTitreRubrique" valign="top">&nbsp;</td></tr>' + 
					'<tr><td><font class="GrosGuillemet">"</font>' + cPlacement + '<font class="GrosGuillemet">"</font></td></tr>';
	if (typeof PlacementAlternatifArray != "undefined" && PlacementAlternatifArray != null) {
	
		cHTML +=	'<tr><td>&nbsp;</td></tr>' + 
				'<tr><td><div class="TitreRubrique">' + getTraduction(81) + '</div></td></tr>' + 
				'<tr><td class="SousTitreRubrique" valign="top">&nbsp;</td></tr>';
		for (var i=0; i< PlacementAlternatifArray.length;i++)
		{	
			var cLien = '<a href="javascript:void(Appliquer_Sejour_Alternatif(\'' + PlacementAlternatifArray[i][0] + '\',\'' + PlacementAlternatifArray[i][2] + '\',\'' + PlacementAlternatifArray[i][3] + '\'))">' + PlacementAlternatifArray[i][4] + '&euro;</a>';
			cHTML += '<tr><td><div class="fleche">' + 
				getTraduction(98).replace(/&1/g, PlacementAlternatifArray[i][2] ).replace(/&2/g, PlacementAlternatifArray[i][3] ).replace(/&3/g, PlacementAlternatifArray[i][1] .toLowerCase()).replace(/&4/g, cLien)  +
				'</div></td></tr>';
			cLien = null;
		}
	}
	if (typeof cLinks != "undefined" && cLinks != "") {
		cHTML +=	'<tr><td>&nbsp;</td></tr>' + 
				'<tr><td><div class="TitreRubrique">' + getTraduction(82) + '</div></td></tr>' + 
				'<tr><td class="SousTitreRubrique" valign="top">&nbsp;</td></tr>' +
				'<tr><td>' + cLinks + '</td></tr>';
	}
	cHTML += '</table>';
	
	//win.getContent().innerHTML = cHTML;
	//win.showCenter();
	Dialog.alert(cHTML, {width:480, height:400, className: "azureva", title: "",okLabel: getTraduction(79), ok:function(win) {return true;}});
}

function EndLoad () {

	if ($('commandeid') != null) {
		aCommande = $('commandeid').value.split(',');
		for (var i = 0; i < aCommande.length; i++) couleurLignesRecap('tabRecap' + aCommande[i]);
		if (aCommande.length == 1 && $('FilMotCleActionCom') != null)  cLastActionCom = $('FilMotCleActionCom').value;
	}
	
	if (typeof hnUserB2B != "undefined") {
		removeClass(document.body, "B2C");
		addClass(document.body, "B2B");
	}
	
	if (IsFunction('local_EndLoad')) local_EndLoad();
	if (typeof(jsTerminer) != "undefined") {
		show_alert(getTraduction(107), "",0, CloseResa);
		return;
	}
	
	
	if (typeof(jsMessage) != "undefined") {
		if ($('trMessage') != null)	{
			$('lbMessage').innerHTML = jsMessage;
			$('trMessage').style.display = "";
		}
		else show_alert(jsMessage)
	}	
	if (typeof(Event_on_Page) == "function" ) addEvent(document.body, "click", Event_on_Page)
}

function CloseResa () {
	window.close();
}

function Return_To_Step (iStep) {
	var lSubmit = true;
	if (IsFunction('Controle_Saisie')) 
	{
		lHideMessage = true;
		lSubmit = Controle_Saisie();
		lHideMessage = false;
	}			
	if (!lSubmit) 
	{
		document.location.href = AppURL + '/' + jslanguageIso + '/resa' + iStep + '.w?commandeid=' + $('commandeid').value;
		return;
	}
	else
	{
		Create_Hidden_Field("hnGoToStep", iStep);
		if (IsFunction('local_beforeSubmit')) local_beforeSubmit();
		document.forms[0].submit();
	}
}

function LeftButton_over(btn) {
	if (typeof contentWin  == "object") 
	{
		if (contentWin.initbtn == btn)return;
	}
	removeClass(btn, "DivBouton_out");
	addClass(btn, "DivBouton_over");
}
function LeftButton_out(btn) {
	if (typeof contentWin  == "object") 
	{
		if (contentWin.initbtn == btn)return;
	}
	addClass(btn, "DivBouton_out");
	removeClass(btn, "DivBouton_over");
	removeClass(btn, "DivBouton_click");
}
var contentWin ;
function LeftButton_click(btn,urlString) {
	if (typeof contentWin  == "object") 
	{
		if (contentWin.initbtn == btn)return;
	}
	removeClass(btn, "DivBouton_out");
	removeClass(btn, "DivBouton_over");
	addClass(btn, "DivBouton_click");
	
	if (typeof contentWin  == "object")contentWin .destroy();
	contentWin  = new Window({id: "winInfo", className: "azureva", url: urlString, maximizable:false, minimizable:false,width:800, height:500}); //title: btn.innerHTML 
	contentWin.setDestroyOnClose(); 
	contentWin.showCenter();	// passer true pour créer une fenêtre modale
	contentWin.setConstraint(true, {left:10, right:10,top:10,bottom:10})
	contentWin.toFront();	
	contentWin.initbtn = btn;
	
	myObserver = {   
		onDestroy: function(eventName, win) {
			if (win == contentWin) {
				var btn = contentWin.initbtn;
				contentWin = "";     
				LeftButton_out(btn)  ;
				btn = null;
				Windows.removeObserver(this);      
			}      
		}  
	}  
	Windows.addObserver(myObserver);
	
}

function ajax_action(URLAction, lReponse) {	
	var req = null; 
	if(window.XMLHttpRequest)  req = new XMLHttpRequest(); 
	//else if (window.ActiveXObject)  try {req = new ActiveXObject(Microsoft.XMLHTTP);} catch(err) {launch_action(URLAction);return;}
	else if (window.ActiveXObject)  {
		if (req == null) try {req = new ActiveXObject("Msxml2.XMLHTTP");} catch(err) {}
		if (req == null) try {req = new ActiveXObject("Microsoft.XMLHTTP");} catch(err) {alert("Votre navigateur ne supporte pas les requêtes XMLHttpRequest");return;}
	}
	 
	if (typeof(lReponse) == "undefined") lReponse = false;
	
	if (lReponse)
	{
		req.onreadystatechange = function()
	  	{ 
	    		if(req.readyState == 4)
	    		{
	      			if(req.status == 200) 
	      			{
	      				var cReponse = req.responseText;
					if(cReponse.indexOf('<!--') == 0)
					{
						if (cReponse.indexOf('-->') != -1) cReponse = cReponse.substring(cReponse.indexOf('-->') + 3)
					}
					else if(cReponse.indexOf('<!--') >= 0)
					{
						cReponse = cReponse.substring(0, cReponse.indexOf('<!--'))
						if (cReponse.indexOf('-->') != -1) cReponse = cReponse.substring(cReponse.indexOf('-->') + 3)
					}
	      			//	alert(cReponse)
	      				eval(cReponse)
	      			}
	           		//	document.ajax.dyn="Received:" + req.responseText; 
	       			//else 
	          		//	 document.ajax.dyn="Error code " + req.status;
	          	}
	  	};
	}	
	req.open("POST", URLAction + "&hnAjax=O", true);
	req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); 
	req.send("");	
}

function IsFunction (FunctionName) {
	if (FunctionName == "" || FunctionName.indexOf('[') != -1) return false;
	return eval("typeof(" + FunctionName + ") != 'undefined'");
}

/* ----------------------------------------------------------------------------------------------------------------------------------------------	*/
/* 				Fonctions utilisées pour les LISTES DEROULANTES 				*/
/* ----------------------------------------------------------------------------------------------------------------------------------------------*/

// Fonction qui permet de remplir une liste déroulante à partir d'un tableau Javascript
// Paramètre 1 : select    - Objet (<select>) qui doit être remplit
function Genere_Combo_JSArray (select) {
		
	// La liste déroulante est vidée
	select.options.length=0;	
		
	// Le tableau Javascript doit avoir comme nom l'identifiant de l'objet concaténé avec le terme "Data"
	// Ce tableau est récupéré
	if (eval("typeof(" + select.id + "Data) == 'undefined'")) return;
	eval("var Data = " + select.id + "Data");
	// Si la liste déroulante possède l'attribut "AllDesc", un premier élément est ajouté à la liste avec comme libellé "Tous" et cet attribut comme code
	if (typeof(select.AllDesc) != "undefined") select.options[select.options.length] = new Option("Tous", select.AllDesc);
	
	// Si la liste déroulante possède l'attribut "NoneOption", un premier élément est ajouté à la liste avec comme libellé le contenu de l'attribut NoneDesc et chaine vide comme code
	if (typeof(select.NoneOption) != "undefined" && typeof(select.intoGrid) == "undefined") select.options[select.options.length] = new Option(((typeof(select.NoneDesc) != "undefined")?select.NoneDesc:""), ((select.NoneOption == "" && typeof(select.default_datatype) != "undefined")?select.default_datatype:select.NoneOption));

	// Si le permier élément du tableau est indéfinit : fin de la fonction (la liste reste vide)
	if (typeof(Data[0]) == "undefined") return;
/*
	// Si la liste déroulante possède l'attribut "Sort" ayant comme valeur "Code", la liste doit être triée selon le code (sinon selon le libellé)
	if (select.Sort == "Code")
	{
		// 2 types de codes peuvent être gérées, les codes de types entier ou caractères. Un test est effectué sur le premier élément afin de savoir di c'est un nombre. 
		// Dans l'affirmative, le tableau Javascript est trié en utilisant la fonction de tri des entiers sinon avec la fonction de tri des codes caractères
		if (typeof(Data[0][0]) == "number") Data = Data.sort(SortByCodeInt)
		else Data = Data.sort(SortByCodeChr)
	}
	// Si la liste doit être triée selon le libellé, le tableau Javascript est trié avec la fonction de tri sur le libellé
	else if (select.Sort == "Desc") Data = Data.sort(SortByLibelle)
*/

	var optGroup = "";
	// Boucle sur le tableau Javascript trié désormais tri selon l'ordre souhaité (code ou libellé)
	for (var i = 0; i < Data.length; i++)
	{
		//Si le tableaa de l'élement ne contient qu'une seule valeur, c'est qu'il s'agit d'une élément de regroupement
		if (Data[i].length == 1) 
		{
			
			if (Data[i] == "") 
			{
				optGroup = "";
				continue
			}
			
			// Création de l'objet optgroup avec la seule valeur comme texte
			var optGroup = document.createElement('optgroup')
			optGroup.label = Data[i]
			// Ajout du nouvel élément dans la liste
			select.appendChild(optGroup);
		}		
		//Pour chaque élément du tableau, une nouvelle option est crée
		//else select.options[select.options.length] = new Option(Data[i][1], Data[i][0]);
		else 
		{
			var newoption = document.createElement('option')
			if (typeof(optGroup) == "object") optGroup.appendChild(newoption);
			else select.appendChild(newoption);
			newoption.value = Data[i][0]
			newoption.text = Data[i][1]
			newoption = null;			
		}
	}
	optGroup = null;
	i = null;
	Data = null;

	// Si la liste déroulante ne possède pas d'attribut "ListElement" : fin de la fonction
	//if (typeof(select.ListElement) != "undefined") Genere_Combo_List (select, false)
	
}

function formatDate (Data) {
			
	// Le séparateur '/' est retiré
	var format = new RegExp("[/]","g");
	Data = Data.replace(format,'');
	format = null;	
	
	// Si la longueur de la chaine est maintenant de 6 (le siècle n'a pas été précisé), la variable RegExp définie va séparer les 6 chiffres en 3 séries de 2 chiffres
	if (Data.length == 6) var format = /^([0-9]{2})([0-9]{2})([0-9]{2})$/;
	// Sinon la variable RegExp définie va séparer les 8 chiffres en 3 séries de 2 chiffres (la dernière contiendra 4 chiffres)
	else var format = /^([0-9]{2})([0-9]{2})([0-9]{4})$/;
	// Un tableau Javascript récupére les séries de chiffres
	var DateNumbers = format.exec(Data);
	format = null;
	if (DateNumbers == null) {return ""}
	// Le premier élément du tableau contient la chaine entière. Ce premier élément est donc supprimé
	DateNumbers.splice(0, 1);
	// Si l'année est sur 2 chiffres, le siècle est rajouté avec la règle suivante : Si l'année est supérieure à 50 elle est affectée en 1900 sinon elle est affectée en 2000
	if (DateNumbers[2].length == 2) 
	{
		var iCenturySplitter = 50;
		if (event != null)
		{
			if (event.srcElement != null)
			{
				if (typeof(event.srcElement.CenturySplitter) != "undefined") iCenturySplitter = parseInt(event.srcElement.CenturySplitter);
			}
		}
		DateNumbers[2] = ((eval(DateNumbers[2]) >= iCenturySplitter)?"19":"20") + DateNumbers[2];
	}
	// test de l'existence de la date
	if (!DateExists (DateNumbers[0],DateNumbers[1],DateNumbers[2])){show_alert("Date inexistante");return "";}
	// Une chaine de caractères contenant les 3 séries de chiffres séparés par des '/'
	return DateNumbers.join("/");	
}

function control_Date (e,obj) {
	if (typeof obj == "undefined")
	{
		var myEvent = e || window.event;
		var obj = myEvent.target || myEvent.srcElement;
	}
	if (obj.value == "") return;
	obj.value = formatDate(obj.value);
	if (obj.value != "" && typeof disablebeforetoday != "undefined") 
	{		
		if (IsDateBefore(obj.value)) obj.value = "";
	}
}

function IsInteger(Data) {	
	var format = /^\d*$/;
	return format.test(Data);
}

function formatPhone(Data) {
	
	// Une variable RegExp est définie. Elle stipule qu'un néméro de téléphone est constitué de 2 chiffres suivi éventuellement d'un point ou d'un espace et cela 5 fois de suite
	var chktel = /^[0-9]{0,2}[\. ]?[0-9]{2}[\. ]?[0-9]{2}[\. ]?[0-9]{2}[\. ]?[0-9]{2}[\. ]?[0-9]{2}$/;
	//(^\+[0-9]{2}|^\+[0-9]{2}\(0\)|^\(\+[0-9]{2}\)\(0\)|^00[0-9]{2}|^0)([0-9]{9}$|[0-9\-\s]{10}$)
	// Si la chaine de caratère ne respacte pas la règle précédente, aucun mise en forme n'est effectuée
	if (!chktel.test(Data)) return ""; 

	// Les points et les espaces sont supprimés de la chaine de caractère
	Data = Data.replace(/[\. ]/g,'')
	
	// Une variable RegExp est définie. Elle va séparer les 10 chiffres du néméro de téléphone en 5 séries de 2 chiffres
	var format = /^([0-9]{0,2})([0-9]{2})([0-9]{2})([0-9]{2})([0-9]{2})([0-9]{2})$/;
	// Un tableau Javascript récupére les séries de chiffres
	var PhoneNumbers = format.exec(Data);
	// Le premier élément du tableau contient la chaine entière. Ce premier élément est donc supprimé
	PhoneNumbers.splice(0, 1); 
	if (PhoneNumbers[0] == "") PhoneNumbers.splice(0, 1); 
	chktel = null;
	format = null;
	// Une chaine de caractères contenant les 5 séries de chiffres séparés par des espaces est créée
	return PhoneNumbers.join(" ");
	
}

function control_Phone (e,obj) {
	if (typeof obj == "undefined")
	{
		var myEvent = e || window.event;
		var obj = myEvent.target || myEvent.srcElement;
	}
	if (obj.value == "") return;
	obj.value = formatPhone(obj.value);
}

// Fonction qui met en forme l'adresse électronique
// Paramètre 1 : Data	- Chaine de caractère à mettre en forme
function formatMail(Data) {
	//Le format à respecter est au moins 1 caractère alphanumérique ou un point ou un underscore ou un tiret suivi d'un @ et de 2 ou plus caractères alphanumériques ou un point ou un underscore ou un tiret
	// eux même suivi de 2 ou 3 lettres
	var format = /^[a-z0-9._-]+@[a-z0-9.-]{2,}[.][a-z]{2,3}$/;
	// La chaine de caractère est testée
	return ((format.test(Data))?Data:""); 	
}

function control_Mail (e,obj) {
	if (typeof obj == "undefined")
	{
		var myEvent = e || window.event;
		var obj = myEvent.target || myEvent.srcElement;
	}
	if (obj.value == "") return;
	obj.value = formatMail(obj.value);
}

var win = "";
function Show_Data_Commande () {
	if ($('commandeid') == null) 
	{
		alert('commandeid == null');
		return;
	}
	if ($('commandeid').value == "") 
	{
		alert('commandeid == ""');
		return;
	}
	var cURL = AppURL + '/debug/show_resa.p?hncommandeid=' + $('commandeid').value;
	window.open(cURL, "ResaLignedebug_azureva", "width=800,height=400,left=100,top=100,status=yes,toolbar=no,menubar=no,scrollbars=yes,location=no,directories=no,resizable=yes")
}

Array.prototype.findIndex = function(libelle, Column) {
	if (this.length == 0) return -1;
	if (typeof(this[0]) == "object")
	{		
		for (var i = 0; i < this.length; i++)
		{
			if (this[i].length < Column - 1) continue;
			if (this[i][Column] == libelle) return i;
		}
	}
	else 
	{
		for (var i = 0; i < this.length; i++)
		{
			if (this[i] == libelle) return i;
		}	
	}
	return -1;
}

Array.prototype.findItem = function(libelle, Column) {
	if (this.length == 0) return null;
	if (typeof(this[0]) == "object")
	{		
		if (typeof(Column) == "undefined") Column = 0;
		var args = Array.prototype.findItem.arguments;
		for (var i = 0; i < this.length; i++)
		{
			if (this[i].length < Column - 1) continue;
			if (this[i][Column] == libelle) 
			{
				if (args.length >= 4)  
				{
					if (this[i][args[3]] != args[2]) continue;					
				}
				return this[i];
			}
				
		}
	}
	else 
	{
		for (var i = 0; i < this.length; i++)
		{
			if (this[i] == libelle) return this[i];
		}	
	}
	return null;
}

String.prototype.toNumber = function(ifloat) {	
	if (this == "") return 0.00;
	var NumberVariable = this.replace(/[€.]/g,'');
	NumberVariable = parseFloat(NumberVariable.replace(',','.'));
	return parseFloat(NumberVariable.toFixed(ifloat));
};

function getTraduction(cFrenchTerm) {
	var iColomn = ((IsInteger(cFrenchTerm))?0:1)
	var Phrase = PhraseResaData.findItem(cFrenchTerm, iColomn);
	if (Phrase == null)  return "";
	switch(jslanguage)
	{
		case "ENG":
			return Phrase[2].replace(RegExp('&amp;', "g"), "&");
			break;
		default:
			return Phrase[1].replace(RegExp('&amp;', "g"), "&");
			break;
	}
}

function Value_Radio (ObjectName) {
	var oRadios = document.getElementsByName(ObjectName);
	// Boucle sur les objets récupérés
   	for (var i = 0; i < oRadios.length; i++)
   	{
      		var oRadio = oRadios.item(i);
      		if (oRadio.checked) return oRadio.value;
      		oRadio = null;
   	}   
   	oRadios = null;
   	i = null;
	return "";
}

function Acces_Radio (ObjectName, lDisable) {
	var oRadios = document.getElementsByName(ObjectName);
   	for (var i = 0; i < oRadios.length; i++)
   	{
      		oRadios.item(i).disabled = lDisable;
   	}   
   	oRadios = null;
   	i = null;
	return "";
}

function Check_Radio (ObjectName, ObjectValue) {		
	var oRadios = document.getElementsByName(ObjectName);
	// Boucle sur les objets récupérés
   	for (var i = 0; i < oRadios.length; i++)
   	{
      		var oRadio = oRadios.item(i);
      		if (oRadio.value == ObjectValue || (oRadio.value == "on" && ObjectValue == "")) 
      		{
      			if (oRadio.disabled && typeof event != "undefined") return;
      			oRadio.checked = true;
      			break;
      		}
		else oRadio.checked = false;
		oRadio = null;
   	}
   	i = null;
   	oRadios = null;
}

function Create_Hidden_Field (HiddenId, HiddenValue) {
	if ($(HiddenId) == null)
	{
		var hn = document.createElement('input');
		hn.setAttribute('type', 'hidden');
		hn.setAttribute('id', HiddenId);
		hn.setAttribute('name', HiddenId);
		hn.setAttribute('value', HiddenValue);
		document.forms[0].appendChild(hn);
		hn = null;
	}
	else $(HiddenId).value = HiddenValue;
}

function formatCurrency(Data) {		
	if (typeof(Data) != "string") 
	{		
		Data = Data.toFixed(2);
		Data=Data.toString();
	}
	// Les éventuels chiffres 0 placés devant le nombre entier sont supprimés
	Data =  Data.replace(/^[0]*/,'');	
	// Une variable RegExp est définie. Elle va séparer le chaine de caractère en 2 série de nombre (les entiers et éventuellement les décimaux)
	var format = /^[-]?([0-9]*)[,.]?([0-9]*)$/;
	// Un tableau Javascript récupére les séries de chiffres
	var DecimalNumbers = format.exec(Data);
	format = null;
	// Le premier élément du tableau contient la chaine entière. Ce premier élément est donc supprimé
	DecimalNumbers.splice(0, 1);
	if (DecimalNumbers[0] == "") DecimalNumbers[0] = "0";
	if (Data.substring(0,1) == "-") DecimalNumbers[0] = "-" + DecimalNumbers[0]
	// Si l'élement de tableau contenant les décimaux contient moins de 2 chiffres, des zéros sont rajoutés à la suite afin de compléter la série
	if (DecimalNumbers[1].length < 2) DecimalNumbers[1] += Fill("0", 2 - DecimalNumbers[1].length)
	// Une chaine de caractères contenant les 2 séries de chiffres séparés par 1 ','
	return DecimalNumbers.join(",");
}

function assigner_Ligne(NomLigne, dMontant, lMasquerZero) {
	if (typeof lMasquerZero == "undefined") lMasquerZero = true;
	if (typeof dMontant == "string") dMontant = dMontant.toNumber(2);
	else dMontant = parseFloat(dMontant.toFixed(2));
	if ($("trRecap" + NomLigne) == null) return;
	var dMontantInitial = $("trRecap" + NomLigne).cells[iColonneMontant].innerHTML.toNumber(2);
	if (NomLigne != "Total") incrementer_Ligne("Total", dMontant - dMontantInitial,false);	
	$("trRecap" + NomLigne).cells[iColonneMontant].innerHTML = formatCurrency( dMontant) + "&euro;";	
	if (lMasquerZero) $("trRecap" + NomLigne).style.display=((dMontant != 0)?"":"none");
}

function incrementer_Ligne(NomLigne, dMontant,lMasquerZero) {	
	if (typeof lMasquerZero == "undefined") lMasquerZero = true;
	if (typeof dMontant == "string") dMontant = dMontant.toNumber(2);
	else dMontant = parseFloat(dMontant.toFixed(2));		
	if ($("trRecap" + NomLigne) == null) return;
	var dTotal = $("trRecap" + NomLigne).cells[iColonneMontant].innerHTML.toNumber(2);	
	dTotal += dMontant;
	$("trRecap" + NomLigne).cells[iColonneMontant].innerHTML = formatCurrency(dTotal) + "&euro;";
	if (lMasquerZero) $("trRecap" + NomLigne).style.display=((dTotal != 0)?"":"none");
	dTotal = null;
	if (NomLigne != "Total") incrementer_Ligne("Total", dMontant,false);
}

function getMontantLigneRecap (NomLigne) {	
	if ($("trRecap" + NomLigne) == null) return;
	return $("trRecap" + NomLigne).cells[iColonneMontant].innerHTML.toNumber(2);
}

function couleurLignesRecap (tableId) {
	var iNbtr = -1;
	var iOldBottom = -1;
	var iBottom = -1;
	
	if (typeof tableId == "undefined") var tableId = 'tabRecap' + $('commandeid').value;
	if ($(tableId) == null) return;
	for (var i=0; i< $(tableId).rows.length; i++)
	{
		var row = $(tableId).rows[i];
		if (!ClassApplied(row, "innerlines")) continue;
		if (row.style.display == "none") continue;
		iNbtr++;		
		if (ClassApplied(row.cells[0], "BottomLine")) iOldBottom = i;
		iBottom = i;
		for (var j=0; j<row.cells.length;j++)
		{
			modifyClass (row.cells[j], "LigneImpaire", (iNbtr%2==0))
		}		
	}
	if (iBottom != iOldBottom)
	{
		if (iOldBottom != -1)
		{
			for (var j=0; j<$(tableId).rows[iOldBottom].cells.length;j++)
			{
				removeClass ($(tableId).rows[iOldBottom].cells[j], "BottomLine");
			}	
		}
		for (var j=0; j<$(tableId).rows[iBottom].cells.length;j++)
		{
			addClass ($(tableId).rows[iBottom].cells[j], "BottomLine");
		}		
	}
	modifyClass ($("trRecapTotal"), "DisplayNone", $("trRecapTotal").cells[iColonneMontant].innerHTML == $("trRecapSejour").cells[iColonneMontant].innerHTML);
}

//trRecapTotal
function insertRecapLine (rowId, FirstColumnText,SecondColumnText, tBodyName) {
	if (typeof tBodyName == "undefined") tBodyName = 'tBodyService';
	var row = $(tBodyName).insertRow(-1);
	row.id = rowId;
	row.className = "innerlines";
	var cell = row.insertCell(-1);	
	cell.className = "RecapColumn1";
	cell.innerHTML = FirstColumnText;		
	var cell = row.insertCell(-1);	
	cell.className = "RecapColumn2";
	cell.innerHTML = SecondColumnText;		
	var cell = row.insertCell(-1);	
	cell.className = "RecapColumn3";
	cell.align="right";
	cell.innerHTML = "0,00";
	cell = null;
	return row;
}

function Key_Press_ActionCom (e) {
	var keynum;
	if(window.event) // IE
	{
		keynum = e.keyCode;
	}
	else if(e.which) // Netscape/Firefox/Opera
	{
		keynum = e.which;
	}		
	if (keynum ==13) 
	{
		Affecter_ActionCom ();
	}
}

function Affecter_ActionCom () {
	 if (cLastActionCom == $('FilMotCleActionCom').value && getMontantLigneRecap("ActionCom") != 0) return;
	var cURL = AppURL + '/ajax.p?Methode=changeActionCom&hncommandeid=' + $('commandeid').value + '&hnetape=' + jsetapeid + '&hnMotCleActionCom=' + encodeURIComponent($('FilMotCleActionCom').value);
	cLastActionCom = $('FilMotCleActionCom').value;
	if ($('FilMotCleActionCom').value == "")  {
		assigner_Ligne("ActionCom", 0, false);
		couleurLignesRecap();	
	}
	ajax_action(cURL, true);
}

function Display_Result_ChangeActionCom (cMessage, cTarif, cChangeFidelite) {
	
	if (typeof cChangeFidelite != "undefined") 
	{
		assigner_Ligne("Fidelite", cChangeFidelite.toNumber(2), false);
		if ($('lbRecapFidelite') != null) $('lbRecapFidelite').innerHTML = cChangeFidelite; //formatCurrency(dTotal)
	}
	if (cMessage =="") 
	{
		assigner_Ligne("ActionCom", cTarif.toNumber(2), false);
	}
	else 
	{
		assigner_Ligne("ActionCom", 0, false);	
		show_alert (cMessage);
	}
	if (typeof CommandeFideliteData != "undefined")  
	{
		if (CommandeFideliteData.length > 0) 
		{
			var temp = $("CmbFidelite").value;
			if ($("CmbFidelite") != null) fill_CmbFidelite ();
			$("CmbFidelite").value = temp;
		}
	}
	couleurLignesRecap();
}

var cOpenSejour = "";
function show_Detail_Sejour (cCommandIdEnc) {
	if ($('tabRecap' + cCommandIdEnc) == null) return;
	
	if (cOpenSejour != "") {
		addClass ($('tabRecap' + cOpenSejour), "DisplayNone");
		$('imgDisplay_' + cOpenSejour).src = "/images/interface/sejour_close.png";
		if (cOpenSejour == cCommandIdEnc) {
			cOpenSejour = "";
			return;
		}
		else cOpenSejour = "";
	}
		
	cOpenSejour = cCommandIdEnc;
	removeClass ($('tabRecap' + cOpenSejour), "DisplayNone");
	$('imgDisplay_' + cOpenSejour).src = "/images/interface/sejour_open.png";
		
}

