var error_page;
var air_loader;
var rail_loader;
var bus_loader;
var hotel_loader;
var tour_loader;
var lang_tmp;
var LeftSide, AdultCount, ChildCount, InfantCount, Class, Services = [];
var DatePickerStyle = 'calendar';
var ReSave = false;
var Banner = function(dom, promoImages) {
    /*
    * Переключает ссылки на маршруты в баннере.
    */
    this.dom = $(dom);
    this.button = $('ul a', this.dom);
    this.className = 'active';
    this.cur_div;

	if (promoImages) {
		this.IMG  = promoImages.split(',');

	    this.i = Math.floor(Math.random() * this.IMG.length);
	    this.button.eq(this.i).addClass(this.className);

	    this.cur_div = this.dom.find('#fragment-' + (this.i + 1));

	    if($('.promo_info', this.cur_div).length > 0){
	    	this.cur_div.removeClass('ui-tabs-hide')
                   .find('.promo_info')
                   .prepend("<img class='top_promo' src='" + promoConfig + this.IMG[this.i] + "' />");
        } else {
        	this.cur_div.html("<img class='top_promo' src='" + promoConfig + this.IMG[this.i] + "' />")
                   .removeClass('ui-tabs-hide');
        }
	}

    var self = this;
    if (self.button.length) {
        self.button.click(function() {
            	var el = $(this);

                if (promoImages) {
                    var i = el.attr('href').replace('#fragment-', ''),
                    	img = $("<img class='top_promo' src='" + promoConfig + self.IMG[i -1] + "' />"),
                    	fragment = self.dom.find('#fragment-' + i);

                    if (cur_domain == 'avia') {
                    	if($('img', fragment).length == 0) {
                    		if($('.promo_info', this.cur_div).length > 0) {
                    			fragment.find('.qatar_ins').prepend(img);
                    		} else {
                    			fragment.html(img);
                    		}
                    	}
                    } else if (cur_domain == 'gd') {
                        if (fragment.html() == '') {
                            fragment.html(img);
                        }
                    }
                }

                self.button.removeClass(self.className);
                el.addClass(self.className);

                return false;
        });
    }
};

