// JavaScript Document
/***
*	ognCalendar
*
*	El constructor requereix cinc para???metres:
*		nDay 				-> Dia del mes de la data d'inicialitzaci? del calendari. (valor 1-31)
*		nMonth				-> Mes de la data d'inicialitzaci? del calendari. (valor 0-11)
*		nYear				-> Any de la data d'inicialitzaci? del calendari. (Any expressat amb quatre d?gits)
*		strURLaction		-> Cadena amb la URL a on es linken ? cadascun dels botons corresponents
*								als dies del calendari.
*		strDateParamName	-> En linkar els botons afegirem a la queryString un par?metre amb el nom 
*								aqu? indicat i amb la data clicada al calendari com a valor
*								El format de la data sera: dd-mm-aaaa
*/

function Calendar(nDay,nMonth,nYear,strURLaction,strDateParamName){
	
	this.dCalendarDate	= new Date(nYear,nMonth,nDay);
	
	this.nInitDay		= nDay;
	this.nInitMonth		= nMonth;
	this.nInitYear		= nYear;
	this.strParamName	= strDateParamName;
	this.strURLaction	= strURLaction;

	this.strHTMLContent	=	'';
	
	this.dCalendarToday = new Date();
  this.nTodayMonth = this.dCalendarToday.getMonth();
  this.nTodayDay = this.dCalendarToday.getDate();
  this.nTodayYear = this.dCalendarToday.getFullYear();
  
  /* primer dia de calendari */
  this.nMinDay = 4;
  this.nMinMonth = 2;
  this.nMinYear = 2002;
	
	this.createCalendar();
	this.redrawCalendar();  
  
   
								
}	

// ** Propietats de clase
	Calendar.aLitMonth= new Array('Enero','Febrero','Marzo','Abril','Mayo','Junio','Julio','Agosto','Septiembre','Octubre','Noviembre','Diciembre');

	

