﻿/**
 * retorna un element de formulari acabat en un nom.
 */
//function getElement(frm2, name) 
//{	
//	var s;
//	var frm;
//	for (i = 0; i < document.forms.length; i++) 
//	{
//		frm = document.forms[i];
//		for (j = 0; j < frm.length; j++) 
//		{
//			s = frm.elements[j].name;
//			if (s.search(name) != -1) return frm.elements[j];			
//		}
//	}
//}

/**
* Obre la finestra del calendari i passa els textbox de retorn del dia, mes i any
*/
function openCalendar(tbDia, tbMes, tbAny, numData)
{    
  var objDia = getElement(theForm,tbDia);
  var objMes = getElement(theForm,tbMes);
  var objAny = getElement(theForm,tbAny);  
  
  window.open('../pagelets/calendari.aspx?tbDia=' + objDia.name + '&tbMes=' + objMes.name + '&tbAny=' + objAny.name + '&numData=' + numData,'cal','width=240,height=220,left=270,top=180'); 
}


/**
 * Llegeix el camp ocult amb la info de l'idioma
 */
//function getCulture() {
//	var hid;
//	hid = getElement(document.forms[0], "ctl0");
//	if (hid != undefined) {
//		return hid.value;
//	} else {
//		return "undefined";
//	}
//}

/**
 * Deshabilita fecha salida y noches
 */
function disableDateOutNights() {
    getElement(document.forms[0], "selNits").disabled = "disabled";
    getElement(document.forms[0], "selDia2").disabled = "disabled";
    getElement(document.forms[0], "selMes2").disabled = "disabled";
    getElement(document.forms[0], "selAny2").disabled = "disabled";
}

/**
 * Habilita fecha salida y noches
 */
function enableDateOutNights() {
    getElement(document.forms[0], "selNits").disabled = "";
    getElement(document.forms[0], "selDia2").disabled = "";
    getElement(document.forms[0], "selMes2").disabled = "";
    getElement(document.forms[0], "selAny2").disabled = "";
}

/**
 * Asigna un valor a numero de noches
 */
function changeNights(nights) {
    var lbNits = getElement(document.forms[0], "selNits");
    lbNits.selectedIndex = parseInt(nights) - 1;
    canviNits();
}

