var dt_checked = new Array();

function dt_check_all(container_id, checkbox_name)
{

    if (typeof(checkbox_name) == 'undefined') {
        checkbox_name = 'index_checkbox';
    }
    if (typeof(dt_checked[checkbox_name]) == 'undefined') {
        dt_checked[checkbox_name] = false;
    }

    var dt_checked_test = dt_checked[checkbox_name];
    dt_checked_test = !dt_checked_test;
    dt_checked[checkbox_name] = dt_checked_test;
    var checkboxes = $('#' + container_id + ' input.' + checkbox_name);

    for(var i=0; i<checkboxes.length; i++){
        checkboxes[i].checked = dt_checked_test;
    }

}


function dt_submit(container_id, action, confirm_str, nothing_selected_str, is_chain)
{
    var confirm_result = 1;
    if (nothing_selected_str.length > 0 ) {
        var checkboxes = $('#' + container_id + ' input.index_checkbox');
        var checked = 0;
        for (var i=0; i<checkboxes.length; i++) {
            if (checkboxes[i].checked) {
                checked++;
            }
        }

        if (checked == 0) {
            alert(nothing_selected_str);
            return false;
        }
    }

    if (confirm_str.length > 0) {
        confirm_result = confirm(confirm_str);
    }

    if (confirm_result) {
        var form = $('#' + container_id);
        if (is_chain == 1) {
            form[0]._is_chain.value = 1;
        }

        form[0].action = action;
        $(form[0]).trigger('submit');
        return true;
    }
    else {
        return false;
    }
}

function dt_init_form(form_id)
{
    var form = document.getElementById(form_id);

    $('form#' + form_id + ' :input[dochange]').change(function(){dt_verify_change(this, form_id);});
    $('form#' + form_id + ' :input[docascade]').change(function(){dt_do_cascade(this, form_id);});
    $('form#' + form_id + ' input[type=checkbox][togglecascade]').click(function(){dt_toggle_cascade(this, form_id);});
}

function dt_toggle_cascade(obj, form_id)
{
    var cascade = obj.getAttribute('togglecascade');
    var elements = $('form#' + form_id + ' :input[cascade=' + cascade + ']');
    var cascade_element = document.getElementById(cascade + '_Cascade');
    cascade_val = dt_getElementValue(cascade_element);

    if (obj.checked) {
        for (index=0; index<elements.length; index++) {
            var element = elements[index];
            element.setAttribute('beforeCascade',dt_getElementValue(element, true));
            if (cascade_element.getAttribute('dropdown') != null) {
                var text = $(cascade_element).text();
                var value = $(cascade_element).val();
                var options   = document.createElement('option');
                options.value = cascade_val;
                options.appendChild(document.createTextNode(text));
                $(element).empty();
                $(element).append(options);
            }
            dt_setElementValue(element, cascade_val, true);
            dt_verify_change(element, form_id);

        }
    }
    else {
        for (index=0; index<elements.length; index++) {
            var element = elements[index];
            if (cascade_element.getAttribute('dropdown') != null) {
                if (element.getAttribute('beforeCascade') == 0) {
                    var text = language_choose_cat;
                    var value = 0;
                }
                else {
                    var data = window[cascade_element.getAttribute('dropdown')];
                    var dataIndex = window[cascade_element.getAttribute('dropdown') + '_index'];
                    var text = data[dataIndex[element.getAttribute('beforeCascade')]].Sub[element.getAttribute('beforeCascade')].Name;
                    var value = $(cascade_element).val();
                }
                var options   = document.createElement('option');
                options.value = element.getAttribute('beforeCascade');
                options.appendChild(document.createTextNode(text));
                $(element).empty();
                $(element).append(options);
            }
            dt_setElementValue(element, element.getAttribute('beforeCascade'), true);
            dt_verify_change(element, form_id);
        }
    }

}

