	
	//calendário
	var dDate = new Date();
	var dCurMonth = dDate.getMonth();
	var dCurDayOfMonth = dDate.getDate();
	var dCurYear = dDate.getFullYear();
	var objPrevElement = new Object();
	var cDay = dDate.getDay();
	var iDaysInMonth;

	var mesAtual;
	var anoAtual;
	var firstSelect = true;
	
	var months = ["Jan", "Fev", "Mar", "Abr", "Mai", "Jun", "Jul", "Ago", "Set", "Out", "Nov", "Dez"];
	
	function fToggleColor(myElement) {
		var toggleColor = "#000000";
		if (myElement.id == "calDateText") {
			if (myElement.color == toggleColor)
				myElement.color = "";
			else
				myElement.color = toggleColor;
		} else if (myElement.id == "calCell") {
			for (var i in myElement.children) {
				if (myElement.children[i].id == "calDateText") {
					if (myElement.children[i].color == toggleColor)
						myElement.children[i].color = "";
					else
						myElement.children[i].color = toggleColor;
				}
			}
		}
	}
	
	function fSetSelectedDay(myElement){
	  if($("calendario-volta").onclick!="#" && $("calendario-volta").onclick!="#"){
		if (myElement.id == "calCell") {
			var font = myElement.getElementsByTagName("font")[0];
			if (!isNaN(parseInt(font.innerHTML))) {
				
				/*
				if(firstSelect) {
					firstSelect = false;
					$("itens-agenda").innerHTML = "";
					$("calendario-volta").onclick=function onclick(event){javascript:updateCalendar(-1);};
					$("calendario-avanca").onclick=function onclick(event){javascript:updateCalendar(1);};
					return;
				}
				$("calendario-volta").onclick="#";
				$("calendario-avanca").onclick="#";
				*/
				$("calendario-volta").onclick=function onclick(event){javascript:updateCalendar(-1);};
				$("calendario-avanca").onclick=function onclick(event){javascript:updateCalendar(1);};
				
				myElement.className += " selectedDay";
				if(objPrevElement && objPrevElement.className)
					if(objPrevElement.className.indexOf("selectedDay")>=0) 
						objPrevElement.className = objPrevElement.className.replace("selectedDay", "");
				
				/*
				myElement.bgColor = "#a51";
				myElement.style.color = "#ffffff";
				myElement.style.fontWeight = "bold";
				if(objPrevElement.className) {
					objPrevElement.bgColor = "";
					objPrevElement.style.color = "#000000";
					objPrevElement.style.fontWeight = "normal";
				}
				*/
				objPrevElement = myElement;
				cDay = font.innerHTML;
				
				//faz a seleção dos contents da agenda, caso tenha id
				agenda = document.getElementById("id-agenda");
				$("itens-agenda").innerHTML = "aguarde...";
				totalNot = 0;
				totalNum = 0;
				inicia();
				
				//getContentsByDate(null, agenda.value, cDay + "/" + mesAtual + "/" + anoAtual);
				getContentsByWeek(null, agenda.value, cDay + "/" + mesAtual + "/" + anoAtual);
			}
		}
	  }
	}
	
	function fGetDaysInMonth(iMonth, iYear) {
		var dPrevDate = new Date(iYear, iMonth, 0);
		return dPrevDate.getDate();
	}
	
	function fBuildCal(iYear, iMonth, iDayStyle) {
		var aMonth = new Array();
		aMonth[0] = new Array(7);
		aMonth[1] = new Array(7);
		aMonth[2] = new Array(7);
		aMonth[3] = new Array(7);
		aMonth[4] = new Array(7);
		aMonth[5] = new Array(7);
		aMonth[6] = new Array(7);
		var dCalDate = new Date(iYear, iMonth-1, 1);
		var iDayOfFirst = dCalDate.getDay();
		iDaysInMonth = fGetDaysInMonth(iMonth, iYear);
		var iVarDate = 1;
		var i, d, w;
		if (iDayStyle == 2) {
			aMonth[0][0] = "Domingo";
			aMonth[0][1] = "Segunda-f";
			aMonth[0][2] = "Terça-f";
			aMonth[0][3] = "Quarta-f";
			aMonth[0][4] = "Quinta-f";
			aMonth[0][5] = "Sexta-f";
			aMonth[0][6] = "Sábado";
		} else {
			aMonth[0][0] = "d";
			aMonth[0][1] = "s";
			aMonth[0][2] = "t";
			aMonth[0][3] = "q";
			aMonth[0][4] = "q";
			aMonth[0][5] = "s";
			aMonth[0][6] = "s";
		}
		for (d = iDayOfFirst; d < 7; d++) {
			aMonth[1][d] = iVarDate;
			iVarDate++;
		}
		for (w = 2; w < 7; w++) {
			for (d = 0; d < 7; d++) {
				if (iVarDate <= iDaysInMonth) {
					aMonth[w][d] = iVarDate;
					iVarDate++;
				}
			}
		}
		return aMonth;
	}
	
	function fDrawCal(iYear, iMonth, iCellWidth, iCellHeight, sDateTextSize, sDateTextWeight, iDayStyle) {
		var myMonth;
		
		myMonth = fBuildCal(iYear, iMonth, iDayStyle);
		var str = "<table id=\"calendario\">" +
						"<thead>" +
						"<tr class='semana'>" +
						"<td>" + myMonth[0][0] + "</td>" +
						"<td>" + myMonth[0][1] + "</td>" +
						"<td>" + myMonth[0][2] + "</td>" +
						"<td>" + myMonth[0][3] + "</td>" +
						"<td>" + myMonth[0][4] + "</td>" +
						"<td>" + myMonth[0][5] + "</td>" +
						"<td>" + myMonth[0][6] + "</td>" +
						"</thead>" +
						"</tr>";
		
		for (w = 1; w < 7; w++) {
			str += "<tr>";
			for (d = 0; d < 7; d++) {
				str += "<td class=\"celula-dia\" id=calCell onmouseover='javascript:fToggleColor(this);' onMouseOut='fToggleColor(this)' onclick=fSetSelectedDay(this)>";
		
				if(!isNaN(myMonth[w][d]))
					//str += "<font id='calDateText' onmouseover='javascript:fToggleColor(this);' onmouseout='javascript:fToggleColor(this);' onclick='javascript:fSetSelectedDay(this)'>" + myMonth[w][d] + "</font>";
					str += "<font id='calDateText'>" + myMonth[w][d] + "</font>";
				else
					//str += "<font id='calDateText' onmouseover='javascript:fToggleColor(this);' onmouseout='javascript:fToggleColor(this);' onclick='javascript:fSetSelectedDay(this)'></font>";
					str += "<font id='calDateText'></font>";
				str += "</td>";
			}
			str += "</tr>";
		}
		str += "</table>";
		document.getElementById("data-calendario").innerHTML = months[mesAtual-1] + " " + anoAtual;
		return str;

	}
	
	function fUpdateCal(iYear, iMonth) {
		myMonth = fBuildCal(iYear, iMonth);
		objPrevElement.bgColor = "";
		//document.getElementById("calSelectedDate").value = "";
		for (w = 1; w < 7; w++) {
			for (d = 0; d < 7; d++) {
				if (!isNaN(myMonth[w][d]))
					//calDateText[((7*w)+d)-7].innerText = myMonth[w][d];
					document.getElementById("calDateText_" + w + "_" + d).innerText = myMonth[w][d];
				else
					//calDateText[((7*w)+d)-7].innerText = " ";
					document.getElementById("calDateText_" + w + "_" + d).innerText = " ";
			}
		}
		
		
	}
	
	function updateCalendar(direction) {
		agenda = document.getElementById("id-agenda");
		if(direction==1) {//próximo mês
			//se for mês 12, vai para mês 1 e para o próximo ano
			if(mesAtual==12) {
				mesAtual = 1;
				anoAtual++;
			} else
				mesAtual++;
		} else { //volta um mês
			//se for mês 1, volta para mês 12 e para o ano passado
			if(mesAtual==1) {
				mesAtual=12;
				anoAtual--;
			} else
				mesAtual--;
		}
		
		$("calendario-volta").onclick="#";
		$("calendario-avanca").onclick="#";
		
		document.getElementById("itens-agenda").innerHTML = "";
		document.getElementById("area-calendario").innerHTML = fDrawCal(anoAtual, mesAtual, 30, 30, "10px", "", 1);
		getDaysByDate(agenda.value, mesAtual, anoAtual);
	}

	function getContentsByDate(userId, folderId, date) {
		coreService.getContentsByArchiveDate(null, folderId, date,{
		  callback:function(dataFromServer) {
			callbackFunc_contentsByArchiveDate(dataFromServer, date);
		  }
		});
	}
	
	function callbackFunc_contentsByArchiveDate(objs, date) {
		totalNot = totalNot + objs.length;
		totalNum = totalNum + 1 ;
		
		if(objs.length>0) {
			if(totalNot==objs.length){
				document.getElementById("itens-agenda").innerHTML = "";
			}
			//percorre lista e printa itens
			for(i=0; i<objs.length; i++) {
				var p = document.createElement("p");
				var span = document.createElement("span");
				span.appendChild(document.createTextNode(date));
				p.appendChild(span);

				if(!objs[i].signature && objs[i].signature!="link"){
					var a = document.createElement("a");
					a.setAttribute("href", "/content/" + objs[i].alias + ".mmp");
					a.setAttribute("title", objs[i].name);
					a.appendChild(document.createTextNode(objs[i].name));
					p.appendChild(a);
				}else{	
					p.appendChild(document.createTextNode(objs[i].name));
				}

				document.getElementById("itens-agenda").appendChild(p);
				p.className = "clearfix";
			}
		}
		if(totalNot<5 && totalNum<=5 && parseInt(cDay) < iDaysInMonth) {
			cDay = parseInt(cDay) + 1;
			getContentsByDate(null, agenda.value, cDay + "/" + mesAtual + "/" + anoAtual);
		}else{
			if(totalNot<=0){
				document.getElementById("itens-agenda").innerHTML = "Não há eventos cadastrados nesse dia";			
			}
			
			$("calendario-volta").onclick=function onclick(event){javascript:updateCalendar(-1);};
			$("calendario-avanca").onclick=function onclick(event){javascript:updateCalendar(1);};
		}
	}
	
	function getContentsByWeek(userId, folderId, date) {
		coreService.getContentsByArchiveDateWeek(null, folderId, date,{
		  callback:function(dataFromServer) {
			callbackFunc_contentsByArchiveDateWeek(dataFromServer, date);
		  }
		});
	}
	function callbackFunc_contentsByArchiveDateWeek(objs) {
		var today = dCurDayOfMonth +"/"+ (dCurMonth+1) +"/"+ dCurYear;
		document.getElementById("itens-agenda").innerHTML = "<h4 style='color:#666'>Eventos da semana</h4>";
		if(objs.length>0) {
			for(i=0; i<objs.length; i++) {
				var p = document.createElement("p");
				var span = document.createElement("span");
				var dia = objs[i].archiveDate.getUTCDate();
				var mes = objs[i].archiveDate.getUTCMonth() + 1;
				var ano = objs[i].archiveDate.getUTCFullYear();
				var date = dia + "/" + mes + "/" + ano;
				date=(date==today)?"Hoje":date;
				span.appendChild(document.createTextNode(date));
				p.appendChild(span);
				if(!objs[i].signature && objs[i].signature!="link"){
					var a = document.createElement("a");
					a.setAttribute("href", "/content/" + objs[i].alias + ".mmp");
					a.setAttribute("title", objs[i].name);
					a.appendChild(document.createTextNode(objs[i].name));
					p.appendChild(a);
				}else{	
					p.appendChild(document.createTextNode(objs[i].name));
				}
				document.getElementById("itens-agenda").appendChild(p);
				p.className = "clearfix";
			}
		}
		else
			document.getElementById("itens-agenda").innerHTML = "Não há eventos cadastrados nessa semana";			
	}
	
	function getDaysByDate(folderId, Month, Year) {
		coreService.getDaysByArchiveDate(folderId, Month, Year,{
		  callback:function(dataFromServer) {
			callbackFunc_DaysByDate(dataFromServer);
		  }
		});
	}

	function callbackFunc_DaysByDate(objs) {
		calendarioDiv = $("area-calendario");		
		calendarioDias = calendarioDiv.getElementsByTagName("td");
		
		for(i=0; i<objs.length; i++) {
			diaRetorno = buscaDia(calendarioDias,objs[i]);
				diaRetorno.parentNode.className = "dia-valido";
		}

		$("calendario-volta").onclick=function onclick(event){javascript:updateCalendar(-1);};
		$("calendario-avanca").onclick=function onclick(event){javascript:updateCalendar(1);};

		if((dCurMonth + 1)==mesAtual && dCurYear==anoAtual){
			selecionaDiaAtual();
		}
	}
	
	function buscaDia(calendarioDias, obj) {
		for(cal=0; cal<calendarioDias.length; cal++) {
			font = calendarioDias[cal].getElementsByTagName("font");
			if(font.length>0){
				if(obj == font[0].innerHTML) {
					return font[0];
				}
			}
		}
	}
	function selecionaDiaAtual() {
		calendarioDiv = $("area-calendario").getElementsByTagName("td");
		diaRetorno = buscaDia(calendarioDiv , dCurDayOfMonth);
		
		fSetSelectedDay(diaRetorno.parentNode);
		//fSetSelectedDay(diaRetorno, true);
	}
