// **************************************************
// * Autor : Peter M Jordan - uranking@uranking.com *
// * página: www.uranking.com *
// * modificado por: Roger Maso rogermaso@gmail.com
// * 99% dos créditos para os autores anteriores
// * re-modificado por: Cezar Augusto Maisonnett
// * foi modificado para atender as necessidades do helper calendar.php
// **************************************************

// Guarda o this do elemento que dispara o evento
//
var element = null;

// Guarda se o atalho para os meses ou anos deve se mostrado, para os usuário apressados
//
var atalho = false;

// Caminho para página do dia, com a barra final.
// O código irá adicionar a data em formato ISO ao final da url.
//
var day_url = 'cms_agendas/index/dia/';

// Nome dos meses e semanas, traduza à gosto
//
var month_names = new Array(
	null, "Janeiro", "Fevereiro", "Março", "Abril", "Maio", "Junho", 
	"Julho", "Agosto", "Setembro", "Outubro", "Novembro", "Dezembro"
);
var weekday_names = new Array(
	'Dom', 'Seg', 'Ter', 'Qua', 'Qui', 'Sex', 'Sáb'
);

// Função executada após carregar calendário
//
var littlecalendar_afterLoadCallback = null;

// Inicializados automaticamente pelo script com os valores da data selecionada
// no calendário, caso você precise deles em outro script
//
var littlecalendar_ano = null;
var littlecalendar_mes = null;

/**
 * Constrói o Calendário.
 * 
 * @param obj string - div onde será coloca o calendario
 * @param base_date string - data para iniciar o calendario, em formato ISO. (default: dia atual, pela máquina do cliente)
 */
function popdate(obj, base_date)
{
	if (obj !== null) {
		element = obj;
	}
	var divcalendario = document.getElementById(element);
	
	var ano, mes;
	var today = new Date();
	
	if( !base_date )
	{
		ano = hoje.getFullYear();
		mes = hoje.getMonth() + 1;
	}
	else {
		partes = base_date.split('-');
		if( partes.length != 3 )
		{
			alert("A data inicial do calendário (" + base_date + ") não está em formato ISO (aaaa-mm-dd).");
			return;
		}
		ano = parseInt(partes[0]);
		mes = parseInt(partes[1]);
	}
	
	// Publicar nas variáveis globais, para que possa ser utilizado fora deste script
	//
	littlecalendar_ano = ano;
	littlecalendar_mes = mes;
	
	days_Feb = (!(ano % 4) ? 29 : 28)
	days = new Array (null, 31, days_Feb, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31)
	
	if( mes ==  1 ) {month_prior = 12; year_prior = ano - 1} else {month_prior = mes - 1; year_prior = ano}
	if( mes == 12 ) {month_next  =  1; year_next  = ano + 1} else {month_next  = mes + 1; year_next  = ano}
	
	txt = "<table class='tabcalendario' cellspacing=2px>";
	
	//cabecalho do ano e mes atual
	txt += '<thead>';
	txt += "<tr><td colspan='7' class='nav'>";
	
	var prev_month = year_prior + '-' + month_prior + '-1';
	var next_month = year_next  + '-' + month_next  + '-1';
	var prev_year = (ano - 1) + '-' + mes + '-1';
	var next_year = (ano + 1) + '-' + mes + '-1';
	
	txt += "<div class='nav_left_right'>";
	txt += "<a href=\"javascript:popdate(null, '"+ prev_year +"');\" title='Ano Anterior'><< </a>&nbsp;";
	txt += "<a href=\"javascript:popdate(null, '"+ prev_month +"');\" title='Mês Anterior'> < </a>";
	txt += "<a href=\"javascript:pop_month("+ ano +");\" >" + month_names[mes] + "</a>";
	txt += " de ";
	txt += "<a href=\"javascript:pop_year(" + mes + ", " + ano + ");\">" + ano + "</a>";
	txt += "<a href=\"javascript:popdate(null, '"+ next_month +"');\" title='Próximo Mês'> > </a>&nbsp;";
	txt += "<a href=\"javascript:popdate(null, '"+ next_year +"');\" title='Próximo Ano'> >></a>";
	txt += "</div>";
	
	/*var prev_year = (ano - 1) + '-' + mes + '-1';
	var next_year = (ano + 1) + '-' + mes + '-1';
	
	txt += "<div class='right'>";
	txt += "<a href=\"javascript:popdate(null, '"+ prev_year +"');\" title='Ano Anterior'>< </a>";
	txt += "<a href=\"javascript:pop_year(" + mes + ", " + ano + ");\">" + ano + "</a>";
	txt += "<a href=\"javascript:popdate(null, '"+ next_year +"');\" title='Próximo Ano'> ></a>";
	txt += "</div>";*/
	txt += "</td></tr>";
	
	//linha dos anos ou meses
	txt += "<tr><td style='padding: 0; margin: 0;'><div id='popd' style='position:absolute;'></div></td></tr>";
	
	//cabecalho dos dias de semana
	txt += "<tr class='semanas'>";
	for (var wday=0; wday< 7; wday++)
		txt += "<td>" + weekday_names[wday] + "</td>";
	txt += "</tr>";
	txt += '</thead>';
	txt += '<tbody>';
	
	var dia_semana_inicio = new Date(mes + "/01/" + ano).getDay() + 1;
	var week = d = 1;
	var start = false;
	
	var today_day   = today.getDate(),
	    today_month = today.getMonth() + 1,
		today_year  = today.getFullYear();
		
	for (n=1;n<=42;n++)
	{
		
		if (week == 1) {
			txt += "<tr>";
		}
		if (week == dia_semana_inicio) {
			start = true;
		}
		if (d > days[mes]) {
			start=false;
		}
		if (start)
		{
			idtd="";
			if( d == today_day && mes == today_month && ano == today_year )
			{
				idtd='class="hoje"';
			}
			
			// Completar mês e dia com zeros à esquerda
			//
			var mes_str = ''
			if( mes < 10 ) mes_str = '0';
			mes_str += mes;
			
			var dia_str = ''
			if( d < 10 ) dia_str = '0';
			dia_str += d;
			
			txt += "<td "+idtd+" onclick=\"javascript:goday('" + day_url + ano + "-" + mes_str + "-" + dia_str + "');\" style=\"cursor: pointer;\">";
			txt += d.toString();
			txt += "</td>";
			d++;
		}
		else{
			txt += '<td class="off"></td>';
		}
		week++;
		if (week == 8) {
			week = 1;
			txt += "</tr>";
		}
	}
	
	txt += '</tbody>';
	txt += "</table>";
	
	divcalendario.innerHTML = txt;
	
	if(littlecalendar_afterLoadCallback)
		littlecalendar_afterLoadCallback();
}