var Login = function(options) {
    /*
    * Показывает/скрывает попап входа в систему.
    */
    var self = this;

    self.o = options;
    self.link = $(self.o.link);
    self.icon = $(self.o.icon);
    self.popup = $(self.o.popup);
    self.login_form = $('form.login-form', self.popup);
    self.remind_form = $('form.reminder-form', self.popup);
    self.success_form = $('form.password-sent', self.popup);
    self.close = $('a.close', self.popup);
    self.login_email = $('input.login-email', self.popup);
    self.remind_email = $('input.remind-email', self.popup);
    self.pass_fake = $('input.password:not(.hidden)', self.popup);
    self.pass_real = $('input.password.hidden', self.popup);
    self.login_submit = $('a.login-submit', self.popup);
    self.remind_submit = $('a.remind-submit', self.popup);
    self.remind_link = $('a.forgot-password', self.popup);
    self.loaders = $('.loader_small', self.popup);

    self.show = function () {
        self.remind_form.hide();
        self.success_form.hide();
        self.login_form.show();
        self.popup.show();
        self.login_email.focus();
        if (!self.pass_real.val()) {
            self.pass_fake.show();
            self.pass_real.hide();
        }
    }

    self.hide = function () {
        self.loaders.hide();
        self.login_submit.show();
        self.remind_submit.show();
        self.popup.hide();
        self.no_error();
    }

    self.init = function() {
        self.email_default = self.login_email.val();

        self.link.click(function() {
            if(self.popup.is(':hidden'))
                self.show();
            else
                self.hide();

            return false;
        });

        self.icon.click(function() {
            if(self.popup.is(':hidden'))
                self.show();
            else
                self.hide();

            return false;
        });

        self.close.click(function(){
            self.hide();

            return false;
        });

        $(window).resize(function() {
            self.hide();
        });

        $(window).click(function(e){
            var target = $(e.target);
            var parents = target.parents(self.o.popup);

            if (!parents.length) {
                self.hide();
            }
        });

        self.login_email.focus(function() {
            self.no_error();
            if ($(this).val() == self.email_default){
                $(this).val('');
            }
        });

        self.login_email.blur(function() {
            if (!$(this).val()) {
                $(this).val(self.email_default);
            }
        });

        self.pass_fake.bind('focus keydown', function() {
            self.no_error();
            self.pass_fake.hide();
            self.pass_real.val('').show().focus();
        });

        self.pass_real.blur(function() {
            if(!$(this).val()) {
                self.pass_real.hide();
                self.pass_fake.show();
            }
        });

        self.remind_link.click(function(){
            self.login_form.hide();
            self.remind_form.show();
            if(self.login_email.val() != self.email_default && !self.remind_email.val()){
                self.remind_email.val(self.login_email.val());
            }
            self.remind_email.focus();
        });

        self.remind_email.focus(function() {
            self.no_error();
            if ($(this).val() == self.email_default){
                $(this).val('');
            }
        });

        self.remind_email.blur(function() {
            if (!$(this).val()) {
                $(this).val(self.email_default);
            }
        });


    }

    self.error = function(){
        self.loaders.hide();
        self.login_submit.show();
        self.remind_submit.show();
        self.popup.addClass('error-popup');
        $('h4, em', self.popup).hide().filter('.hidden').show();
    }

    self.no_error = function(){
        if(self.popup.hasClass('error-popup')){
            self.popup.removeClass('error-popup');
            $('h4, em', self.popup).hide().not('.hidden').show();
        }
    }

    self.login = function(){
        if(!self.login_email.val() || !self.pass_real.val()){
            self.error();
        } else {
            self.login_submit.hide();
            self.loaders.show();
            $.ajax({
                type: 'POST',
                url: '/login',
                data: {email: self.login_email.val(), password: self.pass_real.val()},
                dataType: 'json',
                success: function(msg){
                    if(msg.status == 'success'){
                        self.link.unbind('click');
                        self.icon.unbind('click').addClass('logout').removeClass('enter');
                        self.popup.remove();
                        self.icon.click(function(){
                            if(confirm(confirm_logout)){window.location.href = '/logout'};
                            return false;
                        });
                        $('#footer_login').unbind('click');
                        if(window.loginCallBackFunction){
					       loginCallBackFunction();
					    }
                    } else {
                        self.error();
                    }
                }
            })
        }
    }

    self.remind = function(){
        if(!self.remind_email.val()){
            self.error();
        } else {
            self.remind_submit.hide();
            self.loaders.show();
            $.ajax({
                type: 'POST',
                url: '/remind_password',
                data: {email: self.remind_email.val()},
                dataType: 'json',
                success: function(msg){
                    if(msg.status == 'success'){
                        self.remind_form.hide();
                        self.success_form.show();
                    } else {
                        $('em.login_error', self.remind_form).html(msg.errors);
                        self.error();
                    }
                }
            })
        }
    }

    if (self.link.length && self.popup.length && self.icon.length) {
        self.init();

        self.login_submit.click(function() {
            self.login();
        });

        self.remind_submit.click(function() {
            self.remind();
        });

        self.login_email.keypress(function(event) {
            if (event.which == '13') {
                self.login();
            }
        });

        self.pass_real.keypress(function(event) {
            if (event.which == '13') {
                self.login();
            }
        });

        self.remind_email.keypress(function(event) {
            if (event.which == '13') {
                self.remind();
                return false;
            }
        });
    }
}

var SearchCalendar = function(options) {
    /*
    * Переключает табы календаря и поиска.
    */
    var self = this;

    self.o = options;
    self.activeClass = 'active';
    self.hiddenClass = 'hidden';
    self.controls = $(self.o.controls);
    self.search = $(self.o.search);
    self.calendar = $(self.o.calendar);

    var BalloonFlagShow = true;
    DatePickerStyle = 'calendar';

    self.init = function() {
        // Return route radio-button
        var radio_rr = $('.search-header').find('.jNiceRadio');
        if(typeof(route_type) != "undefined" && route_type !== null){
            radio_rr = $(radio_rr[route_type]);
        }   else{
            radio_rr = $(radio_rr[1]);
        }


        self.controls.click(function() {
            _gaq.push(['_trackPageview', '/change_tab_main/' + cur_domain + '/' + $(this).attr('href') ]);

            if (!$(this).hasClass(self.activeClass)) {
                self.controls.removeClass(self.activeClass);
                $(this).addClass(self.activeClass);

                var href = $(this).attr('href');
                var active = href.substr(1);

                DatePickerStyle = active;

                self.search.addClass(self.hiddenClass);
                self.calendar.addClass(self.hiddenClass);
                self[active].removeClass(self.hiddenClass)
            }

            if (self.search.hasClass(self.hiddenClass)){
                var dirs = $("#Directions").find("div.Direction:visible");
                var last;
                $.each(dirs, function(k,v){
                    if(DirectionsDOM.length > 0){
                        if (Directions[k+1]) {
                            last = v;
                        }
                        var d = DirectionsDOM[k+1];
                        if (!d) {
                            $(v).find('.close').trigger('click');
                        }
                        else if(d.DateInput.value=='' || d.StartAirpCodeInput.value=='' || d.EndAirpCodeInput.value=='' ){
                            $(v).find('.close').trigger('click');
                        }
                    }

                });

            } else {
                $('.add_direction').hide();

                if (Directions.length <= 2) {
                    radio_rr.trigger('click');
                }
            }
            return false;

            $('.datepicker').hide();
            $('#time_menu').hide();

            return false;
        });
    }

    if (self.controls.length) {
        self.init();
    }

}