/*
 * 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.forms[0], "selDia" + itemDate);	
	lbMes = getElement(document.forms[0], "selMes" + itemDate);	
	lbAny = getElement(document.forms[0], "selAny" + itemDate);	

	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(itemDate) {
	// alert(strData(1) + " " + strData(2));
	switch(itemDate)
	{
		case 1:
			if (parseInt(strData(1)) >= parseInt(strData(2))) {
				getElement(document.forms[0], "selAny2").selectedIndex = getElement(document.forms[0], "selAny1").selectedIndex;
				refreshDay(2, 2);
				getElement(document.forms[0], "selMes2").selectedIndex = getElement(document.forms[0], "selMes1").selectedIndex;
				refreshDay(2, 1);
				getElement(document.forms[0], "selDia2").selectedIndex = getElement(document.forms[0], "selDia1").selectedIndex;

				//S'activa una nit.
				try {
    				getElement(document.forms[0], "selNits").selectedIndex = 0;
				} catch (err) {}
				canviNits();		
			}
			break;
		case 2:
			if (parseInt(strData(1)) >= parseInt(strData(2))) {
				var Data1 = parseInt(strData(2)) - 1;
				var sData1 = Data1.toString();
				var sData2 = strData(2);
				var Dia1 = sData1.substring(6,8);
				var Mes1 = sData1.substring(4,6);
				var Any1 = sData1.substring(0,4);
				var Dia2 = sData2.substring(6,8);
				var Mes2 = sData2.substring(4,6);
				var Any2 = sData2.substring(0,4);
				
				if (Dia1=='00')
				{
					Mes1 = (parseInt(Mes1)-1).toString();
					if (Mes1=='00')
					{
						Mes1 = '12';
					}
					Dia1 = daysInMonth(parseInt(Any1),parseInt(Mes1));
				}
				if ((Any1!=Any2) && (Mes1!=Mes2))
				{
					if (parseInt(Dia1)>daysInMonth(parseInt(Any1),parseInt(Mes1))) Dia1 = daysInMonth(Any1, Mes1).toString();
				}
				else
				{
					if (Mes1!=Mes2)
					{
						if (parseInt(Dia1)>daysInMonth(parseInt(Any1),parseInt(Mes1))) Dia1 = daysInMonth(Any1, Mes1).toString();
					}
				}

				getElement(document.forms[0], "selAny1").value = Any1;
				refreshDay(1, 2);
				getElement(document.forms[0], "selMes1").selectedIndex = parseInt(Mes1) - 1;
				refreshDay(1, 1);
				getElement(document.forms[0], "selDia1").selectedIndex = parseInt(Dia1) - 1;
				
				//S'activa una nit.
				try {
    				getElement(document.forms[0], "selNits").selectedIndex = 0;
				} catch (err) {}
				canviNits();		
			}
			break;
	}
}

/**
 * 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.
    try {
    	any1 = parseInt(getElement(document.forms[0], "selAny1").value);
	    deltaAny = parseInt(getElement(document.forms[0], "selAny2").value) - any1;
	    if (deltaAny >= 0) 
	    {	
		    mes1 = getElement(document.forms[0], "selMes1").selectedIndex + 1;		
		    deltaMes = getElement(document.forms[0], "selMes2").selectedIndex + 1 - mes1;
		    deltaMes = deltaMes + (12 * deltaAny);
	    } 
	    else getElement(document.forms[0], "selNits").selectedIndex = 0;
	
	    if (deltaMes >= 0) 
	    {
		    dia1 = getElement(document.forms[0], "selDia1").selectedIndex + 1;		
		    deltaDia = getElement(document.forms[0], "selDia2").selectedIndex + 1 - dia1;
		    multiplicadorMes = daysInMonth(any1, mes1);
		    deltaDia = deltaDia + (multiplicadorMes * deltaMes);
		
		    var hdDiasNoches = getElement(document.forms[0], "hdDiasNoches");
		    if (hdDiasNoches != undefined)
		    {
		        if (hdDiasNoches.value == "d") deltaDia = deltaDia + 1;
		    }
		
	    }  
	    else getElement(document.forms[0], "selNits").selectedIndex = 0;	
	
	    if ((deltaDia >= 0) && (deltaDia <= 30)) getElement(document.forms[0], "selNits").selectedIndex = deltaDia - 1;
	    else getElement(document.forms[0], "selNits").selectedIndex = 0;
    } catch(err) {
//        alert("error: " + err);
    }	
}

/**
 * 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.forms[0], "selDia1").value) + parseInt(getElement(document.forms[0], "selNits").value);
    try {
    	dia2 = getElement(document.forms[0], "selDia1").selectedIndex + 1 + getElement(document.forms[0], "selNits").selectedIndex + 1;
    } catch (err) {
    	dia2 = getElement(document.forms[0], "selDia1").selectedIndex + 1 + 1; //Sumem 1 nit si el combo nit no hi es    
    }
	// mes1 = parseInt(getElement(document.forms[0], "selMes1").value);
	mes1 = getElement(document.forms[0], "selMes1").selectedIndex + 1;
	any1 = parseInt(getElement(document.forms[0], "selAny1").value);
	excesDies = dia2 - daysInMonth(any1, mes1);				
			
	if (excesDies > 0) 
	{
		if (mes1 == 12) 
		{			
			mes1 = 0;
			getElement(document.forms[0], "selAny2").selectedIndex = getElement(document.forms[0], "selAny1").selectedIndex + 1;
		} 
		else 
		{
			getElement(document.forms[0], "selAny2").selectedIndex = getElement(document.forms[0], "selAny1").selectedIndex;
		}
		getElement(document.forms[0], "selMes2").selectedIndex = mes1;
		getElement(document.forms[0], "selDia2").selectedIndex = excesDies - 1;
	} 
	else 
	{
		getElement(document.forms[0], "selDia2").selectedIndex = dia2 - 1;
		getElement(document.forms[0], "selMes2").selectedIndex = mes1 - 1;		
		getElement(document.forms[0], "selAny2").selectedIndex = getElement(document.forms[0], "selAny1").selectedIndex;
	}		
}

/**
 * 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.forms[0], "selDia" + String(item)).value;
	// alert(dia);
	mes = getElement(document.forms[0], "selMes" + String(item)).value;
	//alert(mes);
	any = getElement(document.forms[0], "selAny" + String(item)).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 "";
}
