var intIndiceDias, intIndiceMes, intDigDias, intDigMes, strSeparador;

function MostrarCalendario(_controlFechas, 
							_PermitirFechasAPasado, 
							_FechaMinima, 
							_FechaMaxima)
{
	//var MiX = ObtenerPosicionIzq(_controlFechas);
	//var MiY = ObtenerPosicionSup(_controlFechas);
	
	//var diaSeleccionado = _controlFechas.rows[1].cells[0].children[0].value;
	//var mesSeleccionado = _controlFechas.rows[1].cells[1].children[0].value.split('|')[1];
	//var anyoSeleccionado = _controlFechas.rows[1].cells[1].children[0].value.split('|')[2];
	var controlFechas = document.getElementById(_controlFechas.replace(':', '_') + "_DateSelector");
	var IDFrame = _controlFechas + "_CalendarIframe";
	
	var MiX = ObtenerPosicionIzq(controlFechas);
	var MiY = ObtenerPosicionSup(controlFechas);
	
	/*var diaSeleccionado = controlFechas.rows[1].cells[0].children[0].value;
	var mesSeleccionado = controlFechas.rows[1].cells[1].children[0].value.split('|')[1];
	var anyoSeleccionado = controlFechas.rows[1].cells[1].children[0].value.split('|')[2];
	*/
	

	var diaSeleccionado = document.getElementById(_controlFechas.replace(':','_') + "_Days").value;
	var mesSeleccionado = document.getElementById(_controlFechas.replace(':','_') + "_Months").value.split('|')[1];
	var anyoSeleccionado = document.getElementById(_controlFechas.replace(':','_') + "_Months").value.split('|')[2];
	
	var FechaActual = anyoSeleccionado + mesSeleccionado + diaSeleccionado;
	var FechaMaxima = _FechaMaxima;
	var FechaMinima = _FechaMinima;
	
	if ( MiX > 770 )
	{
		// Para que no tengamos que hacer scroll horizontal por culpa del iframe si el control SelectorFechas
		// asociado se encuentra demasiado en el borde derecho de la pantalla.
		document.getElementById(IDFrame).style.left = (MiX + 80) - 175 ; 
		// A la posición x donde vamos a posicionar el iframe le sumamos el tamaño del control SelectorFechas y
		// le restamos el tamaño del iframe (con esto conseguimos que el borde derecho del iframe coincida con
		// el margen derecho de la imagen del SelectorFechas).
	}
	else
	{
		// TODO : Ajustar la posición X del calendario en función del tamaño del textbox.
		document.getElementById(IDFrame).style.left = MiX + 1;
		// El iframe aparece en la alineado a la izquierda del textbox del SelectorFechas asociado.
	}

	// TODO : Ajustar la posición Y del calendario en función del tamaño del textbox.
	document.getElementById(IDFrame).style.top = MiY + 18;
	
	var hide = (document.getElementById(IDFrame).style.visibility=="hidden")?"visible":"hidden";

	document.getElementById(IDFrame).style.visibility = hide;
	
	// JDR 20060117: Se realizan las siguientes conversiones para evitar que se pierdan datos de la fecha.
	// Al recogerse por querystring en Calendario.aspx.cs una fecha del tipo 17/01/2006 llegaba como 17
	/*
	FechaMaxima = FechaMaxima.replace("/", "-");
	FechaMaxima = FechaMaxima.replace("/", "-");
	FechaMinima = FechaMinima.replace("/", "-");
	FechaMinima = FechaMinima.replace("/", "-");
	FechaActual = FechaActual.replace("/", "-");
	FechaActual = FechaActual.replace("/", "-");
	*/
	
	// TODO : Sustituir la url de la página del calendario.
	var sUrl = window.location.protocol + "//" + window.document.domain + 
		"/BarceloHotels/Utilities/Calendario?FechaActual=" + FechaActual + 
		"&PermitirFechasAPasado=" + _PermitirFechasAPasado +
		"&FechaMinima=" + FechaMinima +
		"&FechaMaxima=" + FechaMaxima +
		"&IDSelectorFechas=" + _controlFechas + 
		"&IDFrame=" + IDFrame;
		
	/*window.frames[_IDFrame].location = window.location.protocol + "//" + window.document.domain + 
		"/BarceloHotels/Utilities/Calendario?FechaActual=" + FechaActual + 
		"&PermitirFechasAPasado=" + _PermitirFechasAPasado +
		"&FechaMinima=" + FechaMinima +
		"&FechaMaxima=" + FechaMaxima +
		"&IDSelectorFechas=" + _SelectorFechas.id + 
		"&IDFrame=" + _IDFrame;*/
		
	document.getElementById(IDFrame).setAttribute('src',sUrl);
}