// função para exibir a janela com os meses
function pop_month(ano)
{
	var divdoatalho = document.getElementById('popd');
	var bit = true;
	if (divdoatalho.innerHTML != '' && divdoatalho.innerHTML.length < 1500) {
		bit = false;
	}
	if (!atalho || bit) {
		txt = "<table bgcolor='#CCCCFF' border='0' width=80>"
		for (n = 1; n <= 12; n++) {
			txt += "<tr><td><a href=\"javascript:popdate(null, '"+ ano + '-' + n +"-01')\" >" + month_names[n] +"</a></td></tr>";
		}
		txt += "</table>";
		atalho = true;
		divdoatalho.innerHTML = txt;
		return;
	}
	atalho = false;
	divdoatalho.innerHTML = '';
}

// função para exibir a janela com os anos
function pop_year(umonth, ano) {

	var divdoatalho = document.getElementById('popd');
	var bit = true;
	if (divdoatalho.innerHTML != '' && divdoatalho.innerHTML.length > 1500) {
		bit = false;
	}

	if (!atalho || bit) {
		txt = "<table bgcolor='#CCCCFF' border='0' width=160>";
		l = 1;
		for (n=ano-50; n<ano+2; n++){
			if (l == 1) {
				txt += "<tr>";
			}
			txt += "<td align=center><a href=\"javascript:popdate(null, '"+ n + '-' + umonth +"-01');\">" + n + "</a></td>";
			l++;
			if (l == 4) {
				txt += "</tr>";
				l = 1;
			}
		}
		txt += "</tr></table>";
		atalho = true;
		divdoatalho.innerHTML = txt;
		return;
	}
	atalho = false;
	divdoatalho.innerHTML = '';
}


// função para levar o usuário até o dia que ele clicou
function goday(url)
{
	window.location=url;
}

