var nMonth = new Array();
var campo = " ";
var formulario = " ";
var desvioX = 0;
var desvioY = 0;

var dDate = new Date();
var mes = dDate.getMonth() + 1;
var dia = dDate.getDate();
var diaDeSemana = dDate.getDay();
var anyo = dDate.getFullYear();
var objPrevElement = new Object();

var anterior = 0;

function initCalendario() {
	for(i=1;i < 13;i++) nMonth[i]=new Array();
	
	nMonth[1][1] = "Gener";
	nMonth[1][2] = "Febrer";
	nMonth[1][3] = "Mar&ccedill;";
	nMonth[1][4] = "Abril";
	nMonth[1][5] = "Maig";
	nMonth[1][6] = "Juny";
	nMonth[1][7] = "Juliol";
	nMonth[1][8] = "Agost";
	nMonth[1][9] = "Setembre";
	nMonth[1][10] = "Octubre";
	nMonth[1][11] = "Novembre";
	nMonth[1][12] = "Desembre";
	
	nMonth[2][1] = "Enero";
	nMonth[2][2] = "Febrero";
	nMonth[2][3] = "Marzo";
	nMonth[2][4] = "Abril";
	nMonth[2][5] = "Mayo";
	nMonth[2][6] = "Junio";
	nMonth[2][7] = "Julio";
	nMonth[2][8] = "Agosto";
	nMonth[2][9] = "Septiembre";
	nMonth[2][10] = "Octubre";
	nMonth[2][11] = "Noviembre";
	nMonth[2][12] = "Diciembre";
	
	nMonth[3][1] = "January";
	nMonth[3][2] = "February";
	nMonth[3][3] = "March";
	nMonth[3][4] = "April";
	nMonth[3][5] = "May";
	nMonth[3][6] = "June";
	nMonth[3][7] = "July";
	nMonth[3][8] = "August";
	nMonth[3][9] = "September";
	nMonth[3][10] = "October";
	nMonth[3][11] = "November";
	nMonth[3][12] = "December";
}

