/**
 * Объект предназначен для отправки гневных сообщений
 * из формы "Я недоволен" ("Я ненавижу trava.ru")
 * @author Mikle Heavy
 * @package trava-3
 */

var RoyalMail =
{
    init: function()
    {
        RoyalMail.name = '';
        RoyalMail.email = '';
        RoyalMail.message = '';
    },

    /**
 * Показывает форму сообщения
 */
    show: function()
    {
        window.top.$.fancybox({
            'href': '#showevil',
            'hideOnOverlayClick': true,
            'centerOnScroll': true,
            'autoDimensions': true,
            'overlayColor': '#6b0000',
            'overlayOpacity': '0.8'
        });
        
        $("#showevil .login-error.input-error").html('');
        $(".block-label.req").removeClass('error');
    },



	
	
    /**
 * Готовит данные для отправки почтой
 */
    aim: function()
    {
        RoyalMail.name = this.strip_tags(this.stripslashes($("#evilName").val()));
        RoyalMail.email = this.strip_tags(this.stripslashes($("#evilEmail").val()));
        RoyalMail.message = this.strip_tags(this.stripslashes($("#evilMesssge").val()));
        if(this.validate())
        {
            this.send();
            return true;
        }
        return false;
    },
    
    
    /**
     * 
     * @param message - Сообщение, которе будет выведено после отправки сообщения 
     * @return bool
     */
    success: function(message)
    {
        $("#showevil .overlay-content").remove();
        $("#showevil .reg-content").remove();
        $("#showevil .overlay-header-item").after('<div class="evil-message">'+message+'</div>');
        return false;
    },
    
    
    /**
     * Отправляет Ajax-ом данные контроллеру для посылки гневного письма Егору
     * @return void
     */
    send: function()
    {
        window.top.$.fancybox.showActivity();
        $.ajax({
            type: "POST",
            url: '/index/sendevil/format/ajax',
            data:{
                'name': RoyalMail.name,
                'email': RoyalMail.email,
                'message': RoyalMail.message
            },
            context: this,
            //dataType:'json',
            error: function ajax_error(XMLHttpRequest, textStatus, errorThrown){
                //$(this).text('ошибка');
                alert('При выполнении запроса возникла ошибка.');
            //document.location.reload();
            },
            success: function(data) {
                this.success(data);
                //alert('Не удалось отправить сообщение:'+msg.error);
                window.top.$.fancybox.hideActivity();
            //document.location.reload();
            }
        });
    },

    
    
    
    stripslashes: function(str)
    {
        return (str + '').replace(/\\(.?)/g, function (s, n1) {
            switch (n1) {
                case '\\':
                    return '\\';
                case '0':
                    return '\u0000';
                case '':
                    return '';
                default:
                    return n1;
            }
        });
    },
    
    strip_tags: function(html){
        if(arguments.length < 3) {
            html=html.replace(/<\/?(?!\!)[^>]*>/gi, '');
        } else {
            var allowed = arguments[1];
            var specified = eval("["+arguments[2]+"]");
            if(allowed){
                var regex='</?(?!(' + specified.join('|') + '))\b[^>]*>';
                html=html.replace(new RegExp(regex, 'gi'), '');
            } else{
                var regex='</?(' + specified.join('|') + ')\b[^>]*>';
                html=html.replace(new RegExp(regex, 'gi'), '');
            }
        }
 
        return html;
    },
    
    
    /**
     * Простенький валидатор адреса электронной почты
     */
    validate: function()
    { 
        $(".login-error.input-error").html('');
        $(".block-label.req").removeClass('error');
        
        var hasError = false;
        var emailReg = /^([\w-\.]+@([\w-]+\.)+[\w-]{2,4})?$/;
 
        if(RoyalMail.name == '') {
            $("#evilName").parent().siblings().html('Укажите Ваше имя.');
            $("#evilName").parent().parent().addClass('error');
            hasError = true;
        } 


        if(RoyalMail.email == 'Ваше имя' || RoyalMail.email =='') {
            $("#evilEmail").parent().siblings().html('Поле Email не может быть пустым.');
            $("#evilEmail").parent().parent().addClass('error');
            hasError = true;
        }
 
        else if(!emailReg.test(RoyalMail.email)) {
            $("#evilEmail").parent().siblings().html('Укажите существующий адрес электронной почты.');
            $("#evilEmail").parent().parent().addClass('error');
            hasError = true;
        }

        if(RoyalMail.message == 'Ваше сообщение' || RoyalMail.message =='') {
            $("#evilMesssge").parent().siblings().html('Вы пытаетесь отправить пустое сообщение.');
            $("#evilMesssge").parent().parent().addClass('error');
            hasError = true;
        } 

        if(hasError == true) {
            $(".block-label .error").show();
            return false;
        }
        return true;
    }



}