function ObtenerPosicionIzq(object)
{	
	var xPos = object.offsetLeft; 
	var tempEl = object.offsetParent; 
	while (tempEl != null)
	{ 
		xPos += tempEl.offsetLeft; 
		tempEl = tempEl.offsetParent; 
	}
    return xPos;
}

function ObtenerPosicionSup(object)
{	var yPos = object.offsetTop; 
	var tempEl = object.offsetParent; 
	while (tempEl != null) 
	{ 
		yPos += tempEl.offsetTop; 
		tempEl = tempEl.offsetParent; 
	}
    return yPos;
}

function FiltrarSoloNumeros(e, strCodigoSeparador)
{
		if (String.fromCharCode(event.keyCode) != strCodigoSeparador)
		{ 
			if ( ( event.keyCode < 48 ) || ( event.keyCode > 57 ) )
			{
				event.returnValue = false;
			}
		}
}

function validarFecha(_controlFechas)
{
	
	if (parent.document.getElementById("hdNoValidarFechas")) //Para paginas como : GestionReservas, Registro...
	{
		var controlMes = parent.document.getElementById(_controlFechas.id.replace('_DateSelector','_Months'));
		var controlDia = parent.document.getElementById(_controlFechas.id.replace('_DateSelector','_Days'));
		var controlDiaSemana = parent.document.getElementById(_controlFechas.id.replace('_DateSelector','_WeekDay'));
		if ( controlMes.selectedIndex == 0 || controlDia.selectedIndex == 0 )
		{
				controlDiaSemana.value = "";
				_controlFechas.value = "";
				return;
		}
		
		var datosMes = controlMes.options[controlMes.selectedIndex].value;
		
		if ( parseInt(datosMes.split("|")[0]) < parseInt(controlDia.options[controlDia.selectedIndex].text) )
		{
			if ( controlMes.selectedIndex < controlMes.length - 1 )
			{
				controlDia.selectedIndex = 1;
				controlMes.selectedIndex++;
			}
			else
			{
				controlDia.options[datosMes.split("|")[0]].selected = true;
			}
		}
		
		var diaSeleccionado = controlDia.value;
		var mesSeleccionado = controlMes.value.split("|")[1];
		var anyoSeleccionado = controlMes.value.split("|")[2];
		
		var fechaSeleccionada = new Date(anyoSeleccionado, mesSeleccionado - 1, diaSeleccionado);
		controlDiaSemana.value = dayNames[fechaSeleccionada.getDay()];
		_controlFechas.value = ConvierteFechaConSeparadorSegunCultura(diaSeleccionado, mesSeleccionado, anyoSeleccionado);
		
	}
	else
	{
		var controlMes = parent.document.getElementById(_controlFechas.id.replace('_DateSelector','_Months'));
		var controlDia = parent.document.getElementById(_controlFechas.id.replace('_DateSelector','_Days'));
		var controlNoches = parent.document.getElementById(_controlFechas.id.split('_')[0] + "_txtNoches");
		var controlDiaSemana = parent.document.getElementById(_controlFechas.id.replace('_DateSelector','_WeekDay'));
		
		
		var strNombreControl = _controlFechas.id.split('_')[0];
		var IDctrlEntrada = strNombreControl + "_dtpFechaEntrada";
		var IDctrlSalida = strNombreControl + "_dtpFechaSalida";

		
		var controlMesEntrada = parent.document.getElementById(IDctrlEntrada + "_Months");
		var controlDiaEntrada = parent.document.getElementById(IDctrlEntrada + "_Days");
		var controlMesSalida = parent.document.getElementById(IDctrlSalida + "_Months");
		var controlDiaSalida = parent.document.getElementById(IDctrlSalida + "_Days");
		
		
		if ( controlMes.selectedIndex == 0 || controlDia.selectedIndex == 0 )
		{
			//SeleccionarValorDDL(controlMes.id, "");
			//SeleccionarValorDDL(controlDia.id, "");
			_controlFechas.value = ""
			controlDiaSemana.value = "";
			controlNoches.value = "";
			return;
		}
		var datosMes = controlMes.options[controlMes.selectedIndex].value;
		
		if ( parseInt(datosMes.split("|")[0]) < parseInt(controlDia.options[controlDia.selectedIndex].text) )
		{
			if ( controlMes.selectedIndex < controlMes.length - 1 )
			{
				controlDia.selectedIndex = 1;
				controlMes.selectedIndex++;
			}
			else
			{
				controlDia.options[datosMes.split("|")[0]].selected = true;
			}
		}
		
		var diaSeleccionado = controlDia.value;
		var mesSeleccionado = controlMes.value.split("|")[1];
		var anyoSeleccionado = controlMes.value.split("|")[2];
		
		var fechaSeleccionada = new Date(anyoSeleccionado, mesSeleccionado - 1, diaSeleccionado);
		controlDiaSemana.value = dayNames[fechaSeleccionada.getDay()];
		
		ControlaLogicaFechas(_controlFechas);
	}
}