function escribirCalendario(pPath, pPrevious, pNext, pClose) {
	if (!document.frmCalendarSample){	
		pPath = pPath + "/components/calendar/";
		document.writeln('<form name="frmCalendarSample" method="post" action="">');
		document.writeln('<input type="hidden" name="calSelectedDate" value="">');
	    document.writeln('<table border=0 cellpadding=0 cellspacing=0 summary="calendari" width="150" class="sw_calendar_bg_light" style="margin-top:-15px;">');
	     document.writeln('<tr>');			 		 
	      document.writeln('<td class="sw_calendar_bg_middle">');
	       document.writeln('<table border=0 cellpadding=1 cellspacing=2 summary="calendari" width="100%">');
			document.writeln('<tr>');					  		
	         document.writeln('<td class="sw_calendar_bg_middle">');
			  document.writeln('<table border=0 cellpadding=0 cellspacing=0 summary="calendari" width="100%">');					
			   document.writeln('<tr>');
				document.writeln('<td onClick="fUpdateCal(1);" style="cursor:pointer"><img src="'+pPath+'foo.gif" border=0 alt="" hspace="2"></td>');
				document.writeln('<td onClick="fUpdateCal(1);" style="cursor:pointer"><img src="'+pPath+'flechaizq.gif" alt="'+pPrevious+'" border=0></td>');
				 document.writeln('<input type="hidden"  size=3 name="mes" value="" readonly>');										
				 document.writeln('<input type="hidden"  size=4 name="anyo" value="" enabled=false>');
				 document.writeln('<input type="hidden"  size=4 name="dia" value="" enabled=false>');									  
				document.writeln('<td align="center" class="sw_calendar_title" id="fecha" nowrap width=100% onclick="cerrarCalendario()"; style="cursor:pointer" title="'+pClose+'"></td>');
				document.writeln('<td onClick="fUpdateCal(0);" style="cursor:pointer"><img src="'+pPath+'flechader.gif" alt="'+pNext+'" border=0></td>');
				document.writeln('<td onClick="fUpdateCal(0);" style="cursor:pointer"><img src="'+pPath+'foo.gif" border=0 alt="" hspace="2"></td>');
			   document.writeln('</tr>');
			   document.writeln('<tr><td></td></tr>');//<img src="'+pPath+'foo.gif" border=0 alt=""></td></tr>');
			  document.writeln('</table>');
			 document.writeln('</td>');			
			document.writeln('</tr>');
		    document.writeln('<tr>');
			document.writeln('<td class="sw_calendar_white">');		
				
				var dataAux=''.split('/');
				mesAux=dataAux[1];
				anyoAux=dataAux[2];
				var dCurDate = new Date();
				if (dataAux!=null && dataAux.length==3){ 
					dCurDate.setMonth(mesAux-1);
					dCurDate.setYear(anyoAux);
					dCurDate.setDate(1);
				}
				document.frmCalendarSample.mes.value = mes;
				document.frmCalendarSample.anyo.value = anyo;							
				fDrawCal(anyo, mes, 0, 0, "8px", "bold", 2);								
				sombrearCalendari();
				
			 document.writeln('</td>');
			document.writeln('</tr>');
		   document.writeln('</table>');
		  document.writeln('</td>');
		 document.writeln('</tr>');
	    document.writeln('</table>');
	    document.writeln('</form>');
	}
}


 function obrirCalendari(event, camp, formulari, desviamentX, desviamentY)
	{
		campo = camp;
		formulario = formulari;
		desvioX = desviamentX;
		desvioY = desviamentY;
		
		var mesActual = document.frmCalendarSample.mes.value;
		var anyoActual = document.frmCalendarSample.anyo.value;
		
		document.getElementById("fecha").innerHTML= "" + nMonth[2][iMonth] + " " + iYear;
		
		// con este bucle ponemos el calendario otra vez al mes actual
		while (anyo != anyoActual || mes != mesActual)
		{
			if (anyo > anyoActual)
			{
				for(i=0; i<12;i++)
				{
					fUpdateCal(0);
				}
				anyoActual++;
			}
			else if (anyo < anyoActual)
			{
				for(i=0; i<12;i++)
				{
					fUpdateCal(1);
				}
				anyoActual--;
			}
			else
			{
				if (mes > mesActual)
				{
					fUpdateCal(0);
					mesActual++;
				}
				else if (mes < mesActual)
				{
					fUpdateCal(1);
					mesActual--;
				}
			}
		}
		
		fUpdateCal(-1);
		
		
		// Situamos el calendario en la pantalla
		document.getElementById("calendari").style.display = 'block';	
		
		if (document.documentElement.scrollLeft){	
			document.getElementById("calendari").style.left = (event.clientX  + document.documentElement.scrollLeft + desvioX) + "px";
		} else {
			document.getElementById("calendari").style.left = (event.clientX  + document.body.scrollLeft + desvioX) + "px";		
		}
		
		if (document.documentElement.scrollTop){
			document.getElementById("calendari").style.top = (event.clientY - 5 + document.documentElement.scrollTop + desvioY) + "px";
		} else {
			document.getElementById("calendari").style.top = (event.clientY - 5 + document.body.scrollTop + desvioY) + "px";
		}
	}
	
	
	function cerrarCalendario()
	{
		document.getElementById("calendari").style.display = 'none';
		document.getElementById("calendari").style.top = '-300px';
		document.getElementById("calendari").style.left = '-300px';
	}
	
	function fToggleColor(myElement)
	{
		var toggleColor = "#FF0000";
		if (myElement.id == "calDateText")
		{
			if (myElement.style.color == toggleColor)
			{
				myElement.style.color = "";
			}
			else
			{
				myElement.style.color = toggleColor;
			}
		}
		else if (myElement.id == "calCell")
		{
			for (var i in myElement.children)
			{
				if (myElement.children[i].id == "calDateText")
				{
					if (myElement.children[i].style.color == toggleColor)
					{
						myElement.children[i].style.color = "";
					}
					else
					{
						myElement.children[i].style.color = toggleColor;
					}
	        	}
	    	}
		}
	}
	
	
	function fSetSelectedDay(myElement){
		if (myElement.id == "calCell") {
			if (!isNaN(parseInt(myElement.children["calDateText"].innerText))) {
				
				myElement.bgColor = "#c0c0c0";
				objPrevElement.bgColor = "";				
				if (document.all){
					document.all.calSelectedDate.value = parseInt(myElement.children["calDateText"].innerText);
				} else {				
					var e = document.getElementsByName("calSelectedDate");
					for(var i = 0 ; i < e.length ; i++){
						e[i].value = parseInt(myElement.children["calDateText"].innerText);
					}
				}
				objPrevElement = myElement;
			}
		}
	}
	
	
	function fGetDaysInMonth(iMonth, iYear)
	{
		var dPrevDate = new Date(iYear, iMonth, 0);
		return dPrevDate.getDate();
	}
	
	
	function fBuildCal(iYear, iMonth, iDayStyle)
	{
	
		iDayStyle=2;
		var aMonth = new Array();
		
		aMonth[0] = new Array(7);
		aMonth[1] = new Array(7);
		aMonth[2] = new Array(7);
		aMonth[3] = new Array(7);
		aMonth[4] = new Array(7);
		aMonth[5] = new Array(7);
		aMonth[6] = new Array(7);
		
		var dCalDate = new Date(iYear, iMonth-1, 1);
		var iDayOfFirst = dCalDate.getDay()-1;
		iDayOfFirst=(iDayOfFirst==-1)?6:iDayOfFirst;
		
		var iDaysInMonth = fGetDaysInMonth(iMonth, iYear);
		var iVarDate = 1;
		var i, d, w;
		if (iDayStyle == 1) {
		aMonth[0][6] = "Dg";
		aMonth[0][0] = "Dl";
		aMonth[0][1] = "Dm";
		aMonth[0][2] = "Dx";
		aMonth[0][3] = "Dj";
		aMonth[0][4] = "Dv";
		aMonth[0][5] = "Ds";
		} else if (iDayStyle == 2) {
		aMonth[0][6] = "Do";
		aMonth[0][0] = "Lu";
		aMonth[0][1] = "Ma";
		aMonth[0][2] = "Mi";
		aMonth[0][3] = "Ju";
		aMonth[0][4] = "Vi";
		aMonth[0][5] = "Sa";
		} else {
		aMonth[0][6] = "Su";
		aMonth[0][0] = "Mo";
		aMonth[0][1] = "Tu";
		aMonth[0][2] = "We";
		aMonth[0][3] = "Th";
		aMonth[0][4] = "Fr";
		aMonth[0][5] = "Sa";
		}
		
		
		
		
		for (d = iDayOfFirst; d < 7; d++) {
		aMonth[1][d] = iVarDate;
		iVarDate++;
		}
		for (w = 2; w < 7; w++) {
			for (d = 0; d < 7; d++) {
				if (iVarDate <= iDaysInMonth) {
					aMonth[w][d] = iVarDate;
					iVarDate++;
		      	}
		   	}
		}
		return aMonth;
	}
	
	
	function fDrawCal(iYear, iMonth, iCellWidth, iCellHeight, sDateTextSize, sDateTextWeight, iDayStyle) {
		document.frmCalendarSample.mes.value=iMonth;
		document.frmCalendarSample.anyo.value=iYear;		
		
		if(document.all) {
		document.getElementById("fecha").innerHTML= "" + nMonth[2][iMonth] + " " + iYear;
		}
		
		else {
		
		var x = "" + nMonth[2][iMonth] + " " + iYear;
		}
		
		
		var myMonth;
		
		myMonth = fBuildCal(iYear, iMonth, 2);
		
		document.write("<table border=0 cellpadding=1 cellspacing=0 summary='dies' width='100%'>")
		document.write("<tr>");
		document.write("<td class='sw_calendar_normalDay' width='14%' align='right'>" + myMonth[0][0] + "</td>");
		document.write("<td class='sw_calendar_normalDay' width='14%' align='right'>" + myMonth[0][1] + "</td>");
		document.write("<td class='sw_calendar_normalDay' width='14%' align='right'>" + myMonth[0][2] + "</td>");
		document.write("<td class='sw_calendar_normalDay' width='14%' align='right'>" + myMonth[0][3] + "</td>");
		document.write("<td class='sw_calendar_normalDay' width='14%' align='right'>" + myMonth[0][4] + "</td>");
		document.write("<td class='sw_calendar_normalDay' width='14%' align='right'>" + myMonth[0][5] + "</td>");
		document.write("<td class='sw_calendar_normalDay'  align='right'>" + myMonth[0][6] + "</td>");
		document.write("</tr>");
		
		
		for (w = 1; w < 7; w++)
		{
			document.write("<tr id='fila" + w + "'>" );
			for (d = 0; d < 7; d++)
			{
				if (d < 5)
				{
					if (!isNaN(myMonth[w][d]))
					{
						if (myMonth[w][d] == dia)
						{
							if (mes == mes)
							{
								document.write("<td id='dia" + (((7*w)+d)-7) + "' align='right' class='sw_calendar_bg_dark' onclick=fSetSelectedDay(this)>");
							}
							else
							{
								document.write("<td id='dia" + (((7*w)+d)-7) + "' align='right' class='sw_calendar_normalDay' onclick=fSetSelectedDay(this)>");
							}
						}
						else
						{
							document.write("<td id='dia" + (((7*w)+d)-7) + "' align='right' class='sw_calendar_normalDay' onclick=fSetSelectedDay(this)>");
						}
					}
					else
					{
						document.write("<td id='dia" + (((7*w)+d)-7) + "' align='right' class='sw_calendar_normalDay' onclick=fSetSelectedDay(this)>");
				}
					
				} 
				else 
				{
					if (!isNaN(myMonth[w][d]))
					{
						if (myMonth[w][d] == dia)
						{
							if (mes == mes)
							{
								document.write("<td id='dia" + (((7*w)+d)-7) + "'  align='right' class='sw_calendar_bg_dark' onclick=fSetSelectedDay(this)>");
							}
							else
							{
								document.write("<td id='dia" + (((7*w)+d)-7) + "'  align='right' class='sw_calendar_boldDay' onclick=fSetSelectedDay(this)>");
							}
						}
						else
						{
							document.write("<td id='dia" + (((7*w)+d)-7) + "'  align='right' class='sw_calendar_boldDay' onclick=fSetSelectedDay(this)>");
						}
					}
					else
					{
						document.write("<td id='dia" + (((7*w)+d)-7) + "'  align='right' class='sw_calendar_boldDay' onclick=fSetSelectedDay(this)>");
					}
				}
				
				
				if (!isNaN(myMonth[w][d]))
				{ 
					document.write("<div name='calDateText' id='calDateText'><a  href='javascript:enlaceCalendari(" + myMonth[w][d] + ");' class='sw_calendar_normalDay'>" + myMonth[w][d] + " </a></div>");
				}
				else
				{
					document.write("<div name='calDateText' id='calDateText'></div>");
				}
				document.write("</td>")
			}
			document.write("</tr></font>");
		}
		document.write("</table>")
	}
	
	
	function fUpdateCal(tipoMov) {
	
		//1 disminuir fecha 0 aumentar
		iYear = parseInt(document.frmCalendarSample.anyo.value);
		iMonth = parseInt(document.frmCalendarSample.mes.value);
		
		if (tipoMov==0){
			if (iMonth < 12 ) {iMonth = iMonth + 1;}
			else {
				iMonth =  1;
				iYear = iYear + 1;
			}
		}
		if (tipoMov==1){
			if (iMonth > 1 ) {iMonth = iMonth - 1;}
			else {		
				iMonth = 12; 
				iYear = iYear - 1;
			
			}
		}
	
	    numSemana=numeroSemana(dia,mes,anyo);
	
		document.frmCalendarSample.mes.value = iMonth;
		document.frmCalendarSample.anyo.value = iYear;
		document.getElementById("fecha").innerHTML= "" + nMonth[2][iMonth] + " " + iYear;
		
		myMonth = fBuildCal(iYear, iMonth);
		
		objPrevElement.bgColor = "";
						
		if (document.all){
			document.all.calSelectedDate.value = "";
		} else {
			var e = document.getElementsByName("calSelectedDate");
			for(var i = 0 ; i < e.length ; i++){
				e[i].value = "";
			}
		}

		if (!document.all){
			calDateText = document.getElementsByName('calDateText');
		}
		
		if (mes==iMonth && anyo==iYear)
		{
			for (w = 1; w < 7; w++)
			{
				document.getElementById("fila" + w).className="sw_calendar_white";
				for (d = 0; d < 7; d++)
				{
					if (!isNaN(myMonth[w][d]))
					{
						if (myMonth[w][d] == dia)
						{
							calDateText[((7*w)+d)-7].innerHTML ="<a class='sw_calendar_normalDay' href='javascript:enlaceCalendari(" + myMonth[w][d] + ");'>" + myMonth[w][d] +'</a>';
						} 
						else 
						{
							if (d < 5)
							{
								calDateText[((7*w)+d)-7].innerHTML ="<a class='sw_calendar_normalDay' href='javascript:enlaceCalendari(" + myMonth[w][d] + ");'>" + myMonth[w][d] +'</a>';
							}
							else
							{
							
								calDateText[((7*w)+d)-7].innerHTML ="<a class='sw_calendar_boldDay' href='javascript:enlaceCalendari(" + myMonth[w][d] + ");'>" + myMonth[w][d] +'</a>';
							}	
						}
					}
					else
					{
						if (document.all){
							calDateText[((7*w)+d)-7].innerText = " ";
						} else {
							calDateText[((7*w)+d)-7].innerHTML = " ";
						}
					}
			    }
			} 
			document.getElementById("fila" + numSemana).className="sw_calendar_bg_light";
							
			var dCalDate = new Date(anyo, mes-1, 1);
			var iDayOfFirst = dCalDate.getDay()-1;
			iDayOfFirst=(iDayOfFirst==-1)?6:iDayOfFirst;
			
			document.getElementById("dia"+ (dia+iDayOfFirst-1)).className="sw_calendar_bg_dark";				
		}
		else
		{
			for (w = 1; w < 7; w++)
			{
				document.getElementById("fila" + w).className="sw_calendar_white";
				for (d = 0; d < 7; d++)
				{
					if (!isNaN(myMonth[w][d]))
					{
						if(d<5)
						{
							calDateText[((7*w)+d)-7].innerHTML ="<a class='sw_calendar_normalDay' href='javascript:enlaceCalendari(" + myMonth[w][d] + ");'>" + myMonth[w][d] +'</a>';
						}
						else
						{
							calDateText[((7*w)+d)-7].innerHTML ="<a class='sw_calendar_boldDay' href='javascript:enlaceCalendari(" + myMonth[w][d] + ");'>" + myMonth[w][d] +'</a>';
						}
					}
					else
					{	
						if (document.all){
							calDateText[((7*w)+d)-7].innerText = " ";
						} else {
							calDateText[((7*w)+d)-7].innerHTML = " ";
						}
					}
			    }
			}
			
			
			var dCalDate2 = new Date(anyo, mes-1, 1);
			var iDayOfFirst2 = dCalDate2.getDay()-1;
			iDayOfFirst2=(iDayOfFirst2==-1)?6:iDayOfFirst2;
			
			document.getElementById("dia"+ (dia+iDayOfFirst2-1)).className="sw_calendar_normalDay";
		} 
	}
	
	
	function enlaceCalendari (diaSel){
		document.frmCalendarSample.dia.value=diaSel;
		if (diaSel <= 9)
		{
			diaSel = "0"+diaSel;
		}
		mesSel = document.frmCalendarSample.mes.value;
		if (mesSel <= 9)
		{
			mesSel = "0"+mesSel;
		}
		anyoSel = document.frmCalendarSample.anyo.value;
		
		
		document[formulario][campo].value = diaSel+'/'+mesSel+'/'+anyoSel;		
		document.getElementById("calendari").style.display = 'none';
		document[formulario][campo].focus();
		
	}
	
	
	function esPosterior(sdia,smes,sanyo){
		return true;
	}
	
	function sombrearCalendari(){
		iYear=parseInt(document.frmCalendarSample.anyo.value);
		iMonth=parseInt(document.frmCalendarSample.mes.value);	
		if (mes==iMonth && anyo==iYear) {
		//sombreo la semana correspondiente	
	        numSemana=numeroSemana(dia,mes,anyo);  	
				document.getElementById("fila" + numSemana).className="sw_calendar_bg_light";
		}
	}
	
	function numeroSemana(dia,mes,anyo)
	{
	
		var fecha = new Date();
		fecha.setMonth(mes - 1);
		fecha.setYear(anyo);
		fecha.setDate(1);
		diaSemana = fecha.getDay();
		diaSemana=(diaSemana==0)?7:diaSemana;
		return (Math.ceil((diaSemana + dia - 1) / 7) );
	}