// Event Calendar
// copyright Stephen Chapman, 10th June 2006, 30th October 2006

var month_event_link='';
var date_event_link='';

var month_event_link='/eventos/';
var date_event_link='/eventos/date/';

var tb = 'b'; // top or bottom (t or b)

var calWidth=290; //calendar width
var calHeight=145; //calendar height

var calColor= '#f8ecff'; // top and lines calendar color
var selColor= '#ecd2ff'; // current day background colour
var selBorder= '1px solid #640e71';
var textclr = '#aaaaaa'; // text colour
var lnkColor= '#ecd2ff'; // background events
var linkclr = '#77a077'; // link text colour
var noMessage =  'Não existem eventos agendados para este dia'; // message to display when no entry in array

var nextMonthAltMessage = 'Próximo mês';
var prevMonthAltMessage = 'Mês anterior';
var nextYearAltMessage = 'Próximo ano';
var prevYearAltMessage = 'Ano anterior';

var dStartDay=0;
var dStartMonth=0;
var dStartYear=0;

var dA = new Array();
var x = 0;
// first 8 characters in ccyymmdd format for single date events
// first 8 characters in 0000mmdd format for every year events
//dA[x++] = "00000101 New Year";
//dA[x++] = "00000214 Valentine's day";
//dA[x++] = "00000709 Steve's Birthday";
//dA[x++] = "00000919 Site Anniversary";
//dA[x++] = "00001206 St Nicholas' Day";
//dA[x++] = "20060610 New Event Calendar Started today";

/*
// permission is granted to use this javascript provided that the below code is not altered
var pageLoaded = 0;

window.onload = function() {
  pageLoaded = 1;
}

function loaded(i,f) {
  if (document.getElementById && document.getElementById(i) != null)
    f();
  else if (!pageLoaded)
    setTimeout('loaded(\''+i+'\','+f+')',100);
}
*/

function monthlength(month,year) {
  var dd = new Date(year, month, 0);
  return dd.getDate();
}

var moy = ['Janeiro','Fevereiro','Março','Abril','Maio','Junho','Julho','Agosto','Setembro','Outubro','Novembro','Dezembro'];
var today = new Date();
var selDate = today.getFullYear()+getmmdd(today.getMonth()+1,today.getDate());

var dHideNavigator=0;

///////////////////////////////////////////////////////////////////////////////
// initUrls(monthUrl,dateUrl)
///////////////////////////////////////////////////////////////////////////////
function initUrls(monthUrl,dateUrl) {
  month_event_link=monthUrl;
  date_event_link=dateUrl;
}

///////////////////////////////////////////////////////////////////////////////
// initEvents(eventsArray,startYear,startMonth,startDay,hideNavigator,calW,calH)
///////////////////////////////////////////////////////////////////////////////
function initEvents(eventsArray,startYear,startMonth,startDay,hideNavigator,calW,calH) {
  if(startYear==0 && startMonth==0 && startDay==0){
    startYear=today.getFullYear();
    startMonth=getmm(today.getMonth()+1);
    startDay=getdd(today.getDate());
  }else{
    startMonth=getmm(startMonth);
    startDay=getdd(startDay);
  }

  selDate=startYear+startMonth+startDay;

  dStartDay=startDay;
  dStartMonth=startMonth;
  dStartYear=startYear;
  dA=eventsArray.slice();

  dHideNavigator=hideNavigator;

  if(calW){
    calWidth=calW;
  }

  if(calH){
    calHeight=calH;
  }
  
  showCalendar();
}

///////////////////////////////////////////////////////////////////////////////
// dispCal(yy,mm,dd)
///////////////////////////////////////////////////////////////////////////////

