$(document).ready(function() {
    // DOCUMENT FORM
    $('.grey tr:even').css('background-color', '#cccccc');

    $('#add_button').click(function() {

        update_hidden_field();
        $('#new_document')[0].submit();
        $('#botonera').slideUp(500);
        $('#uploading').slideDown(500);
        return false;
    });

    $('#cancel_button').click(function() {
    });

    // SHARED
    $('#close_flash').click(function() {
        //$('#notice').hide();
    });

    $('#login_button').click(function() {
        //$('#login_form')[0].submit();
        action = $('#login_form')[0].action;

        $.post('/session', $('#login_form').serialize(),
                function() {
                    document.location = '/';
                });
        return false;
    });

    $('#new_sms_text_message_button').click(function() {
        $('#send_sms_text_message_form')[0].submit();
    });

    // SEARCH
    $('#show_category_filter').click(function() {
        $('#category_filter_show').hide();
        $('#category_filter').show(500);
        return false;
    })

    $('#hide_category_filter').click(function() {
        $('#category_filter_show').show(500);
        $('#category_filter').hide();
        return false;
    })

    $('#domosearch_button').click(function() {

        $('#domosearch')[0].submit();
        return false;
    });

    if ($('#domosearch_query').length > 0 && $('#domosearch_query')[0].value == '') {
        $("#domosearch_query").defaultvalue('Documento');
    }

    if ($('#country_id').length != 0) {
        $('#country_id').defaultvalue($('#default_value_coverage_country').val());
    }

    $('#filter_search_button').click(function() {
        update_hidden_field();
        domo_filter_search();
    });

    $('#filter_search_button_all').click(function() {
        $('.hidden_jmklist')[0].value = "";
        domo_filter_search();
    });

    $('#filter_docs_button').click(function() {
        update_hidden_field();
        domo_filter_docs();
    });

    $('#filter_docs_button_all').click(function() {
        $('.hidden_jmklist')[0].value = "";
        domo_filter_docs();
    });

    function domo_filter_search() {
        var q = '?q=' + $('#domosearch_query')[0].value;
        var category_facets = "&category_facets=" + $('.hidden_jmklist')[0].value;
        var all_categories = "&all_categories=" + $('#all_categories')[0].value;
        var page = '&page=' + getQuerystring('page', 1);

        document.location = '/search' + q + category_facets + all_categories + page;

        return false;
    }

    function domo_filter_docs() {
        var category_facets = "?categories=" + $('.hidden_jmklist')[0].value;
        var all_categories = "&all_categories=" + $('#all_categories')[0].value;
        var page = '&page=' + getQuerystring('page', 1);
        var show = "";
        if ($('#show').length == 1) {
            show = '&show=favorites';
        }

        document.location = '/documents' + category_facets + all_categories + page + show;

        return false;
    }


    // CATEGORIES
    if ($('#category_name').length > 0) {
        $("#category_name").defaultvalue('Introduzca un nombre');
    }

    $('#new_category').click(function() {

        if ($('#category_name')[0].value.length > 0) {

            var params = "category[name]=" + $('#category_name')[0].value;

            $.ajax({
                data:params,
                dataType:'script',
                type:'post',
                url:'/categories'
            }
                    );

            $('#category_name')[0].value = "";

            return false;
        }

    });

    // SUPERVISORS
    if ($('#supervisor_login').length > 0) {
        $("#supervisor_login").defaultvalue('Introduzca un login de un asesor RACC');
    }

    $('#new_supervisor').click(function() {

        if ($('#supervisor_login')[0].value.length > 0) {

            var params = "supervisor[login]=" + $('#supervisor_login')[0].value;

            $.ajax({
                data:params,
                dataType:'script',
                type:'post',
                url:'/supervisors'
            }
                    );

            $('#supervisor_login')[0].value = "";
        }

    });

    //AGENTS
    if ($('#agent_login').length > 0) {
        $("#agent_login").defaultvalue('Introduzca un login de un asesor RACC');
    }

    $('#new_agent').click(function() {

        if ($('#agent_login')[0].value.length > 0) {

            var params = "agent[login]=" + $('#agent_login')[0].value;

            $.ajax({
                data:params,
                dataType:'script',
                type:'post',
                url:'/agents'
            }
                    );

            $('#agent_login')[0].value = "";
        }

    });

    // ADMIN
    if ($('.editable').length > 0) {
        $('.editable').editable('/admin/phones/edit_rates', {
            tooltip : 'Click para editar',
            method : 'PUT',
            submit : 'OK'
        });
    }

    if ($('#choose_section').length > 0) {
        $('#choose_section').change(function() {
            section_id = $('#choose_section')[0].value;

            response = $.get('/admin/cms', {
                section : section_id
            },
                    function() {
                        $('#cms_tree').html(response.responseText);
                    });
        });
    }

    if ($('#choose_language').length > 0) {
        $('#choose_language').change(function() {
            language_id = $('#choose_language')[0].value;
            page_id = $('#page_id')[0].value;

            $.get('/admin/cms/' + page_id + '/edit', {
                language : language_id
            }, null, 'script');
        });
    }

    if ($('#save_button').length > 0) {
        $('#save_button').click(function() {
            $('#saving_spin').show('fast');
            language_id = $('#choose_language')[0].value;
            page_id = $('#page_id')[0].value;
            title = $('#title')[0].value;
            content = tinyMCE.getContent();


            $.post('/admin/cms/' + page_id, {
                _method : 'put',
                language : language_id,
                content : content,
                title : title
            },
                    function() {
                        $('#saving_spin').hide('fast');
                    });
            return false;
        });
    }

    if ($('#publish_button').length > 0) {
        $('#publish_button').click(function() {
            $('#publishing_spin').show('fast');
            language_id = $('#choose_language')[0].value;
            page_id = $('#page_id')[0].value;

            $.post('/admin/cms/' + page_id + '/publish', {
                _method : 'put',
                language : language_id
            },
                    function() {
                        $('#publishing_spin').hide('fast');
                    });
            return false;
        });
    }

    if ($('#buy_button').length > 0) {
        $('#buy_button').click(function() {
            if ($('#buy_access')[0].value == 'disabled') {
                $('#tickbox_element').click();
            } else {
                $('#buy_form').submit();
            }
        });
    }

    function reload_matrix() {
        var phone_id = $('#phone_id')[0].value;
        var type = $("input[@name=nuevo_movil]:checked").val();
        var rate = $("input[@name=rate]:checked").val();
        var checked = $("input[@name=modalidad]:checked").val();

        var kind_of_rate = '';
        if ($('#choose_rate').length > 0) {
            kind_of_rate = $('#choose_rate').val();
        }
        else {
            kind_of_rate = $("input[@name=kind_of_rate]:checked").val();
        }

        $.get('/phones/' + phone_id + '/get_rates', {
            type: type,
            rate: rate,
            kind_of_rate: kind_of_rate,
            checked: checked
        }, function() {
            if ($('.price_cell').length > 0) {
                $('.price_cell').click(function() {
                    $('.importe').html(parseFloat(this.id) + ' €');
                    disable_rates(this.value.split(".")[1]);
                });
            }

            if ($("input[@name=modalidad]:checked").val() && $("input[@name=modalidad]:checked")[0].id) {
                if (!isNaN(parseFloat($("input[@name=modalidad]:checked")[0].id))) {
                    $('.importe').html(parseFloat($("input[@name=modalidad]:checked")[0].id) + ' €');
                }
                else {
                    $('.importe').html('-- €');
                }
            }
        }, 'script');
    }

    $('.reload_matrix').click(function() {
        reload_matrix();
    });

    $('.reload_matrix_from_outside').click(function() {
        reload_matrix();
    });

    if ($('.price_cell').length > 0) {
        $('.price_cell').click(function() {
            $('.importe').html(parseFloat(this.id) + ' €');
            disable_rates(this.value.split(".")[1]);
        });
    }

    $('#import_button').click(function() {
        $('#importing_spin').show('slow');
        $.post('/admin/phones/import_all', {
            _method : 'put'
        },
                function() {
                    $('#importing_spin').hide('slow');
                });
        return false;
    });

    $('#import_single_button').click(function() {
        $('#importing_spin').show('slow');
        phone_id = $('#import_single_button')[0].rel;

        $.post('/admin/phones/' + phone_id + '/import', {
            _method : 'put'
        },
                function() {
                    $('#importing_spin').hide('slow');
                });
        return false;
    });

    $('#save_phone_button').click(function() {
        $('#saving_spin').show('slow');
        action = $('#save_form')[0].action;

        $.post(action, $('#save_form').serialize(),
                function() {
                    $('#saving_spin').hide('slow');
                });
        return false;
    });


    $('#form_button').click(function() {
        node = $(this);
        while (node[0].className != 'submit_form' && node[0] != document) {
            node = node.parent();
        }

        if (node[0].className == 'submit_form') {
            node.submit();
        }
    });

    $('#choose_rate').change(function() {
        var kind_of_rate = $(this)[0].value;
        var action = $(this).attr('rel');

        if ($('#portabilidad')[0].checked) {
            var type = 'portabilidad';
        }
        else {
            var type = 'alta';
        }

        $.get(action, {
            type : type,
            kind_of_rate : kind_of_rate
        }, null, 'script');
    });

    $('#search_pages_button').click(function() {
        $('#form_search_pages').submit();
    });


    $('#text_send_button').click(function() {
        //$('#text_send_form')[0].submit();
        $('#confirm_sms_binary_message').click();
    });


    $('#tickbox_legal_conditions').click(function() {
        tb_remove();
        tb_show('', $(this).attr('href'), null);
        return false;
    });

    $('#assistant_consult_button').click(function() {
        if (filled_fields("assistant_simulate_form")) {
            var form = $('#assistant_simulate_form');
            form.find('#simulator_params_line_number').val(form.find('#line_number').val());
            $.post(form.attr('action'), form.serialize(), null, 'script');
        }
        else
            alert("Debe rellenar los campos obligatorios");
    });

    $('#advanced_consult_button').click(function() {
        if (filled_fields("advanced_simulate_form") && validate_form_values("advanced_simulate_form", 1, 100)) {
            var form = $('#advanced_simulate_form');
            form.find('#simulator_params_line_number').val(form.find('#line_number').val());
            $.post(form.attr('action'), form.serialize(), null, 'script');
        }
        else
            alert("Debe rellenar todos los campos del formulario con valores válidos");
    });

    $('#contract_button').click(function() {
        toggle_buttons('contract_button', 'prepay_button');
        $('#simulator_params_modality_type_assistant').val("contrato");
        $('#simulator_params_modality_type_advanced').val("contrato");
        hide_and_empty('tariff_results');
        hide_and_empty('operator_tariffs_assistant');
        hide_and_empty('operator_tariffs_advanced');
        $.get('/simulations/fill_traffic_profile_select', {modality_type : "contrato"}, null, 'script');

    });

    $('#prepay_button').click(function() {
        toggle_buttons('prepay_button', 'contract_button');
        $('#simulator_params_modality_type_assistant').val("prepago");
        $('#simulator_params_modality_type_advanced').val("prepago");
        hide_and_empty('tariff_results');
        hide_and_empty('operator_tariffs_assistant');
        hide_and_empty('operator_tariffs_advanced');
        $.get('/simulations/fill_traffic_profile_select', {modality_type : "prepago"}, null, 'script');
    });

    $('#advanced_button').click(function() {
        $('#assistant_simulate_form').reset();
        $('#assistant_simulator').hide();
        $('#advanced_simulator').show();
        toggle_buttons('advanced_button', 'assistant_button');
        $('#simulator_params_simulator_way').val("1");
        hide_and_empty('tariff_results');
        hide_and_empty('operator_tariffs_assistant');
    });

    $('#assistant_button').click(function() {
        $('#advanced_simulate_form').reset();
        $('#advanced_simulator').hide();
        $('#assistant_simulator').show();
        toggle_buttons('assistant_button', 'advanced_button');
        $('#simulator_params_simulator_way').val("0");
        hide_and_empty('tariff_results');
        hide_and_empty('operator_tariffs_advanced');
    });

});


