<?
include "../../../../conf/system.php";
include 
"../../../../conf/sesiones.php";
//para sacar el titulo de la ventana
$id_com=15;
include_once 
$controllers."core_componente.php";
include_once 
$models."common/componente.php";

$com=new componente($id_com);
$perms=$com->getPermisosPorUsuario($con);
$err=new core_error();
//es para poder editar el codigo
if($mos){?><script><?php }?>
/*crea la ventana */
var perfilSeleccionado='';

function inicioComponente_<?php echo $id_com ?>(){
    perfilSeleccionado='';
    
    var win = Ext.getCmp('comp_<?php echo $id_com ?>');
if(!win){
    var com=inicioComponente_<?php echo $id_com ?>_01();
    var form=inicioComponente_<?php echo $id_com ?>_03();
    var per=inicioComponente_<?php echo $id_com ?>_02(form.id);
    
    var items = [
            {
            region: 'west',
            //collapsible: true,
            xtype:'panel',
            split: true,
            width: 250, // give east and west regions a width
            minSize: 250,
            border:false,
            layout: 'border',
            items: [
                {
                region:'center',
                layout:'border',
                items:[
                    {title:'Informacion del perfil',
                    region: 'south',
                    height: 190,
                    minSize: 190,
                    autoScroll:'auto',
                    split: true,
                    items:form
                    }
                    ,per
                 ]    
                } 
                ]
            }, com    
            ] ;       
    win = crearVentana({id:'comp_<?php echo $id_com ?>',items:items,title:'<?php echo ($com->obj->tit_com?>',iconCls:'<?= $com->obj->icon_com ?>',layout:'border',esTab:true}); 
}
win.maximize();
win.show();
}

function crearcheck(v){
    if(v!=null){
        var fun='';
        var vec=v.id.split('_');
        if(vec[0]=='v') fun="if(!this.checked){document.getElementById('a_"+vec[1]+"').checked=false;document.getElementById('m_"+vec[1]+"').checked=false;document.getElementById('d_"+vec[1]+"').checked=false;}";
        else fun="if(this.checked){document.getElementById('v_"+vec[1]+"').checked=true;}";
        return '<input type="checkbox" name="'+v.id+'"  id="'+v.id+'" value="s" '+(v.checked?'checked':' ')+' onclick="'+fun+'"/>';
    }else return '&nbsp;';
}

//retorna el arbol de componentes
function inicioComponente_<?php echo $id_com ?>_01(){
    // las columnas
    var fm = Ext.form;
    var columnas=[
        { header:'Componente', width:300, dataIndex:'com'},
        { header:'Ver',    width:50, dataIndex:'ver' ,
            tpl: new Ext.XTemplate('<div align="center">{ver:this.checkar}</div>',{checkar:function(v){return crearcheck(v);}})
         },
        { header:'Agregar',    width:80, dataIndex:'add' ,
            tpl: new Ext.XTemplate('<div align="center">{add:this.checkar}</div>',{checkar:function(v){return crearcheck(v);}})
         },
        { header:'Modificar',  width:80, dataIndex:'mod',
            tpl: new Ext.XTemplate('<div align="center">{mod:this.checkar}</div>',{checkar:function(v){return crearcheck(v);}})
         },
        { header:'Eliminar',   width:80, dataIndex:'del',
            tpl: new Ext.XTemplate('<div align="center">{del:this.checkar}</div>',{checkar:function(v){return crearcheck(v);}})
         }
        ];
    // el cargador asimncrono
    var loader=new Ext.tree.TreeLoader({
                    dataUrl:$view_js+'acceso/perfiles/perfiles_l.php',
                    uiProviders:{'com': Ext.ux.tree.ColumnNodeUI},
                    baseParams:{accion:'listac',perfil_id:perfilSeleccionado}
                });
    //el panel            
    
    var treeCom=new Ext.ux.tree.TreeGrid({
                region: 'center',
                margins: '0 0 0 0',
                id:'tree_comp',
                title:'Arbol de Componentes',
                containerScroll: true,
                autoScroll:true,
                columns: columnas,
                loader: loader,
                refresh:function(){                            
                            this.body.mask();
                            
                            this.loader=new Ext.tree.TreeLoader({
                                    dataUrl:$view_js+'acceso/perfiles/perfiles_l.php',
                                    uiProviders:{'com': Ext.ux.tree.ColumnNodeUI},
                                    baseParams:{accion:'listac',perfil_id:perfilSeleccionado}
                                });
                            this.getLoader().load(this.root,function(){var t = Ext.getCmp('tree_comp');t.root.expand(true, true);});
                            setTimeout(function(){ // mimic a server call
                                var t = Ext.getCmp('tree_comp');
                                t.body.unmask();
                                //expande todo el arbol
                            }, 1000);
                        }                        
               }); 
                       
    
    // set the root node
    
    treeCom.setRootNode(new Ext.tree.AsyncTreeNode({
        text: 'Componentes',
        draggable:false, // disable root node dragging
        visible:false,
        id:'0'
    }));
    treeCom.root.expand(true, /*no anim*/ true);
    return treeCom;
}

