// fadeExplodeToggle
jQuery.fn.fadeExplodeToggle = function(speed, easing, callback) {
    speed = speed || 1000;
    var windowWidth = document.documentElement.clientWidth;  
    var windowHeight = document.documentElement.clientHeight;
    var self = this;
    
    return this.animate({
        width: ['toggle', 'easeOutBack'],
        height: ['toggle', 'easeOutBack']
    }, {
        duration: speed,
        step: center
    });
    
    function center() {
        // centering
        self.css({  
            "position": "absolute",  
            "top": (windowHeight-self.height())/2 + $(window).scrollTop(),  
            "left": (windowWidth-self.width())/2 + $(window).scrollLeft()
        });
    }
};

jQuery(function(){
    // country - region change
    jQuery('select[name=hotels__country_choice_id]').change(function(){
        var regions_select = jQuery('select[name=hotels__region_choice_id]');
        var opt = regions_select.children('option:first');
        
        var html = '<option value="'+ opt[0].value +'">' + opt[0].innerHTML + '</option>';
        jQuery.each(regions_list[jQuery(this).val()], function(key, value){
            html += '<option value="'+ key +'">' + value + '</option>';
        });
        regions_select.html(html);
    });
    
    $(window).resize(function(){
    	var win = jQuery('#tell-a-friend-form');
    	
    	var left = ($(window).height() - win.height()) / 2 + $(window).scrollTop();
    	var top = ($(window).width() - win.width()) / 2 + $(window).scrollLeft();
    	
    	jQuery('#tell-a-friend-form').css({'top' : top , 'left' : left});
    });

    // tell a friend
    var tell_a_friend = jQuery('.tell-a-friend');
    tell_a_friend.click(function(){
        jQuery('#tell-a-friend-form').fadeExplodeToggle();

        return false;
    });
    jQuery('#tell-a-friend-form .cancel').click(function(){
        jQuery('#tell-a-friend-form').fadeOut();
        return false;
    });
    
    jQuery('#tell-a-friend-form form').validate({
        rules: {
            name: "required",
            email: {
                required: true,
                email: true
            },
            friend_name: "required",
            friend_email: {
                required: true,
                email: true
            }
        },
        errorPlacement: function(error, element) {
            error.css({'display':'none'});
            error.appendTo(element.parent());
            error.fadeIn();
        },
        messages: {
            name: "Please enter your name",
            email: "Please enter a valid email address for yourself",
            friend_name: "Please enter your friend's name",
            friend_email: "Please enter a valid email address for your friend"
        },
        submitHandler: function(form) {    
            var data = jQuery(form).serializeArray();
            data.push({name:"json", value:"1"});       
            jQuery.ajax({
                url: 'site.tellAFriend',
                type: 'POST',
                data: data,
                success: function(html) {
                    eval('var returnVal = ' + html);
                    jQuery('#tell-a-friend-form .tell-a-friend-item.message').innerHTML = returnVal.message;
                    jQuery('#tell-a-friend-form .tell-a-friend-item').slideToggle();
                    jQuery('#tell-a-friend-form').delay(2000).fadeOut(400, function(){
                        jQuery('#tell-a-friend-form .tell-a-friend-item:first').css('display', 'block');
                        jQuery('#tell-a-friend-form .tell-a-friend-item:last').css('display', 'none');
                    });
                }
            });
                
            return false;
        }
        
    }); 
});