function Noches_onChange(_controlFechas)
{
	var strNombreControl = _controlFechas;
	var IDctrlEntrada = strNombreControl + "_dtpFechaEntrada";
	var IDctrlSalida = strNombreControl + "_dtpFechaSalida";

	
	var controlMesEntrada = parent.document.getElementById(IDctrlEntrada + "_Months");
	var controlDiaEntrada = parent.document.getElementById(IDctrlEntrada + "_Days");
	var controlDiaSemanaEntrada = parent.document.getElementById(IDctrlEntrada + "_WeekDay");
	
	var controlMesSalida = parent.document.getElementById(IDctrlSalida + "_Months");
	var controlDiaSalida = parent.document.getElementById(IDctrlSalida + "_Days");
	var controlDiaSemanaSalida = parent.document.getElementById(IDctrlSalida + "_WeekDay");
	
	var controlNoches = parent.document.getElementById(strNombreControl + "_txtNoches");
	
	if (isNaN(parseInt(controlNoches.value)))
	{
		controlNoches.value = "";
		//calculamos las noches.
		var NumNoches = CalcularNoches(controlDiaEntrada, controlMesEntrada, controlDiaSalida, controlMesSalida);
		if (!isNaN(NumNoches))
		{
			controlNoches.value = NumNoches;
		}
		else
		{
			controlNoches.value = "";
		}
		return;
	}
	if ( parseInt(controlNoches.value) < 1 )
	{
		controlNoches.value = "";
		//calculamos las noches.
		var NumNoches = CalcularNoches(controlDiaEntrada, controlMesEntrada, controlDiaSalida, controlMesSalida);
		if (!isNaN(NumNoches))
		{
			controlNoches.value = NumNoches;
		}
		else
		{
			controlNoches.value = "";
		}
		return;
	}
	
	if ( parseInt(controlNoches.value) > 99 )
	{
		controlNoches.value = "";
		//calculamos las noches.
		var NumNoches = CalcularNoches(controlDiaEntrada, controlMesEntrada, controlDiaSalida, controlMesSalida);
		if (!isNaN(NumNoches))
		{
			controlNoches.value = NumNoches;
		}
		else
		{
			controlNoches.value = "";
		}
		return;
	}
	
	var boolFechaEntradaInformada = FechaInformada(controlDiaEntrada, controlMesEntrada);
	var boolFechaSalidaInformada = FechaInformada(controlDiaSalida, controlMesSalida);
	
	//Fecha entrada tiene preferencia
	if (boolFechaEntradaInformada)
	{
		RecalcularFecha(controlDiaEntrada, controlMesEntrada, controlDiaSalida, controlMesSalida, controlDiaSemanaSalida, controlDiaSemanaEntrada, controlNoches.value);
		controlNoches.value = CalcularNoches(controlDiaEntrada, controlMesEntrada, controlDiaSalida, controlMesSalida);
		return;
	}
	
	if(boolFechaSalidaInformada)
	{
		var noches = parseInt(controlNoches.value) * -1;
		RecalcularFecha(controlDiaSalida, controlMesSalida, controlDiaEntrada, controlMesEntrada, controlDiaSemanaEntrada, controlDiaSemanaEntrada,  noches);
		controlNoches.value = CalcularNoches(controlDiaEntrada, controlMesEntrada, controlDiaSalida, controlMesSalida);
	}
	
	
}

