var anoBi;
var ano;
var mes;
var diaSemana;
var diaQtd;
var sexta=0;
var mark=[];
var nav=navigator.appName=="Microsoft Internet Explorer"?0:1;
function anoBis() {
	var res;
       res=ano%400;
       if(!res) anoBi=1;
	else {
		res=ano%100;
		if(!res) anoBi=0;
		else {
			res=ano%4;
			if (!res) anoBi=1;
			else anoBi=0;
		}
	}
}
function changeCalendar() {
	up=changeCalendar.arguments;
	if(up[0]==2) {
		diaSemana+=diaQtd==31?3:diaQtd==30?2:diaQtd==29?1:0;
		diaSemana-=diaSemana>=7?7:0;
		mes++;
		if(mes==12) {
			mes=0;
			ano++;
			anoBis();
			/*
			elemento=document.getElementById("calendarSetaRight");
			elemento.firstChild.src="imagens/setaRightOn.png";
			elemento.onclick=new Function("changeCalendar(2)");
			//*/
		}
		/*
		else if(mes==1) {
			elemento=document.getElementById("calendarSetaLeft");
			elemento.firstChild.src="imagens/setaLeftOn.png";
			elemento.onclick=new Function("changeCalendar(1)");
		}
		//*/
	} else if(up[0]==1) {
		diaSemana-=diaQtd==31?mes==7||!mes?3:mes==2?anoBi?1:0:2:3;
		diaSemana+=diaSemana<0?7:0;
		mes--;
		if(mes==-1) {
			mes=11;
			ano--;
			anoBis();
			/*
			elemento=document.getElementById("calendarSetaLeft");
			elemento.firstChild.src="imagens/setaLeftOn.png";
			elemento.onclick=new Function("changeCalendar(1)");
			//*/
		}
		/*
		else if(mes==10) {
			elemento=document.getElementById("calendarSetaRight");
			elemento.firstChild.src="imagens/setaRightOn.png";
			elemento.onclick=new Function("changeCalendar(2)");
		}
		//*/
	}
	/*
	else {
		if(!mes) {
			document.getElementById("calendarSetaLeft").firstChild.src="imagens/setaLeftOff.png";
			document.getElementById("calendarSetaLeft").onclick=null;
		} else if(mes==11) {
			document.getElementById("calendarSetaRight").firstChild.src="imagens/setaRightOff.png";
			document.getElementById("calendarSetaRight").onclick=null;
		}
	}
	//*/
	selDiaQtd();
	updateCalendar(diaSemana,diaQtd,selMes());
}
function selDiaSemana() {
	while(diaSemana>7) diaSemana-=7;
	diaSemana=dia+1-diaSemana;
	if(diaSemana<0) diaSemana+=7;
}
function selDiaQtd() {
	switch(mes) {
		case 0:	case 2:case 4:case 6:case 7:case 9:case 11: diaQtd=31;			break;
		case 3:	case 5:case 8:case 10:						diaQtd=30;			break;
		case 1:												diaQtd=anoBi?29:28;	break;
	}
}
function selMes() {
	var m;
	switch(mes) {
		case 0: m="Janeiro";	break;
		case 1:	m="Fevereiro";	break;
		case 2: m="Março";		break;
		case 3: m="Abril";		break;
		case 4: m="Maio";		break;
		case 5: m="Junho";		break;
		case 6: m="Julho";		break;
		case 7: m="Agosto";		break;
		case 8: m="Setembro";	break;
		case 9: m="Outubro";	break;
		case 10:m="Novembro";	break;
		case 11:m="Dezembro";	break;
	}
	return m;
}
function createCalendar() {
	var i;
	var linhaDia;
	var linhaMes=document.createElement('tr');
	var corpo	=document.createElement('tbody');
	var calendar=document.createElement('table');
	linhaMes.setAttribute(nav?"class":"className",'month');
	corpo.id="calendarBody";
	addLine(0,linhaMes);
	corpo.appendChild(linhaMes);
	linhaDia=document.createElement('tr');
	linhaDia.setAttribute(nav?"class":"className",'week');
	addLine(1,linhaDia);
	corpo.appendChild(linhaDia);
	for(i=0;i<5;i++) {
		linhaDia=document.createElement('tr');
		linhaDia.setAttribute(nav?"class":"className",'day');
		addLine(2,linhaDia,i);
		corpo.appendChild(linhaDia);			
	}
	calendar.style.zIndex=1;
	calendar.cellSpacing=0;
	calendar.cellPadding=0;
	calendar.border=0;
	calendar.style.cursor="pointer";
	calendar.appendChild(corpo);
	document.getElementById('calendar').appendChild(calendar);
}
function addLine(op,line) {
	var c,i,a;
	var text;
	if(op==2) {
		var arg;
		for(i=0;i<7;i++) {
			arg=addLine.arguments;
						
			a=document.createElement('a');
			a.id=7*arg[2]+i;
			a.href="#";
			a.setAttribute(nav?"class":"className",'ballon');
			text=document.createTextNode("");
			a.appendChild(text);
			
			c=document.createElement('td');
			c.align="center";
			c.id="c"+(7*arg[2]+i);
			c.appendChild(a);
			line.appendChild(c);
		}
	}
	else if(op==1)  {
		for(i=0;i<7;i++) {
			text=i==0?"D":i==1||i==5||i==6?"S":i==2?"T":"Q";
			c=document.createElement('td');
			c.align="center";
			text=document.createTextNode(text);
			c.appendChild(text);
			if(!i) c.setAttribute(nav?"class":"className",'d');
			line.appendChild(c);
		}
	}
	else {
		var img;
		img=document.createElement('img');
		img.src="imagens/setaLeftOn.png";
		c=document.createElement('td');
		c.id="calendarSetaLeft";
		c.align="right";
		c.onclick=new Function("changeCalendar(1)");
		c.appendChild(img);
		line.appendChild(c);
		
		c=document.createElement('td');
		c.align="center";
		c.colSpan=5;
		c.id="mes";
		c.width=90;
		c.style.background='rgb(150,174,190)';
		text=document.createTextNode("");
		c.appendChild(text);
		text=document.createTextNode(" "+ano);
		c.appendChild(text);
		line.appendChild(c);
		
		img=document.createElement('img');
		img.src="imagens/setaRightOn.png";
		c=document.createElement('td');
		c.id="calendarSetaRight";
		c.align="left";
		c.onclick=new Function("changeCalendar(2)");
		c.appendChild(img);
		line.appendChild(c);
	}
}
function updateCalendar(dS,dU,m) {
	var dia=1;
	var lS =0;
	var i;
	var tdColor=1;
	var str;
	{
		var tam=dU+dS-35;
		if(tam>0&&sexta) for(i=tam;i<7;i++) document.getElementById(35+i).firstChild.data="";
		else if(tam<0) for(i=tam+7;i<7;i++) document.getElementById(28+i).firstChild.data="";
		for(i=0;i<dS;i++) document.getElementById(7*lS+i).firstChild.data="";
	}
	document.getElementById('mes').firstChild.data=m;
	document.getElementById('mes').lastChild.data=" "+ano;
	for(i=1;mark[i];i++) {
		markDemark(mark[i],0);
		mark[i]=0;
	}
	mark[0]=diaSemana;
	i=1;
	while(lS<5) {
		for(;dS<7&&dia<=dU;dS++,dia++) {
			cell=document.getElementById(7*lS+dS);
			if(document.getElementById(dia+"."+(mes+1)+"."+ano)) {
				var d=document.createElement('div');
				var value=document.getElementById(dia+"."+(mes+1)+"."+ano).value;
				if(str!=value) {
					str=value;
					tdColor==7?tdColor=0:tdColor++;
				}
				var sep1=value.indexOf("|",1);
				var sep2=value.indexOf("|",sep1+1);
				var text=document.createTextNode(value.substr(1,sep1-1));
				var br=document.createElement('br');
				d.appendChild(text);
				while(sep2>0) {
					d.appendChild(br);
					text=document.createTextNode(value.substr(sep1+1,sep2-sep1-1));
					d.appendChild(text);
					sep1=sep2;
					sep2=value.indexOf("|",sep1+1);
				}
				cell.appendChild(d);
				document.getElementById("c"+(7*lS+dS)).setAttribute(nav?"class":"className","ballon"+tdColor);
				cell.onmouseover=new Function("positionEvento("+(7*lS+dS)+")");
				mark[i]=dia;
				i++;
			}
			cell.firstChild.data=dia;
		}
		if(dia<=dU) dS=0;
		else break;
		lS++;
	}
	if(dia<=dU) {
		if(!sexta) {
			var linhaDia=document.createElement('tr');
			linhaDia.setAttribute(nav?"class":"className",'day');
			addLine(2,linhaDia,5);
			corpo=document.getElementById('calendarBody');
			corpo.appendChild(linhaDia);
			sexta=1;
		}
		for(;dS<7&&dia<=dU;dS++,dia++) {
			cell=document.getElementById(7*lS+dS);
			if(document.getElementById(dia+"."+(mes+1)+"."+ano)) {
				var d=document.createElement('div');
				var value=document.getElementById(dia+"."+(mes+1)+"."+ano).value;
				if(str!=value) {
					str=value;
					tdColor==7?tdColor=0:tdColor++;
				}
				var sep1=value.indexOf("|",1);
				var sep2=value.indexOf("|",sep1+1);
				var text=document.createTextNode(value.substr(1,sep1-1));
				var br=document.createElement('br');
				d.appendChild(text);
				while(sep2>0) {
					d.appendChild(br);
					text=document.createTextNode(value.substr(sep1+1,sep2-sep1-1));
					d.appendChild(text);
					sep1=sep2;
					sep2=value.indexOf("|",sep1+1);
				}
				cell.appendChild(d);
				document.getElementById("c"+(7*lS+dS)).setAttribute(nav?"class":"className","ballon"+tdColor);
				cell.onmouseover=new Function("positionEvento("+(7*lS+dS)+")");
				mark[i]=dia;
				i++;
			}
			cell.firstChild.data=dia;
		}
	} else if(sexta) {
		corpo=document.getElementById('calendarBody');
		corpo.removeChild(corpo.lastChild);
		sexta=0;
	}
	for(i=1;mark[i];i++) markDemark(mark[i],1);
}
function markDemark(d,mDm) {
	var setimo=7-mark[0];
	var cS,lS=0;
	while (d>setimo) {
		setimo+=7;
		lS++;
	}
	cS=6+d-setimo;
	cell=document.getElementById(7*lS+cS);
	if(mDm) {
		cell.style.fontWeight="bold";
	}
	else {
		cell.removeChild(cell.lastChild);
		document.getElementById("c"+(7*lS+cS)).setAttribute(nav?"class":"className",null);
		cell.style.fontWeight="normal";
	}
}
function positionEvento(id) {
	var pos=parseInt(id)%7;
	if(nav) pos=pos==0?-108:pos==1?-91:pos==2?-74:pos==3?-57:pos==4?-40:pos==5?-24:-6;
	else pos=pos==0?-104:pos==1?-86:pos==2?-68:pos==3?-50:pos==4?-32:pos==5?-14:4;
	document.getElementById(id).lastChild.style.right=pos;
}
