var x_daydigit = 20;
var y_daydigit = 20;
var xbig_daydigit = 60;
var ybig_daydigit = 100;

var ev_titles = new Array();
var ev_abstracts = new Array();
var ev_counter = 0;
var ev_state = "hidden";
var haveToSlide = true;
var current_month = new Array();
var timer_id = 0;
var evno = 0;
var loading = false;
var has_to_appear = false;
var slider_ready_to_start = false;
var events_div = 1;
var ev_link = '';
var last_day = 30;
var month;
var year;
var d = new Date();
var current_day = d.getDate();
var current_day_id = current_day;
month = d.getMonth();
month++;
year = d.getFullYear();

function changeEvent(where)
{
	ev_counter = where == 1 ? parseInt(ev_counter)+1 : parseInt(ev_counter) -1;
	
	if(ev_counter >= ev_titles.length)
		ev_counter = 0;
	if(ev_counter < 0)
		ev_counter = ev_titles.length-1;
	updateEventText();
	updateSelector();	
}

function updateEventText()
{
	if(ev_titles[ev_counter] != undefined)
	{
		$('ev_title').innerHTML = "<a style='text-decoration: none' href='/agenda"+ev_link+"'>"+ev_titles[ev_counter]+"</a>";
		$('ev_abstract').innerHTML = "<a style='text-decoration: none; font-weight: normal' href='/agenda"+ev_link+"'>"+ev_abstracts[ev_counter]+"</a>";
	}
	return;
}

function lockSlider()
{
	slider_ready_to_start = false;
	return;
}

function unlockSlider()
{
	slider_ready_to_start = true;
	return;
}

function stopEventSliding(e)
{
	haveToSlide = false;
	return;
}

function startEventSliding()
{
	if(ev_titles.length < 2)
		return;
	haveToSlide = true;
	return;
}

function updateSelector()
{
	cleanSelectors();
	try {
		$('selector_'+ev_counter).removeClassName('eventoff');
		$('selector_'+ev_counter).addClassName('eventon');
	} catch(e) {}
	return;
}

function logga(text)
{
	var d = new Date();
	var h = d.getHours();
	var m = d.getMinutes();
	var s = d.getSeconds();
	$('testdiv').innerHTML += h+":"+m+":"+s+" "+text +"<br>";
}

function slideEvents()
{
	if(ev_state == "hidden" && has_to_appear)
	{
		updateEventText();
		new Effect.Appear($('eventsdiv'));
		ev_state = "visible";
		if(evno > 1)
			updateSelector();
		timer_id = setTimeout("slideEvents()", 4000);
		return;
	}
	else if(haveToSlide)
	{
		ev_counter++;
		if(ev_counter >= ev_titles.length)
			ev_counter = 0;
		new Effect.Fade($('eventsdiv'));
		ev_state = "hidden";
		timer_id = setTimeout("slideEvents()", 1000);
		return;
	}
	timer_id = setTimeout("slideEvents()", 500);
	return;
}

function cleanSelectors()
{
	var selectors = $('event_selector').immediateDescendants();
	
	for(i=0; i<selectors.length; i++)
	{
		selectors[i].removeClassName('eventon');
		selectors[i].addClassName('eventoff');
	}
	return;
}

function buildEvents(t)
{
	emptySelector();
	$H(t).toJSON();
	var evts = eval('(' + t + ')');
	evno = evts.dayEvents.dayEvent.length;

	var dd = evts.dayEvents.day;
	var mm = evts.dayEvents.month;
	var yy = evts.dayEvents.year;

	var selectors = new Array();
	ev_titles = new Array();
	ev_abstracts = new Array();
	
	for(i=0; i<evno; i++)
	{
		ev_titles[i] = evts.dayEvents.dayEvent[i].ev_title;
		ev_abstracts[i] = evts.dayEvents.dayEvent[i].ev_abstract;
		//ev_link = "?day="+dd+"&month="+mm+"&year="+yy;
		ev_link = "/(d)/"+dd+"/(m)/"+mm+"/(y)/"+yy;
		var _div = document.createElement('div');
		_div.setAttribute('id', 'selector_'+i);
		Event.observe(_div, 'click', function(event) {
			var element = Event.element(event);
			var id = element.id;
			var no = id.replace(/selector_/, '');
			ev_counter = no;
			updateSelector();
 			updateEventText();
		});
		Element.addClassName(_div, 'eventoff');
		selectors[i] = _div;
	}
	selectors = selectors.reverse();
	for(i=0; i<evno; i++)
		$('event_selector').appendChild(selectors[i]);	
	
	$('events_div').removeClassName("wait");
	loading = false;
	if(evno == 1)
	{
		$('selector_0').addClassName('eventon');
		stopEventSliding();
		if(hufewrif)
		{
			updateEventText();
// 			$('eventsdiv').hide();
// 			alert("#");
// 			new Effect.Appear('eventsdiv');
		}
	}
	if(evno > 0)
	{
		has_to_appear = true;
	}
	if(evno > 1)
		startEventSliding();
	unlockSlider();
	return;
}

