$("document").ready (function () {

    // room select filter

    $('.room-select li.option:not(.date)').click(function(){
        $('ul', this).addClass('active');
        return false;
    });

    $('.room-select li.option ul li a').click(function(){

        var filter_option = $(this).parents('.option');
        var selected = $(filter_option).find('.selected');

        $(selected).html($(this).html());
        $(selected).addClass('active');

        $(filter_option).find('input[type=hidden]').val($(this).attr('href').substring (1));

        $(this).parents('ul.active').removeClass('active');
        
        return false;
    });

    $('.room-select li.option:not(.date)').mouseleave(function(){
            $('ul', this).removeClass('active');
    });


    // hotel slider controls

    $('.hotel-slider .block').click(function(){
        $('.hotel-slider .block').removeClass('active');
        $(this).addClass('active');
    });

    // leave comment form vote

    $('.leave-comment .vote-service ul li').hover(
        function(){
            $('.leave-comment .vote-service ul li').removeClass('checked');

            $(this).addClass('checked');
            $(this).prevAll().addClass('checked');
        },
        function(){
            $('.leave-comment .vote-service ul li').removeClass('checked');

            var rate_item = $('.leave-comment .vote-service ul li').get($('#vote-rate').val() - 1);

            $(rate_item).addClass('checked');
            $(rate_item).prevAll().addClass('checked');
        }
    );

    $('.leave-comment .vote-service ul li').click(function(){
        $(this).prevAll().addClass('checked');
        $('#vote-rate').val($(this).parent().children().index(this) + 1);
    });

    // leave comment validate    

    var validate_comment = $('#leave-comment-form').validate({
        focusCleanup: true,
        unhighlight: function(element){
			$(element).parents('.input-wrapper').removeClass('error');
		},
        errorPlacement: function(error, element) {
            $(element).parents('.input-wrapper').addClass('error');
            $(element).parents('.input-wrapper').find('.message p').html(error.text());
        },
        rules: {
            name: {
                required: true,
                minlength: 2
            },
            comment: 'required'
        },
        messages: {
            name: 'Пожалуйста введите имя',
            comment: 'Пожалуйста введите текст отзыва'
        }
    });
		

	
    // hotel slider reserve form validation

    var validate_reserve = $('#reserve-form').validate({
        focusCleanup: true,
        unhighlight: function(element){
			$(element).parents('.input-wrapper').removeClass('error');
		},
        errorPlacement: function(error, element) {
            $(element).parents('.input-wrapper').addClass('error');
            $(element).parents('.input-wrapper').find('.message p').html(error.text());
        },
        rules: {
            fio: {
                required: true,
                minlength: 2
            },
            phone:{
                required:true,
                minlength: 5
            },
            email: {
                required: true,
                email: true
            },
            address: 'required',
            reserve_form_room_type: 'required',
            reserve_form_date: {
                required: true,
                date: true
            },
            nights: {
                required: true,
                number: true
            }

        },
        messages: {
            fio: 'Пожалуйста введите имя и фамилию',
            phone: 'Пожалуйста введите правильный номер телефона',
            email: 'Пожалуйста введите правильный e-mail',
            address: 'Пожалуйста введите адрес',
            reserve_form_room_type: 'Пожалуйста выберите тип номера',
            reserve_form_date: 'Пожалуйста укажите дату заселения',
            nights: 'Пожалуйста укажите количество ночей'
        }
    });
	
	jQuery.validator.addMethod("custom_phone", function(value, element) {
        var custom_phone = value.replace(/\s/g,''), pattern = /^\d+(\d|\-)*$/;
        return pattern.test(custom_phone) || value == '';
    });
    jQuery.validator.addMethod("custom_name", function(value, element) {
        var custom_name = value.replace(/\s/g,''), pattern = /^\w*$/;
        return pattern.test(custom_name) || value == '';
    });

    var validate_recall = $('.recall-form').validate({
        /*focusCleanup: true,*/
        unhighlight: function(element){
            $(element).removeClass('error');
        },
        errorPlacement: function(error, element) {
            $(element).addClass('error');
        },
        rules: {
            // recall
            recall_name: {
                required: true,
                custom_name: true
            },
            recall_phone: {
                required: true,
                custom_phone: true
            }
        }
    });

    // hotel slider reserve form steps

    // 1

    $('.reserve-form .guest-info .pager .previous').click(function(){
        return false;
    });

    $('.reserve-form .guest-info .pager .next').click(function(){
        if( validate_reserve.element('input[name=fio]')&&
            validate_reserve.element('input[name=phone]')&&
            validate_reserve.element('input[name=email]')&&
            validate_reserve.element('input[name=address]'))
            {
            $('.reserve-form').removeClass('step1').addClass('step2');
        }

        return false;
    });

    // 2
    
    $('.reserve-form .room-info .pager .previous').click(function(){
        $('.reserve-form').removeClass('step2').addClass('step1');
        return false;
    });

    $('.reserve-form .room-info .pager .next').click(function(){
        if( validate_reserve.element('input[name=reserve_form_room_type]')&&
            validate_reserve.element('input[name=reserve_form_date]')&&
            validate_reserve.element('input[name=nights]'))
            {
                $('.reserve-form').removeClass('step2').addClass('step3');
        }

        return false;
    });

    // 3

    $('.reserve-form .comment .pager .previous').click(function(){
        $('.reserve-form').removeClass('step3').addClass('step2');
        return false;
    });

    $('.reserve-form .comment button').click(function(){
        //submit form
    	$('.reserve-form form').submit ();
    	
        return false;
    });


    // reserve form dropdowns

    $('.dropdown').live('click', function () {

        var $this = $(this),
            $wrapper = $this.find('.input-wrapper'),
            $options = $this.find('ul');

	$wrapper.removeClass('error');
        $wrapper.addClass('active');

        $options.unbind('mouseleave').bind('mouseleave', function () {
             $wrapper.removeClass('active');
        });

        var $items = $options.find('a');

        $items.unbind('click').click(function () {

            var val = $(this).html(),
                input_value = $(this).html();

            $this.find('.chosen span').html(val);
            $this.find('.chosen input').val(input_value);
            $wrapper.removeClass('active');

            return false;
        });

    });

    // reserve form datepicker controls

    var months = ['января', 'февраля', 'марта', 'апреля', 'мая', 'июня', 'июля', 'августа', 'сентября', 'октября', 'ноября', 'декабря'];

    var $form_datepicker = $('.reserve-form .datepicker').datepicker({
        dayNamesMin: ['Вс', 'Пн', 'Вт', 'Ср', 'Чт', 'Пт', 'Сб'],
        monthNames: ['Январь', 'Февраль', 'Март', 'Апрель', 'Май', 'Июнь', 'Июль', 'Август', 'Сентябрь', 'Октябрь', 'Ноябрь', 'Декабрь'],
        showOtherMonths: true,
        firstDay: 1,
	minDate: 'today',
        onSelect: function (dateText) {
            var dt = new Date(dateText);
            setTimeout(function () {
		        var day = dt.getDate();
		        var month = months[dt.getMonth()];
		        var year = dt.getFullYear();
		
		        $form_datepicker.parents('.input-wrapper').find('.chosen span').html(day+' '+month+' '+year);
		        $form_datepicker.parents('.input-wrapper').find('input[type=hidden]').val(dt);
		        
                $form_datepicker.hide();
            }, 0);
        }
    });

    $('.datepick').click(function(){
        $('.datepicker', this).addClass('active');
        $('.error', this).removeClass('error');
        $form_datepicker.show();
        return false;
    });

    $('.datepick').mouseleave(function(){
        $('.datepicker', this).removeClass('active');
        $form_datepicker.hide();
    });


    $hotelSlider = $ ('.hotel-slider'); 
    if ($hotelSlider.size ()) {
    	var $block;
    	
    	switch (window.location.hash) {
	    	case '#details': {
	    		$block = $ ('.hotel-photoes', $hotelSlider);
	    		break;
	    	}
	    	
	    	case '#map': {
	    		$block = $ ('.hotel-location', $hotelSlider);
	    		break;
	    	}
	    	
	    	default: {
	    		$block = $ ('.room-reserve', $hotelSlider);
	    	}
	    }
	    
    	$ ('.block', $hotelSlider).removeClass ('active');
    	$block.addClass ('active');
    }
	//recall
    $('[placeholder]').focus(function() {
        var $this = $(this);

        if ($this.val() == $this.attr("'placeholder'")) {
            $this.val("''");
            $this.removeClass("'placeholder'");
        }

    }).blur(function() {
            var $this = $(this);

            if ($this.val() == "''" || $this.val() == $this.attr("'placeholder'")) {
                $this.addClass("'placeholder'");
                $this.val(input.attr("'placeholder'"));
            }
        }).blur();
    //popup
    $(".recall").click(function(){
        $(".recall-popup").show();
        return false;
    });

    $(".recall-popup .masked").click(function(){
        $(".recall-popup").hide();
    });
	
	//placeholder
	 
(function($) {

    var PH_parentSelector = '.input-wrapper',
        PH_inputSelectors = [PH_parentSelector + '>input.PH_text', PH_parentSelector + '>textarea'],
        PH_len = PH_inputSelectors.length,
        PH_i;

    function PH_update(force) {
        var $input = $(this),
            $parent = $input.parent(PH_parentSelector);
        return $parent[force === true || $input.val() ? 'addClass' : 'removeClass']('filled');
    }

    function PH_focus() {
        PH_update.call(this).addClass('focus');
    }

    function PH_blur() {
        PH_update.call(this).removeClass('focus');
    }

    function PH_keydown(evt) {
        var c = evt.keyCode;
        ((47 < c && c < 91) || (95 < c && c < 112) || (185 < c && c < 223)) && update.call(this, true);
    }

    $.fn.PH_prepareInput = function() {
        return this.each(PH_update);
    };

    for (PH_i = 0; PH_i < PH_len; PH_i++) {
        $(PH_inputSelectors[PH_i]).live('focus', PH_focus).live('blur', PH_blur).live('keyup', PH_update).live('click', PH_update).live('keydown', PH_keydown);
    }

    $(function() {
        for (PH_i = 0; PH_i < PH_len; PH_i++) {
            $(PH_inputSelectors[PH_i]).PH_prepareInput();
        }
    });
})(jQuery);
	 
});

