// -------------------------------------------------------------------------- //
// -------------- Поиск в уже выбранных спецпредложениях -------------------- //
// -------------------------------------------------------------------------- //
var months3symbols = ['ЯНВ', 'ФЕВ', 'МАР', 'АПР', 'МАЙ', 'ИЮН', 'ИЮЛ', 'АВГ', 'СЕН', 'ОКТ', 'НОЯ', 'ДЕК'];
var passengers_props = {
	adults: {
		min: 1,
		max: 4,
		ends: ['', 'взрослый', 'взрослых']
	},
	children: {
		min: 0,
		max: 4,
		ends: ['без детей', 'ребенок', 'детей']
	},
	babies: {
		min: 0,
		max: 4,
		ends: ['без младенцев', 'младенец', 'младенца', 'младенцев']
	}
};

var Offer = function( obj, cookie ){
	var _offer = this;
	this.Id = 'Offer';
	this.element = obj;
	this.elementPassengers = this.element.find('.passengers');				// пассажиры
	this.elementSubmit = this.element.find('.submit_button');				// кнопка Поиска
	this.elementClose = this.element.find( '.close' );

	this.passengers = new Array();
	this.passengers[ 'adults' ] = new Passengers(
		passengers_props[ 'adults' ],
		this.element.find( '.passengers.adults' ),
		function() {
			_offer.onPassengersChange.call( _offer, 'adults' );
		}
	);

	this.passengers[ 'children' ] = new Passengers(
		passengers_props[ 'children' ],
		this.element.find( '.passengers.children' ),
		function() {
			_offer.onPassengersChange.call( _offer, 'children' );
		}
	);

	this.passengers[ 'babies' ] = new Passengers(
		passengers_props[ 'babies' ],
		this.element.find( '.passengers.babies' ),
		function() {
			_offer.onPassengersChange.call( _offer, 'babies' );
		}
	);
	this.onPassengersChange( 'adults' );

	this.cookieName = cookie;
	this.cookie = $.cookie( cookie );
	if( this.cookie ) {	
		this.cookieData = this.cookie.split( '|' );
		this.element.find('.place.from input').val( this.cookieData[ 0 ] );
		this.element.find('.place.from span.city').html( this.cookieData[ 1 ] );
		this.element.find('.place.to input').val( this.cookieData[ 2 ] );
		this.element.find('.place.to span.city').html( this.cookieData[ 3 ] );
	
		var parts1 = this.cookieData[ 4 ].split( '-' );
		var date1 = new Date( parts1[ 0 ], parts1[ 1 ] - 1, parts1[ 2 ] );
		this.element.find('.date.from span.text').html( date1.getDate() + ' ' + months3symbols[ date1.getMonth() ] + ' ' + date1.getFullYear() );
		this.element.find('.date.from input').val( this.cookieData[ 4 ] );
		var parts2 = this.cookieData[ 5 ].split( '-' );
		var date2 = new Date( parts2[ 0 ], parts2[ 1 ] - 1, parts2[ 2 ] );
		var tt = this.cookieData[ 5 ];
		if ( !( /^\d{1}(.*)/.test( this.cookieData[ 5 ] ) ) ){
			this.element.find('.date.back').remove().empty();
		}
		else {
			this.element.find('.date.back span.text').html( date2.getDate() + ' ' + months3symbols[ date2.getMonth() ] + ' ' + date2.getFullYear() );
			this.element.find('.date.back input').val( this.cookieData[ 5 ] );
		}
		this.element.find('input[name="ServiceClass"]').val( date2 ? this.cookieData[ 6 ] : this.cookieData[ 5 ] );
	}

	var that = this;	
	this.init();
}

