/**
 * retorna un element de formulari acabat en un nom.
 */
function getElement(frm, name) {
	var i;
	var s;
	for (i = 0; i < frm.length; i++) {
		s = frm.elements[i].name;
		if (s.search(name) != -1) {
			return frm.elements[i];
		}
	}
}

/**
 * Llegeix el camp ocult amb la info de l'idioma
 */
function getCulture() {
	var hid;
	hid = getElement(document.afpForm, "ctl0");
	if (hid != undefined) {
		return hid.value;
	} else {
		return "undefined";
	}
}

/*
 * Canviar el numero de dies del combo
 * @param itemDate diu quina de les dues dates ha canviat (1 o 2)
 * @param 
 */
function refreshDay(itemDate, itemChanged) {
	var lbDia;
	var lbMes;
	var lbAny;
	var dia;
	var mes;
	var any;
	var i;
	lbDia = getElement(document.afpForm, itemDate + "day");	
	lbMes = getElement(document.afpForm, itemDate + "month");	
	lbAny = getElement(document.afpForm, itemDate + "year");	

	any = parseInt(lbAny.value);
	dia = lbDia.selectedIndex + 1;
	mes = lbMes.selectedIndex + 1;

	if ((itemChanged == 1) || ((itemChanged == 2) && (mes == 2)))  {
		clearList(lbDia);
		for (i = 1; i <= daysInMonth(any, mes); i++) {
			addListItem(lbDia, i, false);
		}
		if (dia <= lbDia.length) {
			lbDia.selectedIndex = dia - 1;
		} else {
			lbDia.selectedIndex = lbDia.length - 1;
		}
	}
}


/**
 * Posa un kit de data a una data concreta.
 */
function setLbDate(data, lbDay) {
	var lbDia, lbMes, lbAny;
	var index, any;
	var dt;
	index = indexOf(lbDay);
	lbDia = lbDay;		// ListBox dia
	lbMes = lbDay.form.elements[index + 1];	// ListBox mes
	lbAny = lbDay.form.elements[index + 2];	// ListBox any
	
	// Posem l'any
	any = data.getFullYear();
}

/**
 * Diu quants dies té un mes, donats el mes i l'any.
 */
function daysInMonth(year, month) {
	switch (month) {
		case 4 :
			return 30;
			break;
		case 6 :
			return 30;
			break;
		case 9 :
			return 30;
			break;
		case 11 :
			return 30;
			break;
		case 2 :
			if ((year % 4) == 0) {
				return 29;
			} else {
				return 28;
			}
			break;
		default :
			return 31;
			break;
	}
}

function addListItem(list, value, selected) {
	var pos = list.length;
	list.options[list.length] = new Option();
	if (value >= 10) {
		list.options[pos].text = value;
		list.options[pos].value = value;
	} else {
		list.options[pos].text = "0" + String(value);
		list.options[pos].value = "0" + String(value);
	}
	if (selected == true) {
		list.options[pos].selected = true;
	} else {
		list.options[pos].selected = false;
	}
}

function clearList(list) {
	if (list != null) {
		do {
	 		list.options[0] = null;
		} while (list.length != 0);
	}						
}

function indexOf(item) {
	var i;
	for (i = 0; i < item.form.elements.length; i++) {
		if (item.form.elements[i] == item) {
			return i;
		}
	}
}

/**
 * Copia dades de la data1 a la data2.
 */
function copyDate() {
	// alert(strData(1) + " " + strData(2));
	if (parseInt(strData('out')) > parseInt(strData('ret'))) {
		getElement(document.afpForm, "retyear").selectedIndex = getElement(document.afpForm, "outyear").selectedIndex;
		refreshDay('ret', 2);
		getElement(document.afpForm, "retmonth").selectedIndex = getElement(document.afpForm, "outmonth").selectedIndex;
		refreshDay('ret', 1);
		getElement(document.afpForm, "retday").selectedIndex = getElement(document.afpForm, "outday").selectedIndex;
	}
}

/**
 * A partir de les caselles de les dates, actualitza la casella de numero de nits.
 */
