var
  cDays    = new Array('D','S','T','Q','Q','S','S'),
  cMonths  = new Array('Janeiro','Fevereiro','Março','Abril','Maio','Junho','Julho','Agosto','Setembro','Outubro','Novembro','Dezembro'),
  cMinDate = new Date(2000,10,12),
  cMaxDate = new Date(2002,6,18);
  
function Calendar(aName,aDiv,aYear,aMonth,aDay,aURL)
{
  this.name        = aName;
  this.div         = aDiv;
  this.year        = aYear;
  this.month       = aMonth;
  this.day         = aDay;
  this.URL         = aURL;
  this.build();
} 

Calendar.prototype.click = function(aDay)
{
  this.day   = aDay;
  this.month = this.month*1 + 1;
  if (String(this.day).length==1)   { this.day = '0'+this.day; }
  if (String(this.month).length==1) { this.month = '0'+this.month; }
  window.navigate(this.URL+this.day+'/'+this.month+'/'+this.year);
}

Calendar.prototype.changed = function()
{
  this.year  = document.getElementById(this.name+'_year').value;
  this.month = document.getElementById(this.name+'_month').value;
  this.update(this.year,this.month,this.day);
}

Calendar.prototype.arrayToSelect = function(aArray,aElement,aUseIndex)
{
  var
    lCount,
    lSelect = document.getElementById(aElement),
    lOption;
    
  lSelect.options.clear;  
  for (lCount=0;lCount<aArray.length;lCount++)
  {
    lOption = document.createElement('OPTION');
    lSelect.options.add(lOption);
    lOption.innerText = aArray[lCount];
    lOption.value = aUseIndex?lCount:aArray[lCount];
  }
}

Calendar.prototype.build = function()
{
  var
    lDiv = document.getElementById(this.div),
    lHTML='';

  lHTML += '<table cellspacing="0" cellpadding="0"><tr><td>';
  lHTML += '<table cellspacing="0" cellpadding="0"><tr>';
  lHTML += '<td><select id="'+this.name+'_month" onChange="'+this.name+'.changed()" class="CalMonth"></select></td>';
  lHTML += '<td>&nbsp;</td>';
  lHTML += '<td><select id="'+this.name+'_year" onChange="'+this.name+'.changed()" class="CalYear"></select></td>';
  lHTML += '</tr></table>';
  lHTML += '</td></tr><tr><td><div id="'+this.name+'_calendar"></div></td></tr></table>';

  lDiv.innerHTML = lHTML;
  this.arrayToSelect(cMonths,this.name+'_month',true);
  this.arrayToSelect(new Array('2000','2001','2002'),this.name+'_year',false);
  document.getElementById(this.name+'_month').value = this.month;
  document.getElementById(this.name+'_year').value = this.year;
  this.update(this.year,this.month,this.day);
}

Calendar.prototype.update = function(aYear,aMonth,aDay)
{
  var
    lElement = document.getElementById(this.name+'_calendar'),
    lDate = new Date(aYear,aMonth,1),
    lHTML='',
    lCount;

  lHTML += '<table cellspacing="0" cellpadding="0"><tr>';
  for (lCount=0;lCount<cDays.length;lCount++) { lHTML += '<td class="CalCommon CalDow">'+cDays[lCount]+'</td>'; }
  lHTML += '</tr><tr>';
  for (lCount=0;lCount<lDate.getDay();lCount++) { lHTML += '<td class="CalCommon">&nbsp;</td>'; }
  while (lDate.getMonth()==aMonth)
  {
    if (lDate<cMinDate || lDate>cMaxDate)
    { lHTML += '<td><div class="CalCommon CalVoid">'+lDate.getDate()+'</div></td>'; }
	else { lHTML += '<td><a href="javascript:'+this.name+'.click('+lDate.getDate()+')" class="CalCommon '+(this.day==lDate.getDate()?'CalToday':'CalDay')+'">'+lDate.getDate()+'</a></td>'; }
    if (lDate.getDay()==6) { lHTML += '</tr><tr>'; }
    lDate.setDate(lDate.getDate()+1);
  }
  for (lCount=lDate.getDay();lCount<=6;lCount++) { lHTML += '<td class="CalCommon">&nbsp;</td>'; }
  lHTML += '</tr></table>';  

  lElement.innerHTML = lHTML;
}