///
//retorna el arbol de arbol de perfiles creados 
function inicioComponente_<?php echo $id_com ?>_02(id_form){        
    var loader=new Ext.tree.TreeLoader({
                    dataUrl:$view_js+'acceso/perfiles/perfiles_l.php',
                    baseParams:{accion:'listap'}
                });
    var tree= getTreePanel('tree_perf',false,loader,{region:'center',title:'Perfiles Registrados', autoScroll:true});
    
    tree.addListener('click', function(node, e) {
            if(node.isLeaf()){
                if(perfilSeleccionado!=node.id){
                    var treeCom=Ext.getCmp('tree_comp');
                    perfilSeleccionado=node.id;
                    treeCom.refresh();
                    form=Ext.getCmp(id_form);
                    form.getForm().reset();
                    form.body.mask();
                    form.load({
                        url: $view_js+'acceso/perfiles/perfiles_l.php',
                        params: {accion:'cargar',id:node.id},
                        success:function(){ Ext.getCmp(id_form).body.unmask();},
                        failure: function(form, action) {
                            Ext.getCmp(id_form).body.unmask();
                            Ext.Msg.alert("Error ", 'Fallo la carga de Datos'+ action.result.message);
                        }
                    });
                }
            }        
        }); 
    
     
    // set the root node
    var root = new Ext.tree.AsyncTreeNode({
        text: 'Perfiles Registrados',
        draggable:false, // disable root node dragging
        id:'0'
    });
    tree.setRootNode(root);
    root.expand(false, /*no anim*/ false);
    
    return tree;
}