function dispCal(yy,mm,dd) {
  if (mm < 0 || mm > 12) {
    alert('O mês tem de ser entre 1 e 12');
    return false;
  }

  if (yy != 0 && (yy < 1901 || yy > 2100)) {
    alert('O ano tem de ser entre 1900 e 2101');
    return false;
  }

  var dow = ['Dom','Seg','Ter','Qua','Qui','Sex','Sab'];
  var calendar = new Date();
  var today = calendar.getDate();
  calendar.setDate(1);

  if (yy > 1900)
    calendar.setFullYear(yy);
  if (mm > 0)
    calendar.setMonth(mm - 1);

  var yy = year = calendar.getFullYear();
  var month = calendar.getMonth();

  calendar.setDate(today);

  var weekday = calendar.getDay();
  var daysInMonth = monthlength(month+1,year);
  var hilite_start = '<td width="30"  style="border:'+ selBorder+'" align="center"><b>';
  var hilite_startEvent = '<td width="30" style="background:'+selColor+';border:'+ selBorder+';" align="center"><b>';
  var td_startEvnt = '<td width="30" style="background:' + lnkColor + '" align="center">';
  var td_start = '<td width="30" align="center">';
  var cal = '<div id="cal"><div style="border:1pt solid '+calColor+';height:'+calHeight+'px;width:'+calWidth+'px"><table border="0" cellspacing="0" cellpadding="2" align="center" style="margin:0px auto 0px auto;"><tr><td colspan="7" style="background:' + calColor + '" align="center"><b>' + moy[month]  + ' ' + year + '<\/b><\/td><\/tr><tr>';

  for(dex=0; dex < 7; dex++) {
    cal += td_start + dow[dex] + '</td>';
  }

  cal += '<\/tr><tr>';
  var day2 = today;
  for (dex = today; dex > 6; dex -=7)
    day2 = dex;

  weekday -= day2 - 1;
  while (weekday < 0)
    weekday += 7;

  for(dex=0; dex < weekday; dex++)
    cal += td_start + ' <\/td>';

  for(dex=1; dex <= daysInMonth; dex++) {
    if(weekday == 7) {
      cal += '</tr><tr>';
      weekday = 0;
    }

  //cal += td_start + '<span '+clickDate(dex,month,year) + '>' + dex + '<\/span><\/td>';
  var cur_date=year+getmmdd(month+1,dex);
  var ct = nextDate(cur_date);
  if (ct == '')
    ct = nextDate('0000' + cur_date.substr(4));

  var col;
  if(ct == '')
    col=textclr;
  else
    col=linkclr;

  //cal += td_start + '<span '+ clickDate(dex,month,year) + '>'+ '<A STYLE="color:'+col+'" TITLE="'+ct+'">'+ dex + '<\/A><\/span><\/td>';
  if(ct != ''){
    if(cur_date==selDate)
      cal += hilite_startEvent +'<span'+clickDate(dex,month,year) + '>'+ '<A HREF="'+date_event_link+cur_date+'" TITLE="'+ ct +'">'+ dex + '<\/A><\/span><\/b><\/td>';
    else
      cal += td_startEvnt +'<span'+clickDate(dex,month,year) + '>'+ '<A HREF="'+date_event_link+cur_date+'" TITLE="'+ ct +'">'+ dex + '<\/A><\/span><\/b><\/td>';

  }else
    //cal += td_start + '<span '+ clickDate(dex,month,year) + '>'+ '<A STYLE="color:'+col+'" TITLE="'+ct+'">'+ dex + '<\/A><\/span><\/td>';
    if(cur_date==selDate)
      cal += hilite_start + '<span '+ clickDate(dex,month,year) + '>'+ '<A STYLE="color:'+col+'" TITLE="'+ct+'">'+ dex + '<\/A><\/span><\/td>';
    else
      cal += td_start + '<span '+ clickDate(dex,month,year) + '>'+ '<A STYLE="color:'+col+'" TITLE="'+ct+'">'+ dex + '<\/A><\/span><\/td>';

  weekday += 1;

/*
    if(selDate==year+getmmdd(month+1,dex))
      cal += hilite_start +'<span'+clickDate(dex,month,year) + '>'+ dex + '<\/span><\/b><\/td>';
    else
      cal += td_start + '<span '+clickDate(dex,month,year) + '>' + dex + '<\/span><\/td>'; weekday += 1;
  */
  }

  for(dex=weekday; dex < 7; dex++)
    cal += td_start + ' <\/td>';

  cal += '<\/tr><\/table><\/div>';

  if (document.getElementById) {
    var mmb = month;  mm = month + 1;
    var yya = yyb = yy;
    if (mmb <1) {mmb += 12; yyb--;}
    var mma = month + 2;
    if (mma > 12) {mma -= 12; yya++;}
    var yb = yy -1;
    var ya = yy +1;

    //navegador
    //cal += '<table border="0" cellspacing="0" cellpadding="2" width="210"><tr><td><a href="'+month_event_link+'&month='+mm+'&year='+yb+'" onclick="if (cala = dispCal('+yb+','+mm+')) {document.getElementById(\'cal\').innerHTML = cala; return true;}"><<</a></td><td><a href="'+month_event_link+'&month='+mmb+'&year='+yyb+'" onclick="if (cala = dispCal('+yyb+','+mmb+')) {document.getElementById(\'cal\').innerHTML = cala; return true;}"><</a></td><td align="right"><a href="'+month_event_link+'&month='+mma+'&year='+yya+'" onclick="if (cala = dispCal('+yya+','+mma+')) {document.getElementById(\'cal\').innerHTML = cala; return true;}">></a></td><td align="right"><a href="'+month_event_link+'&month='+mm+'&year='+ya+'" onclick="if (cala = dispCal('+ya+','+mm+')) {document.getElementById(\'cal\').innerHTML = cala; return true;}">>></a></td></tr></table>';
    if(dHideNavigator!=1)
      //cal += '<table border="0" cellspacing="0" cellpadding="2" width="'+calWidth+'"><tr><td><a href="'+month_event_link+'&month='+mm+'&year='+yb+'" title="'+prevYearAltMessage+'"><<</a></td><td><a href="'+month_event_link+'&month='+mmb+'&year='+yyb+'" title="'+prevMonthAltMessage+'"><</a></td><td align="right"><a href="'+month_event_link+'&month='+mma+'&year='+yya+'" title="'+nextMonthAltMessage+'">></a></td><td align="right"><a href="'+month_event_link+'&month='+mm+'&year='+ya+'" title="'+nextYearAltMessage+'">>></a></td></tr></table>';
      cal += '<table border="0" cellspacing="0" cellpadding="2" width="'+calWidth+'"><tr><td><a href="'+month_event_link+yb+'/'+mm+'" title="'+prevYearAltMessage+'"><<</a></td><td><a href="'+month_event_link+yyb+'/'+mmb+'" title="'+prevMonthAltMessage+'"><</a></td><td align="right"><a href="'+month_event_link+yya+'/'+mma+'" title="'+nextMonthAltMessage+'">></a></td><td align="right"><a href="'+month_event_link+ya+'/'+mm+'" title="'+nextYearAltMessage+'">>></a></td></tr></table>';
  } else {
    cal += '<div> </div>';
  }

  cal += '</div>'; return cal;
}

