 /****************************************************************************************
 * 
 * FUNCIONES COMUNES PARA SNIPPETS.
 *
 * 1/ Funcionalidad:
 *    -> Contiene todas las funciones útiles para generar urls para los snippets.
 * 
 * 2/ Requisitos:
 *    -> Tiene las dependencias del js relacionado en cada función. 
 *
 * 3/ Ejemplo de utilizacion:
 *	  -> 
 *
 * 4/ Versiones 
 *    -> Fichero: 0.0.1
 *    -> API: 0.0.1
 *
 ****************************************************************************************/


/************************************** CONSTANTS ***************************************/
var ID_LANGUAGE = 'language';
var ID_PROMOTION = 'promotion';
var ID_RATE = 'rate';
var DEFAULT_LANGUAGE = 'en';
var DEFAULT_PROMOTION = '';
var DEFAULT_RATE = '10';
var URL_NEW_PARAMETER = '&';
var URL_ASSIGN = "=";
var URL_SEARCH_ACTION = '?action=search';
var URL_SEARCH_LAUNCHER = URL_NEW_PARAMETER + 'searchLauncher=promo';

function getURLData(data) {
	return URL_NEW_PARAMETER + data + URL_ASSIGN; 
}
var URL_RATE = getURLData('rate');
var URL_PROMOTION = getURLData('idpromo');
var URL_FROM_DATE = getURLData('fini');
var URL_TO_DATE = getURLData('fout');
var URL_MAX_PRICE = getURLData('maxPrice');
var URL_HOTEL_ID = getURLData('hotelId');

/******************************* OTHERS VARIABLE ***************************************/
var jsHotelRates = null;

/************************************** FUNCTIONS ***************************************/
/*
 *	Get the language from input hidden.
 */
function getLanguage() {
	return getData(ID_LANGUAGE, DEFAULT_LANGUAGE);
}

/*
 *	Get the promotion from input hidden.
 */
function getPromotion() {
	return getData(ID_PROMOTION, DEFAULT_PROMOTION);
}

/*
 *	Get the rate from input hidden.
 */
function getRate() {
	return getData(ID_RATE, DEFAULT_RATE);
}

/*
 *	Get generic data from input hidden search by id and with default value if it was neccessary.
 */
function getData(id, defaultValue) {
	var input = get(id);
	if (input != null)
		return input.value;
	return defaultValue;
}

/*
 *	Get the url fragment for id promotion.
 * Parameter idPromo is optional.
 */
function getURLPromotion(idPromo) {
	if(idPromo != null)	return URL_PROMOTION + idPromo;
	return URL_PROMOTION + getPromotion();
}

/*
 *	Get the url fragment for id rate.
 */
function getURLRate() {
	return URL_RATE + getRate();
}

/*
 *	Get the url fragment for rooming.
 */
function getURLRooming() {
	var distribution = '';
	for (var i = 1; i <= MAX_ROOMS; i++) {
		var nAdults = get(getAdultElementIdFromPrefix(DEFAULT_ROOM_ELEMENT_ID, i));
		var nChilds = get(getChildElementIdFromPrefix(DEFAULT_ROOM_ELEMENT_ID, i));
		if (nAdults == null || nChilds == null) break;  
		distribution += URL_NEW_PARAMETER + "nadults" + i + URL_ASSIGN + nAdults.value;
		distribution += URL_NEW_PARAMETER + "nchilds" + i + URL_ASSIGN + nChilds.value;
	}
	return distribution;
}

/*
 *	Get the url fragment for from date.
 */
function getURLFromDate(value) {
	return URL_FROM_DATE + value;
}

/*
 *	Get the url fragment for to date.
 */
function getURLToDate(value) {
	return URL_TO_DATE + value;
}

/*
 *	Get the url fragment for search launcher.
 */
function getURLSearchLauncher() {
	return URL_SEARCH_LAUNCHER;
}

/*
 *	Get the url fragment for search action.
 */
function getURLSearchAction() {
	return URL_SEARCH_ACTION;
}

/*
 *	Get the url fragment for max price.
 */
function getURLMaxPrice(value) {
	return URL_MAX_PRICE + value;
}

/*
 * Get the promo for selected hotel in SELECT hotelElementId
 * Requiered jsHotelRates array: jsHotelRates = {{hotelId,promoId},{hotelId,promoId}...}
 * If you not find the hotel returns DEFAULT_PROMOTION
 */
function getPromoOfHotel(hotelElementId){
	if((jsHotelRates == null) || (jsHotelRates.length == 0)){
		alert('jsHotelRates must be declared and have at least one element');
		return;
	}
	var hotel = getValue(hotelElementId);
	for(i=0; i<jsHotelRates.length; i++){
		var hotelRate = jsHotelRates[i];
		if(hotelRate[0] == hotel) return hotelRate[1];
	}
	return DEFAULT_PROMOTION;
}

 /*
  * Get context path for booking (OBE) with parameter language
  */
function getURLBooking(){
	return BOOKING_URL;
}

/*
 * Get the url fragment for id hotel.
 */
function getURLHotelId(hotelId){
	return URL_HOTEL_ID + hotelId;
}