🌹🏠🌹？》《》？《》？<?php

class abm
{ 
	  // variables
    var $alterCss       = '"rowPar","rowImpar"';
    var $buffering      = 50;
    var $camposClave    = 1;
    var $chNoState      = "0";
    var $colAccessKeys ;
    var $colAligns;
    var $colColors      = "wheat";
    var $colFiltros ;
    var $colHeaders;
    var $cols;
    var $colSorts;
    var $colsTooltips;
    var $colTypes;
    var $columnas;
    var $columnAutoSize = 'true';
    var $colWidths;
    var $divHeight      = '530px';
    var $divID;
    var $divWidth       = '98%';
    var $editable       = 'false';
    var $filas;
    var $imagePath      = "/gargano_dps/include/dhtmlxGrid/imgs/";
    var $loadXML        = "/gargano_dps/include/abm/abmXML.php";
    var $postLoad       = "false";
    var $raNoState      = "0";
    var $rowsHover      = "rowHover";
    var $script;
    var $sql;
    var $sqlPrint;
    var $title          = false;
    var $tooltips ;
    

	// constructor
	function __construct( $nombre, $titulo = false )
	{
        $this->divID = preg_replace( '/[^a-z0-9]/i', '_', $nombre );
        $this->script = basename($_SERVER['PHP_SELF'],'.php');
        $this->title = $titulo;

        unset( $_SESSION['grilla'][$this->divID]['iconos'] );
    }


    function guardarSQL()
    {
        $_SESSION['grilla'][$this->divID]['sql'] = $this->sql;
        $_SESSION['grilla'][$this->divID]['title'] = $this->title;
        $_SESSION['grilla'][$this->divID]['sqlPrint'] = 'SELECT ' . $this->sqlPrint . ' FROM' ;
        $_SESSION['grilla'][$this->divID]['camposClave'] = $this->camposClave;
    }
    

    function iconos( $nombre, $link, $ayuda, $onClick = "" )
    {
//        if( $nombre == "editar" && ! puedeEditar() ) return;
//        if( $nombre == "borrar" && ! puedeEliminar() ) return;
        
        $_SESSION['grilla'][$this->divID]['iconos'][] = array( 'tipo' => $nombre, 
                                                               'link' => $link, 
                                                               'tooltip' => $ayuda,
                                                               'onClick' => $onClick );
    }


    function cabeceras( )
    {
        $hdr = split(",", $this->cols);
        $this->columnas = count($hdr);

        foreach( $hdr as $col )
        {
            $partes = split(":",$col);
            $widths[] = $partes[1];
            $partes[0] = trim( (string)$partes[0]);

            $tipo = "ro";
            if( count($partes) == 3 )
            {
                $tipo = $partes[2];
            }
            
            $filtro = "";
            if( strpos( $partes[0], "nf!" ) !== false )
            {
                $partes[0] = str_replace("nf!", "", $partes[0]);
                $filtro = "nf";
            }

            $orden = "str";
            if( strpos( $partes[0], "no!" ) !== false )
            {
                $partes[0] = str_replace("no!", "", $partes[0]);
                $orden = "na";
            }

//dividimos en 2 a parte[0] por numeral (PUEDE NO TENERLO)
list($partes[0], $ayuda) = split("#", $partes[0]);
$ayudas[] = $ayuda;

            if( substr( $partes[0], 0, 1 ) == "@" ) {
        		$alings[] = "left";
            } else if( substr( $partes[0], -1, 1 ) == "@" ) {
            	$alings[] = "right";
            } else {
            	$alings[] = "center";
            }

/********************************************************************************/
$accesskey = "";
if( ($p = strpos( $partes[0], "&" ) ) !== false )
{
    $accesskey = substr( $partes[0], $p+1, 1 );
    $partes[0] = preg_replace( "/(.*)(&)(.+?)(.*)/", "$1<u>$3</u>$4", $partes[0] );
}
$accesskeys[] = $accesskey;
/********************************************************************************/

            $headers[] = str_replace("@", "", $partes[0]);
            $tipos[] = $tipo;
            $filtros[] = $filtro;
            $ordenamientos[]  = $orden;
        }
        
/********************************************************************************/
$this->colAccessKeys = implode(",", $accesskeys);
/********************************************************************************/

        $this->colHeaders  = implode(",", $headers);
        $this->colWidths   = implode(",", $widths);
        $this->colAligns   = implode(",", $alings);
        $this->colSorts    = implode(",", $ordenamientos);
        $this->colFiltros  = implode(",", $filtros);       
        $this->colTypes    = implode(",", $tipos);
        $this->colsTooltips = implode(",", $ayudas);
        $_SESSION['grilla'][$this->divID]['colTypes'] = $tipos;
        $this->tooltips    = ( ($filtros[0]=="nf"&&$ordenamientos[0]=="na") ? "0" : "1" ) . str_repeat(',1', count($headers)-1 );
    }

