$(document).ready(function(){

    var order_call_core = function() {
        var user_name; // имя пользователя
        var start_win;
        var sending = false;
        var phone;
        var end_win;
        var inputs;

        var fields = {
            cnf_error: null
        }

        var buttons = {
        }

        this.init = function() {
            load_tpl('order_call', function() {
                inputs = {
                    name: $('#oc1'),
                    phone: $('#oc2'),
                    date: $('#oc3'),
                    time: $('#oc5'),
                    captcha: $('#oc4')
                }



                start_win = new abstr_window($('#oc_start_win'));
                end_win = new abstr_window($('#oc_success_win'));

                buttons.send = $('#oc_reg_but');
                fields.cnf_error = $('#cnf_error');
                buttons.send.click(send);
                start_win.get_win().find('.close').click(function(){ start_win.hide(true, function() { getSplScreen().hide(true) }); });

                end_win.get_win().find('.close').click(function(){ end_win.hide(true, function() { getSplScreen().hide(true) }); });
                $('#oc_trigger').click(start);
            });
        }

        var start = function() {
            updateCaptcha();
            getSplScreen().show(true, function(){
                start_win.show(true);
                start_win.to_center();
            });
        }
        
        var send = function() {
            js_api.check_captcha(inputs.captcha.val(), function(data) {
                if (!trim(inputs.name.val()).length) {
                    error('Вы не указали ваше имя');
                    inputs.name.focus();
                    return;
                } else if (!trim(inputs.phone.val()).length) {
                    error('Вы не указали ваш телефон');
                    inputs.phone.focus();
                    return;
                } else if (!trim(inputs.date.val()).length) {
                    error('Вы не указали время звонка');
                    inputs.email.focus();
                    return;
                } else if (data.status != 'success') {
                    updateCaptcha();
                    error('Неверный код подтверждения');
                    inputs.captcha.focus();
                    return;
                }

                if (sending) return;
                sending = true;

                $('.fbutton').parent().append('<img src="/i/new/loader_crop.gif" alt="" style="display: inline;"/>');

                user_name = inputs.name.val();
                phone = inputs.phone.val();

                js_api.order_call(user_name, phone, inputs.date.val(), inputs.time.val(), '', function(data) {
                    //$('#img_cpt').attr('src', '/captcha?' + Math.random())
                    if(data.status == 'success') {
                        inputs.phone.val('');
                        inputs.name.val('');
                        inputs.date.val('');
                        inputs.time.val('');
                        inputs.captcha.val('');
                        start_win.hide(true, show_end_win);
                    }
                    else error(data.error);
                    sending = false;
                    $('.fbutton').parent().find('img').remove();
                });
            });
        }

        var show_end_win = function() {
            end_win.show(true);
            end_win.to_center();
        }

        var error = function(text) {
            $('.error-masech').html(text).fadeIn(300);
            setTimeout(function() {
                $('.error-masech').fadeOut(300, function(){ $(this).html('').css('display', 'none') });
            }, 2200);
        }

        // инициализация
        this.init();

        // дополнительные ф-ции
        function trim(str){
            str = str.replace(/&nbsp;/g, ' ');
            return str.replace(/(^\s+)|(\s+$)/g, '');
        }
    }

    var oc_core = new order_call_core();
});