function getAgendaEvents(d)
{
	new Ajax.Request('/layout/set/ajax/ajax/dayevent?d='+d,
	{
		method:'get',
		onSuccess: function(t) {
          	buildEvents(t.responseText);
      	},
		onFailure: function(){ alert('ERROR #1 $dayevent') }
	});
	return;
}

function setCurrentDayDigits()
{
	var day = current_day;
// 	day = d.getDay();
	var base_offset = 220;
	var _x = new Array(base_offset, base_offset);
	var _y = new Array(0, 0);
	var d = new Array();
	if(day < 10)
	{
		d[0] = 0;
		d[1] = day;
	}
	else
	{
		day = day+'';
		d[0] = parseInt(day.substr(0,1));
		d[1] = parseInt(day.substr(1,1));
	}
	for(i=0; i<2; i++)
	{
		if(d[i] > 4)
			_x[i] += xbig_daydigit;
		_x[i] *= -1;
		_y[i] = ybig_daydigit * Math.round(d[i] - (Math.floor(d[i]/5)*5)) * (-1);
		$('bigday_'+i).style.backgroundPosition = _x[i]+"px "+_y[i]+"px";
	}
	return;
}

function setDayDigits(id, day, hasGone, hasEvent, evDate)
{
	var _x = 0;
	var _y = (day-1) * y_daydigit;
	
	
	if(hasGone == 2)
	{
		_x = x_daydigit * 5;
		current_day = day;
		current_day_id = id;
		getAgendaEvents(evDate);
	}
	else
	{
		_x = hasEvent == 1 ? x_daydigit * 2:0;
		_x = hasGone  == 1 ? _x + x_daydigit:_x;
	}
	
	_x *= -1;
	_y *= -1;

	if(hasEvent == 1 && hasGone != 2)
	{
		var _a = document.createElement("a");
		_a.setAttribute('id', 'link'+day);
		_a.setAttribute('href', 'javascript:;');
		
		var _div = document.createElement("div");
		_div.setAttribute('id', 'hoverDiv'+day);
		
		Event.observe(_div, 'click', function() {changeDate(evDate, day)});
		Event.observe(_div, 'mouseover', function() {shiftBG(0,day,hasGone)});
		Event.observe(_div, 'mouseout', function() {shiftBG(1,day,hasGone)});
		Element.addClassName(_div, 'inBg');

		_div.style.backgroundPosition = _x + "px " + _y + "px";
		_a.appendChild(_div);
		$('div'+id).appendChild(_a);
	}
	else
 		$('div'+id).style.backgroundPosition = _x + "px " + _y + "px";
	return;
}

function emptySelector()
{
	try {
		for(i=0; i<evno;i++)
			$('selector_'+i).remove();
	} catch(e){};
	return;
}

function cleanEvents()
{
	emptySelector();
	ev_titles = new Array();
	ev_abstracts = new Array();
	$('ev_title').innerHTML = "";
	$('ev_abstract').innerHTML = "";
	ev_state = "hidden";
	stopEventSliding();
	ev_counter = 0;
	return;
}

function changeDate(evDate, day)
{
	if(loading)
		return;
	loading = true;
	lockSlider();
	$('ev_title').innerHTML = "";
	$('ev_abstract').innerHTML = "";
	ev_state = "hidden";
	ev_counter = 0;
	cleanAgendaStyles(0);
	current_day = day;
	cleanAgendaStyles(1);
	$('events_div').addClassName("wait");
	getAgendaEvents(evDate);
	return;
}

function shiftBG(type, day, hasGone)
{
	var x = x_daydigit * -4;
	var y = (day-1) * y_daydigit;
	if(type == 1 && hasGone == 1)
		x = x_daydigit * -3;
	else if(type == 1 && hasGone == 0)
		x = x_daydigit * -2;
	$('hoverDiv'+day).style.backgroundPosition = x + "px -" + y + "px";
}

function trim(stringToTrim) {
	return stringToTrim.replace(/^\s+|\s+$/g,"");
}
function ltrim(stringToTrim) {
	return stringToTrim.replace(/^\s+/,"");
}
function rtrim(stringToTrim) {
	return stringToTrim.replace(/\s+$/,"");
}

function fillAgenda()
{
	var eventsFound = 0;
	for(i=0; i<last_day; i++)
	{
		if(parseInt(current_month[i][3]) > 0)
		{
			eventsFound++;
		}
		setDayDigits(current_month[i][0], current_month[i][1], current_month[i][2],
					 current_month[i][3], current_month[i][4]);
	}
	Element.show('bigday_0');
	if(eventsFound == 0 && events_div == 1)
	{
		new Effect.BlindUp('events_div');
		$("events_window").removeClassName('agenda_closeUP');
		$("events_window").addClassName('agenda_blindUp');
		
		events_div = 0;
	}
	else if(eventsFound > 0 && events_div == 0)
	{
		new Effect.BlindDown('events_div');
		$("events_window").removeClassName('agenda_blindUp');
		$("events_window").addClassName('agenda_closeUP');
		
		events_div = 1;
	}
}