var Feedback = function(options) {
    /*
    * Показывает/скрывает попап feedback.
    */
    var self = this;
    self.o = options;
    self.url = self.o.url;
    self.link = $(self.o.link);
    self.popup = $(self.o.popup);
    self.close = $(self.o.close, self.popup);
    self.select = $('select', self.popup);
    self.submit = $('a.submit', self.popup);
    self.msg = $('#feedback_message');
    self.email = $('#feedback_email');
    self.initial = true;
    self.loaders = $('.loader_small', self.popup);

    self.hide = function(){
        $('#feedback-popup').hide();
        $('#feedback_fields').show();
        $('#feedback_sent').hide();
        self.msg.removeClass('error').val(feedback_lng.feedback_msg);
        self.email.removeClass('error').val(feedback_lng.feedback_email);
    }

    self.ajax = function(){
        self.submit.hide();
        self.loaders.show();
        $.ajax({
              url: self.url,
              type: 'post',
              data: {
                  feedback_message: self.msg.val(),
                  feedback_email:   self.email.val(),
                  feedback_address: $('#feedback_address option').eq($('#feedback_address').next().find('ul a.selected').attr('index')).val()
              },
              dataType : "json",
              success: function(data){
                self.loaders.hide();
                self.submit.show();

                if(!data.feedback_email && !data.feedback_message){
                    $('#feedback_fields').hide();
                    $('#feedback_sent').show();
                } else {

                    if(data.feedback_email){
                        self.email.addClass('error');
                        $('#feedback_email_error').text(data.feedback_email).show();
                    }
                    if(data.feedback_message){
                        self.msg.addClass('error');
                        $('#feedback_message_error').text(data.feedback_message).show();
                    }
                }
            }
        })
    }

    self.init = function() {
        self.link.click(function() {
            self.popup.toggle();

            return false;
        });

        self.close.click(function() {
            self.hide();

            return false;
        });

        self.submit.click(function(){
            self.ajax();

            return false;
        })

        $(window).click(function(e){
            var target = $(e.target);
            var parents = target.parents(self.o.popup);

            if (!parents.length) {
                self.hide();
            }
        });

        self.msg.focus(function() {
            $('#feedback_message_error').hide();
            $(this).removeClass('error');
            if ($(this).val() == feedback_lng.feedback_msg){
                $(this).val('');
            }
        });

        self.msg.blur(function() {
            if (!$(this).val()) {
                $(this).val(feedback_lng.feedback_msg);
            }
        });

        self.email.focus(function() {
            $(this).removeClass('error');
            $('#feedback_email_error').hide();
            if ($(this).val() == feedback_lng.feedback_email){
                $(this).val('');
            }
        });

        self.email.blur(function() {
            if (!$(this).val()) {
                $(this).val(feedback_lng.feedback_email);
            }
        });

        $('#feedback_fields').jNice();
        $('#feedback_fields ul').css('height', ($('#feedback_fields ul li').length * 27) + 'px');
    }

    if (self.link.length && self.popup.length) {
        self.init();
    }
}

var PureLoader = function(options) {
    /*
    * Загрузчик.
    */
    var self = this;

    self.o = options;
    self.hiddenClass = 'hidden';
    self.link = $(self.o.link);
    self.bgLoader = $(self.o.bgLoader);
    self.loader = $(self.o.loader);
    self.close = $(self.o.close, self.loader);
    self.scale = $(self.o.scale, self.loader);
    self.loading = null;
    self.animate = null;

    self.show = function() {
        self.bgLoader.removeClass(self.hiddenClass);
        self.loader.removeClass(self.hiddenClass);
        self.bgLoader.height($(document).height());
        return false;
    }

    self.hide = function() {
        self.bgLoader.addClass(self.hiddenClass);
        self.loader.addClass(self.hiddenClass);
        self.scale.width(0);
        self.scale.removeClass('red');
        return false;
    }

    self.start = function() {
        self.scale.removeClass('red');
        self.scale.width(0);
        self.error = null;
        self.free_seats = null;
        self.animate = self.scale.animate({width: '100%'}, 60000, 'linear', function(){
        });
    }

    self.chek = function() {
        return true;
    }

    self.ajax = function() {
        if(self.loading) {
            self.loading.abort();
        }
        $('.errormes').hide();
        self.loader.find('p').html(self.o.txt);
        self.show();
        self.start();
        self.chek();
    }

    self.init = function() {
        self.close.click(self.hide)
    }

    self.init();

}

