var imgList = [];

jQuery(function($){
	$.datepicker.regional['cs'] = {
		closeText: 'Zavřít',
		prevText: '&#x3c;Dříve',
		nextText: 'Později&#x3e;',
		currentText: 'Nyní',
		monthNames: ['Leden','Únor','Březen','Duben','Květen','Červen',
        'Červenec','Srpen','Září','Říjen','Listopad','Prosinec'],
		monthNamesShort: ['led','úno','bře','dub','kvě','čer',
		'čvc','srp','zář','říj','lis','pro'],
		dayNames: ['neděle', 'pondělí', 'úterý', 'středa', 'čtvrtek', 'pátek', 'sobota'],
		dayNamesShort: ['ne', 'po', 'út', 'st', 'čt', 'pá', 'so'],
		dayNamesMin: ['ne','po','út','st','čt','pá','so'],
		weekHeader: 'Týd',
		dateFormat: 'dd.mm.yy',
		firstDay: 1,
		isRTL: false,
		showMonthAfterYear: false,
		yearSuffix: ''
	};
	
	$.datepicker.regional['en'] = {
		closeText: 'Done',
		prevText: 'Prev',
		nextText: 'Next',
		currentText: 'Today',
		monthNames: ['January','February','March','April','May','June',
		'July','August','September','October','November','December'],
		monthNamesShort: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun',
		'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],
		dayNames: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'],
		dayNamesShort: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'],
		dayNamesMin: ['Su','Mo','Tu','We','Th','Fr','Sa'],
		weekHeader: 'Wk',
		dateFormat: 'dd/mm/yy',
		firstDay: 1,
		isRTL: false,
		showMonthAfterYear: false,
		yearSuffix: ''
	};
	
	$.extend({
		preload: function(imgArr, option)
		{
			var setting = $.extend(
			{
				init: function(loaded, total) {},
				loaded: function(img, loaded, total) {},
				loaded_all: function(loaded, total) {}
			}, option);
			var total = imgArr.length;
			var loaded = 0;
			
			setting.init(0, total);
			for(var i in imgArr) {
				imgList.push($("<img />")
					.attr("src", imgArr[i])
					.load(function() {
						loaded++;
						setting.loaded(this, loaded, total);
						if(loaded == total) {
							setting.loaded_all(loaded, total);
						}
					})
				);
			}
		}
	});
});


