// POUR AJAX
function handleAddClick() {
	
	alert("=>handleAddClick() HOTEL");
	
	canSubmit = 'false';
	var searchString = DWRUtil.getValue('searchCity');
	CityServiceFacade.findCityByCityName(fillCity, searchString);	
}


/*
 ***************************************************
 * Fonctions utilisées dans la page results-list.jsp
 ***************************************************
 */

function processTri(sortingMode,sortingDirection){
	var triForm = document.getElementById("triForm");
	var triFormSortingMode = document.getElementById("sortingMode");
	var triFormSortingDirection = document.getElementById("sortingDirection");
	triFormSortingMode.value = sortingMode;
	triFormSortingDirection.value = sortingDirection;
	triForm.submit();
}

function processFilterActivation(filterActivated){
	var filterActivationForm = document.getElementById("filterActivationForm");
	var filterActivationFormFilterActivated = document.getElementById("filterActive");
	filterActivationFormFilterActivated.value = filterActivated;
	filterActivationForm.submit();
}

function displayPage(pageId){
	var pageForm = document.getElementById("pageForm");
	pageForm.page.value = pageId;
	pageForm.submit();
}

function showOrHideOtherCategories(accomId, resultIdInput) {
	var actionLabelInput = document.getElementById("linkAction_" + accomId);
	var actionLabel = actionLabelInput.value;
	var resultsLines = document.getElementsByTagName("tr");
	var resultId = document.getElementById(resultIdInput).value;
	
	for(var i=0; i<resultsLines.length; i++) {
		var resultLineInLoop = resultsLines[i];
		if(resultLineInLoop.id != null) {
			var lastUnderscoreOffset =  ("" + resultLineInLoop.id).lastIndexOf("_");
			// Y a t-il un autre underscore dans l'id de la ligne ?
			if(lastUnderscoreOffset > ("result_").length) {
				var loopResultId = resultLineInLoop.id.substring(lastUnderscoreOffset + 1, resultLineInLoop.length);
				var resultLineInLoop = document.getElementById("result_" + accomId + "_" + loopResultId);
				if(resultLineInLoop != null) {
					if(resultLineInLoop.id != null) {
						if(resultId == loopResultId) {
							resultLineInLoop.className = "selectedPossibility";
						} else {
							resultLineInLoop.className = "notSelectedPossibility";
						}
						if(actionLabel == "show") {
							resultLineInLoop.style.display="block";
							resultLineInLoop.style.visibility="visible";
							var clickedLink = document.getElementById("seeOthersLink_" + accomId);
							if(clickedLink != null) {
								clickedLink.innerHTML = "Masquer les autres catégories de chambres";
							}
						} else {
							if(resultId != loopResultId) {
								resultLineInLoop.style.display="none";
								resultLineInLoop.style.visibility="hidden";
								var clickedLink = document.getElementById("seeOthersLink_" + accomId);
								if(clickedLink != null) {
									clickedLink.innerHTML = "Voir les autres catégories de chambres";
								}
							}
						}
					} 
				}
			}
		}
	}
	if(actionLabel == "show") {
		actionLabelInput.value="hide";
	} else {
		actionLabelInput.value="show";
	}
}

function switchToResult(accomId, newResultId) {
	
	var actionLabelInput = document.getElementById("linkAction_" + accomId);
	// Retrouve le champ caché du conteneur contenant la valeur du result sélectionné
	var selectedResultIdInput = document.getElementById("resultIdInput");
	selectedResultIdInput.value = newResultId;
	
	var chkboxId = "currentSelectedPossibility_" + accomId + "_" + newResultId;
	var chkbox = document.getElementById(chkboxId).checked="checked";
	
	if(actionLabelInput != null) {
		var actionLabel = actionLabelInput.value;
		if(actionLabel == "show") {
			actionLabelInput.value="hide";
		} else {
			actionLabelInput.value="show";
		}
		// Retrouve le champ caché du conteneur contenant la valeur du result sélectionné
		var hiddenSelectedResult = document.getElementById("currentSelectedResultId_" + accomId);
		if(hiddenSelectedResult != null) {
			hiddenSelectedResult.value = newResultId;
			showOrHideOtherCategories(accomId, hiddenSelectedResult.id);
			refreshContainerHeader(accomId);
		} else {
			alert("hiddenSelectedResult est null");
		}
	} else {
		alert("actionLabelInput est null");
	}
}

