var qdiferencia = -150;
var tMonth = new Array(31,28,31,30,31,30,31,31,30,31,30,31);
var IE = (document.all) ? true : false;
var mac = (navigator.userAgent.indexOf('Mac') != -1)?true:false;
var today = new Date();
var day = today.getDate();
var month = today.getMonth();
var yYear = today.getYear();
if (yYear < 2000) { yYear += 1900; }
var qDiaEsHoy = parseInt(day,10);

var nDays=365;
var fLimite= new Date (today.getTime()+(nDays*3600*24*1000));
var dayLimite = fLimite.getDate();
var monthLimite = fLimite.getMonth();   /*es el mes limite q se puede asignar */
var yearLimite = fLimite.getYear();
if (yearLimite < 2000) { yearLimite += 1900; }

var qDiaEsHoyC;         /*indica el dia q estamos actualmente*/
var qMesEsHoyC;
var mes_today;          /*indica el mes q estamos actualmente*/
var anio_today;         /*indica el a.o en el q nos encontramos*/
var anioSel;
var wCeldas = parseInt((196/7),10);


function isBisiesto(yYear)
{   mod = (yYear%4);
    if (mod == 0)   /* es bisiesto */
        return true;
    return false;
}

function cerrarCalendario() {
    document.getElementById('lCalendar').style.visibility = "hidden";
}


//Funciones para obtener la posicion exacta del objeto.
function getRealLeft(objeto) {
    xPos = objeto.offsetLeft;
    tempEl = objeto.offsetParent;
    while (tempEl != null) {
        xPos += tempEl.offsetLeft;
        tempEl = tempEl.offsetParent; 
    }
    return xPos;
}


function getRealTop(objeto) {
    yPos = objeto.offsetTop;
    tempEl = objeto.offsetParent;
    while (tempEl != null) {
        yPos += tempEl.offsetTop;
        tempEl = tempEl.offsetParent;
    }
    return yPos;
}


function dibujar(qDiaEsHoy, qMesEsHoy, mes, aYear) {   
    qDiaEsHoyC = qDiaEsHoy;
    qMesEsHoyC = qMesEsHoy;

    mes_today = mes;
    anioSel = aYear;
    anio_today = anioSel;
    redibujar(mes);
}


/*
    Function: posInicio
    Descripcion: Nos da la posicion de inicio del mes de 1 para el Luneas a 7 para el Domingo
*/
function posInicio(mes,anio_today) {  
    //Del mes actual cogemos el dia 1
    var posIni = new Date(anio_today, mes, 1);

    //Devolvemos el dia de la semana
    var posicion = parseInt(posIni.getDay(),10);
    if (posicion == 0) 
        return 7;
    else
        return posicion;
}


//Genera el HTML de la Cabecera del calendario.
//Nombre del mes y el año y los enlaces de navegación
function cabeceraCalendario(mes)
{
  var strHTML = '<table width="100%" cellspacing="0" cellpadding="0" border="0">';
  strHTML += '<tr class="head">';

  //Comprobamos si podemos ir hacia atras.
  strHTML += '<td class="nav">';
  if ((mes > month) || (anio_today > yYear))
  {
    strHTML += '<a href="javascript:redibujar('+(mes-1)+')"><img src="/Images/left.gif" alt="&lt;"></a>';
  }
  else
  {
    strHTML += '&nbsp;';
  }
  strHTML += '</td>';

  //Nombre del mes
  strHTML += '<td>'+tMeses[mes] + ' ' + anio_today + '</td>';

  //Comprobamos si podemos ir hacia delante
  //if (dateCald < dateCaldLimit) {
  strHTML += '<td class="nav">';
  if ((mes<monthLimite) || (anio_today < yearLimite))
  {
    strHTML += '<a href="javascript:redibujar('+(mes+1)+')"><img src="/Images/right.gif" alt="&gt;"></a>';
  }
  else
  {
    strHTML += '&nbsp;';
  }
  strHTML += '</td>';
    
  //Cerramos la tabla
  strHTML += '</tr></table>';
  return strHTML;
}