var Loader = function(options) {
    /*
    * Загрузчик.
    */
    var self = this;

    self.o = options;
    self.hiddenClass = 'hidden';
    self.link = self.o.link;
    self.bgLoader = $(self.o.bgLoader);
    self.loader = $(self.o.loader);
    self.close = $(self.o.close, self.loader);
    self.scale = $(self.o.scale, self.loader);
    self.loading = null;
    self.animate = null;
    self.session_id = null;
    self.error = null;
    self.seats = null;
    self.params = null;
    self.url = self.o.url;
    self.searchurl = self.o.searchurl;
    self.animationTime = self.o.animationTime;
    self.ajaxTimeout = self.o.ajaxTimeout;
    self.acceleratedTime = self.o.acceleratedTime;
    self.redirectDelay = self.o.redirectDelay;


    self.show = function() {
        //self.scale.width(0);
        self.bgLoader.removeClass(self.hiddenClass);
        self.loader.removeClass(self.hiddenClass);
        self.bgLoader.height($(document).height());
        return false;
    }

    self.hide = function() {
        self.bgLoader.addClass(self.hiddenClass);
        self.loader.addClass(self.hiddenClass);
        self.scale.removeClass('red');
        self.scale.width(0);
        return false;
    }

    self.start = function() {
        self.animate = self.scale.animate({width: '100%'}, self.animationTime, 'linear');
    }

    self.chek = function() {
        if (((self.session_id != null) || (self.error != null)) && !(self.scale.hasClass('red'))) {
            self.animate.stop();
            if (self.error || (typeof(self.seats)!='undefined' && self.seats == null)) {
                self.scale.addClass('red');
                self.scale.animate({width: '100%'}, self.acceleratedTime, 'linear', function(){
                    self.loader.find('p').html(self.error);
                });
            } else {
            	seats = self.seats + ''
            	count = parseInt( seats.substr( (seats.length - 1) , 1) );

                if( count == 1 ){ index = 1; }
                else if( count > 0 && count < 5 ){ index = 2; }
                else{ index = 0; }

                self.loader.find('p').html(MO_searchOptionsFound.replace('%%count%%', self.seats).replace('%%variant%%', MO_variants_count[index]));
                self.scale.animate({width: '100%'}, self.acceleratedTime, 'linear', function(){

                setTimeout(function(){
                		top.location.href = self.url + self.session_id
                	}, self.redirectDelay);
                });
            }
            return false;
        }

        setTimeout(function() {
            self.chek();
        }, self.animationTime / 100)
    }

    self.ajax = function() {
        if(self.loading) {
            self.loading.abort();
        }
        self.loader.find('p').html(MO_searching);
        self.show();
        self.start();

        self.chek();
        self.loading = $.ajax({
            type: "POST",
            url: self.searchurl,
            data: self.params,
            dataType: "json",
            timeout: self.ajaxTimeout,
            success: function(msg){
                if (msg && typeof(msg.session_id) != 'undefined' && msg.session_id) {
                    self.session_id = msg.session_id;
                    self.seats = msg.seats;
                    
                    if (cur_domain == 'insurance') {
                    	self.url = self.url.replace('%product%', self.params.Product);
                    }
                } else if (msg == null) {
                	self.error = MO_emptyRoute;
                } else {
                    EraseCookie('Directions_' + cur_domain);
                    EraseCookie('Dates_' + cur_domain);
                    EraseCookie('AdultCount_' + cur_domain);
                    EraseCookie('ChildCount_' + cur_domain);
                    EraseCookie('InfantCount_' + cur_domain);
                    EraseCookie('Class_' + cur_domain);
                    EraseCookie('Time_' + cur_domain);
                    EraseCookie('Services_' + cur_domain);
                    self.error = msg.error;
                }

            },
            error: function(response, type){
                if (this.timeout) {

                    var msg = '';
                    if(type=='timeout'){
                        msg = 'Loader timeout error (' + this.timeout + 'ms)';
                    }else{
                        msg = response.statusText + ' (' + response.status + ')';
                    }

                    $.ajax({
                        type: "POST",
                        data:{'msg': msg},
                        url: '/timeout_save'
                    });

                    self.error = MO_temproraryUnavaliable;
                }

            }
        });
    }

    self.create_params = function(){
        var exit = false;

        $.each(DirectionsDOM, function(i, v){
            if (i && $(this.entBox).is(':visible')) {
                if (!this.StartAirpCodeInput.value) {
                 this.StartAirpInput.focus();
                 exit = true;
                }
                if (!this.EndAirpCodeInput.value) {
                     this.EndAirpInput.focus();
                     exit = true;
                 }
                 if (!this.DateInput.value) {
                    this.DateInput.focus();
                    exit = true;
                 }
            }
        });

        if (exit) {
         	DirectionCookie = '';
            DatesCookie = '';
            AdultCount = '';
            ChildCount = '';
            InfantCount = '';
            Class = '';
            Time = '';
            Services = [];
            return false;
        }

        var sParams = new Object();
        DirectionCookie = [];

        for (var i = 1; i < DirectionsDOM.length; i++) {
        	// оновлюєм Directions
        	if (typeof DirectionsDOM[i] != 'undefined' && DirectionsDOM[i].Direction.Date && DirectionsDOM[i].Direction.DirectionNumber) {
	        	DirectionsDOM[i].updateDirection();

	        	Directions[i] = DirectionsDOM[i].Direction;

	        	if ($(DirectionsDOM[i].StartAirpInput).data().service && $(DirectionsDOM[i].EndAirpInput).data().service) {
	        		var start_data = $(DirectionsDOM[i].StartAirpInput).data();
	        		var end_data = $(DirectionsDOM[i].StartAirpInput).data();
	        		
	        		if (typeof(Services) == 'string') {Services = []};
	        		
	        		if (start_data.service) {
	                	$.each(start_data.service.split(','), function (i, item) {
	                    	if (indexOf(Services, item) == -1) {
	                    		Services.push(item);
	                    	}
	                	})
	        		}
	        		
	        		if (end_data.service) {
	                	$.each(end_data.service.split(','), function (i, item) {
	                    	if (indexOf(Services, item) == -1) {
	                    		Services.push(item);
	                    	}
	                	})
	        		}	        		
	        	} else {
	        		if (DirectionBalloon != null && $(DirectionBalloon.StartAirpInput).data() && $(DirectionBalloon.EndAirpInput).data() 
	        				&& $(DirectionBalloon.StartAirpInput).data().service && $(DirectionBalloon.EndAirpInput).data().service) {
		        		var start_data = $(DirectionBalloon.StartAirpInput).data();
		        		var end_data = $(DirectionBalloon.EndAirpInput).data();
		        		
		        		if (typeof(Services) == 'string') {Services = []};
		        		
		        		if (start_data.service) {
		                	$.each(start_data.service.split(','), function (i, item) {
		                		
		                    	if (indexOf(Services, item) == -1) {
		                    		Services.push(item);
		                    	}
		                	})
		        		}
		        		
		        		if (end_data.service) {
		                	$.each(end_data.service.split(','), function (i, item) {
		                    	if (indexOf(Services, item) == -1) {
		                    		Services.push(item);
		                    	}
		                	})
		        		}
	        		}
	        	}

	            sParams['StartAirp' + i + "Code"] = Directions[i].StartAirpCode;
	            sParams['EndAirp' + i + "Code"]   = Directions[i].EndAirpCode;
	            sParams['StartAirp' + i] = Directions[i].StartAirp;
	            sParams['EndAirp' + i]   = Directions[i].EndAirp;
	            sParams['Date' + i] = Directions[i].Date;
	            sParams['Time' + i] = Directions[i].Time;

	            sParams['PlusMinus' + i] = Directions[i].PlusMinus;

	            DirectionCookie += Directions[i].StartAirp + '^' + Directions[i].StartAirpCode + ':' + Directions[i].EndAirp + '^' + Directions[i].EndAirpCode + ':' + Directions[i].PlusMinus + ':' + cur_domain + ';';
	            DatesCookie += Directions[i].Date + ';';
        	}
         }

         AdultCount  = $('#adt').parent().find('.jNiceSelectText').text();
         ChildCount  = $('#chd').parent().find('.jNiceSelectText').text();
         InfantCount = $('#inf').parent().find('.jNiceSelectText').text();
         Class       = $('input[name="type"]').filter(":checked").val();
         Time        = $('#Time1_input').val();

         if (Services == '' && cur_domain == 'bus') {
        	 if (ReadCookie('SearchParams_bus')) {
 				var c = ReadCookie('SearchParams_bus').split(';');
				$.each(c, function (index, value) {
					if (value != '') {
						value = value.split('=');
						if (value[0] == 'Services' && value[1]) {
							Services = value[1];
						}
					}
				})
        	 } else if (ReadCookie('Services_bus')) {
            	 Services = ReadCookie('Services_bus');
        	 }
         } else {
        	 if (typeof(Services) == 'string') {
        		 Services = [];
        	 } else {
        		 Services = Services.join(',');
        	 }
         }

         sParams['adt']   = AdultCount;
         sParams['chd']   = ChildCount;
         sParams['inf']   = InfantCount;
         sParams['class'] = Class;
         sParams['Services'] = Services;

         self.params = '';
         $.each(sParams, function(k, v) {
            self.params = self.params + k + '=' + v + '&';
         });

         return true;
    }

    self.init = function() {

        $.each(self.link, function(k,v) {
            $(v).click(function() {
                if ($(this).parent().parent().hasClass('popular_directions')) {
                    self.params = $(this).attr('params');
                    self.ajax();
                } else {
                    if(self.create_params()) {
                        CreateCookie('Directions_' + cur_domain, DirectionCookie, 1);
                        CreateCookie('Dates_' + cur_domain, DatesCookie, 1);
                        CreateCookie('AdultCount_' + cur_domain, AdultCount, 1);
                        CreateCookie('ChildCount_' + cur_domain, ChildCount, 1);
                        CreateCookie('InfantCount_' + cur_domain, InfantCount, 1);
                        CreateCookie('Class_' + cur_domain, Class, 1);
                        CreateCookie('Time_' + cur_domain, Time, 1);
                        CreateCookie('Services_' + cur_domain, Services, 1);
                        self.ajax();
                    }
                }

                return false;

            });
        });

        self.close.click(function() {
            var cancel = MO_searchTerminated + '.';
            var contin = '<a href="javascript:void(0)" id="continue">' + MO_continue + '...</a>';

            if(self.loading) {
                if (!self.scale.hasClass('red')) {
                    self.scale.addClass('red');
                    self.animate.stop();
                    self.loader.find('p').html(cancel + ' ' + contin);
                    if (self.session_id) {
                        self.loader.find('a#continue').attr('href', self.url + self.session_id)
                    }
                    self.loader.find('a#continue').click(function(e){
                        self.scale.removeClass('red');
                        self.loader.find('p').html(MO_searching);

                        if (self.session_id) {
                            self.scale.animate({width: '100%'}, self.acceleratedTime, 'linear', function(){
                                setTimeout(function(){top.location.href = self.url + self.session_id}, self.redirectDelay);
                            });
                        } else {
                            self.start();
                        }
                    });
                } else {
                    if(self.loading) {
                        self.loading.abort();
                    }

                    self.loading = null;
                    self.animate = null;
                    self.session_id = null;
                    self.error = null;
                    self.seats = null;
                    self.params = null;

                    self.hide();
                    self.scale.removeClass('red');
                    self.loader.find('p').html(MO_searching);
                    self.scale.width(0);
                }

            }
        });
    }

   self.init();
}