function refreshContainerHeader(accomId) {
	
	// Retrouve le champ caché du conteneur contenant la valeur du result sélectionné
	var hiddenSelectedResult = document.getElementById("currentSelectedResultId_" + accomId);
	var resultId = hiddenSelectedResult.value;
	
	// Supplier logo
	var supplierLogo = document.getElementById("selectedSupplierLogo_" + accomId);
	var supplierCodeInput = document.getElementById("supplierCodeInput_" + resultId);
	var possibilitySupplierTitleDiv = document.getElementById("supplierLogoTitle_" + resultId);
	var newLogoSrc = "/images/" + supplierCodeInput.value.toLowerCase() + ".gif"
	var newSupplierTitle = possibilitySupplierTitleDiv.innerHTML.replace("&nbsp;", " "); // On traduit l'espace HTML en caractère espace
	supplierLogo.src = newLogoSrc;
	supplierLogo.title = newSupplierTitle;
	
	// Short description
	var shortDescDiv = document.getElementById("hotelResumeShortDescBlock_" + accomId);
	var newDesc = document.getElementById("possibilityDescriptionShort_" + resultId).innerHTML;
	if(newDesc != null) {
		shortDescDiv.innerHTML = newDesc;
	} 
	if(shortDescDiv.innerHTML.replace(' ', '') == '') {
		hideAndUnblockElement("shortDescFieldset");
	} else {
		showElement("shortDescFieldset");
	}
 
	// General description
	var genDescDiv = document.getElementById("hotelResumeGenDescBlock_" + accomId);
	var newDesc = document.getElementById("possibilityDescriptionGen_" + resultId).innerHTML;
	if(newDesc != null) {
		genDescDiv.innerHTML = newDesc;
		showElement(document.getElementById("headerGenDescFieldset"));
	} else {
		hideElement(document.getElementById("headerGenDescFieldset"));
	}

	// Location description
	var locDescDiv = document.getElementById("hotelResumeLocDescBlock_" + accomId);
	var newDesc = document.getElementById("possibilityDescriptionLoc_" + resultId).innerHTML;
	if(newDesc!= null) {
		locDescDiv.innerHTML = newDesc;
		showElement(document.getElementById("headerLocDescFieldset"));
	} else {
		hideElement(document.getElementById("headerLocDescFieldset"));
	}

	// Facade description
	var facDescDiv = document.getElementById("hotelResumeFacDescBlock_" + accomId);
	var newDesc = document.getElementById("possibilityDescriptionFac_" + resultId).innerHTML;
	if(newDesc!= null) {
		facDescDiv.innerHTML = newDesc;
		showElement(document.getElementById("headerFacDescFieldset"));
	} else {
		hideElement(document.getElementById("headerFacDescFieldset"));
	}
 
	// Lobby description
	var lobbyDescDiv = document.getElementById("hotelResumeLobbyDescBlock_" + accomId);
	var newDesc = document.getElementById("possibilityDescriptionLobby_" + resultId).innerHTML;
	if(newDesc!= null) {
		lobbyDescDiv.innerHTML = newDesc;
		showElement(document.getElementById("headerLobbyDescFieldset"));
	} else {
		hideElement(document.getElementById("headerLobbyDescFieldset"));
	}
 
	// Room description
	var roomDescDiv = document.getElementById("hotelResumeRoomDescBlock_" + accomId);
	var newDesc = document.getElementById("possibilityDescriptionRoom_" + resultId).innerHTML;
	if(newDesc!= null) {
		roomDescDiv.innerHTML = newDesc;
		showElement(document.getElementById("headerRoomDescFieldset"));
	} else {
		hideElement(document.getElementById("headerRoomDescFieldset"));
	}
 
	// Restaurant description
	var restaurantDescDiv = document.getElementById("hotelResumeRoomDescBlock_" + accomId);
	var newDesc = document.getElementById("possibilityDescriptionRestaurant_" + resultId).innerHTML;
	if(newDesc!= null) {
		restaurantDescDiv.innerHTML = newDesc;
		showElement(document.getElementById("headerRestaurantDescFieldset"));
	} else {
		hideElement(document.getElementById("headerRestaurantDescFieldset"));
	}
 
	
 		// On request	
	var onRequestDiv = document.getElementById("hotelResumeAvailibilityBlock_" + accomId);
	var newOnRequest = document.getElementById("possibilityOnRequest_" + resultId).value;
	if(newOnRequest != null) {
		if(newOnRequest == "true") {
			onRequestDiv.innerHTML = "<div class=\"onRequest\">EN DEMANDE</div>";
		} else {
			onRequestDiv.innerHTML = "<div class=\"available\">DISPONIBLE</div>";
		}
	} else {
		alert("newOnRequest est null");
	}
	
	// Prix TOTAL RACK
	var listTotalRackPriceDiv = document.getElementById("listTotalPrice_" + accomId);
	var newTotalRackPrice = document.getElementById("possibilityPriceTotalRack_" + resultId).value;
	if(listTotalRackPriceDiv != null && newTotalRackPrice != null) {
		listTotalRackPriceDiv.innerHTML = newTotalRackPrice;
	}
	
	// Prix par jour par chambre
	var mealPlansPricesDiv = document.getElementById("listHeaderRoomPlans_" + accomId);
	var newMealPlansPrices = document.getElementById("possibilityMealPlansPrices_" + resultId).innerHTML;
	if(mealPlansPricesDiv != null && newMealPlansPrices != null) {
		mealPlansPricesDiv.innerHTML = newMealPlansPrices;
	}
	
	// Facilities supplémentaires (celles de la possibility uniquement)
	var facilitiesDiv = document.getElementById("containerFacilities_" + accomId);
	if(facilitiesDiv != null) {
		var commonFacilitiesDiv = document.getElementById("containerCommonFacilities_" + accomId);
		var specificFacilitiesDivId = "specificFacilities_" + resultId;
		var specificFacilities = document.getElementById(specificFacilitiesDivId);
		if(specificFacilities != null) {
			facilitiesDiv.innerHTML = commonFacilitiesDiv.innerHTML + specificFacilities.innerHTML;
		} else {
			facilitiesDiv.innerHTML = commonFacilitiesDiv.innerHTML;
		}
	} else {
		alert("(facilitiesDiv) containerFacilities_" + accomId + " est null");
	}
	
	
	
			
}