function cleanAgendaStyles(type)
{
	var past = 2;
	var idx = current_day -1;

	if(idx < 0)
		return;

	if(type == 0)
	{
		
		if(current_month[idx][2] == 2 || current_month[idx][2] == 0)
			past = 0;
		else
			past = 1;	
	}
	else
		$('link'+current_month[idx][1]).remove(); 
	
	setDayDigits(current_month[idx][0], current_day, past, 1, current_month[idx][4]);
}

var hufewrif=0;

function getCalendar(m,y)
{
	m += '';
	if(m.length < 2)
		m = '0'+m;
	new Ajax.Request('/index.php/rodeo/layout/set/ajax/ajax/agenda?d='+''+m+''+y,
	{
		method:'get',
		onSuccess: function(t) {
        	buildCalendar(t.responseText);
    	},
    	evalScripts: true,
		onFailure: function(){ alert('ERROR #1') }
	});
	hufewrif++;
	return;
}

function changeMonth(where)
{
	stopEventSliding();
	if(loading)
		return;
	loading = true;
	month = where == 0 ? month - 1: month + 1;
	
	if(month > 12)
	{
		year++;
		month = 1;
		buildYearFunctions(year);
	}
	else if(month < 1)
	{
		year--;
		if(year < 2007)
		{
			year++;
			month++;
			loading = false;
			return;
		}
		month = 12;
		buildYearFunctions(year);
	}		

	Element.hide('agendaDays');
	cleanAgenda();
	cleanEvents();
	Element.show('spinner_month');
	getCalendar(month, year);	
}

function cleanAgenda()
{
	var children = new Array();
	
	for(i=1;i<=42;i++)
	{
		$('div'+i).setStyle({
			backgroundPosition: '-120px -600px'
		});
		children = $('div'+i).immediateDescendants();
		for(j=0; j<children.length;j++)
			$(children[j].id).remove();
	}
	return;
}

function buildMonthFunctions(month, id)
{
	var _month = (month-1)*(-1*20);
	$(id).style.backgroundPosition = "-140px " + _month + 'px';
}

function buildYearFunctions(year)
{
	var _ybase = 280;
	var _y =  (((year - 2007) * 20) + _ybase) * (-1);
	$('year_name').style.backgroundPosition = "-140px " + _y + 'px';
	return;
}

function buildCalendar(transport)
{
	event_day = "";
	current_month = new Array();
	current_day = 0;
	
	cleanAgenda();
	
	var agenda = eval('(' + transport + ')');
	$H(transport).toJSON();
		
	last_day = agenda.agendaDays.lastday;
	var days = new Array("Mo", "Tu", "We", "Th", "Fr", "Sa", "Su");
	var days_offset = (-1) * (x_daydigit * 6);
	var y = 0;
	var first_event = 0;
	var first_future_event = 0;
	var event_day = 0;
	for(i=0; i<days.length; i++)
	{
		y = i * y_daydigit * (-1);
		$('agendaDay'+days[i]).style.backgroundPosition = days_offset+"px " + y + "px";
	}

	for(i=0; i<last_day; i++)
	{
		
		if(first_event == 0 && agenda.agendaDays.day[i].hasEvent == 1)
		{
			first_event = agenda.agendaDays.day[i].date;
			event_day = i+1;
		}
		if(first_future_event == 0 && agenda.agendaDays.day[i].hasGone != 1 && agenda.agendaDays.day[i].hasEvent == 1)
		{
			first_future_event = agenda.agendaDays.day[i].date;
			event_day = i+1;
		}
		current_month[i] = new Array(agenda.agendaDays.day[i].tdid, agenda.agendaDays.day[i].index, 
									 agenda.agendaDays.day[i].hasGone, agenda.agendaDays.day[i].hasEvent,
									 agenda.agendaDays.day[i].date);
	}
	
	if(first_future_event > first_event)
		first_event = first_future_event;
	
	buildMonthFunctions(agenda.agendaDays.month, 'month_name');
	fillAgenda();
	Element.hide('spinner_month');
	Element.show('agendaDays');
	loading = false;
	
	if(first_event > 0)
	{
// 		getAgendaEvents(first_event);
		cleanAgendaStyles(0);
		current_day = event_day;
		cleanAgendaStyles(1);
	}
	return;
}

var debug = false;

function resetDebug()
{
	$('mydebug').innerHTML = '';
}

function $$$$(text)
{
	if(debug)
		Element.show('mydebug');
	$('mydebug').innerHTML += text+"<br>";
}