function inicioComponente_<?php echo $id_com ?>_03(){
    
    var form = new Ext.form.FormPanel({        
        padding:5,
        id:'frm_per',
        baseCls: 'x-plain',
        url:$view_js+'acceso/perfiles/perfiles_l.php',
        labelWidth: 75,
        autoHeight: true,
        autoScroll: true,
        defaultType: 'textfield', // cada item sera una textarea
        items: [
             { name: 'nom_per',fieldLabel: 'Nombre', anchor:'100%',allowBlank:false }
            ,{ xtype: 'textarea',  name: 'des_per',fieldLabel: 'Descripcion', anchor:'100%' }
            ,{ xtype: 'hidden',  name: 'id' }
            ,{ xtype: 'hidden',  name: 'aux'}
            ,{ xtype: 'hidden',  name: 'id_com', value:'<?php echo $id_com ?>'}
            ,{ xtype: 'hidden',  name: 'accion'}
        ]
    });    
    
    form.addButton(
        {iconCls: 'icon-disk',tooltip:'Guardar'},
        function(){
            var p_add=<?php if($perms['add'] ) echo 'true'; else echo 'false' ?>;
            var p_mod=<?php if($perms['mod'] ) echo 'true'; else echo 'false' ?>;
            if (form.getForm().findField('id').getValue()!='') form.getForm().findField('accion').setValue('mod');
            else form.getForm().findField('accion').setValue('add');
            var acc=form.getForm().findField('accion').getValue();
            if((acc=='add' && p_add) || (acc=='mod' && p_mod)){
                form.body.mask();
                t=Ext.getCmp('tree_comp');
                var au=Ext.util.JSON.encode(inicioComponente_<?php echo $id_com ?>_04(t.root));
                form.getForm().findField('aux').setValue(au);
                form.getForm().submit({
                    success: function(form, action) {
                        var t = Ext.getCmp('frm_per');
                        t.body.unmask();
                        if(action.result.success){
                            treeRefresh('tree_perf');
                            perfilSeleccionado='';
                            treeRefresh('tree_comp');
                            t.getForm().reset();
                        }
                    }
                    ,failure: function(form, action) {
                        var t = Ext.getCmp('frm_per');
                        t.body.unmask();
                        Ext.Msg.alert("Fallo la carga de datos ", action.result.message);
                    }
                });
            }else{
                crearMsg('Permisos insuficientes');
            }
        }
        
    );
    form.addButton(
        {iconCls: 'icon-delete',tooltip:'Borrar'},
         function(){
            var p_del=<?php if($perms['del'] ) echo 'true'; else echo 'false' ?>;
            if( p_del){ 
                if(form.getForm().findField('id').getValue()!=''){
                    Ext.Msg.confirm('Confirmacion','Esta seguro de eliminar el perfil',function(btn){
                      if(btn=='yes'){                
                        Ext.getCmp('tree_comp').root.removeAll();
                        form.body.mask('Procesando....', 'x-mask-loading');
                        
                        form.getForm().findField('accion').setValue('del');
                        form.getForm().submit({
                            success: function(form, action) {
                                var t = Ext.getCmp('frm_per');
                                t.body.unmask();
                                t.getForm().reset();
                                if(action.result.success){
                                    treeRefresh('tree_perf');
                                }
                            }
                            ,failure: function(form, action) {
                                var t = Ext.getCmp('frm_per');
                                t.body.unmask();
                                Ext.Msg.alert("Fallo la carga de Datos ", action.result.message);
                            }
                        });
                      }
                    });
                }
            }else{
                crearMsg('Permisos insuficientes');
            }
        }
    );
    form.addButton({iconCls: 'icon-application_form' ,tooltip:'Limpiar'}, 
        function(){
            form.getForm().reset();
            perfilSeleccionado='';
            Ext.getCmp('tree_comp').root.removeAll();
        }
    );    
    return form;

}
function treeRefresh(id){
    var tree=Ext.getCmp(id);
    tree.body.mask('Procesando....', 'x-mask-loading');
    tree.root.reload();
    tree.root.collapse(true, true);
    setTimeout(function(){ 
        var t = Ext.getCmp(id);
        t.body.unmask();
        t.root.expand(true, true);//expande todo el arbol
    }, 1000);
}      

function inicioComponente_<?php echo $id_com ?>_04(node){
    var lis=node.childNodes;
    var ret;
    var arr=new Array();
    var v=false;
    for(var i=0;i<lis.length;i++){
        nh=lis[i];
        if(nh.isLeaf()) {
            arr[arr.length]={id:nh.id,
            ver:document.getElementById('v_'+nh.id).checked,
            add:document.getElementById('a_'+nh.id).checked,
            mod:document.getElementById('m_'+nh.id).checked,
            del:document.getElementById('d_'+nh.id).checked};        
            if(document.getElementById('v_'+nh.id).checked) v=true;
        }else{
            r=inicioComponente_<?php echo $id_com ?>_04(nh);
            arr[arr.length]=r;
            if(r.ver) v=true;
        }
    }
    return {id:node.id,children:arr,ver:v};
}
try{inicioComponente_<?php echo $id_com ?>();}catch(e){}