var Results = function(options) {
	var self = this;

	self.o = options;
	self.root = $(self.o.root);
	self.controls = $(self.o.controls, self.root);
	self.rows = $(self.o.rows, self.root);
	self.hiddenClass = 'hidden';
	self.openedClass = 'opened';
	self.visibleClass = 'visible';

	self.init = function() {
		self.controls.click(function(){
			if(self.o.grandparent){
				return true;
                var linkId = $(this).attr('rel');
                var parent = $('#'+linkId).parent();
            } else {
                var parent = $(this).parent();
                var linkId = $(this).attr('id');
            }

			if (parent.hasClass(self.openedClass)){
				parent.removeClass(self.openedClass);
				self.rows.each(function(){
					if ($(this).hasClass(linkId)) {
						if (!$(this).hasClass(self.visibleClass))
							$(this).addClass(self.hiddenClass);
					}
				});
			} else {
				if(!self.o.grandparent){
					$('#results div.opened a').click();
				}
				parent.addClass(self.openedClass);
				self.rows.each(function(){
					if ($(this).hasClass(linkId)) {
						$(this).removeClass(self.hiddenClass);
					}
				});
			}

			return false;
		});
	}

	if (self.root.length) {
		self.init();
	}
}

var Page = function() {
	var self = this;
}

