Date.prototype.getWeekDay = function()
{
	if(this.getDay() == 0) return 7;
	else return this.getDay();
}
Date.prototype.addDate = function(days)
{
	this.setDate(this.getDate + days);
}
Date.prototype.getMonthDays = function()
{
	return 32 - new Date(this.getFullYear(), this.getMonth(), 32).getDate();
}
Date.prototype.cmp = function(d)
{
	return (this.getFullYear()==d.getFullYear() && this.getMonth()==d.getMonth() && this.getDate()==d.getDate());
}
Date.prototype.monthText = Array('Sausis','Vasaris','Kovas','Balandis','Gegužė','Birželis','Liepa','Rugpjūtis','Rugsėjis','Spalis','Lapkritis','Gruodis');
Date.prototype.getMonthT = function() {
	return this.monthText[ this.getMonth() ];
}

var t = new Date();
var calendarNow = new Date(t.getFullYear(), t.getMonth(), t.getDate());
var calendarMonth = new Date(calendarNow.getFullYear(), calendarNow.getMonth(), 1);
var calendarEvents = [];
var calendarEventsRaudonas = [];

function calenderRegisterEvent(dstr, url, date_text, text, raudonas)
{
	if(calendarEvents[dstr] == undefined) calendarEvents[dstr] = [];
	calendarEvents[dstr].push({'url': url, 'text': text, 'date': date_text, 'raudonas': raudonas});
	if(raudonas > 0) calendarEventsRaudonas[dstr] = true;
}

function calendarFormatDate(d)
{
	var y = d.getFullYear();
	var m = d.getMonth();
	var d = d.getDate();
	return (y * 100 + m + 1) * 100 + d;
}

function calendarDraw()
{
	$body = $('#calendar div.calendar_body');
	$body.empty();
	$('#calendar div.calendar_month').text(calendarMonth.getFullYear()+' '+calendarMonth.getMonthT());
	
	var d = new Date(calendarMonth.getFullYear(), calendarMonth.getMonth(), 1 );
	var start = 2-d.getWeekDay();
	var monthDays = d.getMonthDays();
	d.setDate(monthDays);
	var stop = d.getDate() + 7 - d.getWeekDay();
	for(day = start; day <= stop; day++)
	{
		d = new Date(calendarMonth.getFullYear(), calendarMonth.getMonth(), day );
		var td = document.createElement('div');
		var dstr = calendarFormatDate(d);
		if(calendarEvents[dstr]) {
			if(calendarEventsRaudonas[dstr]) $(td).addClass('calendar_day_event_red');
			else $(td).addClass('calendar_day_event');
			if(d.cmp(calendarNow)) $(td).addClass('event_today');
			$(td).html('<a href="#">'+d.getDate()+'</a>');
			td.dstr = dstr;
		} else {
			$(td).text(d.getDate());
			if(day < 1 || day > monthDays) $(td).addClass('calendar_day_over');
			else if(d.cmp(calendarNow)) $(td).addClass('calendar_today');
			else $(td).addClass('calendar_day');
		}
		if(d.getDay() == 0) $(td).css('border','0px');
		
		if(d.getWeekDay() == 1)
			$body.append( $(document.createElement('div')).addClass('calendar_week') );
		
		$('.calendar_week:last', $body).append(td);
	}
	$("#calendar .calendar_body a").showEvent();
}

function calendarRight()
{
	calendarMonth.setDate(calendarMonth.getMonthDays()+1);
	calendarDraw();
	return false;
}
function calendarLeft()
{
	calendarMonth.setDate(-1);
	calendarMonth.setDate(1);
	calendarDraw();
	return false;
}

$(document).ready(function(){
	calendarDraw();
});

function calendarGetEventHtml(dstr)
{
	if(!calendarEvents[dstr]) return '';
	var events = calendarEvents[dstr];
	var r = '';
	for(var i=0; i<events.length; i++)
	{
		var e = events[i];
		r += '<div class="cebMid"><a href="'+e.url+'"><span class="cebDate">'+e.date+'</span><br />'+e.text+'</a></div>'
	}
	return r;
}

function getPosition(e) {
    e = e || window.event;
    var cursor = {x:0, y:0};
    if (e.pageX || e.pageY) {
        cursor.x = e.pageX;
        cursor.y = e.pageY;
    } 
    else {
        var de = document.documentElement;
        var b = document.body;
        cursor.x = e.clientX + 
            (de.scrollLeft || b.scrollLeft) - (de.clientLeft || 0);
        cursor.y = e.clientY + 
            (de.scrollTop || b.scrollTop) - (de.clientTop || 0);
    }
    return cursor;
}


$.fn.showEvent = function(){	
	this.each(function(){
		var $parent = $(this).parent();
		var day = $(this).html();
		$(this).remove();
		$parent.html(day);
		$parent.mouseenter(function(){
			if($(this).hasClass('event_today')) {
				this.returnClass = 'event_today';
				$(this).append( $(this).clone()  );
				$(this).removeClass('event_today');
				$(this).children('div').css('margin-top','-24px');
			}
			var pos = $(this).offset();
			var box = document.createElement('div');
			$(box).addClass('ceb');
			$(box).css('top',(pos.top+22)+'px');
			$(box).css('left',(pos.left-18)+'px');
			$(box).css('position','absolute');
			$(box).hide();
			$(box).html('<div class="cebTop"></div>'+calendarGetEventHtml(this.dstr)+'<div class="cebBottom"></div>');
			$(this).append(box);
			$(box).slideDown(200);
		});
		$parent.mouseleave(function(){
			$(this).children('div').remove();
			if(this.returnClass) {
				$(this).addClass(this.returnClass);
				this.returnClass = false;
			}
		});
	});
}