function SeleccionarValorDDL(_objetoID, _valor)
{	
	var objeto = parent.document.getElementById(_objetoID);

	var length = objeto.options.length;

	var i;
	for (i=0;i<length;i++)
	{
		if (objeto.options[i].value == _valor)
		{
			objeto.options[i].selected = true;
		}
	}
}

function UltimoDiaPosible(_objetoID)
{
	var objeto = parent.document.getElementById(_objetoID);
	
	var length = objeto.options.length;
	
	var strUltimo = objeto.options[length-1].value;
	
	var arrFecha = strUltimo.split('|');
	
	return arrFecha;
}

function FechaIncorrecta(_controlDia, _controlMes)
{
	var strNomControl = _controlDia.id.split('_')[0];
	var Mensaje = parent.document.getElementById(strNomControl  + '_hdErrorMsg').value;
	var dtHoy = new Date();
	var strHoy = Formatear_Fecha_A_yyyMMdd(dtHoy);
	
	var fechaSeleccionada = PasarAFecha(_controlDia, _controlMes);

	fechaSeleccionada = Formatear_Fecha_A_yyyMMdd(fechaSeleccionada);
	
	if (fechaSeleccionada < strHoy)
	{
		alert(Mensaje);
		return true;
	}
	else
	{
		return false;
	} 
}