$(function(){
	var p = new Page();
	
	$('.b_agent .b_close').live('click', function () {
		$(this).parent().hide();
	})
	
	$("#banner").tabs();
	promoImages = typeof(promoImages) != 'undefined' ? promoImages : null;

	p.banner = new Banner('#banner', promoImages);

	if (cur_domain == 'bus') {
    	p.banner1 = new Banner('.block1', null);
    	p.banner2 = new Banner('.block2', null);
    	p.banner3 = new Banner('.block3', null);
	}

    p.login = new Login({link: '#nav a.login',
        icon: '#nav a.enter',
        popup: '#login-popup'
    });

    p.searchcal = new SearchCalendar({controls: '#search div.search-nav a',
        search: '#search form .search',
        calendar: '#search form .calendar'
    });

    p.feedback = new Feedback({link: '#feedback a',
        close: 'a.close',
        popup: '#feedback-popup',
        url: '/send_feedback'
    });


    air_loader = new Loader({link: ['.search-footer a.submit.air', '#popular a'],
        bgLoader: '#loader-bg',
        loader: '#loader',
        close: 'a.close',
        scale: 'div.scale',
        url: subdomain_url + gds + '/search/',
        searchurl: subdomain_url + gds + '/search',
        animationTime: 120000,
        ajaxTimeout: 120000,
        acceleratedTime: 1000,
        redirectDelay: 1000
    });

    rail_loader = new Loader({link: ['.search-footer a.submit.railroad', '#rail_popular a'],
        bgLoader: '#loader-bg',
        loader: '#loader',
        close: 'a.close',
        scale: 'div.scale',
        url: subdomain_url + 'search/result?session_id=',
        searchurl: subdomain_url + 'search',
        animationTime: 120000,
        ajaxTimeout: 120000,
        acceleratedTime: 1000,
        redirectDelay: 1000
    });

    bus_loader = new Loader({link: ['.search-footer a.submit.bus', '#bus_popular a'],
        bgLoader: '#loader-bg',
        loader: '#loader',
        close: 'a.close',
        scale: 'div.scale',
        url: subdomain_url + 'search/result?session_id=',
        searchurl: subdomain_url + 'search',
        animationTime: 120000,
        ajaxTimeout: 120000,
        acceleratedTime: 1000,
        redirectDelay: 1000
    });

    hotel_loader = new Loader({link: ['#hotel_search_button'],
        bgLoader: '#loader-bg',
        loader: '#loader',
        close: 'a.close',
        scale: 'div.scale',
        url: subdomain_url + 'search/result?session_id=',
        searchurl: subdomain_url + 'search',
        animationTime: 600000,
        ajaxTimeout: 600000,
        acceleratedTime: 1000,
        redirectDelay: 1000
    });

    tour_loader = new Loader({link: ['#tour_search_button'],
        bgLoader: '#loader-bg',
        loader: '#loader',
        close: 'a.close',
        scale: 'div.scale',
        url: subdomain_url + 'search/result?session_id=',
        searchurl: subdomain_url + 'search',
        animationTime: 180000,
        ajaxTimeout: 180000,
        acceleratedTime: 1000,
        redirectDelay: 1000
    });
    
    insurance_loader = new Loader({link: ['#insurance_search_button'],
        bgLoader: '#loader-bg',
        loader: '#loader',
        close: 'a.close',
        scale: 'div.scale',
        url: subdomain_url + 'search/result_%product%?session_id=',
        searchurl: subdomain_url + 'search',
        animationTime: 120000,
        ajaxTimeout: 120000,
        acceleratedTime: 1000,
        redirectDelay: 1000
    });

    /**  Страница с ошибкой  **/

    error_page = new PureLoader({
        bgLoader: '#loader-bg',
        loader: '#error_loader',
        close: 'a.error_close',
        scale: 'div.error_scale',
        animationTime: 100000,
        ajaxTimeout: 100000,
        acceleratedTime: 1000,
        redirectDelay: 3000
    });

    error_page.show = function(text, is_error){
        this.loader.find('p').html(text);
        if(is_error){
            this.scale.width('100%').addClass('red');
        }   else{
            this.scale.width(0);
        }
        this.bgLoader.removeClass(this.hiddenClass);
        this.loader.removeClass(this.hiddenClass);
        this.bgLoader.height($(document).height());
        return false;
    }
    /**  Конец **/

	p.initHover = function() {
		/* ie6 hover */
		if ($.browser.msie && $.browser.version == '6.0') {
			$('#CalendarBody td.Day').hover(
				function(){
					$(this).addClass('hover');
				},
				function() {
					$(this).removeClass('hover');
				}
			);

			$('div.final-results div.result-route').hover(
				function(){
					$(this).addClass('result-route-hover');
				},
				function() {
					$(this).removeClass('result-route-hover');
				}
			);
		}
	}

	p.initHover();
    a = window.location.href;
    b = a.split('/');
    if(a.indexOf('tickets.ua', 0) >= 0 && (typeof(b[3]) == 'undefined' || b[3] == '')){
        social_nets();
    }    
})