Offer.prototype = {
	init: function(){
		var that = this;
		this.elementSubmit.bind( 'click', { obj: that}, that.submit );				// запускаем поиск
		// скрываем панель
		this.elementClose.click(function(){
			that.element.addClass( 'not_display' );							// ее надо удалить из кук
			$.cookie( that.cookieName, null, { path: '/' } );
		});
	},

	getOfferParams: function(){
		var objParams = {};
		objParams[ 'Commander.Command' ] = 'SearchAirTariffsCalendar';
		objParams.From1 = this.element.find('.places .from input').val();
		objParams.To1 = this.element.find('.places .to input').val();
		objParams.Date1 = this.element.find('.date.from input').val();
		if ( this.element.find('.date.back').size() > 0 ){
			objParams.From2 = this.element.find('.places .to input').val();
			objParams.To2 = this.element.find('.places .from input').val();
			objParams.Date2 = this.element.find('.date.back input').val();
		}
		objParams[ 'ServiceClass' ] = this.element.find('input[name="ServiceClass"]').val();
		objParams.Dlts = this.passengers.adults.input.val();
		objParams.Children = this.passengers.children.input.val();
		objParams.Infants = this.passengers.babies.input.val();		
		return objParams;	
	},
	
	onPassengersChange: function( key ) {
		var control = this.passengers[ key ];
		if(
			key == 'adults' ||
		   	key == 'babies'
		 ) {
			this.passengers[ 'babies' ].setMax( this.passengers[ 'adults' ].current_value );	
		}
	},
	
	submit: function( evt ){
		var that = evt.data.obj;
		var objParams = that.getOfferParams();
		/*var storeParamsInGlobal = that.copyPropertiesOfObject( objParams );
		storeParamsInGlobal[ 'Commander.CommandExecutionMode' ] = 'SYNCHRONOUS';
		storeParamsInGlobal[ 'SaveParametersOnly' ] = 'True';
		$.getJSON( '/ajax/ajax-request-commander-y2.html',
			storeParamsInGlobal,
			function( data ){
				if ( data[ 'Activity' ] == 'DONE' ){*/
					
					var paramsToSearch = objParams;
					paramsToSearch[ 'Commander.CommandExecutionMode' ] = 'ASYNCHRONOUS';
					$.getJSON( '/ajax/ajax-request-commander-y2.html',
						paramsToSearch,
						function( result ){
							if ( Boolean( result[ 'CommandId' ] ) ){
								var SearchId = result[ 'CommandId' ];
								var ContextSessionId = result[ 'ContextSessionId' ];
								var data = {
									'SearchId': SearchId,
									'ContextSessionId': ContextSessionId,
									'Quantity': 2
								};
								$.ajax({
									'url': '/ajax/check-storage-global.html',
									data: data,
									success: function( answer ){
										if( answer[ 'Activity' ] == 'DONE' ) {
											that.search( SearchId );
										} else if( answer[ 'Activity' ] == 'PROCESSING' ) {
											window.setTimeout( function() { that.checkSG( data ) }, 3000 );
										} else if( answer[ 'Activity' ] == 'ERROR' ) {
											alert( 'Извините, проблемы с сервером!' );
										} else {
											alert( 'Извините, проблемы с сервером!' );
										}
									},
									error: function(){
										alert( 'Извините, проблемы с сервером!' );
									}
								});
							} else {
								alert( 'Извините, произошла ошибка. Попробуйте ещё раз.' );
							}
						}
					)/*
				}
				else {
					alert( 'Что-то не так!' );
				}
			}
		);*/
		evt.preventDefault();
	},

	checkSG: function( data ){
		var that = this;
		$.ajax({
			'url': '/ajax/check-storage-global.html',
			data: data,
			success: function( answer ){
				if( answer[ 'Activity' ] == 'DONE' ) {
					that.search( SearchId );
				} else if( answer[ 'Activity' ] == 'PROCESSING' ) {
					window.setTimeout( function() { that.checkSG( data ) }, 3000 );
				} else if( answer[ 'Activity' ] == 'ERROR' ) {
					alert( 'Извините, проблемы с сервером!' );
				} else {
					alert( 'Извините, проблемы с сервером!' );
				}
			},
			error: function(){
				alert( 'Извините, проблемы с сервером!' );
			}
		});
	},
	
	search: function( SearchId ){
		$.cookie( this.cookieName, null, { path: '/' } );
		var form = document.createElement( 'form' );
		form.method = 'POST';
		form.action = '/flight/search/';
		document.body.appendChild( form );
		form.style.display = 'none';
		var input = document.createElement( 'input' );
		input.name = 'SearchId';
		input.value = SearchId;
		form.appendChild( input );
		form.submit();
	},
	
	copyPropertiesOfObject: function( obj ){
		var newObj = {};
		for( var prop in obj ){
			newObj[ prop ] = obj[ prop ];
		}
		return newObj;
	}
}

$(function(){
	var offers = $('#order').find( '.order_inner' );
	for ( var i = 0, len = offers.size(); i < len; i++ ){
		window[ 'off' + i ] = new Offer( $(offers[ i ]), offers[ i ].id );
	}
	$('#order').removeClass( 'not_display' ); 
});
