// Asynchronous Event Calendar
// Copyright (C) Zarko Bulatovic 2010, zb10948@gmail.com

var entries;


function arrExists(arr, target)
{
	var i;
	for(i = 0; i < arr.length; i++) 
	{
		if (arr[i] == target) { return true; }
	}
	return false;
}


function dataHolder()
{
	this.title = "";
	this.d = "";
	this.id = "";
	this.text = "";
}

function dataHolder(in_title, in_d, in_id, in_text)
{
	this.title = in_title;
	this.d = in_d;
	this.id = in_id;
	this.text = in_text;
}	

function gotoEvent(day)
{
	for(i = 0; i < entries.length; i++)
	{
		f_date = entries[i].getElementsByTagName('date')[0].childNodes[0].nodeValue;
		d_arr = f_date.split("."); 
		if(parseInt(d_arr[0], 10) == day) {break; }
	}
	
	id = entries[i].getElementsByTagName('id')[0].childNodes[0].nodeValue;
	window.location = "news.php?id=" + id;
}

function displayData(day)
{
	
	for(i = 0; i < entries.length; i++)
	{
		f_date = entries[i].getElementsByTagName('date')[0].childNodes[0].nodeValue;
		d_arr = f_date.split("."); 
		if(parseInt(d_arr[0], 10) == day) {break; }
	}

	title = entries[i].getElementsByTagName('heading')[0].childNodes[0].nodeValue;
	text = entries[i].getElementsByTagName('maintext')[0].childNodes[0].nodeValue;

	html = "<h1>" + title + "</h1><br></p>" + text + "</p>";	

	document.getElementById('floater').innerHTML = html;
	document.getElementByid('floater').style.border = "none";

}

function do_rolldown()
{
	var layer = document.getElementById('cal');
	var h = layer.style.height;
	var height = parseInt(h.substr(0, 3));
	
	height += 300; var new_h = height + "px";
	layer.style.height = new_h;
	document.getElementById('floater').style.display = "block";	 
}

function do_rollup()
{
	var layer = document.getElementById('cal');
	var h = layer.style.height;
	var height = parseInt(h.substr(0, 3));
	
	height -= 300; var new_h = height + "px";
	layer.style.height = new_h;
	document.getElementById('floater').style.display = "none";	
	
}

function getData(m, y)
{
	req = new XMLHttpRequest();
	req.open("GET", "xml_source.php?year=" + y + "&month=" + m, false); 

	req.send(); 
	xmldata = req.responseXML;
	entries = xmldata.getElementsByTagName("entry");
}

function buildCal(m, y, cM, cH, cDW, cD, brdr)
{

var mn = ['Sijecanj','Veljaca','Ozujak','Travanj','Svibanj','Lipanj','Srpanj','Kolovoz','Rujan','Listopad','Studeni','Prosinac'];
var dim = [31, 0, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];
var oD = new Date(y, m - 1, 1); oD.od = oD.getDay() + 1; 
var todaydate = new Date(); 
var scanfortoday = (y == todaydate.getFullYear() && m == todaydate.getMonth() + 1) ? todaydate.getDate() : 0; 

dim[1] = (((oD.getFullYear() % 100 != 0) && (oD.getFullYear() % 4 == 0)) || (oD.getFullYear() % 400 == 0)) ? 29 : 28;

getData(m, y);

var event_array = new Array();

for (ec = 0; ec < entries.length; ec++)
{
	var fulldate = entries[ec].getElementsByTagName('date')[0].childNodes[0].nodeValue;
	d_array = fulldate.split(".");
	event_array.push(d_array[0]); 	
}

var t='<div class="'+cM+'"><table class="'+cM+'" cols="7" cellpadding="0" border="'+brdr+'" cellspacing="0"><tr align="center">';
t+='<td><a href = "javascript:go_down();"><img src = "images/arrow-left.png" border = 0/></a></td><td colspan="7" align="center" class="'+cH+'">'+mn[m-1]+' - '+y+'</td><td><a href = "javascript:go_up();"><img src = "images/arrow-right.png" border = 0/></a></td></tr><tr align="center"></table><table class="'+cM+'" cols="7" cellpadding="0" border="'+brdr+'" cellspacing="0">';


for(s=0;s<7;s++)t+='<td align = "center" class="'+cDW+'">'+"NedPonUtoSriCetPetSub".substr(s * 3,3)+'</td>';
t+='</tr><tr align="center">';
for(i=1;i<=42;i++){
var x=((i-oD.od>=0)&&(i-oD.od<dim[m-1]))? i-oD.od+1 : '&nbsp;';


if(arrExists(event_array, x))
{
	t += '<td class="ev_day" onclick = "gotoEvent(\'' + x + '\');" onmouseover = "do_rolldown(); displayData(\'' + x + ' \');" onmouseout = "do_rollup();"><b>' + x + '</b></td>';
} else 
{
	if(x != '&nbsp;') { t += '<td class="' +cD+ '">' + x + ' </td>'; }
	else { t += '<td class="noday"></td>'; }

}
if(((i)%7==0)&&(i<36))t+='</tr><tr align="center">';
}
return t+='</tr></table></div><div id = "floater" class = "floater"></div>';

}


function generate_calendar()
{
	todaydate = new Date();
	month = todaydate.getMonth() + 1;
	year = todaydate.getFullYear();	

	document.getElementById('cal').innerHTML = buildCal(month, year, "main", "month", "daysofweek", "days", 0);
}

function go_up()
{
	
	if(month == 12) 
	{
		if(year > 2100) return;
		year++; month = 1;
	}
	else { month++; }


	document.getElementById('cal').innerHTML = buildCal(month, year, "main", "month", "daysofweek", "days", 0);
}

function go_down()
{

	if(month == 1) 
	{
		if(year < 2000) return;
		year--; month = 12;
	}
	else { month--; }

	document.getElementById('cal').innerHTML = buildCal(month, year, "main", "month", "daysofweek", "days", 0);
}