function setNits() {
	var deltaAny;
	var deltaMes;
	var deltaDia;
	var multiplicadorMes;
	var dia1;
	var mes1;				// per poder calcular el multiplicador del mes.
	var any1;				// per poder calcular el multiplicador del mes.
	any1 = parseInt(getElement(document.afpForm, "outyear").value);
	deltaAny = parseInt(getElement(document.afpForm, "retyear").value) - any1;
	if (deltaAny >= 0) {
		// mes1 = parseInt(getElement(document.afpForm, "outmonth").value);
		mes1 = getElement(document.afpForm, "outmonth").selectedIndex + 1;
		// deltaMes = parseInt(getElement(document.afpForm, "retmonth").value) - mes1;
		deltaMes = getElement(document.afpForm, "retmonth").selectedIndex + 1 - mes1;
		deltaMes = deltaMes + (12 * deltaAny);
	} else {
		getElement(document.afpForm, "nights").selectedIndex = 0;
	} 
	if (deltaMes >= 0) {
		dia1 = getElement(document.afpForm, "outday").selectedIndex + 1;
		// alert(dia1);
		deltaDia = getElement(document.afpForm, "retday").selectedIndex + 1 - dia1;
		multiplicadorMes = daysInMonth(any1, mes1);
		deltaDia = deltaDia + (multiplicadorMes * deltaMes);
	}  else {
		getElement(document.afpForm, "nights").selectedIndex = 0;
	}
	if ((deltaDia >= 0) && (deltaDia <= 30)) {
		getElement(document.afpForm, "nights").selectedIndex = deltaDia;
	} else {
		getElement(document.afpForm, "nights").selectedIndex = 0;
	}
}

/**
 * Actualitza la Data2 quan es canvia el numero de nits
 */
function canviNits() {
	var excesDies;
	var dia2;
	var mes1;
	var any1;
	var anyBase;
	// dia2 = parseInt(getElement(document.afpForm, "outday").value) + parseInt(getElement(document.afpForm, "nights").value);
	dia2 = getElement(document.afpForm, "outday").selectedIndex + 1 + getElement(document.afpForm, "nights").selectedIndex;
	// mes1 = parseInt(getElement(document.afpForm, "outmonth").value);
	mes1 = getElement(document.afpForm, "outmonth").selectedIndex + 1;
	any1 = parseInt(getElement(document.afpForm, "outyear").value);
	excesDies = dia2 - daysInMonth(any1, mes1);		
			
	if (excesDies > 0) {
		if (mes1 == 12) {			
			// mes1 = 1;
			// getElement(document.afpForm, "retyear").selectedIndex = any1 - 2003;
			mes1 = 0;
			getElement(document.afpForm, "retyear").selectedIndex = getElement(document.afpForm, "outyear").selectedIndex + 1;
			
		}
		getElement(document.afpForm, "retmonth").selectedIndex = mes1;
		getElement(document.afpForm, "retday").selectedIndex = excesDies - 1;
	} else {
		getElement(document.afpForm, "retday").selectedIndex = dia2 - 1;
		getElement(document.afpForm, "retmonth").selectedIndex = mes1 - 1;		
	}		
}

/**
 * Retorna string amb la data en format AAAAMMDD
 * @param item - Si 1 es la data1, si 2 es la data2
 */
function strData(item) {
	var dia;
	var mes;
	var any;
	dia = getElement(document.afpForm, String(item) + "day").value;
	// alert(dia);
	mes = getElement(document.afpForm, String(item) + "month").value;
	//alert(mes);
	any = getElement(document.afpForm, String(item) + "year").value;
	return any + mes + dia;
}

/**
 *  
 */
function DgetMessage(msgId) {
	switch (getCulture()) {
		case "fr" :
			if (msgId == 1) return "Ecrivez l'identifiant de la réservation.";
			if (msgId == 2) return "Specifiez les modifications.";
			if (msgId == 3) return "Il manque le numéro de la reservation.";
			break;
		case "en" :
			break;
		case "ca" :
			break;
	}
	if (msgId == 1) return "Escriba el localizador de la reserva.";
	if (msgId == 2) return "Escriba las modificaciones.";
	if (msgId == 3) return "Escriba el localizador de la reserva.";
	return "";
}
 