function showCalendar() {
  if(!document.getElementById('calendar'))
  return;

  //var x = '<div id="calDate" style="border:1pt solid #cccccc;width:200px;"><\/div>';
  var y = '';
  var x = '';

  if (tb == 't')
    y = x + dispCal(dStartYear,dStartMonth,dStartDay);
  else
    y = dispCal(dStartYear,dStartMonth,dStartDay) + x;

  document.getElementById('calendar').innerHTML = y;
  ev();
}

// clickDate(day, month, year)
//-----------------------------------------------------------------------------

function clickDate(day, month, year) {
  var ct = nextDate(year + getmmdd(month+1,day));
  if (ct == '')
    ct = nextDate('0000' + getmmdd(month+1,day));

  if (ct == '')
    return 'style="color:'+textclr+'"';
  else
   return 'style="cursor:pointer;color:'+linkclr+'" onclick="selDate = '+year+ getmmdd(month+1,day)+'; isDate(' + day + ',' + month + ',' + year + ');"'; //Modified by alv: allow href
   //return 'style="cursor:pointer;color:'+linkclr+'" onclick="selDate = '+year+ getmmdd(month+1,day)+'; isDate(' + day + ',' + month + ',' + year + ');return false;"';
}

// isDate(dayVal,monthVal,yearVal)
//-----------------------------------------------------------------------------

function isDate(dayVal,monthVal,yearVal) {
/*
  var ct = nextDate(yearVal + getmmdd(monthVal+1,dayVal));
  if (ct == '')
    ct = nextDate('0000' + getmmdd(monthVal+1,dayVal));

  if (ct == '')
    ct = noMessage;document.getElementById('calDate').innerHTML = ct; //Modified by alv: show event title only
    //ct = noMessage;document.getElementById('calDate').innerHTML = selDate + ':<br \/>' +ct;

  return false;

  */
}

// nextDate(yymmdd)
//-----------------------------------------------------------------------------

function nextDate(yymmdd) {
  var x = dA.length;
  for (var i = 0; i < x; i++) {
    if (dA[i].substr(0,8) == yymmdd)
      return dA[i].substr(8);
  }

  return '';
}

// getmmdd(mm,dd)
//-----------------------------------------------------------------------------

function getmmdd(mm,dd) {
  return (mm > 9 ? '' + mm : '0' + mm) + (dd > 9 ? dd : '0' + dd);
}

function getmm(mm) {
  return (mm > 9 ? '' + mm : '0' + mm);
}

function getdd(dd) {
  return (dd > 9 ? dd : '0' + dd);
}

// ev()
//-----------------------------------------------------------------------------

function ev() {
/*
  var ct = nextDate(selDate);
  var ct = nextDate(selDate);

  if (ct == '')
    ct = nextDate('0000' + selDate.substr(4));

  if (ct == '')
    ct = noMessage;

  document.getElementById('calDate').innerHTML = ct; //Modified by alv: show event title only
  //document.getElementById('calDate').innerHTML = selDate + ':<br \/> ' +ct;
*/
}

