if( typeof(jQuery) == 'function' ) {
	var CKalendarz = {
		onPickerClick: function() {},
		onMonthTabClick: function() {},
		onMonthTabInPickerClick: function() {},
		extractMonth: function() {},
		extractIdToDatePicker: function() {},
		doDebug: function() {}
	};
	
	/**
	 * Wyciąga ze stringa fragment zapisany miesiac-costam i zwraca costam
	 */
	CKalendarz.extractMonth = function(sTmp) {
		var iPos;
				
		iPos = sTmp.search("miesiac-");
		if( iPos >= 0 ) sTmp = sTmp.substr(iPos+8);
		
		//just-in-case do spacji
		iPos = sTmp.search(" ");
		if( iPos >= 0 ) sTmp = sTmp.substr(0, iPos);
		
		return sTmp;
	};
	
	/**
	 * Wyciąga ze stringa fragment zapisany id-costam i zwraca costam
	 */
	CKalendarz.extractIdToDatePicker = function(sTmp) {
		var iPos;
		
		iPos = sTmp.search("id-to-datePicker-");
		if( iPos >= 0 ) sTmp = sTmp.substr(iPos+17);
		//just-in-case do spacji
		iPos = sTmp.search(" ");
		if( iPos >= 0 ) sTmp = sTmp.substr(0, iPos);
		
		return sTmp;
	};
	
	/**
	 * Obsługa kliknięcia zakładki kalendarza
	 */
	CKalendarz.onMonthTabClick = function() {
		if( $(this).hasClass("selected") ) {
		//jesli nie jest wybrana
			//dezaktywacja/aktywacja zakładki
			var hTabs = $("#Calendar .monthTabContainer");
			hTabs.children(".monthTab").addClass("selected");
			$(this).removeClass("selected");
			
			//pobranie nazwy miesiaca
			var sMiesiac = CKalendarz.extractMonth(this.className);
			
			//wyświetlenie odpowiedniego spisu dni
			var hCalContainer = $("#CalContainer");
			hCalContainer.children(".CalBox").css("display", "none");
			hCalContainer.children("."+sMiesiac).css("display", "block");
		}
		
		return false;
	};
	
	/**
	 * Obsługa kliknięcia zakładki kalendarza w datePickerze
	 */
	CKalendarz.onMonthTabInPickerClick = function() {
		if( $(this).hasClass("selected") ) {
		//jesli nie jest wybrana
			//dezaktywacja/aktywacja zakładki
			var hTabs = $(".datePicker .monthTabContainer");
			hTabs.children(".monthTabInPicker").addClass("selected");
			$(this).removeClass("selected");
			
			//pobranie nazwy miesiaca
			var sMiesiac = CKalendarz.extractMonth(this.className);
			
			//wyświetlenie odpowiedniego spisu dni
			var hCalContainer = $("#CalContainerInPicker");
			hCalContainer.children(".CalBoxInPicker").css("display", "none");
			hCalContainer.children("."+sMiesiac).css("display", "block");
		}
		
		return false;
	};
	
	/**
	 * Obsługa zdarzenia kliknięcia ikony rozwinięcia kalendarza
	 */
	CKalendarz.onPickerClick = function() {
		var iId = CKalendarz.extractIdToDatePicker(this.className);
		
		if( typeof(iId) != 'undefined' ) {
			var hPicker = $(".id-" + iId);
			
			if( hPicker.hasClass("hidden") ) {
				hPicker.removeClass("hidden");
				hPicker.addClass("shown");
				hPicker.show();
			} else {
				hPicker.removeClass("shown");
				hPicker.addClass("hidden");
				hPicker.hide();
			}
		}
		
		return false;
	};
	
	/**
	 * Prosta metoda debugująca
	 * 
	 * @param Handler hObj uchwyt do obiektu, tablicy, której elementy mają być wyświetlone
	 * @param Integer iDepth ilość zapętleń
	 */
	CKalendarz.doDebug = function(hObj, iDepth) {
		var msg = '';
		
		jQuery.each( hObj, function(i, j) {
			msg += i+": "+j+"\r\n";
			
			if( iDepth >= 1 ) {
				jQuery.each( j, function(k, l) {
					msg += k+": "+l+"\r\n";
					
					if( iDepth >= 2 ) {
						jQuery.each( l, function(m, n) {
							msg += m+": "+n+"\r\n";
						});
					}
				});
			}
		});
		
		alert(msg);
	};
	
	
	/**
	 * Coś w stylu kontrolera
	 */
	$(document).ready(function() {
		$(".monthTab").click( CKalendarz.onMonthTabClick );
		$(".iconCal").click( CKalendarz.onPickerClick );
		$(".monthTabInPicker").click( CKalendarz.onMonthTabInPickerClick );
	});
} else {
	alert('BŁĄD KRYTYCZNY!\r\nBrak biblioteki jQuery. Część elementów może nie działać. (kalendarz.js)');
}