// Traitement du bouton "RESERVER"
function launchBooking(urlToComplete, accomId) {
	// Retrouve le champ caché du conteneur contenant la valeur du result sélectionné
	var hiddenSelectedResult = document.getElementById("currentSelectedResultId_" + accomId);
	var resultId = hiddenSelectedResult.value;
	var supplierCodeInput = document.getElementById("supplierCodeInput_" + resultId);
	var supplierCode = supplierCodeInput.value.toUpperCase();
	var supplierAccomCodeInput = document.getElementById("supplierAccomCodeInput_" + resultId);
	var supplierAccomCode = supplierAccomCodeInput.value;
	var bookingLaunchQueryString = "?accomId=" + accomId + "&supplierCode=" + supplierCode + "&resultId=" + resultId;
	var bookingLaunchUrl = urlToComplete + bookingLaunchQueryString;
	document.location.href = bookingLaunchUrl;
}

// Traitement du bouton "+ DE DETAILS"
function gotoDetails(urlToComplete, resultId) {
	showWaitZone();
	var prefix = "?";
	if(urlToComplete.indexOf('?') > -1) {
		prefix = '&';
	}
	var gotoDescriptionQueryString = prefix + "resultId=" + resultId;
	var gotoDescriptionUrl = urlToComplete + gotoDescriptionQueryString;
	document.location.href = gotoDescriptionUrl;
}