function make_categories_editable() {
    $(document).ready(function() {
        if ($('.category_editable').length > 0) {
            $('.category_editable').editable('/categories/update', {
                tooltip : 'Click para editar',
                method : 'PUT',
                submit : 'OK'
            });
        }
    });
}

function make_supervisors_editable() {
    $(document).ready(function() {
        if ($('.supervisor_editable').length > 0) {
            $('.supervisor_editable').editable('/supervisors/update', {
                tooltip : 'Click para editar',
                method : 'PUT',
                submit : 'OK'
            });
        }
    });
}

function make_agents_editable() {
    $(document).ready(function() {
        if ($('.agent_editable').length > 0) {
            $('.agent_editable').editable('/agents/update/', {
                tooltip : 'Click para editar',
                method : 'PUT',
                submit : 'OK'
            });
        }
    });
}

function make_alerts_editable() {
    $(document).ready(function() {
        if ($('.alert_editable').length > 0) {
            $('.alert_editable').editable('/alerts/update', {
                tooltip : 'Click para editar',
                method : 'PUT',
                submit : 'OK'
            });
        }
    });
}

function fill_default_values(title, description) {
    $(document).ready(function() {
        $("#document_title, .textarea").defaultvalue(title, description);
    });
}

function getQuerystring(key, default_)
{
    if (default_ == null) default_ = "";
    key = key.replace(/[\[]/, "\\\[").replace(/[\]]/, "\\\]");
    var regex = new RegExp("[\\?&]" + key + "=([^&#]*)");
    var qs = regex.exec(window.location.href);
    if (qs == null)
        return default_;
    else
        return qs[1];
}

