//Funcions pel control de dates
function CalendarControlFechas(dataEntrada,dataSortida,nDies)
{
	/*Compara les dates d'entrada i sortida
	Si dataEntrada >= dataSortida retorna la dataEntrada + nDies
	Sino retorna una cadena buida
	*/
	var novaDataSortida = "";
	var dEntrada = new Date();
	var dSortida = new Date();

	dEntrada = DataCurta2Date(dataEntrada);
	dSortida = DataCurta2Date(dataSortida);

	if(dEntrada>=dSortida)
	{
		dSortida = sumDiesToData(dEntrada,nDies);
		novaDataSortida = Date2DataCurta(dSortida);
	}

	return novaDataSortida;
}

function sumDiesToData(oData,nDies)
{
	//Suma nDies a un objecte Date()
	oData.setDate(oData.getDate()+nDies);
	return oData;
}

function Date2DataCurta(oData)
{
	//Transforma un objecte Date() a un string amb format de data curta dd/mm/aaaa
	var dia = "";
	var nMes = 0;
	var any = "";
	var dataCurta = "";

	dia = oData.getDate();
	nMes = oData.getMonth();
	any = oData.getFullYear();
	nMes++;
	dataCurta = dia + "/" + nMes + "/" + any;
	return dataCurta;
}

function DataCurta2Date(data)
{
	var dData = new Date();
	var dataDia = 0;
	var dataMes = 0;
	var dataAny = 0;

	data = data.split("/");
	dataDia = parseInt(data[0],10);
	dataMes = parseInt(data[1],10);
	dataAny = parseInt(data[2],10);
	dataMes--;
	dData.setFullYear(dataAny,dataMes,dataDia);

	return dData;
}

function dataCurta2dataLlarga(fecha)
{
	var dataLlarga = "";
	var nMes = 0;
	arrayFecha = fecha.split("/");
	nDia = parseInt(arrayFecha[0],10);
	nMes = parseInt(arrayFecha[1],10);
	nMes--;
	dataLlarga = nDia + " " + nombreMes[nMes] + " " + arrayFecha[2];

	return dataLlarga;
}

function dataCurtaNoZeros(data)
{
	var dataDia = 0;
	var dataMes = 0;
	var dataAny = 0;
	var dataFormatada = "";

	data = data.split("/");
	dataDia = parseInt(data[0],10);
	dataMes = parseInt(data[1],10);
	dataAny = parseInt(data[2],10);

	dataFormatada = dataDia + "/" + dataMes + "/" + dataAny;
	return dataFormatada;
}

function fechaConZeros(data)
{
	var dataDia = 0;
	var dataMes = 0;
	var dataAny = 0;
	var dataFormatada = "";

	data = data.split("/");

	if (data[0].length==2)dataDia = data[0];
	else dataDia = "0"+data[0];
	  if (data[1].length==2)dataMes = data[1];
	else dataMes = "0"+data[1];

	dataAny = data[2];

	dataFormatada = dataDia + "/" + dataMes + "/" + dataAny;
	return dataFormatada;
}


//Funcions pel CalendarPopup.js
//---------------------------------------------------
//Exemple de DIV per pintar el calendari
//<DIV ID="divCalendar" STYLE="position:absolute;visibility:hidden;background-color:white;z-index:999"></DIV>

var inputTextBox;
var hiddenTextBox;
var functionClose = "";

