var app = {
    
    init: function(){
        
    },
    
    log: function(v){
        try {
            console.log(v);
        } catch (exception) { 
    
        }
    }
}

var childItputs = ['#postid','#cityid'];

var multiSelects = {
    input : "input.mulioptioned",
    select: "select.mulioptioned",
    childs: ['postid','cityid'],

    init: function (){
        multiSelects.initSelects();
    },

    initSelects: function(){
        
        $(this.input).each(function(i,v){
            multiSelects.selectable($(v));
        });

    },
    getHiddenOrSelect: function(elem){
        
        if (!$(elem).is('select')){
            return $(elem).next();
        } 
        return $(elem).prev();

    },
    checkVar:function(_var)
    {
        
        if (_var !== undefined){
            return _var;
        } 
        return false;
    },

    selectable:function (elem){
        
        var data = $(elem).metadata();
        
        var _url = data.url;
        var _table = data.table;

        var _selected = $(elem).val().split(',');
        var select = multiSelects.getHiddenOrSelect(elem);
        
       
        if($.inArray($(select).attr('id') , multiSelects.childs) >= 0 && $(elem).val() || false ){
            
            var _ids = _selected;
        }
        //isset
        var getParams = { 
            table    : data.table || false,
            field    : data.field || false,
            child    : data.child || false,
            parentsId:       _ids || false
        }
        
        
//        app.log(getParams);
        
        var options = {
            
            selectedText:"# выбрано",
            
            noneSelectedText:  "Рубрик выбрано",
            
            uncheckAll: function(){
                var $hidden = multiSelects.getHiddenOrSelect(select);
                $hidden.val("");
            },
            
            makeSelect:function(arr, selected){
                
                selected = selected || [];
                
                var buffStr = '';
                
                $.each(arr,function(i, obj){
                    
                  var sel = '';
                  if( $.inArray(obj.id,_selected) >= 0 ){
                    sel = ' selected="selected" ';
                  }
                  
                  var option = '<option value="' + obj.id + '"' + sel +'>' +obj.title+ '</option>';
                  
                  buffStr += option;
                });
                
                return buffStr;
                
            },
            beforeopen: function(){
                
                $.getJSON(_url, getParams, function(data){

                    var tempSelect = '';
                    if(typeof(data.regions) != "undefined"){
                    
                        $(data.regions).each(function(){
                            
                            $(this).each(function(i,v){

                                var optgroup = '<optgroup label="'+v.name+'" class="{id:' + v.id + '}" >';
                                optgroup += options.makeSelect(data.options[v.id],_selected) + '</optgroup>';
                                   
                                tempSelect+=optgroup;
                            }); 
                        });
                        
                        $(select).html(tempSelect);
                    } else{
                         $(select).html(options.makeSelect(data.options,_selected));
                     }
                    $(select).multiselect('refresh');
                    
                });
                
            },
            
            click: function(event, ui){
             
                 $array = $(this)
                            .multiselect("widget")
                            .find("input:checked");
                            
                 var values = $array.map(function(){
                    return $(this).val();
                }).get().join(",");

                var $hidden = multiSelects.getHiddenOrSelect(select);
                $hidden.val(values);
           }

        }
        
        $(select).multiselect(options);
        
        if(_selected != ""){
            text = _selected.length + ' выбрано';
            $(select).next().find('span').last().html(text);
        }
    }
}

$(function(){

        app.init();
        multiSelects.init();
        
        $(".ui-multiselect-all").parent().remove();
        $(".ui-icon-closethick").remove();

	$("select.custom").selectBox ({});

        $("#keywords").keypress(function(){
            app.log(';change');
            if ($(this).attr('name') != 'search[keywords]'){
            app.log(';change1');
                $(this).attr('name','search[keywords]');
            }
        });        
	
});



