var CalTools = new Object;

CalTools.daysInMonth=[31,28,31,30,31,30,31,31,30,31,30,31];

CalTools.monthNames=['Styczeń','Luty','Marzec','Kwiecień','Maj','Czerwiec',
              'Lipiec','Sierpień','Wrzesień','Październik','Listopad','Grudzień'];

CalTools.monthNamesLt=['Sausis','Vasaris','Kovas','Balandis','Gegužė','Birželis',
              'Liepa','Rugpjūtis','Rugsėjis','Spalis','Lapkritis','Gruodis'];
			  
CalTools.monthNamesEn=['January','February','March','April','May','June',
              'July','August','September','October','November','December'];
			  
CalTools.dayNames = ['Pn','Wt','Śr','Cz','Pt','Sb','Nd'];
CalTools.dayNamesLt = ['Pir','Ant','Tre','Ket','Pen','Ded','Sek'];
CalTools.dayNamesEn = ['Mo','Tu','We','Th','Fr','Sa','Su'];
CalTools.dayNamesDe = ['Mo','Di','Mi','Do','Fr','Sa','So'];

CalTools.fullDayNames = ['Poniedziałek','Wtorek','Środa','Czwartek','Piątek','Sobota','Niedziela'];

CalTools.getDate = function(str) {
	var s = str.replace('-','/');
	var s = s.replace('-','/');
	var d = new Date;
	d.setTime(Date.parse(s));
	return d;
}

CalTools.dateText = function(d,lang) {	

	if(lang) {
		switch(lang) {
			case 1: var dayNames = CalTools.dayNames; break;
			case 2: var dayNames = CalTools.dayNamesEn; break;
			case 4: var dayNames = CalTools.dayNamesLt; break;
			case 5: var dayNames = CalTools.dayNamesDe; break;			
		}
	} else {
		var dayNames = CalTools.dayNames;
	}

	var index = (d.getDay()-1);
	if(index < 0) { index = 6; }
	var txt = ''+d.getDate()+'.';
	var m = (d.getMonth()+1);
	if(m < 10) { m = '0'+m; }
	txt += m+'';
	txt += ' ('+dayNames[index]+')'
	return txt;
}

// Returns the number of days in the month in a given year (January=0)
CalTools.getDaysInMonth = function(month,year){
    if ((month==1)&&(year%4==0)&&((year%100!=0)||(year%400==0))){
      return 29;
    }else{
      return this.daysInMonth[month];
	}
}

CalTools.getDayName = function(aText,lang) {
	if(!lang) { var lang = 1; }
	var dat = aText.split('-');
	var dat_y = dat[0];
	var dat_m = dat[1]-1;
	var dat_d = dat[2]-1;
	var myDate=new Date(dat_y,dat_m,dat_d);
	switch(lang) {
		case 4: return CalTools.dayNamesLt[myDate.getDay()]; break;
		case 2: return CalTools.dayNamesEn[myDate.getDay()]; break;
		default: return CalTools.dayNames[myDate.getDay()]; break;
	}	
}

CalTools.dateDiff = function(interval, date1, date2) {
    var objInterval = {'D' : 1000 * 60 * 60 * 24, 'H' : 1000 * 60 * 60, 'M' : 1000 * 60, 'S' : 1000, 'T' : 1};
    interval = interval.toUpperCase();
    var dt1 = Date.parse(date1.replace(/-/g, '/'));
    var dt2 = Date.parse(date2.replace(/-/g, '/'));
    try {
		return Math.round((dt2 - dt1) / eval('(objInterval.' + interval + ')'));
    }
    catch (e) {
		return e.message;
    }
}

CalTools.compareDates = function(date1,date2) {
	var dt1 = Date.parse(date1.replace(/-/g, '/'));
    var dt2 = Date.parse(date2.replace(/-/g, '/'));	
	if(dt1 > dt2) { return 1; }
	if(dt2 > dt1) { return 2; }
	if(dt1 == dt2) { return 0; }
}

CalTools.addDays = function(date,days) {
	var str = Date.parse(date.replace(/-/g,'/'));
	var strp = str+((days+0.5)*24*60*60*1000);	
	var dt = new Date();
	dt.setTime(strp);
	var month = dt.getMonth()+1;
	var retstr = dt.getFullYear()+'-'+month+'-'+dt.getDate();
	return retstr;
}

CalTools.nextDay = function(date) {
	
	var m = date.getMonth();
	var y = date.getFullYear();
	var d = date.getDate();
	var daysInMonth = CalTools.getDaysInMonth(m,y);
	
	d++;
	if(d > daysInMonth) { d = 1; m++; }
	if(m > 11) { m = 0; y++; }
	
	date.setDate(d);
	date.setMonth(m);
	date.setFullYear(y);
	
	return date;	
	
}