function checkAGR500() {
    var inf = $('.search-footer').find('#inf');
    var adt = $('.search-footer').find('#adt');

    if (inf.val() > adt.val()) {
        inf.val(adt.val());
        $.jNice.SelectUpdate(inf);
        inf.next().find('.jNiceSelectText').text(adt.val());
    }
    var inf_jnice = inf.next();
    inf_jnice.find('ul').css('height', (25 * adt.val() + 25) + 'px');

    $.each(inf_jnice.find('li'), function(i, val) {
        if (i > adt.val())
            $(val).hide();
        else
            $(val).show();
    });
}

function show_form(){
	if($('#login-popup').is(':hidden') == true){
        $('#login-popup').show();
		$('#login-popup input.login-email').focus();
		$.scrollTo($('#login-popup'), 300);
	}
}

function social_nets(){
    var google_script = document.createElement('script');
    google_script.type = 'text/javascript';
    google_script.src = 'https://apis.google.com/js/plusone.js';

    var vk_script = document.createElement('script');
    vk_script.type = 'text/javascript';
    vk_script.src = 'http://vkontakte.ru/js/api/share.js?10';
    vk_script.charset = 'windows-1251';

    var odkl_script = document.createElement('script');
    odkl_script.type = 'text/javascript';
    odkl_script.src = 'http://stg.odnoklassniki.ru/share/odkl_share.js';

    $.getJSON('/social_nets', {cur_domain:cur_domain, is_main:is_main}, function(data) {
        $('.socila_nets .content').html($(data.view));

        $("body").append(vk_script);
        $('.i_like.vkontakte').append(VK.Share.button(false,{
            url: subdomain_url,
            type: "round",
            text: "Это интересно",
            title: "Авиабилеты",
            description: "Авиабилеты",
            image: "http://njymwircueitxxva.jpg",
            noparse: true
        }));

        $("body").append(odkl_script);
        ODKL.init();
        
        $("body").append(google_script);
    });
}

