// copyright Stephen Chapman, 10th June 2006, 30th October 2006
var tb = 't'; // top or bottom (t or b)

var linkclr = '#ff9999'; // link text colour
var noMessage =  'No event messages to display for today'; // message to display when no entry in array
var dA = new Array(); var x = 0;

var baseUrl = '/xportal/xmain?xpid=oe&xpgid=oe_agenda_list';

// first 8 characters in ccyymmdd format for single date events
// first 8 characters in 0000mmdd format for every year events
/*dA[x++] = "00000101 New Year";
dA[x++] = "00000214 Valentine's day";
dA[x++] = "00000709 Steve's Birthday";
dA[x++] = "00000919 Site Anniversary";
dA[x++] = "00001206 St Nicholas' Day";
*/
// dA[x++] = "20060610 New Event Calendar Started today";

var pageLoaded = 0; 
window.onload = function() {
	pageLoaded = 1;
}
function loaded(i,f) 
	{
		if (document.getElementById && document.getElementById(i) != null) 
			f(); 
		else if (!pageLoaded) 
			setTimeout('loaded(\''+i+'\','+f+')',100);
}
function monthlength(month,year) {
	var dd = new Date(year, month, 0);return dd.getDate();
}
var moy = ['Janeiro','Fevereiro','Mar&ccedil;o','Abril','Maio','Junho','Julho','Agosto','Setembro','Outubro','Novembro','Dezembro'];
var today = new Date();
var selDate = today.getFullYear()+getmmdd(today.getMonth()+1,today.getDate());

function dispCal(yy,mm) {
	if (mm < 0 || mm > 12) {
		alert('month must be between 1 and 12'); 
		return false;
	} 
	
	if (yy != 0 && (yy < 1901 || yy > 2100)) {
		alert('year must be after 1900 and before 2101'); return false;
	} 
	
	//aqui q tem de chamar os eventos através de AJAX
	
	startRequest ( 'http://'+ window.location.host +'/xportal/repository/jsp/events.jsp?year='+ yy +'&month='+ mm, yy, mm, "dispCal2" );
}

function dispCal2(yy, mm, eventos)
{


	if ( eventos != null )
	{
		dA = eventos.split(';');
	}		
	
	var dow = ['D','S','T','Q','Q','S','S']; 
	var calendar = new Date();  
	var today = calendar.getDate(); 
	calendar.setDate(1); 
	
	if (yy > 1900) 
		calendar.setFullYear(yy); 
	
	if (mm > 0) 
		calendar.setMonth(mm - 1); 
	
	var yy = year = calendar.getFullYear(); 
	var month = calendar.getMonth(); 
	calendar.setDate(today); 
	var weekday = calendar.getDay(); 
	var daysInMonth = monthlength(month+1,year); 
	var hilite_start = '<td width="20" class="curDay" title="Hoje"><b>'; 
	var td_start = '<td width="20" class="monthDays">'; 

	if (document.getElementById) {
		var mmb = month;  
		mm = month + 1; 
		var yya = yyb = yy; 
		
		if (mmb <1) {
			mmb += 12; yyb--;
		} 
		
		var mma = month + 2; 
		
		if (mma > 12) {
			mma -= 12; 
			yya++;
		} 
		
		var yb = yy -1; 
		var ya = yy +1; 
		//cal += '<table border="0" cellspacing="0" cellpadding="2" width="140"><tr><td><a href="#" onclick="if (cala = dispCal('+yb+','+mm+')) {document.getElementById(\'cal\').innerHTML = cala; return false;}"><<</a></td><td><a href="#" onclick="if (cala = dispCal('+yyb+','+mmb+')) {document.getElementById(\'cal\').innerHTML = cala; return false;}"><</a></td><td align="right"><a href="#" onclick="if (cala = dispCal('+yya+','+mma+')) {document.getElementById(\'cal\').innerHTML = cala; return false;}">></a></td><td align="right"><a href="#" onclick="if (cala = dispCal('+ya+','+mm+')) {document.getElementById(\'cal\').innerHTML = cala; return false;}">>></a></td></tr></table>';
	} 

	var curMonth = ( new String(mm).length == 1 ? ("0"+ new String(mm)) : mm);
	var url = baseUrl + "&oe_agenda_list_qry="+ escape("to_char(dataevento,'yyyymm')='"+ year + curMonth+"'");

	var cal = '<div id="cal"><div><table border="0" cellspacing="0" cellpadding="2" class="calendar"><tr><td colspan="7"><table width="100%" cellspacing="0"><tr><td><a href="#" onclick="if (cala = dispCal('+yyb+','+mmb+')) {document.getElementById(\'cal\').innerHTML = cala; return false;}" class="calNav"><</a><\/td><td colspan="7" class="curYearMoth" align="center"><a href="'+ url +'">' + moy[month]  + ' ' + year + '</a><\/td><td align="right"><a href="#" onclick="if (cala = dispCal('+yya+','+mma+')) {document.getElementById(\'cal\').innerHTML = cala; return false;}" class="calNav">></a><\/td><\/td><\/tr><\/table><\/tr><tr>'; 
	
	for(dex=0; dex < 7; dex++) {
		cal += td_start +'<span class="weekDays">'+ dow[dex] + '</span></td>';
	} 
	
	cal += '<\/tr><tr>'; 
	var day2 = today; 
	
	for (dex = today; dex > 6; dex -=7) day2 = dex; 
	
	weekday -= day2 - 1; 
	
	while (weekday < 0) 
		weekday += 7; 
	
	for(dex=0; dex < weekday; dex++) 
		cal += td_start + ' <\/td>'; 
	
	for(dex=1; dex <= daysInMonth; dex++) {
		if(weekday == 7) {
			cal += '</tr><tr>'; 
			weekday = 0;
		} 
		
		if(selDate==year+getmmdd(month+1,dex)) 
			cal += hilite_start +'<div '+clickDate(dex,month,year) + '>'+ dex + '<\/div><\/b><\/td>'; 
		else 
			cal += td_start + '<div '+clickDate(dex,month,year) + '>' + dex + '<\/div><\/td>'; 
		
		weekday += 1;
	} 
	
	for(dex=weekday; dex < 7; dex++) 
		cal += td_start + ' <\/td>'; 
	
	cal += '<\/tr><\/table><\/div>';
	
	if (document.getElementById) {
	} 
	else {
		cal += '<div> </div>';
	} 
	
	cal += '</div>'; 
	
	document.getElementById('calendar').innerHTML = cal;
//	return cal;
}


