/**
 * dmosilveira
 * AJAX para montagem de calendário
 * @author: Douglas Miguel Oliveira Silveira
 * 2007-09-03
 */
 
function anoBissexto(ano)
{
	/**
	 *	São portanto bissextos:
	 * 		Os múltiplos de 4 e não múltiplos de 100: 1996, 2000, 2004, 2008 e 2012
	 * 		Os múltiplos de 400: 1600, 2000, 2400
	 *	Não são bissextos:
	 *		Os múltiplos de 100 e não de 400: 1700, 1800, 1900 e 2100
	 */
	if((ano%4==0&&ano%100!=0)||ano%400==0) {
		return true;
	} else if(ano%4!=0||(ano%4==0&&ano%100==0&&ano%400!=0)) {
		return false;
	}
}
 
function validarData(dia,mes,ano)
{
	var dia = parseInt(dia);
	var mes = parseInt(mes);
	var ano = parseInt(ano);
	//----------------------
	if((mes==4||mes==6||mes==9||mes==11)&&dia>30) {
		//--meses que tem 30 dias
		return false;
	} else if(anoBissexto(ano)==false&&mes==2&&dia>28) {
		//--ano não bissexto
		//--fevereiro com 28 dias
		return false;
	} else if(anoBissexto(ano)==true&&mes==2&&dia>29) {
		//--ano bissexto
		//--fevereiro com 29 dias
		return false;
	} else {
		return true;
	}
}
 
function calendario()
{
	this.boxCalendario = '';
	this.boxDestino = '';
	this.objRef = '';
	this.valorAtual = new Array();
	this.camada = 0;
	this.anoLimite = 30;
}
calendario = new calendario();

function calendarioSelecionaData(dia,mes,ano)
{
	if(validarData(dia,mes,ano)==false) {
		document.getElementById('dia').focus();
		document.getElementById('dia').select();
	} else {
		calendario.boxDestino.value = dia+'/'+mes+'/'+ano;
		calendarioFecha();
	}
}
function calendarioFecha()
{
	calendario.boxCalendario.className = config.visHidden;
	calendario.boxCalendario.innerHTML = '';
	//--posicionamento
	calendario.boxCalendario.style.top = '0px';
	calendario.boxCalendario.style.marginLeft = '0px';
	//----------------
	if(calendario.camada==1) {
		camadaFecha();	
	}
}
function calendarioMonta(campo,ref)
{
	calendario.objRef = document.getElementById(ref);
	calendario.boxDestino = document.getElementById(campo);
	//--valor atual
	calendario.valorAtual = calendario.boxDestino.value.split('/');
	//----------------
	var posX = findPosX(calendario.objRef);
	var posY = findPosY(calendario.objRef);
	//----------------
	calendario.boxCalendario.innerHTML = config.imgLoading[0];
	//---------------------
	calendario.boxCalendario.style.marginLeft = posX+'px';
	calendario.boxCalendario.style.top = posY+'px';
	//----------------
	ajaxCalendarioCarrega('','');
}
function ajaxCalendarioCarrega(mes,ano)
{
	var periodo = '';
	//------------------------
	if(calendario.valorAtual[0]!='') {
		periodo = calendario.valorAtual[2]+'-'+calendario.valorAtual[1]+'-'+calendario.valorAtual[0];
	}
	if(mes!=''&&ano!='') {
		periodo = ano+'-'+mes;
	}
	//--carrega calendário
	ajaxInit();
	//------------------------
	config.dirBase==''||config.dirBase==undefined?config.dirBase='../':null;
	config.corCamada=='1'?config.corCamada='2':null;
	//------------------------
	if(ajax) {
		ajax.onreadystatechange = ajaxCalendarioProcessa;
		ajax.open('post',config.dirBase+'_ajax/calendario.php?'+periodo,true);
		ajax.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
		config.imgDIR==''||config.imgDIR==undefined?config.imgDIR='':null;
		var parametros = 'local='+config.local+'&img='+config.imgDIR;
		ajax.send(parametros);
	}
}
function ajaxCalendarioProcessa()
{
	if(ajax.readyState==1) {
		calendario.boxCalendario.className = config.visVisible;
		if(calendario.camada==1) {
			camadaAbre();
		}
	} else if(ajax.readyState==4) {
		if(ajax.status==200) {
			ajaxExecute(ajax.responseText);
			calendario.boxCalendario.innerHTML = ajax.responseText;
		}
	}
}
function calendarioCarregaAno(objEvent)
{
	var evt = new CrossEvent(objEvent);
	var teclaKey = evt.keyCode;
	//-----------------------
	var anoLimite1 = (config.data.getFullYear())-calendario.anoLimite;
	var anoLimite2 = (config.data.getFullYear())+calendario.anoLimite;
	//--caso usuário pressione o ENTER
	if(teclaKey==13) {
		var anoCarrega = document.getElementById('anoCarrega');
		var mesAtual = document.getElementById('mesAtual');
		//-----------------------
		if(mesAtual.value!=''&&anoCarrega.value.length==4) {
			ajaxCalendarioCarrega(mesAtual.value,anoCarrega.value);
		} else {
			anoCarrega.select();
			anoCarrega.focus();
		}
	}
}
function calendarioCarregaInputAno(idInput,idTexto)
{
	var boxInput = document.getElementById(idInput);
	var boxTexto = document.getElementById(idTexto);
	//-----------------------
	boxTexto.className = config.visHidden;
	boxInput.className = config.visVisible;
	//-----------------------
	var anoCarrega = document.getElementById('anoCarrega');
	anoCarrega.select();
	anoCarrega.focus();
}
function calendarioCloseInputAno(idInput,idTexto)
{
	var boxInput = document.getElementById(idInput);
	var boxTexto = document.getElementById(idTexto);
	//-----------------------
	boxInput.className = config.visHidden;
	boxTexto.className = config.visVisible;
	//-----------------------
}
function calendarioCarregaBoxMes(idBox)
{
	var idBox = document.getElementById(idBox);
	//---------------------
	idBox.style.marginLeft = '10px';
	idBox.style.top = '-120px';
	//---------------------
	idBox.className = config.visVisible;	
}
function calendarioCloseBoxMes(idBox)
{
	var idBox = document.getElementById(idBox);
	idBox.className = config.visHidden;
}
function calendarioBlank(idIpt)
{
	var idIpt = document.getElementById(idIpt);
	idIpt.value = '';
}

function calendarioDataHoje(idInput)
{
	var boxInput = document.getElementById(idInput);
	//--dia
	var dia = config.data.getDate();
	(dia<10)?dia='0'+dia:null;
	//--mês
	var mes = (config.data.getMonth())+1;
	(mes<10)?mes='0'+mes:null;
	//--ano
	var ano = config.data.getFullYear();
	//--joga data no campo
	boxInput.value = dia+'/'+mes+'/'+ano;
	boxInput.select();
}