function returnToResultsList(urlToComplete) {
	
	var url = urlToComplete;
	var prefix = "?";
	var resultIdInput = document.getElementById('resultIdInput');
	var resultId = resultIdInput.value;
	
	if(urlToComplete.indexOf('?') > -1) {
		prefix = '&';
	}
	url += prefix;
	url += 'flowId=accom-search';
	url += '&resultId=' + resultId;
	url += '&_eventId=back';
	document.location.href=url;		
}

function showMap(mapSrc) {
	object = new Image();
	object.src = mapSrc;
	showPicture(object);
}
  	
function hideIfItsMap(mapSrc) {
	var img = document.getElementById('mainPicture');
	if(img != null) {
		var mapSrc = "url("+mapSrc+")";
		var back = document.getElementById("pictureTable").style.backgroundImage;
		if (back == mapSrc) {
			document.getElementById('pictureViewerZone').style.visibility="hidden";
			showMainPicture();
 		}
	}
}

function showPicture(object){
  	
  	var descZone = document.getElementById("descriptionContentZone");
  	var pictureViewerFieldset = document.getElementById("pictureViewerFieldset");
  	var pictureViewerZone = document.getElementById("pictureViewerZone");
  	var pictureTable = document.getElementById("pictureTable");
  		
  	if (object != null){
  		var pictureDiv = document.getElementById("pictureViewerZone");
  		var pictureInDiv = document.getElementById("currentPicture");
// 		var headerTitle = document.getElementById("headerTitle");
		var descriptionContentZone = document.getElementById("descriptionContentZone");
  		var bottomAnchor = document.getElementById("bottomAnchor");
		var ancrePosition = document.getElementById("ancrePosition");

  		if (pictureInDiv != null){
  			var ie = document.all ? true : false;
  			var largeur = "100%";
//  			var leBottom = bottomAnchor.offsetTop;
  			var leBottom = getOffsetParentPosition("bottomAnchor", "Top");

/*   		if(ie) {
   				//leTop = headerTitle.offsetTop + headerTitle.offsetHeight + 1;
				leTop = ancrePosition.offsetParent;//.offsetTop;
				leLeft = ancrePosition.offsetLeft;
   			} else {
   				//leTop = headerTitle.offsetTop + headerTitle.offsetHeight + 1; 
				leTop = ancrePosition.offsetTop;
				leLeft = ancrePosition.offsetLeft;
			}
*/			

			leTop = getOffsetParentPosition("ancrePosition", "Top");
			leLeft = getOffsetParentPosition("ancrePosition", "Left");
			
 			pictureDiv.style.top = leTop - 5;
			pictureDiv.style.left = leLeft - 1;
		
			var hauteur = leBottom - leTop;
			var descriptionContentZone = document.getElementById("descriptionContentZone");
			var hauteurMin = descriptionContentZone.offsetHeight;
			
			if(hauteur < hauteurMin) {
				hauteur = hauteurMin - leTop + 3;
			}
	
 			pictureViewerFieldset.style.height = hauteur;
			pictureDiv.height = hauteur;
 			pictureDiv.width = largeur;
			pictureDiv.style.width = document.getElementById("descriptionContentZone").offsetWidth + 3;
 			
			pictureInDiv.style.position = "relative";
			pictureInDiv.style.visibility = "hidden";
			pictureInDiv.style.height = hauteur-30;
			
			pictureTable.style.backgroundImage = 'url(' + object.src + ')';
			pictureTable.style.backgroundPosition = 'center center';
			pictureTable.style.backgroundRepeat = 'no-repeat';
			pictureTable.style.backgroundColor = 'white';
			pictureTable.style.offsetHeight = hauteur - 30;
			pictureTable.style.left = 0;
	
 			// On masque l'image principale
 	    	mainPicture.style.visibility = "hidden";
	
 	    	// On masque le bouton "Afficher / Masquer les photos"
 	    	displayOrHidePhotos.style.visibility = "hidden";
			displayAndBlockElement('pictureViewerZone');
	
			// On masque le bouton "Voir le plan de situation"
			var showMapButton = document.getElementById("showMapButton");
			if(showMapButton != null) {
				displayAndBlockElement('showMapButton');
	  	 		showMapButton.style.visibility = "hidden";
 	    	}
	
			//alert("pictureTable.style:" + pictureTable.style.left + "\t" + pictureTable.style.right);
 	  	}
  	}
}