function start() {
	var x='';
	var y = ''; 
	
	if (tb == 't') 
		y = x + dispCal(0,0); 
	else 
		y = dispCal(0,0) + x; 
	
	//document.getElementById('calendar').innerHTML = y;
}

loaded('calendar',start);

function clickDate(day, month, year) {
	var ct = nextDate(year + getmmdd(month+1,day));
	
	if (ct == '') 
		ct = nextDate('0000' + getmmdd(month+1,day));

	if (ct == '') 
		return ct; 
	else {
		var desc = isDate(day, month, year);

		var tipoCss = desc.substr(1,1);
		desc = desc.substr(2);
		
		var url = baseUrl + "&oe_agenda_list_qry="+ escape("trunc(dataevento,'dd')<=to_date('"+ ( year + getmmdd(month+1,day) )+"','yyyymmdd') and trunc(datafimevento,'dd') >=to_date('"+ ( year + getmmdd(month+1,day) )+"','yyyymmdd')");
															
		url = 'window.location="'+ url +'";';

		return "class='eventDay"+ tipoCss +"' title='"+ desc +"' onclick='"+ url +"'";
	}
}

function isDate(dayVal,monthVal,yearVal) {
	var ct = nextDate(yearVal + getmmdd(monthVal+1,dayVal));
	
	if (ct == '') 
		ct = nextDate('0000' + getmmdd(monthVal+1,dayVal));
	
	if (ct == '') 
		ct = noMessage;
		
	return ct;
}

function nextDate(yymmdd) {
	var x = dA.length;
	
	for (var i = 0; i < x; i++) {
		if (dA[i].substr(0,8) == yymmdd) 
			return dA[i].substr(8);
	}
	return '';
}

function getmmdd(mm,dd) {
	return (mm > 9 ? '' + mm : '0' + mm) + (dd > 9 ? dd : '0' + dd);
}

//******************************** AJAX *********************************
//***********************************************************************
function startRequest(xUrl, yy, mm, gotoFunction) {

  var xmlhttp = false;

  /*@cc_on @*/

  /*@if (@_jscript_version >= 5)

  // JScript gives us Conditional compilation, we can cope with old IE versions.
  // and security blocked creation of the objects.

  try {
    xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
   } catch (e) {
      try {
        xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
      } catch (E) {
        xmlhttp = false;
      }
   }

  /*@end @*/

  if (!xmlhttp && typeof XMLHttpRequest!='undefined') {
    xmlhttp = new XMLHttpRequest();
  }

  xmlhttp.open("GET", xUrl,true);

  xmlhttp.onreadystatechange=function() {

          if (xmlhttp.readyState==4) {

            if (xmlhttp.status == 200) {
				var txt = trim(xmlhttp.responseText);
				
				eval( gotoFunction +'('+ yy+','+mm+',"'+ txt +'");' );
                
            }
            else {
                if ( xmlhttp.status == 404 ) {
                    //alert("Página não encontrada.");
					eval( gotoFunction +'('+ yy+','+mm+',"");' );
                }
                else if ( xmlhttp.status == 12029 ) {
                    //alert("Ligação com o servidor perdida.");
					eval( gotoFunction +'('+ yy+','+mm+',"");' );
                }
                else{
                    //alert('There was a problem with the request. Err.: '+ xmlhttp.statusText);
					eval( gotoFunction +'('+ yy+','+mm+',"");' );
                }
            }          
          }
  }
  
  xmlhttp.send(null);

}

function trim(s)
{
		return rtrim(ltrim(s));
}
function ltrim(s)
{
		var l=0;
		while(l < s.length && s.charAt(l)==' ')
		{       l++; }
		return s.substring(l, s.length);
}
function rtrim(s)
{
		var r=s.length -1;
		while(r > 0 && s.charAt(r)==' ')
		{       r-=1;   }
		return s.substring(0, r+1);
}