function ShowCalendar(anchorName,inputName,hiddenName,align,initialDate,disabledDates,closeFunction)
{
/*
anchorName: nom de l'objecte on 's'anclarà' el calendari
inputName: nom del textbox on se visualitzarà la data retornada en format dataLlarga
hiddenName: nom de l'objecte ocult on es guarda la data en format dataCurta
align:
	TR = Top-Right
	TL = Top-Left
	BR = Bottom-Right
	BL = Bottom-Left
initialDate: data inicial on situem el calendari. Si no es rep cap data s'inicialitza amb la data d'avui.
disabledDates: data (no inclosa) a fins a la que tenim les dates desactivades. Si no es rep cap data s'inicialitza amb la data d'avui.
closeFuncion: nom de la funció que s'ha de cridar al tancar el calendari
*/
	//Inicialitzar l'objecte del calendari
	//var cal = new CalendarPopup('divCalendar');
	var detectada = navigator.appVersion.split("MSIE"); //Primero detectamos que se trata de IE en realidad
  var version = parseFloat(detectada[1]);
	if (version <= 6){var cal = new CalendarPopup();}
	else {var cal = new CalendarPopup('divCalendar');}

	cal.setMonthNames(nombreMes[0],nombreMes[1],nombreMes[2],nombreMes[3],nombreMes[4],nombreMes[5],nombreMes[6],nombreMes[7],nombreMes[8],nombreMes[9],nombreMes[10],nombreMes[11]);
	cal.setDayHeaders(nombreDia[0],nombreDia[1],nombreDia[2],nombreDia[3],nombreDia[4],nombreDia[5],nombreDia[6]);
	cal.setTodayText(nombreHoy);
	cal.setWeekStartDay(1);
	//cal.showNavigationDropdowns();
	cal.setReturnFunction("FormatData");

	var now = new Date();

	inputTextBox = document.getElementById(inputName);
	hiddenTextBox = document.getElementById(hiddenName);
	functionClose = closeFunction;
	switch(align)
	{
		case "TR":
			cal.offsetX = 0;
			cal.offsetY = -158;
			break;
		case "TL":
			cal.offsetX = -150;
			cal.offsetY = -158;
			break;
		case "BR":
			cal.offsetX = 0;
			cal.offsetY = 25;
			break;
		case "BL":
			cal.offsetX = -150;
			cal.offsetY = 25;
			break;
		default:
			cal.offsetX = -150;
			cal.offsetY = 25;
			break;
	}

	//Dates
	if(initialDate==null || initialDate=="")
	{
		initialDate = Date2DataCurta(now);
	}

	if(disabledDates!=null && disabledDates!="")
	{
		disabledDates = DataCurta2Date(disabledDates);
	}
	else
	{
		disabledDates = now;
	}
	disabledDates = sumDiesToData(disabledDates,-1);
	disabledDates = formatDate(disabledDates,"yyyy-MM-dd");

	//Convertir initialDate a format "yyyy-MM-dd"
	initialDate = formatDate(DataCurta2Date(initialDate),"yyyy-MM-dd");

	cal.addDisabledDates(null,disabledDates);
	cal.showCalendar(anchorName,initialDate);
}

function FormatData(y,m,d)
{
	var dataCurta = "";
	var dataLlarga = "";

	if(String(d).length<2) d = "0" + d;
	if(String(m).length<2) m = "0" + m;

	dataCurta = d + "/" + m + "/" + y;
	dataLlarga = dataCurta2dataLlarga(dataCurta);
	inputTextBox.value = dataLlarga;
	hiddenTextBox.value = dataCurta;
	if(functionClose!="")
	{
		eval(functionClose).call();
	}
}


//STYLES
//------
//Recollir els styles per defecte
document.write(getCalendarStyles());

/*Exemple del canvi d'estils
These styles are here only as an example of how you can over-ride the default
styles that are included in the script itself. -->

<STYLE>
	.TESTcpYearNavigation,
	.TESTcpMonthNavigation
			{
			background-color:#6677DD;
			text-align:center;
			vertical-align:center;
			text-decoration:none;
			color:#FFFFFF;
			font-weight:bold;
			}
	.TESTcpDayColumnHeader,
	.TESTcpYearNavigation,
	.TESTcpMonthNavigation,
	.TESTcpCurrentMonthDate,
	.TESTcpCurrentMonthDateDisabled,
	.TESTcpOtherMonthDate,
	.TESTcpOtherMonthDateDisabled,
	.TESTcpCurrentDate,
	.TESTcpCurrentDateDisabled,
	.TESTcpTodayText,
	.TESTcpTodayTextDisabled,
	.TESTcpText
			{
			font-family:arial;
			font-size:8pt;
			}
	TD.TESTcpDayColumnHeader
			{
			text-align:right;
			border:solid thin #6677DD;
			border-width:0 0 1 0;
			}
	.TESTcpCurrentMonthDate,
	.TESTcpOtherMonthDate,
	.TESTcpCurrentDate
			{
			text-align:right;
			text-decoration:none;
			}
	.TESTcpCurrentMonthDateDisabled,
	.TESTcpOtherMonthDateDisabled,
	.TESTcpCurrentDateDisabled
			{
			color:#D0D0D0;
			text-align:right;
			text-decoration:line-through;
			}
	.TESTcpCurrentMonthDate
			{
			color:#6677DD;
			font-weight:bold;
			}
	.TESTcpCurrentDate
			{
			color: #FFFFFF;
			font-weight:bold;
			}
	.TESTcpOtherMonthDate
			{
			color:#808080;
			}
	TD.TESTcpCurrentDate
			{
			color:#FFFFFF;
			background-color: #6677DD;
			border-width:1;
			border:solid thin #000000;
			}
	TD.TESTcpCurrentDateDisabled
			{
			border-width:1;
			border:solid thin #FFAAAA;
			}
	TD.TESTcpTodayText,
	TD.TESTcpTodayTextDisabled
			{
			border:solid thin #6677DD;
			border-width:1 0 0 0;
			}
	A.TESTcpTodayText,
	SPAN.TESTcpTodayTextDisabled
			{
			height:20px;
			}
	A.TESTcpTodayText
			{
			color:#6677DD;
			font-weight:bold;
			}
	SPAN.TESTcpTodayTextDisabled
			{
			color:#D0D0D0;
			}
	.TESTcpBorder
			{
			border:solid thin #6677DD;
			}
</STYLE>
*/