function textCounter(field, countfield, maxlimit)
{
    if ($('#' + field).val().length > maxlimit)
        $('#' + field).val($('#' + field).val().substring(0, maxlimit));

    else
        $('#' + countfield).html((maxlimit - $('#' + field).val().length) + '&nbsp;');
}

function fill_template()
{
    var lang_id = $('#sms_text_message_template_language_id').val();

    $('#sms_text_message_text').val("");
    $('#sms_text_message_text').attr('disabled', true);
    $('#characters_counter').hide();

    $.get('/sms_text_messages/fill_template', {language_id : lang_id}, null, 'script');

}

function admin_fill_template()
{
    var lang_id = $('#sms_text_message_template_language_id').val();

    $('#sms_text_message_text').val(" ");
    $('#sms_text_message_text').attr('disabled', true);

    $.get('/admin/sms_text_messages/fill_template', {language_id : lang_id}, null, 'script');

}

function fill_models()
{
    var brand_id = $('#brand_id').val();
    $('#model_id').val("");
    $('#sms_binary_message_package_id').val("");
    $.get('/sms_binary_messages/fill_models', {brand_id : brand_id}, null, 'script');
}

function fill_packages()
{
    var model_id = $('#model_id').val();
    $("#sms_binary_message_package_id").val("");
    $.get('/sms_binary_messages/fill_packages', {model_id : model_id}, null, 'script');
}