function ControlaLogicaFechas(_controlFechas)
{
	var strNombreControl = _controlFechas.id.split('_')[0];
	
	var controlModificado = _controlFechas.id.split('_')[1];
	
	if (controlModificado.indexOf('Salida')>-1)
	{
		controlModificado = "SALIDA";
	}
	else
	{
		controlModificado = "ENTRADA";
	}
	
	
	var IDctrlEntrada = strNombreControl + "_dtpFechaEntrada";
	var IDctrlSalida = strNombreControl + "_dtpFechaSalida";

	var controlMesEntrada = parent.document.getElementById(IDctrlEntrada + "_Months");
	var controlDiaEntrada = parent.document.getElementById(IDctrlEntrada + "_Days");
	var controlDiaSemanaEntrada = parent.document.getElementById(IDctrlEntrada + "_WeekDay");
	var controlFechasEntrada = parent.document.getElementById(IDctrlEntrada + "_DateSelector");
	
	var controlMesSalida = parent.document.getElementById(IDctrlSalida + "_Months");
	var controlDiaSalida = parent.document.getElementById(IDctrlSalida + "_Days");
	var controlDiaSemanaSalida = parent.document.getElementById(IDctrlSalida + "_WeekDay");
	var controlFechasSalida = parent.document.getElementById(IDctrlSalida + "_DateSelector");
	
	var controlNoches = parent.document.getElementById(_controlFechas.id.split('_')[0] + "_txtNoches");
	
	var boolFechaEntradaInformada = FechaInformada(controlDiaEntrada, controlMesEntrada);
	var boolFechaSalidaInformada = FechaInformada(controlDiaSalida, controlMesSalida);
	
	
	
	if (boolFechaEntradaInformada)
	{
		if (FechaIncorrecta(controlDiaEntrada, controlMesEntrada))
		{
			SeleccionarValorDDL(controlDiaEntrada.id, "");
			SeleccionarValorDDL(controlMesEntrada.id, "");	
			controlDiaSemanaEntrada.value = "";
			controlFechasEntrada.value = "";
			
		}
	}
	if (boolFechaSalidaInformada)
	{
		if (FechaIncorrecta(controlDiaSalida, controlMesSalida))
		{
			SeleccionarValorDDL(controlDiaSalida.id, "");
			SeleccionarValorDDL(controlMesSalida.id, "");
			controlDiaSemanaSalida.value = "";
			controlFechasSalida.value = "";
			
		}
	}
	
	boolFechaEntradaInformada = FechaInformada(controlDiaEntrada, controlMesEntrada);
	boolFechaSalidaInformada = FechaInformada(controlDiaSalida, controlMesSalida);

	if (boolFechaEntradaInformada && boolFechaSalidaInformada)
	{
		var FechaEntrada = Formatear_Fecha_A_yyyMMdd(PasarAFecha(controlDiaEntrada, controlMesEntrada));
		var FechaSalida = Formatear_Fecha_A_yyyMMdd(PasarAFecha(controlDiaSalida, controlMesSalida));
		
		if (FechaSalida <= FechaEntrada)
		{
			//Si la fecha salida es menor o igual a la entrada,
			//recalculamos el valor de la fecha salida añadiendo 1 noche
			if (controlModificado == "ENTRADA")
			{
				RecalcularFecha(controlDiaEntrada, controlMesEntrada, controlDiaSalida, controlMesSalida, controlDiaSemanaSalida, controlDiaSemanaEntrada, 1);
			}
			else
			{
				RecalcularFecha(controlDiaSalida, controlMesSalida, controlDiaEntrada, controlMesEntrada,controlDiaSemanaEntrada, controlDiaSemanaSalida, -1);
				
			}
		}
		else
		{
			var dtEntrada = PasarAFecha(controlDiaEntrada, controlMesEntrada);
			var dtSalida = PasarAFecha(controlDiaSalida, controlMesSalida);
			controlDiaSemanaSalida.value = dayNames[dtSalida.getDay()];
			controlDiaSemanaEntrada.value = dayNames[dtEntrada.getDay()];
			controlFechasEntrada.value = Formatear_Fecha_A_yyyMMdd(PasarAFecha(controlDiaEntrada, controlMesEntrada)); 
			controlFechasSalida.value = Formatear_Fecha_A_yyyMMdd(PasarAFecha(controlDiaSalida, controlMesSalida)); 
		}
	}
	
	//Solo informada la fecha entrada
	if (boolFechaEntradaInformada && !boolFechaSalidaInformada)
	{
		RecalcularFecha(controlDiaEntrada, controlMesEntrada, controlDiaSalida, controlMesSalida, controlDiaSemanaSalida, controlDiaSemanaEntrada, 1);
	}
	//Solo informada la fecha Salida
	if (!boolFechaEntradaInformada && boolFechaSalidaInformada)
	{
		RecalcularFecha(controlDiaSalida, controlMesSalida, controlDiaEntrada, controlMesEntrada,controlDiaSemanaEntrada, controlDiaSemanaSalida, -1);
	}
	
	//calculamos las noches.
	var NumNoches = CalcularNoches(controlDiaEntrada, controlMesEntrada, controlDiaSalida, controlMesSalida);
	if (!isNaN(NumNoches))
	{
		controlNoches.value = NumNoches;
	}
	else
	{
		controlNoches.value = "";
	}
	Noches_onChange(strNombreControl);
}