$(document).ready(function()
{
  $('table.styled[rel!=half] tbody tr, table.orders tbody tr').mouseover(function()
	{
	  $(this).addClass('hover');
	}).mouseout(function()
	{
	  $(this).removeClass('hover');
	});
	
	$('table.styled[rel=half] tbody td, table.styled[rel=half] tbody th').mouseover(function()
	{
	  var el = $(this);
	  var prevs = el.prevAll();
	  var nexts = el.nextAll();
	  var totalLen = prevs.length + nexts.length + 1;
	  var half = Math.round(totalLen / 2);
	  var children = el.parent().children();
	  
	  if (prevs.length + 1 > half) children = children.slice(half, totalLen)
	  else children = children.slice(0, half);
		children.addClass('hover');
	}).mouseout(function()
	{
	  var el = $(this);
	  el.removeClass('hover');
	  el.siblings().removeClass('hover');
	});
	
	
	$('[title]').tooltip({
	  position: 'bottom center',
	  offset: [30, 0]
	});
	
	$('input[type=image]').each(function(i, el)
	{
	  el = $(el);
	  var src = el.attr('src');
	  if (src.indexOf('_cs.') != -1 || src.indexOf('_en.') != -1)
	  {
	    $.preload([src.replace('.gif', '_hover.gif')]);
		  el.mouseover(function()
			{
			  var el = $(this);
			  el.attr('src', el.attr('src').replace('.gif', '_hover.gif'));
			}).mouseout(function()
			{
			  var el = $(this);
			  el.attr('src', el.attr('src').replace('_hover.gif', '.gif'));
			});
		}
	});
		
  $('#calendarBtn_reserve_from, #calendarBtn_reserve_to, #calendarBtn_supposed_arrival, #calendarBtn_created_at_from, #calendarBtn_created_at_to').click(function(event)
	{
	  if ($(event.target).parents('.ui-datepicker-calendar').size() != 0) return;
	  
	  $('.calContainer').hide();
	  
	  var el = $(event.currentTarget);
	  var container = el.children('div');
	  
		$('.calendarIco').css('z-index', 100);
	  el.css('z-index', 200);
		container.show();
	});
	
	$(document).click(function(event)
	{
	  var target = $(event.target);
	  if (!target.hasClass('calendarIco') && target.parents('.calContainer, .ui-datepicker-header').length == 0) $('.calContainer').hide();
	});
	
  $.datepicker.setDefaults($.datepicker.regional[jsCulture]);
  var dateFields = ['reserve_from', 'reserve_to', 'reserve_supposed_arrival', 'filter_created_at_from', 'filter_created_at_to'];
  var splitDate = [1, 1, 0, 0, 0];
  var hasMinDate = [1, 1, 1, 0, 0];
  
  for(var i in dateFields)
  {
    var minDate = new Date();
    if (!hasMinDate[i]) minDate.setFullYear(1970);
  
    $('#' + dateFields[i] + '_calendar').datepicker({
	    nextText: '',
	    prevText: '',
	    dateFormat: 'yy-m-d',
	    minDate: minDate,
	    defaultDate: $('#' + dateFields[i] + 'Date').val(),
	    onSelect: splitDate[i] ? function(dateText, inst)
	    {
	      var el = $(this);
  		  var prefix = el.attr('rel');
	  	  var date = dateText.split('-');
		  	$('#' + prefix + '_day').val(date[2]);
			  $('#' + prefix + '_month').val(date[1]);
  			$('#' + prefix + '_year').val(date[0]);
	  		$('#' + prefix + 'Date').val(dateText);
		  	el.hide();
				checkDateUpdatePrice();
		  } : function(dateText, inst)
		  {
			  var el = $(this);
  		  var updateId = el.attr('rel');
	  	  var date = dateText.split('-');
		  	$('#' + updateId).val(date[2] + '.' + date[1] + '.' + date[0]);
		  	$('#' + updateId + 'Date').val(dateText);
		  	el.hide();
			}
	  });
	}
	
	function checkDateUpdatePrice()
	{
	  var regexp_date = new RegExp('^20[0-9]{2}\-0?[1-9]|1[0-2]\-0?[1-9]|[12][0-9]|3[01]$');
	  var regexp_time = new RegExp('^(([0-1]?[0-9])|([2][0-3])):([0-5]?[0-9])$');
	  
	  var elFromDate = $('#reserve_fromDate');
	  var elFromTime = $('#reserve_from_time');
	  
	  var elToDate = $('#reserve_toDate');
	  var elToTime = $('#reserve_to_time');
	  
	  if (elFromDate.val().match(regexp_date) && elToDate.val().match(regexp_date) && elFromTime.val().match(regexp_time) && elToTime.val().match(regexp_time))
		{  
	    var dateParts = elFromDate.val().split('-');
  	  var timeParts = elFromTime.val().split(':');
	    var dateFrom = new Date(
			  parseInt(dateParts[0]),
			  parseInt(dateParts[1]) - 1,
			  parseInt(dateParts[2]),
			  parseInt(timeParts[0]) + 1,
			  parseInt(timeParts[1]),
			  0,
			  0
			);
	  
	    var dateParts = elToDate.val().split('-');
	    var timeParts = elToTime.val().split(':');
	    var dateTo = new Date(
			  parseInt(dateParts[0]),
			  parseInt(dateParts[1]) - 1,
			  parseInt(dateParts[2]),
			  parseInt(timeParts[0]) + 1,
			  parseInt(timeParts[1]),
			  0,
			  0
			);
	    	  
	    var fromRounded = Math.round(dateFrom.getTime() / 1000);
 	    var toRounded = Math.round(dateTo.getTime() / 1000);

	    if (fromRounded >= toRounded)
  	  {
	  	  dateTo.setTime(dateFrom.getTime() + (24 * 60 * 60 * 1000));
		    elToDate.val(dateTo.getFullYear() + '-' + (dateTo.getMonth() + 1) + '-' + dateTo.getDate());
		    $('#reserve_to_day').val(dateTo.getDate());
  		  $('#reserve_to_month').val(dateTo.getMonth() + 1);
	  	  $('#reserve_to_year').val(dateTo.getFullYear());
		    $('#reserve_to_calendar').datepicker('setDate', elToDate.val());
		    
		    toRounded = Math.round(dateTo.getTime() / 1000);
		  }
		
  		var days = Math.ceil((toRounded - fromRounded) / 24 / 60 / 60);
  		
  		$.ajax({
			  url: priceUrl,
			  data:
				{
				  days: days,
				  promo: $('#reserve_promo').val()
				},
				success: function(data)
				{
				  $('#reserve_price').val(data);
				}
			});
  	}
	}
	
	$('#reserve_from_day, #reserve_from_month, #reserve_from_year, #reserve_from_time').change(function(event)
	{
	  var year = $('#reserve_from_year').val();
	  var month = $('#reserve_from_month').val();
	  var day = $('#reserve_from_day').val();
	  $('#reserve_fromDate').val(year + '-' + month + '-' + day);
	  $('#reserve_from_calendar').datepicker('setDate', year + '-' + month + '-' + day);
	  checkDateUpdatePrice();
	});
	
	$('#reserve_to_day, #reserve_to_month, #reserve_to_year, #reserve_to_time').change(function(event)
	{
	  var year = $('#reserve_to_year').val();
	  var month = $('#reserve_to_month').val();
	  var day = $('#reserve_to_day').val();
	  $('#reserve_toDate').val(year + '-' + month + '-' + day);
	  $('#reserve_to_calendar').datepicker('setDate', year + '-' + month + '-' + day);
	  checkDateUpdatePrice();
	});
	
	$('#reserve_promo').change(function(event)
	{
	  checkDateUpdatePrice();
	});
	
	$('#reserve_supposed_arrival').change(function(event)
	{
	  var split = $('#reserve_supposed_arrival').val().split('.');
	  $('#reserve_supposed_arrivalDate').val(split[2] + '-' + split[1] + '-' + split[0]);
	  $('#reserve_supposed_arrival_calendar').datepicker('setDate', split[2] + '-' + split[1] + '-' + split[0]);
	});
});
