/**
 * @author michal at certico
 * 
 * myCalendar version 0.2_13042011
 */
///////////////////////////////////////////////////////////////////////global variables
var events = [
	{ "EvId": "1", "DateTime": "2010,7,12", "Title": "Lorem Ipsum Dolor", "Description": "Suspendisse id diam augue, quis consequat justo. Donec posuere suscipit neque", "LongDescription": "Suspendisse id diam augue, quis consequat justo. Donec posuere suscipit neque", "CssClass": "1" },
	{ "EvId": "2", "DateTime": "2010,7,18", "Title": "Morbi aliquam ", "Description": "Cras sed orci et augue pretium. Duis non consectetur eros.", "LongDescription": "Suspendisse id diam augue, quis consequat justo. Donec posuere suscipit neque", "CssClass": "1" },
	{ "EvId": "3", "DateTime": "2010,8,18", "Title": "Phasellus non blandit lacus", "Description": "Phasellus non blandit lacus. Aliquam, non adipiscing risus. Vivamus leo massa.", "LongDescription": "Suspendisse id diam augue, quis consequat justo. Donec posuere suscipit neque", "CssClass": "1" }
];
var cD = new Date();	//current date
var calWidth = 225;		//calendar width
var dnames = ["S","M","T","W","T","F","S"];
///////////////////////////////////////////////////////////////////////main function
function getcalendarwrapper(flag){
	var ni = 0;
	var s = '<div id="monthview">';
	var cellitem = '<div class="cellitem';
	var cellitemin = '<div class="cellitem cellitemin">';
	var n = 0;
	var dm_prev = daysInMonth(cD.getMonth(),cD.getFullYear()); 
	if (flag == 1) {
		cD.setFullYear(cD.getFullYear());
		cD.setMonth(cD.getMonth()+1);
	}
	else if (flag == 0) {
		cM -= 1;
		cD.setFullYear(cD.getFullYear());
		cD.setMonth(cD.getMonth()-1);
	}
	cD.setDate(1);
	
	var dd = cD.getDay()+1;
	//day names
	var dn = 0;
	s += '<div id="daynames">';
	while(dn < 7){
		s += cellitem + ' daynamesitem">' + dnames[dn] + '</div>';
		dn++;
	}
	s += '</div>';
	//day names end
	
	var i = 0;
	while(i < dd-1) {
		s += cellitemin + (dm_prev-dd+2) + '</div>';
		i++;
		ni++;
		
		dm_prev++;
	}
	var dy = cD.getFullYear();
	var dm = cD.getMonth();
	//cellitem filling
	while(n<daysInMonth(dm,dy)) {
		var evd = checkevent(n+1,dm,dy);
		if(evd != null){
			s += cellitem + ' cellitem' + evd[0][3] + ' cellitemevent" onclick="fademe(this);">' + 
			'<div class="eventpopup"><div class="eventpopuptekst">' + 
			'<input class="closepopup" type="button" value="[x]" ' + 
			'onclick="fademeout(this);"></input><p class="eventpopuptekstdate">' + (parseInt(geteventmonth(evd[0][4]))+1) + '-' + geteventday(evd[0][4]) + '-' + geteventyear(evd[0][4]) + '</p>';
			for(j=0;j<evd.length;j++){
				s += '<p class="eventpopupteksttitle">' + evd[j][0] + '</p><p class="eventpopuptekstdesc">' + evd[j][1] + '</p>' + 
					 '<p class="eventpopuptekstlink"><a href="/Basis.aspx?Tid=2&Sid=43&Hmi=43&Smi=0&Lid=10&Lit=VIEW&QUERY=RAPU_CalendarEvents.Id=' + evd[j][5] + '">Read more &#187;</a></p>';
			}
			s += '</div></div>' + (n+1) + '</div>';
		} 
		else s += cellitem + '">' + (n+1) + '</div>';
		if((n+1)%7 == 0) {}
		n++;
		ni++;
	}
	//cellitem filling end
	i = 1;
	var leftn = 42;
	if(ni <= 35) leftn = 35;	
	while(ni < leftn) {
		s += cellitemin + i + '</div>';
		ni++;
		i++;
	}
	return s + '</div>';
}
///////////////////////////////////////////////////////////////////////functions