function CalcularNoches(_controlDiaEntrada, _controlMesEntrada, _controlDiaSalida, _controlMesSalida)
{
	var mseg_dia=1000*60*60*24;
	
	var FechaEntrada = PasarAFecha(_controlDiaEntrada, _controlMesEntrada);
	var FechaSalida = PasarAFecha(_controlDiaSalida, _controlMesSalida);

	//JFP 20070905 - Incidencia por cambio de horario de verano a invierno
	var diferencia_horaria = FechaSalida.getTimezoneOffset() - FechaEntrada.getTimezoneOffset();
	diferencia_horaria = diferencia_horaria * 1000 * 60; //la funció retorna valor en min y queremos mseg
	//var Noches = Math.ceil((FechaSalida.getTime()-FechaEntrada.getTime())/(mseg_dia));
	var Noches = Math.ceil((FechaSalida.getTime()-FechaEntrada.getTime()-diferencia_horaria)/(mseg_dia));

	if (Noches > 99)
	{
		Noches = 99;
	}

	return Noches;
}

function RecalcularFecha(_controlDiaFijo, _controlMesFijo, _controlDiaEdit, _controlMesEdit, _controlDiaSemanaEdit, _controlDiaSemanaFijo , _numNoches)
{
	var controlFechaFijo = parent.document.getElementById(_controlDiaFijo.id.replace('_Days','_DateSelector'));
	var controlFechaEdit = parent.document.getElementById(_controlDiaEdit.id.replace('_Days','_DateSelector'));
	
	var FechaFija = PasarAFecha(_controlDiaFijo, _controlMesFijo);
	var FechaEdit = FechaFija;
	
	FechaEdit.setDate(FechaFija.getDate()+ parseInt(_numNoches));
	FechaFija = PasarAFecha(_controlDiaFijo, _controlMesFijo);
	
	var strFechaEdit = FormatearFechaConSeparador(FechaEdit);
	var arrDate = strFechaEdit.split('_');
	
	var intDia = arrDate[2];
	var intMes = arrDate[1];
	var intAnyo = arrDate[0];
	
	var sMonthYear = getDaysInMonth(intMes, intAnyo) + "|" + intMes + "|" + intAnyo;

	var arrUltimoDia = UltimoDiaPosible(_controlMesEdit.id);
	
	var strUltimoDiaCompare = arrUltimoDia[2] + arrUltimoDia[1] + arrUltimoDia[0];
	
	var sFechaEditCompare = intAnyo + intMes + intDia;

	if (sFechaEditCompare > strUltimoDiaCompare)
	{
		intDia = arrUltimoDia[0];
		sMonthYear = arrUltimoDia[0] + "|" + arrUltimoDia[1] + "|" + arrUltimoDia[2];
		FechaEdit = new Date(arrUltimoDia[2], arrUltimoDia[1] -1, arrUltimoDia[0]);
	}
	
	SeleccionarValorDDL(_controlDiaEdit.id , intDia);
	SeleccionarValorDDL(_controlMesEdit.id, sMonthYear);	
	_controlDiaSemanaEdit.value = dayNames[FechaEdit.getDay()];
	_controlDiaSemanaFijo.value = dayNames[FechaFija.getDay()];
	controlFechaFijo.value = Formatear_Fecha_A_yyyMMdd(PasarAFecha(_controlDiaFijo,_controlMesFijo));
	controlFechaEdit.value = Formatear_Fecha_A_yyyMMdd(PasarAFecha(_controlDiaEdit, _controlMesEdit));
	
	if (FechaIncorrecta(_controlDiaEdit, _controlMesEdit))
	{
		SeleccionarValorDDL(_controlDiaEdit.id , "");
		SeleccionarValorDDL(_controlMesEdit.id, "");
		_controlDiaSemanaEdit.value = "";
		SeleccionarValorDDL(_controlDiaFijo.id , "");
		SeleccionarValorDDL(_controlMesFijo.id, "");
		_controlDiaSemanaFijo.value = "";
		controlFechaFijo.value = "";
		controlFechaEdit.value = "";
	}
}


function FechaInformada(_controlDia, _controlMes)
{
	if ( _controlMes.selectedIndex == 0 || _controlDia.selectedIndex == 0 )	
	{
		return false;
	}
	else
	{
		return true;
	}
}