function dt_do_cascade(obj, form_id)
{
    var cascade = obj.getAttribute('docascade');
    var cascade_toggle = document.getElementById(cascade + '_Cascade_Enable');

    cascade_enabled = dt_getElementValue(cascade_toggle);

    if (cascade_enabled) {
        var elements = $('form#' + form_id + ' :input[cascade=' + cascade + ']');
        cascade_val = dt_getElementValue(obj,true);
        for (index=0; index<elements.length; index++) {
            element = elements[index];
            if (element.getAttribute('dropdown') != null) {
                var text = $(obj).text();
                var value = $(obj).val();
                var options   = document.createElement('option');
                options.value = value;
                options.appendChild(document.createTextNode(text));
                $(element).empty();
                $(element).append(options);
            }
            dt_setElementValue(element, cascade_val,true);
            //dt_verify_change(element, form_id);
        }

    }
}


function dt_verify_change(obj, form_id)
{
    var name;
    var id;
    var type;
    var value;
    var form = document.getElementById(form_id);
    var set_changed = false;



    name = obj.name.substr(0,obj.name.indexOf('['));
    id =  obj.name.substr(obj.name.indexOf('[') + 1 ,obj.name.indexOf(']') - obj.name.indexOf('[') - 1);

    value = dt_getElementValue(obj);

    var tmp_var_name;
    var tmp_var_value;

    var dt_initial_values = Array();
    var index = 'initial_values[' + id + ']';
    for (i = 0; i < form.elements.length; i++) {
        if (form.elements[i].name.indexOf(index) == 0) {
            tmp_var_name = form.elements[i].name;
            tmp_var_name = tmp_var_name.substr(index.length + 1, tmp_var_name.length - index.length - 2);
            tmp_var_value = $(form.elements[i]).val();
            dt_initial_values[tmp_var_name] = tmp_var_value;
        }
    }

    for (var_name in dt_initial_values) {
        if (typeof (form.elements[var_name + '[' + id + ']']) != 'undefined') {
            var check_element = form.elements[var_name + '[' + id + ']'];
            var check_value = $(check_element).val();
            if (check_value != dt_initial_values[var_name])
            {
                if (dt_initial_values[var_name] == '' && check_element.tagName.toLowerCase() == 'select'
                    && check_value == check_element.options[0].value)
                { // skip if the initial value of the select was empty (= first value of the select)
                    continue;
                }
                set_changed = true;
                var cascade_varname = "cascade_values[" + id + "][" + var_name + "]";
                if (typeof (form.elements[cascade_varname]) != 'undefined') {
                    form.elements[cascade_varname].value = 1;
                }
                //break;
            }
        }
    }

    if (typeof (form.elements['selected[' + id + ']']) != 'undefined') {
        form.elements['selected[' + id + ']'].checked = set_changed;
    }

}


function dt_getElementValue(el,sel_index)
{
    var obj_type = 'text';
    var value;

    if (typeof (sel_index) == 'undefined') {
        sel_index = false;
    }

    if (typeof (el.selectedIndex) != 'undefined') {
        obj_type = 'select';
    }
    else if (typeof el.value != 'undefined' && el.type != 'checkbox' && el.type != 'radio') {
        obj_type = 'text';
    }
    else if (typeof el.type != 'undefined') {
        obj_type = el.type;
    }


    switch (obj_type)
    {
        case 'text':
        case 'select':
            value = el.value;
            break;

        case 'checkbox':
        case 'radio':
            value = el.checked;
            break;

    }

    return value;
}

function dt_setElementValue(el, val, sel_index)
{
    var obj_type = 'text';

    if (typeof (sel_index) == 'undefined') {
        sel_index = false;
    }

    if (typeof (el.selectedIndex) != 'undefined') {
        obj_type = 'select';
    }
    else if (typeof el.value != 'undefined') {
        obj_type = 'text';
    }
    else if (typeof el.type != 'undefined') {
        obj_type = obj.type;
    }


    switch (obj_type)
    {
        case 'text':
        case 'select':
            el.value = val;
            if (el.getAttribute('dropdown') != null) {
                $(el).trigger('change');
            }
            break;

        case 'checkbox':
        case 'radio':
            el.checked = val;
            break;
    }
}

function dt_showTooltip(el)
{

    var tooltip_text = $(el).attr('tooltip');
    var tooltip_title = $(el).attr('tooltipTitle');
    var tooltip = '';

    if (tooltip_title.length > 0) {
        tooltip = tooltip_title + '<br>';
    }

    tooltip = tooltip + tooltip_text;
    //$(el).tooltip(tooltip);
}


