var inpDia
var inpMes
var InpAno
var bolTest = false
var objSxCalendario

// ref: http://www.imasters.com.br/artigo.php?cn=2692&cc=78
function calendar(mes,ano){
	var strCalendario;
	strCalendario = '';
	hoje = new Date();
	dia = hoje.getDate();
	mes = mes - 1;
	nomemes = ["January","February","March","April","May","June","July","August","September","October","November","December"];
	nomemesPort = ["Janeiro","Fevereiro","Março","Abril","Maio","Junho","Julho","Agosto","Setembro","Outubro","Novembro","Dezembro"];
	inicio = new Date('1 '+nomemes[mes]+' '+ano);
	letrasSemana = ["D","S","T","Q","Q","S","S"];
	a = 0;
	bi = bissexto(ano) ? 29 : 28;
	diasmes = [31,bi,31,30,31,30,31,31,30,31,30,31];
	strCalendario = strCalendario  + '<div class="db"><table border="0" bgcolor="#FFFFCC" cellpadding="3" cellspacing="0" width="170"><tr>';
	if (mes==0){
		mesAnterio = 12;
		anoAnterio = ano-1
	} else {
		mesAnterio = mes;
		anoAnterio = ano;
	}	
	strCalendario = strCalendario  + '<td width="15" align="center" bgcolor="#FFFFFF" ><a onclick=fCalendarioMudaMes('+mesAnterio+','+anoAnterio+'); href="javascript:;">  < </a></td>';
	strCalendario = strCalendario  + '<td width="140" align="center" bgcolor="#FFFFFF" colspan="5"><b>'+nomemesPort[mes]+' '+ano+'</b></td>';
	if (mes==11){
		mesProximo = 1;
		anoProximo = ano+1
	} else {
		mesProximo = mes + 2;
		anoProximo = ano;
	}
	strCalendario = strCalendario  + '<td width="15" align="center" bgcolor="#FFFFFF" ><a onclick=fCalendarioMudaMes('+ mesProximo +','+anoProximo+'); href="javascript:;">  > </a></td></tr><tr>';
	for(i=0; i<letrasSemana.length; i++){
		strCalendario = strCalendario  + '<td width="15" bgcolor="#CCCCCC" align="center"><b>'+letrasSemana[i]+'</b></td>';
	} 
	strCalendario = strCalendario  + '</tr><tr>';
	function bissexto(year) {
	if (year % 4 == 0) // regra basica
		return true // se o ano e' bissexto
	/* else */ // else nao precisa quando "return" e' utilizado
		return false // se o ano nao e' bissexto
	}
	if (inicio.getDay() == 0) increase = 0; else increase = 1;
	for(i=1; a<diasmes[mes]; i++){
		if(i < inicio.getDay()+increase) strCalendario = strCalendario  + '<td width="15" bgcolor="#FFFFCC" align="center"><img src="img/spacer.gif" width="1" height="1"></td>';
		else {
			a++;
			if (a == dia && mes == (hoje.getMonth()) && ano == hoje.getFullYear() ) strCalendario = strCalendario  + '<td width="15" bgcolor="#CCCCCC" align="center"><a onclick=fCalendarioAtualiza('+a+','+ (mes+1) +','+ano+'); href="javascript:;"><b>'+a+'</b></a></td>';
			else strCalendario = strCalendario  + '<td width="15" align="center"><a onclick=fCalendarioAtualiza('+a+','+ (mes+1) +','+ano+'); href="javascript:;">'+a+'</a></td>';
		}
		if(i % 7 == 0) strCalendario = strCalendario  + '</tr><tr>';
	}
	strCalendario = strCalendario  + '</tr></table></div>';

	return strCalendario
}

function fCalendarioClick(objCalendario,mes,ano,tmpDia,tmpMes,tmpAno){
	inpDia = tmpDia;
	inpMes = tmpMes;
	InpAno = tmpAno;

	objSxCalendario = document.getElementById("SxCalendario");

	if (objSxCalendario.style.visibility == 'visible') {
		objSxCalendario.style.visibility = 'hidden';
		bolTest = false;
	} else {
		objSxCalendario.style.left = (fPosX(objCalendario) + 36) + 'px';
		objSxCalendario.style.top = fPosY(objCalendario) + 'px';
		objSxCalendario.style.visibility = 'visible';	
		bolTest = true;
	}
	objSxCalendario.innerHTML=calendar(mes,ano)
}

function fCalendarioMudaMes(mes,ano){
	var objSxCalendario = document.getElementById("SxCalendario");
	objSxCalendario.innerHTML=calendar(mes,ano)
}

function fCalendarioAtualiza(tmpDia,tmpMes,tmpAno){
	inpDia.value = tmpDia;
	inpMes.value = tmpMes;
	InpAno.value = tmpAno;
	
	var objSxCalendario = document.getElementById("SxCalendario");	
	objSxCalendario.style.visibility = 'hidden';
}

function fPosX(obj)
{
	var curleft = 0;
	if (obj.offsetParent)
	{
		while (obj.offsetParent)
		{
			curleft += obj.offsetLeft
			obj = obj.offsetParent;
		}
	}
	else if (obj.x)
		curleft += obj.x;
	return curleft;
}

function fPosY(obj)
{
	var curtop = 0;
	if (obj.offsetParent)
	{
		while (obj.offsetParent)
		{
			curtop += obj.offsetTop
			obj = obj.offsetParent;
		}
	}
	else if (obj.y)
		curtop += obj.y;
	return curtop;
}


ns = document.layers;
ie = document.all;
ns6 = (document.getElementById && !document.all);
function moveMouse(e){
	if (bolTest){
		if(ie){
		   posx = event.clientX;
		   posy = event.clientY;
		} else if (ns){
		   posx = e.x;
		   posy = e.y;
		} else if (ns6){
		   posx = e.clientX;
		 posy = e.clientY;
		}
		
		if (posy < fPosY(objSxCalendario) || (posy > fPosY(objSxCalendario) + objSxCalendario.offsetHeight + 5)){
			//objSxCalendario.style.visibility = 'hidden'; 
			//bolTest = false;
		}
		if ((posx < fPosX(objSxCalendario) - 40) || (posx > fPosX(objSxCalendario) + objSxCalendario.offsetWidth + 5)){
			objSxCalendario.style.visibility = 'hidden'; 
			bolTest = false;
		}		
	}
}
document.onmousemove = moveMouse;