function fill_packages_with_check() {
    if ($('#check_all_packages').attr('checked')) {
        $.get('/sms_binary_messages/fill_all_packages', {}, null, 'script');
    } else {
        $('#description').html('');
        $.get('/sms_binary_messages/clear_packages', {}, null, 'script');
    }
}

function description_by_package()
{
    var package_id = $('#sms_binary_message_package_id').val();
    $.get('/sms_binary_messages/description', {package_id : package_id}, null, 'script');
}

function fill_text_template()
{

    var template_id = $('#sms_text_message_sms_text_message_template_id').val();

    var template_text = $('#sms_text_message_sms_text_message_template_id').find('option:selected').text();

    if (template_id != "" && template_text != "Otros") {
        $('#characters_counter').hide();
        $.get('/sms_text_messages/' + template_id + '/fill_text_template', null, null, 'script');
    }
    else if (template_id == "") {
        $('#sms_text_message_text').attr('disabled', true);
        $('#sms_text_message_text').val("");
        $('#characters_counter').hide();
    }
    else {
        $('#sms_text_message_text').val("");
        textCounter('sms_text_message_text', 'num_sms_characters_left', 160);
        $('#characters_counter').show();
        $('#sms_text_message_text').attr('disabled', false);
        $('#sms_text_message_text').val("");
    }

}

