$(document).ready( function(){

	/*var type;
	if ( $('.avia') ) type = 'avia';
	if ( $('.railway') ) type = 'railway';*/
	
	if ( shape == 'w330' && $('.menu ul li:first').attr( 'class' ) == 'active' ){
		$('.form .l').not('.b').hide();
	}
	
	$('.menu li').click(function(){
		var type = $(this).attr( 'id' );
		type = type.substr( 5 );
		$('li.active').removeClass('active');
		$('li#menu_' + type).addClass('active');
		$('form').hide();
		$('form.' + type ).show();
		if ( shape == 'w330' && $('.menu ul li:first').attr( 'class' ) == 'active' ){
			$('.form .l').not('.b').hide();
		}
		else {
			$('.form .l').not('.b').show();
		}
	});
	
	
	$(".date").focus(function(){ $('.hint').text( '' ); });
	$(".avia .date").datepicker({
		minDate: 0,
		maxDate: '+1y',
		showOtherMonths: true,
		selectOtherMonths: true,
		onSelect: function(selectedDate) {
			var option = this.id == "DateFrom" ? "minDate" : "maxDate";
			var el = this.id == "DateFrom" ? "DateTo" : "DateFrom";
			var delta = this.id == "DateFrom" ? 1 : -1;
			var instance = $(this).data( "datepicker" );
			var date = $.datepicker.parseDate(instance.settings.dateFormat || $.datepicker._defaults.dateFormat, selectedDate, instance.settings);
			//date.setDate( date.getDate() + delta );
			$(".avia #" + el).datepicker("option", option, date);
		}
/*		onClose: function( date, inst ){
			if ( this.id == 'DateFrom' && date != '' ){
				var d = date.split( '.' );
				var dd = new Date( Number( d[ 2 ] ), Number( d[ 1 ] ) - 1, Number( d[ 0 ] ) );
				$(".avia #DateTo").datepicker( "option", "minDate", dd );
			}
			return true;
			//alert( date + ':' + this.id );
		}*/
	})
	$(".railway .date").datepicker({ minDate: 0, maxDate: '+44d' });
	$(".hotel .date").datepicker({
		minDate: 0,
		maxDate: '+1y',
		showOtherMonths: true,
		selectOtherMonths: true,
		onSelect: function(selectedDate) {
			var option = this.id == "CheckIn" ? "minDate" : "maxDate";
			var el = this.id == "CheckIn" ? "CheckOut" : "CheckIn";
			var delta = this.id == "CheckIn" ? 1 : -1;
			var instance = $(this).data( "datepicker" );
			var date = $.datepicker.parseDate(instance.settings.dateFormat || $.datepicker._defaults.dateFormat, selectedDate, instance.settings);
			date.setDate( date.getDate() + delta );
			$(".hotel #" + el).datepicker("option", option, date);
		}
	})

	$("select").focus(function(){
		$('#bottom').text( '' );
	});


	var dataSource = new Array();
	$(".predict").autocomplete({
		source: function(request, response) {
			var type = this.element.parents('form').attr('class');
			var command = 'SearchAirLocation';
			if ( type == 'railway') command = 'SearchRailwayLocation';
			if ( type == 'hotel') command = 'SearchHotelLocation';
			dataSource.splice( 0, dataSource.length );
			$.ajax({
				url: "/ajax/cities.html",
				type: 'POST',
				dataType: 'json',
				data: {
					'Commander.Command': command,
					'Top': 7,
					'Word': request.term
				},
				success: function(data) {
					dataSource = $.map(data, function(item) {
						return {
							label: item.Name + ( item.Country ? ", " + item.Country : '' ) + ' (' + item.Code + ')',
							value: item.Name,
							code: item.Code
						}
					});
					response( dataSource );
					//alert( dataSource );
				}
			});
		},
		minLength: 2,
		delay: 300,
		change: function(event, ui) {
			if ( !ui.item ){
				if ( dataSource.length == 0 ){
					$(this).val( '' );
				}
				else {
					var name = $(this).attr('name');
					name = name.slice( 0, -4 );
					$(this).val( dataSource[ 0 ].value );
					$('input[name="' + name + '"]').val( dataSource[ 0 ].code );
				}
			}
		},
		select: function(event, ui) {
			var name = $(this).attr('name');
			name = name.slice( 0, -4 );
			if ( ui.item ){
				$('input[name="' + name + '"]').val( ui.item.code );
			}
		},
		open: function( event, ui ){
			if ( $.browser.msie && $.browser.version < 7 ){
				$('form:visible select').css({'visibility': 'hidden'});
			}
		},
		close: function( event, ui ){
			if ( $.browser.msie && $.browser.version < 7 ){
				$('form:visible select').css({'visibility': 'visible'});
			}
		}
	})
	.focus(function(){
		var val = $(this).val();
		if ( val == 'откуда' || val == 'куда' || val == 'где' ){
			$(this).val( '' );
			$('.hint').text( '' );
		}
	})
	.blur(function(){
		if ( $(this).val() == '' ){
			var name = $(this).attr('name');
			name = name.slice( 0, -4 );
			$('input[name="' + name + '"]').val( '' );
		}
	});

// -------------------------------------------------------------------------- //

	$("form").submit(function (){
		var type = $(this).attr('class');
		var errorBottom = $('#' + type + '_bottom');
		var params = new Object();
		var paramsTrip;
		switch ( type ){
			case 'avia':
				params[ 'Type' ] = 'flight';
				break;
			case 'railway':
				params[ 'Type' ] = 'railway';
				break;
			case 'hotel':
				params[ 'Type' ] = 'hotel';
				break;
		}
		
		if ( type == 'avia' ){
			if ( checkAvia() ){
				paramsTrip = getAviaParams();
			}
			else {
				return false;
			}
		}
		if ( type == 'railway' ){
			if ( checkRailway() ){
				paramsTrip = getRailwayParams();
			}
			else {
				return false;
			}
		}
		if ( type == 'hotel' ){
			if ( checkHotel() ){
				paramsTrip = getHotelParams();
			}
			else {
				return false;
			}
		}
		
		var adults = Number( $('select[name="' + type + '_adults"] option:selected').val() );
		var children = Number( $('select[name="' + type + '_children"] option:selected').val() );
		var infants = Number( $('select[name="' + type + '_infants"] option:selected').val() );
		if ( infants > adults ){
			errorBottom.text( 'Младенцев не может быть больше, чем взрослых' );
			return false;
		}
		else if ( adults + children > 4 ){
			errorBottom.text( 'Должно быть не более 4-х человек с предоставлением места' );
			return false;
		}
		else if ( type == 'hotel' && children > adults ) {
			errorBottom.text( 'Детей не может быть больше, чем взрослых' );
			return false;
		}
		else {
			errorBottom.text( '' );
		}
		
		params[ 'Dlts' ] = adults;
		params[ 'Children' ] = children;
		params[ 'Infants' ] = infants;
		
		params[ 'partner' ] = forpartner;
		if ( mnogoRuCode != '' ){
			params[ 'MnogoRuCode' ] = mnogoRuCode;
		}

		parent.location.href = '/search-query.html?' + $.param( params ) + '&' + $.param( paramsTrip );

		return false;
	});

// -------------------------------------------------------------------------- //

	function checkAvia(){
		var errorTop = $('#avia_top');
		if ( $('input[name="avia_From"]').val() == '' ){
			errorTop.text( 'Введите название города вылета' );
			return false;
		}
		else if ( $('input[name="avia_To"]').val() == '' ){
			errorTop.text( 'Введите название города прилета' );
			return false;
		}
		else {
			errorTop.text( '' );
		}
		
		var dateFrom = $('input[name="avia_DateFrom"]').val();
		var dateTo = $('input[name="avia_DateTo"]').val();
		if ( dateFrom == 'Дата вылета' || dateFrom == '' ){
			errorTop.text( 'Введите дату вылета' );
			return false;
		}
		else {
			errorTop.text( '' );
		}
		if ( dateTo == 'Дата прилета' || dateTo == '' ){
		}
		else {
			var dateFromObj = new Date( dateFrom.substr( 6, 4 ), dateFrom.substr( 3, 2 ), dateFrom.substr( 0, 2 ) );
			var dateToObj = new Date( dateTo.substr( 6, 4 ), dateTo.substr( 3, 2 ), dateTo.substr( 0, 2 ) );
			if ( dateToObj.valueOf() <= dateFromObj.valueOf() ){
				errorTop.text( 'Дата прилета раньше даты вылета' );
				return false;
			}
		}
		return true;
	}
	
	function getAviaParams(){
		var params = new Object();
		params[ 'Flight' ] = $('input[name="avia_From"]').val() + $('input[name="avia_To"]').val();
		params[ 'DateFrom' ] = $('input[name="avia_DateFrom"]').val();
		var dateTo = $('input[name="avia_DateTo"]').val();
		if ( dateTo == 'Дата прилета' || dateTo == '' ){
			params[ 'RoundTrip' ] = 'no';
		}
		else {
			params[ 'RoundTrip' ] = 'yes';
			params[ 'DateTo' ] = $('input[name="avia_DateTo"]').val();
		}
		params[ 'Class' ] = $('select[name = "avia_class"] option:selected').val();
		return params;
	}

// -------------------------------------------------------------------------- //

	function checkRailway(){
		var errorTop = $('#railway_top');
		if ( $('input[name="railway_From"]').val() == '' ){
			errorTop.text( 'Введите название города выезда' );
			return false;
		}
		else if ( $('input[name="railway_To"]').val() == '' ){
			errorTop.text( 'Введите название города приезда' );
			return false;
		}
		else {
			errorTop.text( '' );
		}
		
		var dateFrom = $('input[name="railway_Departure"]').val();
		if ( dateFrom == 'Дата отправления' || dateFrom == '' ){
			errorTop.text( 'Введите дату отправления' );
			return false;
		}
		else {
			errorTop.text( '' );
		}
		return true;
	}
	
	function getRailwayParams(){
		var params = new Object();
		params[ 'Route' ] = $('input[name="railway_From"]').val() + $('input[name="railway_To"]').val();
		params[ 'Departure' ] = $('input[name="railway_Departure"]').val();
		return params;
	}

// -------------------------------------------------------------------------- //

	function checkHotel(){
		var errorTop = $('#hotel_top');
		if ( $('input[name="hotel_City"]').val() == '' ){
			errorTop.text( 'Введите название города' );
			return false;
		}
		else {
			errorTop.text( '' );
		}
		
		var dateFrom = $('input[name="hotel_CheckIn"]').val();
		var dateTo = $('input[name="hotel_CheckOut"]').val();
		if ( dateFrom == 'Дата заезда' || dateFrom == '' ){
			errorTop.text( 'Введите дату заезда' );
			return false;
		}
		else if ( dateTo == 'Дата выезда' || dateTo == '' ){
			errorTop.text( 'Введите дату выезда' );
			return false;
		}
		else {
			var dateFromObj = new Date( dateFrom.substr( 6, 4 ), dateFrom.substr( 3, 2 ), dateFrom.substr( 0, 2 ) );
			var dateToObj = new Date( dateTo.substr( 6, 4 ), dateTo.substr( 3, 2 ), dateTo.substr( 0, 2 ) );
			if ( dateToObj.valueOf() <= dateFromObj.valueOf() ){
				errorTop.text( 'Дата выезда раньше даты заезда' );
				return false;
			}
			else {
				errorTop.text( '' );
			}
		}
		return true;
	}
	
	function getHotelParams(){
		var params = new Object();
		params[ 'City' ] = $('input[name="hotel_City"]').val();
		params[ 'CheckIn' ] = $('input[name="hotel_CheckIn"]').val();
		params[ 'CheckOut' ] = $('input[name="hotel_CheckOut"]').val();
		params[ 'Rating' ] = $('select[name = "hotel_rating"] option:selected').val();
		return params;
	}
});