// ** M?todes
	Calendar.prototype.createCalendar=	function(){
		document.write('<div id="ognCalendarDIV" class="element163"></div>');
	};
											


	Calendar.prototype.redrawCalendar=	function(){
	this.strHTMLContent = '<div class="w100c"><div class="element"><div class="element163">';
	this.strHTMLContent += '<div class="barraBot">';
	this.strHTMLContent += '<a href="javascript:oCalendar.drawPrevMonth()" class="ant" title="titol del enllaç">&nbsp;<span class="ocult">Mes anterior</span></a>';
	this.strHTMLContent += '<span class="mes">'+ Calendar.aLitMonth[this.dCalendarDate.getMonth()] +'</span>';
	this.strHTMLContent += '<a href="javascript:oCalendar.drawNextMonth()" class="sig" title="Mes siguiente">&nbsp;<span class="ocult">Mes siguente</span></a>';
	this.strHTMLContent += '<a href="javascript:oCalendar.drawPrevYear()" class="ant" title="Año anterior">&nbsp;<span class="ocult">Año anterior</span></a>';
	this.strHTMLContent += '<span class="any">'+this.dCalendarDate.getFullYear()+'</span>';
	this.strHTMLContent += '<a href="javascript:oCalendar.drawNextYear()" class="sig" title="titol del enllaç">&nbsp;<span class="ocult">Año siguente</span></a>';
	this.strHTMLContent += '</div>';
	this.strHTMLContent += '<div class="capsaBorder">';
	this.strHTMLContent += '<table cellspacing="0" cellpadding="0" border="0" summary="calendario mensual">';
	
	this.strHTMLContent += '<tr class="ocult">';
	this.strHTMLContent += '<th abbr="Lunes">L</th>';
	this.strHTMLContent += '<th abbr="Martes">M</th>';
	this.strHTMLContent += '<th abbr="Miércoles">Mi</th>';
	this.strHTMLContent += '<th abbr="Jueves">J</th>';
	this.strHTMLContent += '<th abbr="Viernes">V</th>';
	this.strHTMLContent += '<th abbr="Sábado">S</th>';
	this.strHTMLContent += '<th abbr="Domingo">D</th>';
	this.strHTMLContent += '</tr>';
	
	//** Posicionem correctament el primer dia del mes (td's en blanc)
	this.strHTMLContent += '<tr>';						
	var nWeekDay	= this.getFirstDayWeekDay();
	var contador=0;
	for(i=0;i<nWeekDay;i++){
		this.strHTMLContent +=	'<td class="previo">&nbsp;</td>';
		contador=contador+1;
	}
	
	for(i=1;i<=this.getLastDay();i++){
		var strClassName= ((i==this.nInitDay)&&(this.dCalendarDate.getMonth()==this.nInitMonth)&&(this.dCalendarDate.getFullYear()==this.nInitYear)) ? 'marcat': 'festa'; /*: 'blau' ;*/
		if (contador>5) {
			contador=0;/*'+ strClassName +'*/
			if ((this.dCalendarDate.getFullYear()>this.nTodayYear) || ((this.dCalendarDate.getFullYear()==this.nTodayYear) && (this.dCalendarDate.getMonth()>this.nTodayMonth)) || ((this.dCalendarDate.getFullYear()==this.nTodayYear) && (this.dCalendarDate.getMonth()==this.nTodayMonth) && (i>this.nTodayDay))) { 
        this.strHTMLContent += '<td class="futur">'+ i +'</td></tr><tr>';
      }
      else if ((this.dCalendarDate.getFullYear()<this.nMinYear) || ((this.dCalendarDate.getFullYear()==this.nMinYear) && (this.dCalendarDate.getMonth()+1<this.nMinMonth)) || ((this.dCalendarDate.getFullYear()==this.nMinYear) && (this.dCalendarDate.getMonth()+1==this.nMinMonth) && (i<this.nMinDay))) {
        this.strHTMLContent += '<td class="futur">'+ i +'</td></tr><tr>';
      }   
      else {
        this.strHTMLContent += '<td class="festa"><a href="'+ this.strURLaction + this.getDateParam(i) +'" >'+ i +'</a></td></tr><tr>';
      } 
      
      

		}
		else{
			
      if ((i==this.nTodayDay)&&(this.dCalendarDate.getMonth()==this.nTodayMonth)&&(this.dCalendarDate.getFullYear()==this.nTodayYear)) strClassName= 'blau'; 
			if ((this.dCalendarDate.getFullYear()>this.nTodayYear) || ((this.dCalendarDate.getFullYear()==this.nTodayYear) && (this.dCalendarDate.getMonth()>this.nTodayMonth)) || ((this.dCalendarDate.getFullYear()==this.nTodayYear) && (this.dCalendarDate.getMonth()==this.nTodayMonth) && (i>this.nTodayDay))) {
        this.strHTMLContent += '<td class="futur">'+ i +'</td>';
      }
      else if ((this.dCalendarDate.getFullYear()<this.nMinYear) || ((this.dCalendarDate.getFullYear()==this.nMinYear) && (this.dCalendarDate.getMonth()+1<this.nMinMonth)) || ((this.dCalendarDate.getFullYear()==this.nMinYear) && (this.dCalendarDate.getMonth()+1==this.nMinMonth) && (i<this.nMinDay))) {
        this.strHTMLContent += '<td class="futur">'+ i +'</td>';
      }   
      else {
        this.strHTMLContent += '<td><a href="'+ this.strURLaction + this.getDateParam(i) +'" class="'+ strClassName +'">'+ i +'</a></td>';
      }
      
			contador=contador+1;
		}
	}
	
	this.strHTMLContent +=	'</tr></table>';
	this.strHTMLContent += '</div></div><hr class="clear grey" /></div></div>';
	
	document.getElementById('ognCalendarDIV').innerHTML	= this.strHTMLContent;
	};       
										
	Calendar.prototype.updateCalendar	=	function(strUpdate){
												switch(strUpdate){
													case 'nextMonth':
														this.dCalendarDate.setMonth(this.dCalendarDate.getMonth()+1);
														break;
														
													case 'prevMonth':
														this.dCalendarDate.setMonth(this.dCalendarDate.getMonth()-1);
														break;
														
													case 'nextYear':
														this.dCalendarDate.setFullYear(this.dCalendarDate.getFullYear()+1);
														break;
													case 'prevYear':
														this.dCalendarDate.setFullYear(this.dCalendarDate.getFullYear()-1);
														break;
												}
											};
										
	Calendar.prototype.drawNextMonth	=	function(){
												this.updateCalendar('nextMonth');
												this.redrawCalendar();
											};
										
	Calendar.prototype.drawPrevMonth	=	function(){
												this.updateCalendar('prevMonth');
												this.redrawCalendar();
											};
										
	Calendar.prototype.drawNextYear		=	function(){
												this.updateCalendar('nextYear');
												this.redrawCalendar();
											};
										
	Calendar.prototype.drawPrevYear		=	function(){
												this.updateCalendar('prevYear');
												this.redrawCalendar();
											};

	Calendar.prototype.getFirstDayWeekDay	= 	function(){												
													var dFirstDay	= new Date(this.dCalendarDate.getFullYear(),this.dCalendarDate.getMonth());
													return((dFirstDay.getDay() + 6) % 7);										
												};
										
	Calendar.prototype.getLastDay		= 	function(){												
												var dLastDay	= new Date(this.dCalendarDate.getFullYear(),this.dCalendarDate.getMonth()+1);
												dLastDay.setHours(dLastDay.getHours()-2);
												return(dLastDay.getDate());										
											};
	
	Calendar.prototype.getDateParam		=	function getDateParam(nDay){

												/*var strReturnDate	= new String(this.pad(nDay) +'-'+ this.pad(this.dCalendarDate.getMonth()+1) +'-'+ this.dCalendarDate.getFullYear());*/
												
												/*var strReturnDate	= new String('p_inidia='+this.pad(nDay) +'&p_inimes='+ this.pad(this.dCalendarDate.getMonth()+1) +'&p_iniany='+ this.dCalendarDate.getFullYear()+'&p_fidia='+this.pad(nDay) +'&p_fimes='+ this.pad(this.dCalendarDate.getMonth()+1) +'&p_fiany='+ this.dCalendarDate.getFullYear());*/
												
												//var strReturnDate	= new String(this.pad(nDay)+','+this.pad(this.dCalendarDate.getMonth()+1)+','+this.dCalendarDate.getFullYear());
												var strReturnDate	= new String(this.pad(nDay)+','+this.pad(this.dCalendarDate.getMonth()+1)+','+this.dCalendarDate.getFullYear());
												
												/*var strReturnParam	= (this.strURLaction.indexOf('?')==-1) ? '?' : '&';
												//strReturnParam		+= this.strParamName +'='+ strReturnDate;
												strReturnParam		+= strReturnDate;*/
												
												//return(strReturnParam);
												return('enviarCercaAjaxData('+strReturnDate+')"');
																								
											};
	Calendar.prototype.pad 				=	function  pad(s){
												return ((''+s).length>1)?s:'0'+s;
											};
										
	
											