function admin_fill_text_template()
{

    var template_id = $('#sms_text_message_sms_text_message_template_id').val();

    var template_text = $('#sms_text_message_sms_text_message_template_id').find('option:selected').text();

    if (template_id != "" && template_text != "Otros") {

        $.get('/admin/sms_text_messages/' + template_id + '/fill_text_template', null, null, 'script');
        $('#sms_text_message_text').attr('disabled', false);
    }
    else if (template_id == "") {
        $('#sms_text_message_text').attr('disabled', true);
        $('#sms_text_message_text').val("");

    }
    else {
        $('#sms_text_message_text').val("");
        textCounter('sms_text_message_text', 'num_sms_characters_left', 160);
        $('#sms_text_message_text').attr('disabled', false);
        $('#sms_text_message_text').val("");
    }

}

function filled_fields(form_id) {
    filled = true;
    $.map($('#' + form_id).find('input:not([@type=hidden]), select, textarea'),
            function(e) {
                if ($('#' + form_id).find('#' + e.id).attr('rel') != 'optional' && e.value == "") {
                    filled = false;
                }
            });
    return filled;
}

function concat_parameters(selector_link, selector_param_1, selector_param_2, name_param_1, name_param_2, form_id) {
    if (filled_fields(form_id)) {
        var link_str = $('#' + selector_link).attr('rel');

        var param_1 = $('#' + selector_param_1).val();

        var param_2 = $('#' + selector_param_2).val();

        link_str += "&" + name_param_1 + "=" + param_1 + "&" + name_param_2 + "=" + param_2

        alert(link_str);

        tb_show('', link_str, null);
    }

}

function open_confirmation(selector_link) {
    var link_str = $('#' + selector_link).attr('rel');
    //alert(link_str);

    tb_show('', link_str, null);

}

function search_coverage_country(selector_link, selector_param_1, selector_param_2, name_param_1, name_param_2, form_id) {
    if (filled_fields(form_id)) {
        $('#insert_country_message').hide();
        var link_str = $('#' + selector_link).attr('rel');

        var param_1 = $('#' + selector_param_1)[0].checked ? "prepaid" : "card";

        var param_2 = idCountry($('#' + selector_param_2).val().toUpperCase());

        if (param_2 == "" | param_2 == null) {
            $('#error_message').show();
        } else {
            $('#error_message').hide();
            link_str += "&" + name_param_1 + "=" + param_1 + "&" + name_param_2 + "=" + param_2
            tb_show('', link_str, null);
        }
    } else {
        $('#error_message').hide();
        $('#insert_country_message').show();
    }

}

function enable_submit(form_id, button_id) {
    if (filled_fields(form_id)) {
        $('#' + button_id + '_left').attr('class', 'boton_left');
        $('#' + button_id + '_right').attr('class', 'boton_right');
    }
    else {
        $('#' + button_id + '_left').attr('class', 'boton_left_disabled');
        $('#' + button_id + '_right').attr('class', 'boton_right_disabled');
    }

}

function validate_limited_values(form_id, min, max) {
    valid = true;

    $.map($('#' + form_id).find('.limited'),
            function(e) {
                var element = $(e);
                if (!IsNumeric(element.val()) || element.val() < min || element.val() > max) {
                    valid = false;
                }
            });

    return valid;
}

function validate_minimum_values(form_id, min) {
    $.map($('#' + form_id).find('.minimum'),
            function(e) {
                var element = $(e);
                if (!IsNumeric(element.val()) || element.val() < min) {
                    valid = false;
                }
            });

    return valid;
}

