var calendar = function() {
	this.renderDate = null;
	this.selectedDate   = null;
	this.lang = 'lt';
	this.base_href = '';
	this.dayNames = {lt : ['P', 'A', 'T', 'K', 'P', 'Š ', 'S']};
	this.monthNames = {lt : ['Sausis', 'Vasaris', 'Kovas', 'Balandis', 'Gegužė', 'Birželis ', 'Liepa', 'Rugpjūtis', 'Rugsėjis', 'Spalis', 'Lapkritis', 'Gruodis']};
	this.dayEvents = {};
}


calendar.instance = null;
calendar.getInstance = function() {
	return calendar.instance ? calendar.instance : (calendar.instance = new calendar());
}

calendar.getMonthDayCount = function(year, month){
	var days = [31, (((year % 4 == 0) && (year % 100 != 0)) || (year % 400) == 0) ? 29 : 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];
	return (days[month-1]) ? days[month-1] : days[0];
}

calendar.prototype.setMonth = function(delta){
	this.renderDate += delta;
	if((this.renderDate % 100) > 12){ this.renderDate = (Math.floor(this.renderDate/100)+1)*100+1; }
	if((this.renderDate % 100) < 1 ){ this.renderDate = (Math.floor(this.renderDate/100)- 1)*100+12;}
	this.render();
}

calendar.prototype.render = function() {
	if( this.selectedDate == null ){
		var tempDate = new Date();
		this.selectedDate = tempDate.getFullYear()*10000+(tempDate.getMonth()+1)*100+tempDate.getDate();
	}
	if(this.renderDate == null){ this.renderDate = Math.floor(this.selectedDate/100); }
	var renderYear = Math.floor( this.renderDate/100);
	var renderMonth = this.renderDate%100;
	
	var tempDate = new Date();
	tempDate.setYear(renderYear);
	tempDate.setMonth(renderMonth-1);
	tempDate.setDate(1);

	var dayCount = calendar.getMonthDayCount( renderYear, renderMonth );
	/*var beginEmptyCount = tempDate.getDay();*/
	var beginEmptyCount = (tempDate.getDay()+6)%7;
	
	var endEmptyCount = 0;
	if(beginEmptyCount == 0){
		endEmptyCount = 35 - dayCount;
	} else {
		if((beginEmptyCount-1+dayCount) <= 35){
			endEmptyCount = 35 - (beginEmptyCount-1+dayCount);
		} else { endEmptyCount = 42 - (beginEmptyCount-1+dayCount); }
	}

	var cellHhtmls = [];

	cellHhtmls.push('<ul class="wdays">');
	for(var i = 0; i < this.dayNames[this.lang].length; i++ ){ cellHhtmls.push('<li '+((i == 5) || (i == 6) ? 'class="w"':'')+'>'+this.dayNames[this.lang][i]+'</li>'); }
	cellHhtmls.push('</ul>');


	cellHhtmls.push('<ul class="days">');
	for(var i = 0; i < beginEmptyCount; i++){ cellHhtmls.push('<li></li>'); }

	for(var i=1; i<=dayCount; i++){
		var dayDate = this.renderDate*100+i;

		var currDate = new Date(); 
			currDate.setYear(renderYear); 
			currDate.setMonth(renderMonth-1); 
			currDate.setDate(i);
		var currWeekDay = currDate.getDay();

		if(dayDate == this.selectedDate){
			cellHhtmls.push( '<li title="'+dayDate+'" class="r'+(this.dayEvents[dayDate] ? ' /*g*/':'')+'"><a href="'+(this.dayEvents[dayDate] ? this.base_href+this.dayEvents[dayDate][1]+'':this.base_href+dayDate)+'">'+i+(this.dayEvents[dayDate] ? '<em>'+this.dayEvents[dayDate][0]+'</em>':'')+'</a></li>' );
		} else {
			cellHhtmls.push('<li title="'+dayDate+'" '+(this.dayEvents[dayDate] ? ' class="g"':'')+'><a href="'+(this.dayEvents[dayDate] ? this.base_href+this.dayEvents[dayDate][1]+'': this.base_href+dayDate)+'">'+i+(this.dayEvents[dayDate] ? '<em>'+this.dayEvents[dayDate][0]+'</em>':'')+'</a></li>');
		}
	}
		
	/*for(var i = 0; i <= endEmptyCount; i++){ cellHhtmls.push('<li></li>'); }*/
	cellHhtmls.push('</ul>');

	var html = '';
	var row = 0;

	while(cellHhtmls.length > 0){
		if(row == 0) {
			html += '<div class="nav">'
			html += '<a href="javascript:void(0);" onclick="calendar.getInstance().setMonth(1);" title=""><img src="/client/images/ico/nxt.gif" style="width:9px; height:9px;" alt="" class="fr" /></a>';
			html += '<a href="javascript:void(0);" onclick="calendar.getInstance().setMonth(-1);" title=""><img src="/client/images/ico/prv.gif" style="width:9px; height:9px;" alt="" class="fl" /></a>';
			html += renderYear.toString()+' '+this.monthNames[this.lang][renderMonth-1];
			html += '</div>';
		}

		html += cellHhtmls.slice(0, 7).join('')+'';
		cellHhtmls = cellHhtmls.slice(7);
		row++;
	}
	
	try {
		document.getElementById('id_calendar').innerHTML = html;
	} catch(e){alert(e);}

}