function Formatear_Fecha_A_yyyMMdd(_objFecha)
{
	var objFecha = new Date();
	objFecha = _objFecha;
	var intAnyo = objFecha.getFullYear();
    var intMes= objFecha.getMonth();
    intMes= intMes +1;
	var strAuxFecha = objFecha.toDateString();
	strDia = strAuxFecha.split(' ')[2];
	var strMes = intMes.toString();
	if (strDia.length == 1)
	{
		strDia = "0" + strDia; 
	}
	if (strMes.length == 1)
	{
		strMes = "0" + strMes;
	}
	var strFecha = intAnyo.toString() + strMes + strDia;	
	return strFecha;
}

function FormatearFechaConSeparador(_objFecha)
{
	// YYYY_MM_DD
	var objFecha = new Date();
	objFecha = _objFecha;
	var intAnyo = objFecha.getFullYear();
    var intMes= objFecha.getMonth();
    intMes= intMes +1;
	var strAuxFecha = objFecha.toDateString();
	strDia = strAuxFecha.split(' ')[2];
	var strMes = intMes.toString();
	if (strDia.length == 1)
	{
		strDia = "0" + strDia; 
	}
	if (strMes.length == 1)
	{
		strMes = "0" + strMes;
	}
	var strFecha = intAnyo.toString() + "_" +  strMes + "_" + strDia;	
	
	return strFecha;
}

function PasarAFecha(_controlDia, _controlMes)
{
	var diaSeleccionado = _controlDia.value;
	var mesSeleccionado = _controlMes.value.split("|")[1];
	var anyoSeleccionado = _controlMes.value.split("|")[2];
	
	var fechaSeleccionada = new Date(anyoSeleccionado, mesSeleccionado - 1, diaSeleccionado);
	
	return fechaSeleccionada;
}

function getDaysInMonth(month, year)
{	
	if (month == 1 || month == 3 || month == 5 || month == 7 || month == 8 || month == 10 || month == 12) 
	{
		return "31";
	} else if (month == 4 || month == 6 || month == 9 || month == 11) 
	{
		return "30";
	} else if (month == 2)
	{
		if (AnyoBisiesto(year) == "Y")
		{
			return "28";
		}
		else
		{
			return "29";
		}
	}
}

function AnyoBisiesto(strAnyo)
{
	var strAnyoBisiesto = "N";
	if ( (strAnyo % 4) == 0 )
	{
		strAnyoBisiesto = "Y";
		if ( (strAnyo % 100) == 0 )
		{
			if ( (strAnyo % 400) !=0 )
			{
				strAnyoBisiesto = "N";
			}
		}
	}
	if ( strAnyoBisiesto == "Y" )
	{
		return true;
	}
	if ( strAnyoBisiesto == "N" )
	{
		return false;
	}
}

function ConvierteFechaConSeparadorSegunCultura(strDia, strMes, strYear)
{
	var strPatron = parent.document.getElementById("hdPatron").value;
	var strSeparador = parent.document.getElementById("hdSeparador").value; 
	
	IdentificarGR(strPatron, strSeparador);
	
	var strFechaOut;

	if ( intIndiceDias < intIndiceMes )
	{
		strFechaOut = strDia + strSeparador + strMes + strSeparador + strYear;
	}
	else
	{
		strFechaOut = strMes + strSeparador + strDia + strSeparador + strYear;
	}
	
    
	return strFechaOut;
	
}
function IdentificarGR(_strFormato, _strSeparador)
{
	strSeparador = _strSeparador;
	var strFormato = _strFormato.split(_strSeparador);
	
	if ( strFormato[0].substr(0, 1).toUpperCase() == "D" )
	{
		intIndiceDias = 0;
		intIndiceMes = 1;
		intDigDias = strFormato[0].length;
		intDigMes = strFormato[1].length;
	}
	else
	{
		intIndiceDias = 1;
		intIndiceMes = 0;
		intDigDias = strFormato[1].length;
		intDigMes = strFormato[0].length;
	}
}