/**
 * José A. Romero Vegas, 2006
 * jangel.romero@gmail.com
 */

var nWidth  = 27;
var nHeight = 16;
var listMonthNames = new Array("enero", "febrero", "marzo", "abril", "mayo", "junio", "julio", "agosto", "septiembre", "octubre", "noviembre", "diciembre");

//-------------------------------------
var ns6 = document.getElementById && !document.all;
var nCurrentYear  = 0;
var nCurrentMonth = 0;
var leftX; var rightX
var topY;  var bottomY;
var inputFecha;
var dateHoy = new Date();

//------------------------------------------------------------------------------
function Calendar(inputDate, btCalendario) {
  inputFecha = inputDate;
  
  // Lista de días
  var listDias = '';
  for(var date=1; date <= 31; date++) {
    listDias += '<a href="#" id="idDate'+date+'" val="'+date+'" class="numeroDia" onclick="insertDate(\''+date+'\');closeCalendar()">'+
                  date+
                '</a>';
  }

  var HTMLstr =
    '<a href="javascript:closeCalendar()" class="btCerrar">Cerrar</a>'+

    '<table class="cabecera" cellpadding="0" cellspacing="0"><tr>'+
      '<td><a href="javascript:prevMonth()" class="btAvanzar">&laquo;</a></td>'+
      '<td class="mesSelected" id="main2">MES</td>'+
      '<td><a href="javascript:nextMonth()" class="btAvanzar">&raquo;</a></td>'+
      '<td style="width:13px"></td>'+
      '<td><a href="javascript:prevYear()" class="btAvanzar">&laquo;</a></td>'+
      '<td class="yearSelected" id="main">YEAR</td>'+
      '<td><a href="javascript:nextYear()" class="btAvanzar">&raquo;</a></td>'+
    '</tr></table>'+

    '<table class="nombresDias" cellpadding="0" cellspacing="0"><tr>'+
      '<td><div>lun</div></td><td><div>mar</div></td><td><div>mie</div></td><td><div>jue</div></td><td><div>vier</div></td><td><div>sab</div></td><td><div>dom</div></td>'+
    '</tr></table>'+
    
    '<div class="numerosDias">'+
      listDias +
    '</div>'
    ;

  //-----------------
  var capaCalendar = document.getElementById('capaCalendar');
  capaCalendar.innerHTML = HTMLstr;

  //--------
  setCurrentMonth();

  situarCalendario(capaCalendar, btCalendario);
  capaCalendar.style.display = '';
}
//------------------------------------------------------------------------------
function closeCalendar() {
  var capaCalendar = document.getElementById('capaCalendar');
  //capaCalendar.innerHTML = '';
  capaCalendar.style.display = 'none';
}
//------------------------------------------------------------------------------
function insertDate(diaSelect) {
  var mesSelect = nCurrentMonth;
  if(diaSelect < 10) diaSelect = '0'+diaSelect;
  if(mesSelect < 10) mesSelect = '0'+mesSelect;
  
  var fechaSelect = diaSelect+'/'+mesSelect+'/'+nCurrentYear;
  var obj = document.getElementById(this.inputFecha);
  obj.value = fechaSelect;
}
//------------------------------------------------------------------------------
function situarCalendario(capaCalendar, btCalendario) {
  var popCtrl  = document.getElementById(btCalendario);
  var point    = fGetXY(popCtrl);
  var altoVentana = 360;

  with(capaCalendar.style) {
     left = point.x + popCtrl.offsetWidth + 1;
     if(point.y + capaCalendar.offsetHeight >= altoVentana) {
        top = point.y - capaCalendar.offsetHeight + popCtrl.offsetHeight + 2;
     } else {
        top = point.y;
     }
     visibility = 'visible';
  }
  //capaCalendar.focus();
}
//------------------------------------------------------------------------------
function fGetXY(aTag){
  var oTmp = aTag;
  var pt = new Point(0,0);
  do {
     pt.x += oTmp.offsetLeft;
     pt.y += oTmp.offsetTop;
     oTmp = oTmp.offsetParent;
  } while(oTmp.tagName != "BODY");

  return pt;
}
function Point(iX, iY){
  this.x = iX;
  this.y = iY;
}
//----------------------------------------------------------------------
function setCurrentMonth() {
  date = new Date();
  currentyear = date.getYear()
  if (currentyear < 1000) {
    currentyear += 1900;
  }
  setYearMonth(currentyear, date.getMonth()+1);
}
//------------------------------------------------------------------------------
function setMonth(nMonth) {
   setYearMonth(nCurrentYear, nMonth);
}
//------------------------------------------------------------------------------
function setYearMonth(nYear, nMonth) {
  nCurrentYear  = nYear;
  nCurrentMonth = nMonth;
  var cross_obj  = ns6? document.getElementById("main"): document.all["main"]
  var cross_obj2 = ns6? document.getElementById("main2"): document.all["main2"]
  cross_obj.innerHTML  = nCurrentYear;
  cross_obj2.innerHTML = listMonthNames[nCurrentMonth-1];

  var date   = new Date(nCurrentYear, nCurrentMonth-1, 1);
  var nWeek  = 1;
  var nDate;

  while (date.getMonth() == nCurrentMonth-1) {
    nDate = date.getDate();
    nLastDate = nDate;

    var posDay = date.getDay()-1;
    if (posDay == -1) posDay=6;
    var posLeft = posDay*(nWidth+3);
    var posTop  = (nWeek-1)*nHeight;

    var cross_obj3 = ns6? document.getElementById("idDate"+nDate).style : document.all["idDate"+nDate].style
    cross_obj3.left = posLeft;
    cross_obj3.top  = posTop;
    
    if (date.getDay() == 0 || date.getDay() == 6) {
       cross_obj3.color  = "#DD0000";
    } else {
       cross_obj3.color  = "#000";
    }
    
    // Hoy
    if ((dateHoy.getDate() == date.getDate()) && (dateHoy.getMonth() == (nCurrentMonth-1))) {
       cross_obj3.color  = "#00E";
    } else {
    }
    
    cross_obj3.visibility = "visible";
    // original:
    // date = new Date(currentyear, date.getMonth(), date.getDate()+1);
    date = new Date(nCurrentYear, date.getMonth(), date.getDate()+1);

    if (posDay == 6) nWeek++;
  }
  
  for (++nDate; nDate <= 31; nDate++) {
    cross_obj3 = ns6? document.getElementById("idDate"+nDate).style : document.all["idDate"+nDate].style
    cross_obj3.visibility = "hidden";
  }
}
//------------------------------------------------------------------------------
function nextMonth() {
  nCurrentMonth++;
  if (nCurrentMonth > 12) {
    nCurrentMonth -= 12;
    nextYear();
  }

  setYearMonth(nCurrentYear, nCurrentMonth);
}
//------------------------------------------------------------------------------
function prevMonth() {
  nCurrentMonth--;
  if (nCurrentMonth < 1) {
   nCurrentMonth += 12;
   prevYear();
  }
  setYearMonth(nCurrentYear, nCurrentMonth);
}
//------------------------------------------------------------------------------
function prevYear() {
  nCurrentYear--;
  setYearMonth(nCurrentYear, nCurrentMonth);
}
//------------------------------------------------------------------------------
function nextYear() {
  nCurrentYear++;
  setYearMonth(nCurrentYear, nCurrentMonth);
}
//------------------------------------------------------------------------------