function showMainPicture() {
  	var mainPicture = document.getElementById("mainPicture");
	mainPicture.style.visibility = "visible";
	displayOrHidePhotos.style.visibility = "visible";
	// On affiche le bouton "Voir le plan de situation"
	var showMapButton = document.getElementById("showMapButton");
	if(showMapButton != null) {
		displayAndBlockElement('showMapButton');
	  	 showMapButton.style.visibility = "visible";
	}
}

function excludeUpperRoomAndLowerRoomRemarks(chkBoxId) {
	var chkBox = document.getElementById(chkBoxId);
	if(chkBox != null) {
		if(chkBox.checked || chkBox.checked == "checked") {
			if(chkBoxId == 'booking.firstItem.preferences[0].isChecked1') {
				var otherChkBox = document.getElementById("booking.firstItem.preferences[1].isChecked1");
				otherChkBox.checked = false;
			} else if(chkBoxId == 'booking.firstItem.preferences[1].isChecked1') {
				var otherChkBox = document.getElementById("booking.firstItem.preferences[0].isChecked1");
				otherChkBox.checked = false;
			}
		}
	} 
}

//donne la position par rapport à window
function getOffsetPosition(el_id, side){
	element = document.getElementById(el_id);
	newNode = document.createElement("div");
	newNode.innerHTML =  "<div style=\"height: 12px;\"></div>";
	element.insertBefore(newNode, element.firstChild);
	
	iVal = 0;
	oObj = element;
	var sType = "oObj.offset"+side;
	while (oObj && oObj.tagName != "html") {
		iVal += eval(sType);
		oObj = oObj.offsetParent;
	}
	element.removeChild(newNode);
	return iVal;
}

//donne la position par rapport au premier parent positionné
function getOffsetParentPosition(el_id, side){
	el_parent = document.getElementById(el_id).parentNode;
	var ie = document.all ? true : false;
	while (el_parent) {
		if(!ie){
			if(window.getComputedStyle(el_parent,null).position == "relative" || window.getComputedStyle(el_parent,null).position == "absolute"){
				break;
			}
			else {
				if(el_parent.tagName != "HTML"){
					el_parent = el_parent.parentNode;
				}
				else {
					el_parent = null;
				}
			}
		} else {

			if(el_parent.currentStyle.position == "relative" || el_parent.currentStyle.position == "absolute"){
				break;
			}else {
				if(el_parent.tagName != "HTML"){
					el_parent = el_parent.parentNode;
				}else {
					el_parent = null;
				}
			}
		}
	}
	
	if(el_parent){ parentOffset = getOffsetPosition(el_parent.id, side); }
	else { parentOffset = 0; }
	
	return getOffsetPosition(el_id, side) - parentOffset;
}

function launchHotelsSearch() {
	//on conserve l'id de la ville dans la variable cityCode (utilisée dans le controleur)
	if(trim(document.getElementById("searchCity").value) == "") {
		document.getElementById("searchCity").focus();
		alert("La saisie d'une destination est obligatoire.");
	} else {
		if (trim(document.getElementById("searchCity").value) != ""){ //l'utilisateur a renseigné une ville
			if(trim(document.getElementById("checkIn").value) != "" && trim(document.getElementById("byDayEndDate").value) != "") {
				//suppression des divs de chambres et d'âges masqués
				cleanDivDisplay();
				
				// Lancement de la recherche
				hideElement("contentZone");
				setTimeout("showWaitDisplay()", 200);
				doSubmit();
			} else {
				alert("Veuillez saisir une date de départ et une date d'arrivée.");
			}
		}
	}
}

// **************************************************************************************
// CALENDAR

function ds_on_click_accom(dateType){
	if (dateType == 'inDate' || dateType == 'outDate'){
		updateInDateOrOutDate(dateType,null,null,null,false);
	}
}