function fademe(me){
	$('div.eventpopup').fadeOut(1);
	$('div.cellitem').css('z-index','10');
	$(me).css('z-index','20');
	$(me).find('div.eventpopup').show();
}
function fademeout(me){
	$(me).parent().parent().fadeOut(1);
	setTimeout(function(){
	},100);
}
function checkevent(dd,mm,yy){
	var ret = new Array();
	var evd = new Array();
	var evl = events.length;
	var ctr = 0;
	var i = 0;
	while(i < evl){
		if(geteventyear(events[i].DateTime) == yy) {
			if(geteventmonth(events[i].DateTime) == mm) {
				if(geteventday(events[i].DateTime) == dd) {
					evd = new Array();
					evd[0] = events[i].Title;
					evd[1] = events[i].Description;
					evd[2] = events[i].LongDescription;
					evd[3] = events[i].CssClass;
					evd[4] = events[i].DateTime;
					evd[5] = events[i].EvId;
					ret[ctr] = evd;
					ctr += 1;
				}
			}
		}
		i++;
	}
	return ret.length > 0 ? ret : null;
}
function geteventyear(ev){
	var m = ev.split(',');
	return m[0];
}
function geteventmonth(ev){
	var m = ev.split(',');
	return m[1];
}
function geteventday(ev){
	var m = ev.split(',');
	return m[2];
}
function getcalendarbuttons(){
	var s = '<input type="button" id="prevmonth"></input>';
	s += '<input type="button" id="nextmonth"></input>';
	return s; 
}
function actuallabel(){
	var s = '<div id="yearlabel">' + getMonthName((cD.getMonth()+1)) + ' ' + cD.getFullYear() + '</div>'
	return s;
}
function getMonthName(m){
	var s;
	m--;
	switch(m){
		case 0:s = "January";break;
		case 1:s = "February";break;
		case 2:s = "March";break;
		case 3:s = "April";break;
		case 4:s = "May";break;
		case 5:s = "";break;
		case 6:s = "July";break;
		case 7:s = "August";break;
		case 8:s = "September";break;
		case 9:s = "October";break;
		case 10:s = "November";break;
		case 11:s = "December";break;
	}
	return s;
}
function daysInMonth(iMonth, iYear)
{
	return 32 - new Date(iYear, iMonth, 32).getDate();
}
///////////////////////////////////////////////////////////////////////start function
function startcalendar(name,options){

	//options
	if(options.length != 0)calWidth = options[0];
	//options end
	
	//events
	
	//events end
	
	cD = new Date();
	cY = cD.getFullYear();
	cM = cD.getMonth();
	var n = document.getElementById(name);
	$(n).css('width',calWidth + 'px');
	var cal = actuallabel();
	cal += getcalendarwrapper();
	cal += getcalendarbuttons();
	
	$(n).html(cal);
	$('#nextmonth').click(function(){
		cal = '';
		cal = getcalendarwrapper(1);
		$('#yearlabel').fadeOut(120,function() {
                $(this).html(actuallabel()).fadeIn(120);
       	});
		$('#monthview').fadeOut(120,function() {
                $(this).html(cal).fadeIn(120);
       	});
		
	});
	$('#prevmonth').click(function(){
		cal = '';
		cal = getcalendarwrapper(0);
		$('#yearlabel').fadeOut(120,function() {
                $(this).html(actuallabel()).fadeIn(120);
       	});
		$('#monthview').fadeOut(120,function() {
                $(this).html(cal).fadeIn(120);
       	});
	});
	
}

$(document).ready(function(){
	jQuery.preLoadImages('/images/kalpopback.png');
});

//preload images
(function($){var cache=[];$.preLoadImages=function(){var args_len=arguments.length;for(var i=args_len;i--;){var cacheImage=document.createElement('img');cacheImage.src=arguments[i];cache.push(cacheImage);}}})(jQuery)
//end preload images
