$(function(){
    $(document).bind('onSettingsLoad', function(data){
        $.settings = data.settings;
        $('#parking_limit').val($.settings.parking_limit);
        $('#reload_limit').val($.settings.reload_limit);
        if(data != {}){
            $.cookie('isSettingsLoaded', 'true');
        }
    })

    $('#settings .ui-state-default').hide();

    $('#settings  .ui-state-default').bind('click',function(){
        var selectedItem  = $('#tracker').val(), analog_input_id = $('label',$(this).parent().parent()).attr('for').substr(8);
        $('#analog_conversation_window').attr('name',analog_input_id);
        $('#analog_conversation_window').dialog('option','title','Таблица торировки объекта '+selectedItem+' входа ai'+analog_input_id);
        $('#analog_conversation_window').dialog('open');
        $('#analog_conversation_grid').flexOptions({
            url:'tracker/getAnalogInputConversation',
            params:[{
                name:'tracker_id',
                value:$('#tracker').val()
            },
            {
                name:'analog_input_id',
                value:analog_input_id
            }]
        }).flexReload();
    });

    $('#tracker').change(function(){
        $('#settings input[id$="units"], #settings input[id^="alias"]').val('');
        $('#settings div[id^="conversation_window"]').hide();
        $('#settings div[id^="conversation_window"] span').css('float', 'left');
        var selectedItem  = $(this).val();
        $.settings[selectedItem] = [];
        $.ajax({
            url:'tracker/getTrackerInputSettings/'+selectedItem,
            type: "POST",
            dataType: "json",
            success:function(data){
                for(var key in data){
                    $.settings[selectedItem][key] = [];
                    $.settings[selectedItem][key]['value'] = $('#alias_'+key).val(data[key].name).val();

                    if(/ai/.test(key)){
                        $.settings[selectedItem][key]['units'] = $('#'+key+'_units').val(data[key].units_of_measure).val();
                        $('#conversation_window_'+key).show();
                    }else if(/c/.test(key)){
                        $.settings[selectedItem][key]['units'] = $('#'+key+'_units').val(data[key].uom).val();
                    }
                }
            }
        });
    });

    $('#settings').dialog({
        autoOpen:false,
        show: 'clip',
        hide: 'clip',
        title: "Настройки системы",
        resizable:false,
        width:570,
        open:function(){
            $.ajax({
                url:'tracker/getUserTrackers',
                type: "POST",
                dataType: "json",
                success:function(data){
                    var options = '';
                    $.each(data,function(i,v){
                        options += '<option value="'+v.tracker_id+'">'+v.short_name+'</option>';
                    })
                    $('#tracker').html(options);
                    $('#tracker').change();
                }
            });
        },
        buttons: {
            'Отмена':function(){
                $(this).dialog('close');
            },
            'Сохранить и закрыть': function(){
                saveSettings(function(){$('#settings').dialog('close');});
            },
            'Сохранить':function(){
                saveSettings(function(){$('#tracker').change();});
            }
        }
    });
    $('#settings .ui-state-default').hover(
        function() {
            $(this).addClass('ui-state-hover');
        },
        function() {
            $(this).removeClass('ui-state-hover');
        }
        )
    $('a[href=#settings]').bind('click',function(){
        $('#settings').dialog('open');
    });
    $('#analog_conversation_window').dialog({
        autoOpen:false,
        width:330,
        show: 'clip',
        hide: 'clip',
        open:function(){
            $('#settings').dialog('disable');
        },
        close:function(){
            $('#settings').dialog('enable');
        },
        buttons:{
            'OK':function(){
                $(this).dialog('close')
            }
        }
    });
    $('#analog_conversation_grid').flexigrid({
        dataType:'json',
        nomsg:'Таблица торировки пуста',
        singleSelect:true,
        buttons:[
            {name: 'Добавить', bclass: 'add', onpress:function(){$('#replace_conversation_window').dialog('open')}},
            {name: 'Изменить', bclass: 'update', onpress:function(com,grid){
                    var selectedLine = $('.trSelected div',grid);
                    if(!selectedLine.size()){
                        showAlert('Выберите значение для изменения');
                        return false;
                    }
                    $('#conversation_key').val($(selectedLine.get(0)).html());
                    $('#conversation_value').val($(selectedLine.get(1)).html());
                    $('#replace_conversation_window').dialog('open');
                    return true;
                }},
            {name: 'Удалить', bclass: 'delete',onpress:function(com,grid){
                    var selectedLine = $('.trSelected div',grid);
                    if(!selectedLine.size()){
                        showAlert('Выберите значение для удаления');
                        return false;
                    }
                    var key = $(selectedLine.get(0)).html();
                    $.ajax({
                        url:'tracker/deleteAnalogInputConversation/'+key,
                        type:'POST',
                        dataType:'json',
                        data:[{name:'tracker_id',value:$('#tracker').val()},{name:'analog_input_id',value:$('#analog_conversation_window').attr('name')}],
                        success:function(){
                            showAlert('Значение удалено',true);
                            $('#analog_conversation_grid').flexReload();
                        }
                    });
            }}
        ],
        colModel:[
            {display: 'Показания датчика',name : 'key',width:'140'},
            {display: 'Значение преобразования',name : 'value',width:'140'}
        ]
    });
    $('#replace_conversation_window').dialog({
        autoOpen:false,
        show: 'clip',
        hide: 'clip',
        open:function(){
            $('#analog_conversation_window').dialog('disable');
        },
        close:function(){
            $('#analog_conversation_window').dialog('enable');
        },
        buttons:{
            'Отмена':function(){
                $(this).dialog('close');
            },
            'Сохранить':function(){
                var key = $('#conversation_key').val(),value = $('#conversation_value').val();
                if(key == ''|| value == '' || isNaN(Number(key)) || isNaN(Number(value))){
                    showAlert('Было введено недопустимое занчение. /n в поля должны быть введены числа.');
                }
                $.ajax({
                    url:'tracker/replaceAnalogInputConversation',
                    type:'POST',
                    dataType:'json',
                    data:[
                        {name:'tracker_id',value:$('#tracker').val()},
                        {name:'analog_input_id',value:$('#analog_conversation_window').attr('name')},
                        {name:'key',value:key},{name:'value',value:value}
                    ],
                    success:function(data){
                        showAlert('Данные добавлены', true);
                        $('#analog_conversation_grid').flexReload();
                        $('#replace_conversation_window').dialog('close');
                    }
                });
            }
        }
    });
})

function saveSettings(successFunction){
    var settings=[];
    $.each($('#settings input'),function(i,v){
        if(/alias_/.test($(v).attr('id'))){
            settings.push({
                name:$(v).attr('id').substr(6,$(v).attr('id').length),
                value:$(v).val()
            })
        }else{
            settings.push({
                name:$(v).attr('id'),
                value:$(v).val()
            });
        }
    });
    settings.push({
        name:'tracker_id',
        value:$('#tracker').val()
    })
    $.ajax({
        dataType:'json',
        data:settings,
        url:'tracker/updateSettings',
        type:'POST',
        success:function(data){
            for(var key in data.success){
                $.settings[key] = data.success[key];
            }
            if(/ai/.test(key)){
                $.settings[selectedItem][key]['units'] = $('#'+key+'_units').val(data[key].units_of_measure).val();
                $('#conversation_window_'+key).show();
            }else if(/c/.test(key)){
                $.settings[selectedItem][key]['units'] = $('#'+key+'_units').val(data[key].uom).val();
            }
            showAlert('Изменения сохранены', true);
            if(successFunction)successFunction();
        }
    });
}