	function mostrar()
	{
        $this->guardarSQL();
        $this->cabeceras();

        $salida = "";

        if($this->title)
            $salida = "<div class='title_grid' style='width: $this->divWidth;'>$this->title</div>\n";
            
        $salida .= "<div id='$this->divID' style='border: 1px outset black; overflow: hidden; margin: auto; width: $this->divWidth; height: $this->divHeight'></div>\n
                   <table cellspacing='1' cellpadding='0' class='status_grid' id='".$this->divID."_status' style='width: $this->divWidth;'><tr>\n
                     <td id='".$this->divID."Registros'><img src='/gargano_dps/include/dhtmlxgrid/imgs/progress.gif' /></td>\n
                     <td width='18px' id='".$this->divID."Wait'>&nbsp;</td>\n";

        if( $this->sqlPrint )
          $salida .= "<td width='18px' id='".$this->divID."pdf'><img style='cursor:pointer;' onClick='$this->divID.pdf($this->divID);' title='Imprimir' src='".$this->imagePath."printer.png'/></td>\n";

        $salida .= "<td width='18px' id='".$this->divID."csv'><img style='cursor:pointer;' onClick='$this->divID.csv($this->divID);' title='Exportar a csv' src='".$this->imagePath."page_white_excel.png'/></td>\n
                     <td width='18px' id='".$this->divID."AutoColumnSize'><img style='cursor:pointer;' onClick='$this->divID.autoColumnSize($this->divID);' title='Ajustar columnas' src='".$this->imagePath."column_size.png'/></td>\n
                     <td width='18px'><img style='cursor:pointer;' onClick='$this->divID.reloadGrid();' title='Recargar el listado' src='".$this->imagePath."table_refresh.png'/></td>\n
                     <td width='18px'><img style='cursor:pointer;' onClick='$this->divID.limpiarFiltros(); $this->divID.reloadGrid();' title='Quitar Filtros' src='".$this->imagePath."table.png'/></td>\n
                   </tr></table>\n
                   <script>\n
                        if(! document.getElementById('modal')) modal = crearPopWin();
                        $this->divID = new dhtmlXGridObject('$this->divID');\n
                        //$this->divID = new dhtmlXGridObject();\n
                        //$this->divID.attachToObject(document.body)\n

                        if( typeof window.listaGrillas == 'undefined' ) window.listaGrillas = new Array();\n
                        window.listaGrillas.push($this->divID);\n

                        $this->divID.setSkin('xp');\n
                        $this->divID.enableMultiline(true);\n
                        $this->divID.enableMultiselect(true);\n
                        $this->divID.setImagePath('$this->imagePath');\n
                        $this->divID.enableAlterCss($this->alterCss);\n
                        $this->divID.enableRowsHover(true,'$this->rowsHover');\n
                        $this->divID.setEditable($this->editable);\n
                        //$this->divID.enableColumnAutoSize($this->ColumnAutoSize);\n
                        //$this->divID.enableAutoHeigth(true);\n
                        $this->divID.enableBuffering($this->buffering);\n
                        $this->divID.chNoState = '$this->chNoState';\n
                        $this->divID.raNoState = '$this->raNoState';\n
                        $this->divID.colFiltros = '$this->colFiltros';\n
                        $this->divID.colAccessKeys = '$this->colAccessKeys';\n
                        $this->divID.colsTooltips = '$this->colsTooltips';\n
                        $this->divID.enableTooltips('$this->tooltips');\n
                        $this->divID.setColSorting('$this->colSorts');\n
                        $this->divID.setColSorts = '$this->colSorts';\n
                        $this->divID.setHeader('$this->colHeaders');\n
                        $this->divID.setInitWidths('$this->colWidths');\n
                        $this->divID.setColAlign('$this->colAligns');\n
                        $this->divID.postLoad=$this->postLoad;\n";

        if($this->colTypes) $salida .= "$this->divID.setColTypes('$this->colTypes');\n";
        if($this->colColors) $salida .= "$this->divID.setColumnColor('$this->colColors');\n";
        for($i=0; $i<$this->columnas; $i++) $salida .= "$this->divID.setColumnMinWidth(80,$i);\n";

        $salida .= "$this->divID.init();\n
                    $this->divID.enableSmartRendering(true,null,100);\n
                    $this->divID.loadXML('$this->loadXML?sessionName=".session_name()."&script=$this->script&gridName=$this->divID' );\n

                    $this->divID.agregarFiltros();

                	$this->divID.sortField_old=$this->divID.sortField;
            	    
                  $this->divID.sortField=function(){
                    $this->divID.customColumnSort(arguments[0]);
                		$this->divID.sortField_old.apply(this,arguments);
                  }

                	$this->divID.sortRows=function(col,type,order){}

                	$this->divID.reloadGrid = function( flag, nroGrilla, totalGrillas )
                    {
                        $this->divID.desde = null;
                        if ( flag != null )
                        {
                            $this->divID.desde = start;
                            $this->divID.rowIDSelected = $this->divID.getSelectedId();
                        }
                        
                    		$this->divID.clearAll();
                    		extra = '';
    
                    		if (window.a_direction)
                    		{
                    			$this->divID.setSortImgState(true,window.s_col,window.a_direction);
                    			extra = '&orderBy='+window.s_col+'&direction='+window.a_direction;
                        }

                        $this->divID.loadXML('$this->loadXML?nroGrilla='+nroGrilla+'&totalGrillas='+totalGrillas+'&sessionName=".session_name()."&gridName=$this->divID&script=$this->script' + extra + $this->divID.filtros() );\n

                        if ( flag != null )
                        {
                             grilla = $this->divID;
                             rowSelected = $this->divID.rowIDSelected;
                             window.setTimeout( 'mostrarRow()', 600);
                        }
                    }


                  </script>\n";

        return $salida;
    }

} 
?>
