//Funcions pel control de dates
function CalendariControlDates(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 + " " + calMes[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;
}

//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');
	cal.setMonthNames(calMes[0],calMes[1],calMes[2],calMes[3],calMes[4],calMes[5],calMes[6],calMes[7],calMes[8],calMes[9],calMes[10],calMes[11]);
	cal.setDayHeaders(calDia[0],calDia[1],calDia[2],calDia[3],calDia[4],calDia[5],calDia[6]);
	cal.setTodayText(calAvui);
	cal.setWeekStartDay(1);
	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>
*/