//Dibuja el pie del calendario con el enlace para cerrar
function pieCalendario()
{
  var objCalendar = '<table width="100%" cellspacing="0" cellpadding="0" border="0">';
    objCalendar += '<tr><td class="calPieSep"></td></tr>';
    objCalendar += "</table>";
  return objCalendar;
}

function redibujar(mes)
{
  //Ajustamos el mes de 0..11
  if (mes > 11) { anio_today++; mes = 0; }
  if (mes < 0) { anio_today--; mes = 11; }

  //Actualizamos el formulario ...
  document.fAnuncio.yr.value = anio_today;
  document.fAnuncio.mo.value = mes+1;
    
  //Detrminamos la posicion de inicio del dia 1
  var iFor = posInicio(mes,anio_today);

  //Comprobamos si el mes es bisiesto o no!
  if (isBisiesto(anio_today))
  {
    tMonth[1]=29;
  }
  else 
  {
    tMonth[1] = 28;
  }

  var nfilas = parseInt((tMonth[mes]-(8-iFor))/7+1,10);
  var rfilas = parseInt((tMonth[mes]-(8-iFor))%7,10); /*numero restante de dias a pintar*/
  if (rfilas > 0) { nfilas ++; }

  /*numero de veces q se tiene q repetir*/
  var nVeces = (nfilas*7);
  var cCalendar = '<table border=0 width=100% cellpadding=0 cellspacing=0 class="mainTable">';
  var cDias = 1;

  //Calculemos la fecha de inicio en UnixStyle ;)
  var D = new Date(anio_today, mes, 1);
  var unixInicioDia=Math.floor(D.valueOf() / 86400000);

  var dias = document.fAnuncio.dias.value;
  var primerDia = document.fAnuncio.primerdia.value;

  for (var ind=1;ind<=nVeces;ind++)
  {
    //Inicio de semana?
        if ((ind%7) == 1) 
            cCalendar += '<tr class="weekRow"><td class="calLatSpacer">&nbsp;</td>';

        cCalendar += "<td id='cell"+ind+"' align=center "
        if ( (ind >= iFor) && (cDias <= tMonth[mes]) ) {
            //Hay dia en esta casilla

            if ( 
		//01-01-2010
		((unixInicioDia+cDias)==14610) ||
		//25-12-2010
		((unixInicioDia+cDias)==14709) ||
		//25-12-2010
		((unixInicioDia+cDias)==14968) ||
		((unixInicioDia+cDias)==14969) ||
		((unixInicioDia+cDias)==14975) ||
		((unixInicioDia+cDias)==14976) ||
		((unixInicioDia+cDias)==15086)
		)
                cCalendar += ' class="diaDis">'+ cDias;
            else
                 {
                //Comprobamos si nos pasamos del limite o no!
                if ( (mes==monthLimite) && (anio_today==yearLimite) )
                    {
                    //Cuidado ... estamos en el ultimo mes!
                    if (cDias > dayLimite)
                        {
                        //Nos pasamos del limite lo metemos como inactivo
                        cCalendar += ' class="diaDis">'+ cDias;
                        }
                    else 
                        {
                        //No nos pasamos ... lo ponemos como seleccionable
                        if ((ind%7)==6) { // || (ind%7)==0) {
                            cCalendar += ' onClick="marcaFin(this,'+ (unixInicioDia+cDias) +');"';
                            if (dias.indexOf(""+(unixInicioDia+cDias))!=-1)
                                cCalendar += ' class="diaFinON">';
                            else
                                cCalendar += ' class="diaFinOFF">';
                        }
                        else if ((ind%7)==0) {
                            if (dias.indexOf(""+(unixInicioDia+cDias))!=-1)
                                cCalendar += ' class="diaFinON">';
                            else
                                cCalendar += ' class="diaFinOFF">';
                        }
                        else {
                            cCalendar += ' onClick="marcaDia(this,'+ (unixInicioDia+cDias) +');"';
                            if (dias.indexOf(""+(unixInicioDia+cDias))!=-1)
                                cCalendar += ' class="diaON">';
                            else
                                cCalendar += ' class="diaOFF">';
                        }

                        cCalendar += cDias;
                        }
                    }
                else
                    {
                    if ((mes > monthLimite) && (anio_today >= yearLimite)) {
                        //Nos podemos pasar de largo, o no? Por si acaso
                        cCalendar += ' class="diaDis">'+ cDias;
                    }
                    else {
                        //No nos pasamos ... pero hay que comprobar si estamos en el pasado!
                        //if ( (parseInt(cDias,10)<parseInt(qDiaEsHoyC,10)) && (mes==qMesEsHoyC) && (anio_today==yYear)) {
                        if (primerDia>unixInicioDia+cDias) {
                            //Opps ... es una fecha del pasado.
                            cCalendar += ' class="diaDis">'+ cDias; 
                        }
                        else {
                            //Bueno, por fin tenemos una fecha valida!
                            if ((ind%7)==6) { // || (ind%7)==0) {
                                cCalendar += ' onClick="marcaFin(this,'+(unixInicioDia+cDias)+');"';
                                if (dias.indexOf(""+(unixInicioDia+cDias))!=-1)
                                    cCalendar += ' class="diaFinON">';
                                else
                                    cCalendar += ' class="diaFinOFF">';
                            }
                            else if ((ind%7)==0) {
                                if (dias.indexOf(""+(unixInicioDia+cDias))!=-1)
                                    cCalendar += ' class="diaFinON">';
                                else
                                    cCalendar += ' class="diaFinOFF">';
                            }
                            else {
                                cCalendar += ' onClick="marcaDia(this,'+(unixInicioDia+cDias)+');"';
                                if (dias.indexOf(""+(unixInicioDia+cDias))!=-1)
                                    cCalendar += ' class="diaON">';
                                else
                                    cCalendar += ' class="diaOFF">';
                            }
                            cCalendar += cDias;
                        }
                }
            }
            }
            cDias++;
        }
        else {
            //No hay dia en esta casilla
            cCalendar +=' class="diaEmpty">&nbsp;'; 
        }
        cCalendar +="</td>";

        //Cerramos la fila 
        if ((ind%7) == 0) {
            cCalendar += '<td class="calLatSpacer">&nbsp;</td></tr>';
        }
    }
    cCalendar += "</tr>";
    cCalendar += "</table>";

    var qMuestro =
        cabeceraCalendario(mes) + //Cabecera del mes
        cabeceraDias + //Cabecera de dias de la semana
        cCalendar + //Calendario
        pieCalendario(); //Pie

    document.getElementById('lCalendar').innerHTML = qMuestro;
}

var aux_dia;        /*indica el dia q hemos seleccionado*/
var aux_mes;        /*indica el mes seleccionado*/
var aux_anio;       /*indica el ano seleccionado*/
var vDays; var vMonths; var vtxtDays; var vYears;



function openCalendar()
{
    var lLayer = document.getElementById('lCalendar');
    var cMonth = document.fAnuncio.mo.value-1;
    var cyYear = document.fAnuncio.yr.value; 
    var aux = ""+cMonth;
        
    dibujar( qDiaEsHoy, month, cMonth, cyYear);
}

function getDias(numDias) {
    var diaInicial = parseInt(document.fAnuncio.primerdia.value,10);
    var listaDias = diaInicial;
    for(i=1; i<numDias; i++)
        listaDias = listaDias + ',' + (diaInicial+i*7);
    return listaDias;
}


function anchorCalendario()
{
    var lLayer = document.getElementById('lCalendar');
    var anchorPoint = document.getElementById('calendarioAnchor');

    if ((lLayer) && (anchorPoint))
        {
        anchorPoint.appendChild(lLayer);
        }
}

