var currentTrigger = '';
var calendarCreated = false;
var currentMonth = '';
var currentYear = '';
var triggerName = '';

$.fn.vacancyCalendar = function() {
	jQuery.vacancyCalendar.init(this);
};

$.vacancyCalendar = {
	init: function(trigger) {

		date = new Date();
		
		if (currentMonth == '') {
			currentMonth = date.getMonth() + 1;
		}
		
		if (currentYear == '') {
			date = new Date();
			currentYear = date.getFullYear();
		}
		
		$(trigger).css('cursor', 'pointer');
		
		//prepare calendar
		$.vacancyCalendar.create(trigger);
		
		$('#vacancyCalendar').hide();
		
		$(trigger).click(function() {
			$.vacancyCalendar.toggle(trigger);
		});
	},
	toggle: function(trigger) {
		
		$.vacancyCalendar.hide();
		
		if (currentTrigger != trigger || $('#vacancyCalendar').css('display') != 'block') {
			currentTrigger = trigger;
			$('#vacancyCalendar').queue(function(){
				// reset style and position
				jQuery.vacancyCalendar.show(trigger);
				$(this).dequeue();
			}, 'fast');
			$('#vacancyCalendar').queue(function(){
				// reset style and position
				$.vacancyCalendar.getData(trigger);
				$(this).dequeue();
			}, 'fast');
			
			triggerName = currentTrigger.attr('id').substr(4,4);
			if (triggerName != 'From') {
				triggerName = 'To';
			}
		}
	},
	show: function(trigger) {
		$('#vacancyCalendar:hidden').css({
			top: $(trigger).offset().top,
			left: $(trigger).offset().left + 20
		}).animate({
			'width': 'toggle',
			'height': 'toggle',
			'opacity': 'toggle'
		});
	},
	hide: function() {
		$('#vacancyCalendar:visible').animate({
			'width': 'toggle',
			'height': 'toggle',
			'opacity': 'toggle'
		}, 'fast');
		$('#indicator').hide();
		$('#vacancyData').hide();
		$('#vacancy_legends').hide();
	},
	create: function(trigger) {
		if (calendarCreated == false) {
			$('#vacancyCalendar').append('<div id="vacancyCalendarControl"></div>');
			$('#vacancyCalendarControl').append('<a id="vacancyCalendarClose">Schlie&szlig;en</a>');
			$('#vacancyCalendarClose').click(function() {
				$.vacancyCalendar.hide();
			});
			$('#vacancyCalendar').append('<div id="vacancyCalendarNavigation"></div>');
			$('#vacancyCalendarNavigation').append('<a id="vacancyCalendarPrev">&#8249;&nbsp;Zur&uuml;ck</a>');
			$('#vacancyCalendarNavigation').append('<a id="vacancyCalendarNext">Vor&nbsp;&#8250;</a>');
			
			$('#vacancyCalendarPrev').click(function() {
				$.vacancyCalendar.decreaseMonth();
				$.vacancyCalendar.getData(trigger);
			});
			
			$('#vacancyCalendarNext').click(function() {
				$.vacancyCalendar.increaseMonth();
				$.vacancyCalendar.getData(trigger);
			});
			
			var currentDate = new Date();
			if (currentYear == currentDate.getFullYear() && currentMonth == 1) {
				$('#vacancyCalendarPrev:visible').hide();
			} else {
				$('#vacancyCalendarPrev:hidden').show();
			}
			
			if (currentYear == (currentDate.getFullYear() + 2) && currentMonth == 12) {
				$('#vacancyCalendarNext:visible').hide();
			} else {
				$('#vacancyCalendarNext:hidden').show();
			}
			
			if ($.browser.msie && parseInt($.browser.version) < 7) {
				$('#vacancyCalendarNext').hover(function() {
					$('#vacancyCalendarNext').addClass('hover');
				}, function() {
					$('#vacancyCalendarNext').removeClass('hover');
				});
				$('#vacancyCalendarPrev').hover(function() {
					$('#vacancyCalendarPrev').addClass('hover');
				}, function() {
					$('#vacancyCalendarPrev').removeClass('hover');
				});
				$('#vacancyCalendarClose').hover(function() {
					$('#vacancyCalendarClose').addClass('hover');
				}, function() {
					$('#vacancyCalendarClose').removeClass('hover');
				});
			}
			
			$('#vacancyCalendar').append('<div id="indicator"></div>');
			$('#indicator').hide();
			
			$('#vacancyCalendar').append('<div id="vacancyData"></div>');
			$('#vacancyData').hide();
			$('#vacancy_legends').hide();
			
			$('#vacancy_legends').css({
			});
			
			$('.vacancy_legend').css({
				marginTop: '2px',
				marginBottom: '2px',
				marginLeft: '2px',
				width: '155px'
			});
		}
		calendarCreated = true;
	},
	getData: function() {
		
		$('#vacancyData').hide();
		$('#vacancy_legends').hide();
		$('#indicator').show();
		
		var objectID = $('#objectGlobalID').val();
		
		$('#vacancyData').load('vacancy_calendar_by_month.php', {
			objectID: objectID,
			month: currentMonth,
			year: currentYear
		}, function() {
			$('#indicator').hide();
			
			$('table.vacancy tbody tr td').each(function() {
				var cellText = $(this).text();
				cellText = $.trim(cellText);
				if (cellText != '') {
					
					$(this).html('<a id="vacancyDay_' + cellText + '">' + cellText + '</a>');
					
					if ($.browser.msie && parseInt($.browser.version) < 7) {
						$('#vacancyDay_' + cellText).hover(function() {
							$('#vacancyDay_' + cellText).addClass('hover');
						}, function() {
							$('#vacancyDay_' + cellText).removeClass('hover');
						});
					}
					
					var selectedDayFrom = $('#inquiryDateFromDay').val();
					var selectedMonthFrom = $('#inquiryDateFromMonth').val();
					var selectedYearFrom = $('#inquiryDateFromYear').val();
					
					var selectedDayTo = $('#inquiryDateToDay').val();
					var selectedMonthTo = $('#inquiryDateToMonth').val();
					var selectedYearTo = $('#inquiryDateToYear').val();
					
					if (selectedDayFrom == cellText && selectedMonthFrom == currentMonth && selectedYearFrom == currentYear) {
						$('#vacancyDay_' + cellText).addClass('clicked');
					}
					
					if (selectedDayTo == cellText && selectedMonthTo == currentMonth && selectedYearTo == currentYear) {
						$('#vacancyDay_' + cellText).addClass('clicked');
					}
					
					$('#vacancyDay_' + cellText).click(function() {
						if (currentMonth < 10) {
							currentMonthText = '0' + currentMonth;
						} else {
							currentMonthText = currentMonth;
						}

						$('#inquiryDate' + triggerName + 'Day').val(cellText);
						$('#inquiryDate' + triggerName + 'Month').val(currentMonthText);
						$('#inquiryDate' + triggerName + 'Year').val(currentYear);
						
						$.vacancyCalendar.hide();
					});
					
					var currentDate = new Date();
					if (currentYear == currentDate.getFullYear() && currentMonth == 1) {
						$('#vacancyCalendarPrev:visible').hide();
					} else {
						$('#vacancyCalendarPrev:hidden').show();
					}
					
					if (currentYear == (currentDate.getFullYear() + 2) && currentMonth == 12) {
						$('#vacancyCalendarNext:visible').hide();
					} else {
						$('#vacancyCalendarNext:hidden').show();
					}
				}
			});
			
			$('#vacancyData').fadeIn();
			$('#vacancy_legends').fadeIn();
		});
	},
	increaseMonth: function() {
		if (currentMonth == 12) {
			currentMonth = 1;
			currentYear++;
		} else {
			currentMonth++;
		}
	},
	decreaseMonth: function() {
		
		var currentDate = new Date();
		
		if (currentMonth == 1) {
			if ((currentYear - 1) >= currentDate.getFullYear()) {
				currentMonth = 12;
				currentYear--;
			}
		} else {
			currentMonth--;
		}
	},
	increaseYear: function() {
		currentYear++;
	},
	dacreaseYear: function() {
		currentYear--;
	}	
};

$(document).ready(function() {
	$('#dateFromCalendar').vacancyCalendar();
	$('#dateToCalendar').vacancyCalendar();
});