function validate_form_values(form_id, min, max) {
    return (validate_limited_values(form_id, min, max) && validate_minimum_values(form_id, min));
}

function toggle_buttons(button_activate_id, button_disable_id) {
    $('#' + button_activate_id + '_left').attr('class', 'boton_left');
    $('#' + button_activate_id + '_right').attr('class', 'boton_right');
    $('#' + button_disable_id + '_left').attr('class', 'boton_left_disabled');
    $('#' + button_disable_id + '_right').attr('class', 'boton_right_disabled');
}

function hide_and_empty(element_id) {
    $('#' + element_id).hide();
    $('#' + element_id).empty();
}

function IsNumeric(sText) {
    var ValidChars = "0123456789.,-";
    var IsNumber = true;
    var Char;


    for (i = 0; i < sText.length && IsNumber == true; i++)
    {
        Char = sText.charAt(i);
        if (ValidChars.indexOf(Char) == -1)
        {
            IsNumber = false;
        }
    }
    return IsNumber;

}

function getOperatorTariffs(form_id, form_type) {

    if ($('#' + form_id).find("#simulator_params_simulator_operator_id").val() != "0" && $('#' + form_id).find("#simulator_params_simulator_operator_id").val() != "*") {
        sim_op_id = $('#' + form_id).find('#simulator_params_simulator_operator_id').val();
        mod_type = $('#' + form_id).find('#simulator_params_modality_type_' + form_type).val();
        $.get('/simulations/fill_operator_tariffs', {simulator_operator_id : sim_op_id, modality_type: mod_type, form_type: form_type}, null, 'script');
    }
    else {
        hide_and_empty('operator_tariffs_assistant');
        hide_and_empty('operator_tariffs_advanced');
    }
}

function check_operator_tariff(operator_tariff_checkbox) {
    if (!operator_tariff_checkbox.checked) {
        $('#operator_tariff_todas').attr('checked', false);
    }

}

function check_operator_tariff_all(operator_tariff_all_checkbox) {
    if (operator_tariff_all_checkbox.checked)
        $('.operator_tariffs').attr('checked', true);
    else
        $('.operator_tariffs').attr('checked', false);

}

function disable_rates(rate) {
    if (rate == 1) {
        $('#rate_club').fadeIn("slow");
        $('#rate_escapate').fadeIn("slow");
        $('#rate_unica').fadeIn("slow");
        $('#rate_racc20').fadeIn("slow");
        $('#rate_racc30').fadeIn("slow");
        $('#rate_racc40').fadeIn("slow");
        $('#rate_unica').attr('checked', true)
    }
    else
    if (rate == 2) {
        $('#rate_racc20').fadeIn("slow");
        $('#rate_racc30').fadeIn("slow");
        $('#rate_racc40').fadeIn("slow");
        $('#rate_club').fadeIn("slow");
        $('#rate_escapate').fadeIn("slow");
        $('#rate_unica').fadeIn("slow");
        $('#rate_racc20').attr('checked', true)
    }
    else
    if (rate == 3) {
        $('#rate_racc30').fadeIn("slow");
        $('#rate_racc40').fadeIn("slow");
        $('#rate_club').fadeOut("slow");
        $('#rate_escapate').fadeOut("slow");
        $('#rate_unica').fadeOut("slow");
        $('#rate_racc20').fadeOut("slow");
        $('#rate_racc30').attr('checked', true)
    }
    else
    if (rate == 4) {
        $('#rate_racc40').fadeIn("slow");
        $('#rate_club').fadeOut("slow");
        $('#rate_escapate').fadeOut("slow");
        $('#rate_unica').fadeOut("slow");
        $('#rate_racc20').fadeOut("slow");
        $('#rate_racc30').fadeOut("slow");
        $('#rate_racc40').attr('checked', true)
    }
    else {
        $('#rate_club').fadeOut("slow");
        $('#rate_escapate').fadeOut("slow");
        $('#rate_unica').fadeOut("slow");
        $('#rate_racc20').fadeOut("slow");
        $('#rate_racc30').fadeOut("slow");
        $('#rate_racc40').fadeOut("slow");
    }
}

