$(function()
{
	var now = new Date();
	var nextMonthStr = now.getDay()+'.'+(now.getMonth()+2)+'.';
	if ( now.getYear() < 1900 ) nextMonthStr += now.getYear()+1900;
	else nextMonthStr += now.getYear();

	var days = {};
	var fetching = null;
	var year = null;
	
	var fetchDays = function( year )
	{
		fetching = true;
		$.ajax({
				url: root+"calendar/getdays",
				type: 'POST',
				data: { year: year },
				async: false,
				success: function(data){
					var xml;
					if ($.browser.msie && typeof data == "string") {
						xml = new ActiveXObject("Microsoft.XMLDOM");
						xml.async = false;
						xml.loadXML(data);
					} else {
						xml = data;
					}

					$('avail', xml).each(function(i){
						days['da' + (new Date(($(this).text()) )).getTime()] = true;
					});
					$('order', xml).each(function(i){
						days['do' + (new Date( ($(this).text()) )).getTime()] = true;
					});
					
				}
		});
		fetching = false;
	}
	
	$('#date').DatePicker({
		flat: true,
		date: now,
		current: nextMonthStr,
		calendars: 2,
		prev: '&nbsp;',
		next: '&nbsp;',
		format: 'd.m.Y',
		mode: 'single',
		onChange: function(formated){
			var flashElement = document.getElementById('synergyuser');
			if ( flashElement != null)
			{
				flashElement.sendTextFromHtml(formated);
			}
			else
			{
				var _url = window.location.href.split('/');
				var ref = _url[_url.length-1].split('?')[0];
				
				var url = '';
				switch ( ref )
				{
					case 'availstable':
					case 'orderstable':
						url = root + 'calendar/'+ref+'?date='+formated;
						break;
					default: url = root + 'calendar/graph';
				}
				window.location.replace(url);
			}
		},
		onRender: function(date) {
			var thisTime = date.getTime();
			
			var _year = (new Date(date)).getYear();
			if ( _year < 2000 ) _year += 1900;
			
			if ( fetching == null || year != _year )
			{
				fetchDays(_year);
				while(fetching) {};
				if ( year == null ) $('#date').html('');
				year = _year;
			}
			
			if ( days['da' + thisTime] && days['do' + thisTime] )
			{
				return { className: 'avail_order' };
			}
			else
			{
				if (days['da' + thisTime])
				{
					return { className: 'avail' };
				}
				
				if (days['do' + thisTime])
				{
					return { className: 'order' };
				}
			}
			
			return {};
		}
	});
	
	$('#inputDate1').DatePicker({
		format:'d.m.Y',
		date: $('#inputDate1').val(),
		current: $('#inputDate1').val(),
		prev: '&nbsp;',
		next: '&nbsp;',
		starts: 1,
		position: 'r',
		onBeforeShow: function(){
			$('#inputDate1').DatePickerSetDate($('#inputDate1').val(), true);
		},
		onChange: function(formated, dates){
			$('#inputDate1').val(formated);
			$('#inputDate1').DatePickerHide();
			$('#inputDate2').val(formated);
						
			var tmpdate = new Date(dates);			
			var newdate = new Date((tmpdate.getTime() - 604800000));
			var txtdate = newdate.getDate()+"."+(newdate.getMonth() + 1)+"."+newdate.getFullYear(); 
			
			$('#inputDate3').val(txtdate);			
			
		}
	});
	$('#inputDate2').DatePicker({
		format:'d.m.Y',
		date: $('#inputDate2').val(),
		current: $('#inputDate2').val(),
		prev: '&nbsp;',
		next: '&nbsp;',
		starts: 1,
		position: 'r',
		onBeforeShow: function(){
			$('#inputDate2').DatePickerSetDate($('#inputDate2').val(), true);
		},
		onChange: function(formated, dates){
			$('#inputDate2').val(formated);
			$('#inputDate2').DatePickerHide();
		}
	});
	$('#inputDate3').DatePicker({
		format:'d.m.Y',
		date: $('#inputDate3').val(),
		current: $('#inputDate3').val(),
		prev: '&nbsp;',
		next: '&nbsp;',
		starts: 1,
		position: 'r',
		onBeforeShow: function(){
			$('#inputDate3').DatePickerSetDate($('#inputDate3').val(), true);
		},
		onChange: function(formated, dates){
			$('#inputDate3').val(formated);
			$('#inputDate3').DatePickerHide();
		}
	});
});

