var month_names = new Array("Janeiro","Fevereiro","Março","Abril","Maio","Junho","Julho","Agosto","Setembro","Outubro","Novembro","Dezembro");
var day_names = new Array("D","S","T","Q","Q","S","S");

var day;
var month;
var year;
var hour;
var minute;
var second;
var clock_set = 0;

/**
 * Formats number to two digits.
 *
 * @param   int number to format.
 * @param   string type of number
 */
function formatNum2(i, valtype) {
    f = (i < 10 ? '0' : '') + i;
    if (valtype && valtype != '') {
        switch(valtype) {
            case 'month':
                f = (f > 12 ? 12 : f);
                break;

            case 'day':
                f = (f > 31 ? 31 : f);
                break;

            case 'hour':
                f = (f > 24 ? 24 : f);
                break;

            default:
            case 'second':
            case 'minute':
                f = (f > 59 ? 59 : f);
                break;
        }
    }

    return f;
}

/**
 * Formats number to four digits.
 *
 * @param   int number to format.
 */
function formatNum4(i) {
    i = parseInt(i, 10)
    return (i < 1000 ? i < 100 ? i < 10 ? '000' : '00' : '0' : '') + i;
}

/**
 * Initializes calendar window.
 */
function initCalendar() {
    if (!year && !month && !day) {
        /* Called for first time */
        if (isNaN(year) || isNaN(month) || isNaN(day) || day == 0) {
            dt      = new Date();
            year    = dt.getFullYear();
            month   = dt.getMonth();
            day     = dt.getDate();
        }
        if (isNaN(hour) || isNaN(minute) || isNaN(second)) {
            dt      = new Date();
            hour    = dt.getHours();
            minute  = dt.getMinutes();
            second  = dt.getSeconds();
        }
    } else {
        /* Moving in calendar */
        if (month > 11) {
            month = 0;
            year++;
        }
        if (month < 0) {
            month = 11;
            year--;
        }
    }
	
	try{
		if (document.getElementById) {
			cnt = document.getElementById("calendar_data");
		} else if (document.all) {
			cnt = document.all["calendar_data"];
		}
	}catch(e)
	{
		
	}
	
	if(! cnt)
	{
		return false;	
	}
	
    cnt.innerHTML = ''+"\r\n";

    str = ''+"\r\n";

    str += '<div class="calendario">'+"\r\n";
    str += '  <ul class="nav_meses contemfloat">'+"\r\n";
    str += '    <li class="anterior"><a href="javascript:month--; initCalendar()" title="Mês anterior">Mês anterior</a></li>'+"\r\n";
    str += '    <li class="proximo"><a href="javascript:month++; initCalendar()" title="Próximo Mês">Próximo Mês</a></li>'+"\r\n";
    str += '  </ul>'+"\r\n";
	str += '      <h4>' + month_names[month] + ' ' + year + '</h4>'+"\r\n";
    str += '  <div class="dias">'+"\r\n";
    str += '    <table id="' + month_names[month] + year + '" cellpadding="0" cellspacing="0">'+"\r\n";

    str += '      <thead>'+"\r\n";
    str += '        <tr>'+"\r\n";
    
    for (i = 0; i < 7; i++) {
        str += '<th' + (((i+1)%2) == 0 ? ' class="bg"' : '') + '><strong>' + day_names[i] + '</strong></th>'+"\r\n";
    }

    str += '        </tr>'+"\r\n";
	str += '      </thead>'+"\r\n";
	
    var firstDay = new Date(year, month, 1).getDay();
    var lastDay = new Date(year, month + 1, 0).getDate();

    str += '      <tbody>'+"\r\n";
    str += '        <tr>'+"\r\n";

    dayInWeek = 0;
    for (i = 0; i < firstDay; i++) {
        str += '          <td><strong>&nbsp;</strong></td>'+"\r\n";
        dayInWeek++;
    }
    for (i = 1; i <= lastDay; i++) {
        if (dayInWeek == 7) {
            str += '        </tr>'+"\r\n";
            str += '        <tr>'+"\r\n";
            dayInWeek = 0;
        }

        dispmonth = 1 + month;

        actVal = "" + formatNum4(year) + formatNum2(dispmonth, 'month') + formatNum2(i, 'day');
		
        //(i == day);
		//alert(year + ' ' + month + ' ' + i);
		
		var b = false;
		
		try
		{
			if(agendas[year][month+1][i])
			{
				b = true;	
			}
		}
		catch(e)
		{
		}
		
		if(b)
			str += '          <td value="' + actVal + '"><a href="agenda_evento_detalhes.php?tipo='+tipo+'&data=' + year + '-' + (month+1) + '-' + i +'" title="Ver evento deste dia"><strong>' + i + '</strong></a></td>'+"\r\n";
		else
        	str += '          <td value="' + actVal + '"><strong>' + i + '</strong></td>'+"\r\n";
		
		
		
		
        dayInWeek++;
    }
    for (i = dayInWeek; i < 7; i++) {
        str += '          <td><strong>&nbsp;</strong></td>'+"\r\n";
    }
	
    str += '        </tr>'+"\r\n";
    str += '      </tbody>'+"\r\n";
    str += '    </table>'+"\r\n";
    str += '  </div>'+"\r\n";
    str += '</div>'+"\r\n";
        
    str += '  <ol id="lista_eventos" class="eventos">'+"\r\n";
    
    try
    {
	    for (i = 0; i < eventos[year+''+(month+1)].length; i++) {
	    	str += '    <li>' + eventos[year+''+(month+1)][i] + '</li>'+"\r\n";
		}    
    }
    catch(e)
    {
    
    }
    
    str += '  </ol>'+"\r\n";
    
	cnt.innerHTML = str;
}

window.onload = function()
{
	initCalendar();	
}