function repeat_avia_search(params){
    if(params != ''){
        air_loader.params = params;
        air_loader.scale.removeClass('red');
        air_loader.scale.width(0);
        air_loader.ajax();
    }
}

function promo_avia_search(params){
    if(params != ''){
        if(air_loader.searchurl.indexOf('avia_promo_search') == -1){
            air_loader.searchurl += '/avia_promo_search';
        }
        air_loader.url = avia_subdomain_url + gds + '/search/';
        air_loader.params = params;
        air_loader.scale.removeClass('red');
        air_loader.scale.width(0);

        lang = {'ru' : { 'MO_searchOptionsFound' : 'Найдено %%count%% %%variant%% перелета',
                         'MO_searching' : 'Поиск вариантов перелета...' },

                'en' : { 'MO_searchOptionsFound' : '%%count%% flight %%variant%% found',
                         'MO_searching' : 'Searching for flights' },

                'uk' : { 'MO_searchOptionsFound' : 'Знайдено %%count%% %%variant%% перельоту',
                         'MO_searching' : 'Пошук варіантів перельоту...' }
        };

        lang_tmp = { 'MO_searchOptionsFound' : MO_searchOptionsFound,
                     'MO_searching' : MO_searching };

        air_loader.hide = function(){
            air_loader.bgLoader.addClass(air_loader.hiddenClass);
            air_loader.loader.addClass(air_loader.hiddenClass);
            air_loader.scale.removeClass('red');
            air_loader.scale.width(0);

            MO_searchOptionsFound = lang_tmp['MO_searchOptionsFound'];
            MO_searching = lang_tmp['MO_searching'];

            return false;
        };

        MO_searchOptionsFound = lang[lang_prefix]['MO_searchOptionsFound'];
        MO_searching = lang[lang_prefix]['MO_searching'];

        air_loader.ajax();

    }
}

function indexOf(obj, n) {
	for(var i = 0; i < obj.length; i++) {
		if (obj[i] == n) {
			return i;
		}
	}

	return -1;
}

/* Cookies */
function CreateCookie(name, value, days, host) {
    var mHost, date,
    	host = host || '';

	if (days) {
        date = new Date();
        date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000));
    }

	if (!host) {
	    mHost = window.location.host;
		host = (mHost.split('.').length > 2) ? mHost.split('.').slice(1).join('.') : mHost;
	}

    document.cookie = name + "=" + escape(value) + ((days) ? "; expires=" + date.toGMTString() : "") + "; path=/; domain=." + host;
}
function ReadCookie(name) {
    var nameEQ = name + "=";
    var ca = document.cookie.split(';');
    for (var i = 0; i < ca.length; i++) {
        var c = ca[i];
        while (c.charAt(0) == ' ') {
            c = c.substring(1, c.length);
        }
        if (c.indexOf(nameEQ) == 0) {
            return unescape(c.substring(nameEQ.length, c.length));
        }
    }
    return null;
}
function EraseCookie(name) {
    this.CreateCookie(name, "", -1);
}

function show_error_on_loader(text){
    $('#loader').find('p').html(text);
    $('div.scale').width('100%').addClass('red');    
    $('#loader-bg').removeClass('hidden');
    $('#loader').removeClass('hidden');
    $('#loader-bg').height($(document).height());
    return false;    
}
/* //Cookies */
