/**
 * Gestion de equipos
 *
 */
/**
 *  Limpiar formulario para capturar nuevo equipo
 */
function newEqui()
{
    preLoader( 1, 'equiposFormularioDiv' );
    getEquiCaptForm();
}
/**
 *  Guardar equipo en DB  
 */
function saveEqui()
{
    $( 'action' ).value = 'save_equi';
    if( $( 'equipo_tipo' ).value == '' )
    {
        alert( 'Seleccione el tipo de equipo' );
        $( 'equipo_tipo' ).focus();
        return false;
    }
    if( $( 'equipo_status' ).value == '' )
    {
        alert( 'Seleccione el status del equipo' );
        $( 'equipo_status' ).focus();
        return false;
    }
    if( $( 'equipo_descripcion' ).value == '' )
    {
        alert( 'Escriba la descripcion del equipo' );
        $( 'equipo_descripcion' ).focus();
        return false;
    }
    preLoader(1, 'equiposFormularioDiv' );
    var aja = new Ajax( urlEquipos,
        {   'method'        :   'get',
            'data'          :   $( 'equiForm' ),
            'update'        :   $( 'listaEquipos' ),
            'onComplete'    :   function()
            {
                getEquiCaptForm();
            }
        }
    ).request();
}
/**
 * Forma de captura de nuevos tipos de equipo
 */
function newEquiType()
{
    var html =  "<input id='type' style='width:115px'>" + 
                "<span onclick='saveNewType()'><img src='img/themes/sisma/iconos/ok.png' align='top'/></span>" + 
                "<span onclick='cancelCaptType()'><img src='img/themes/sisma/iconos/cancel.png'  align='top' /></span>";
    $( 'equiTipoDiv' ).setHTML( html );
    $( 'type' ).focus();
}
/**
 *  Cancela la captura de nuevos tipos de equipo y regresa el listado actual
 */
function cancelCaptType()
{
    var aja = new Ajax( urlEquipos,
        {   'method'    :   'get',
            'data'      :   { 'action' : 'get_type_list' },
            'update'    :   $( 'equiTipoDiv' )
        }
    ).request();
}
/**
 *
 */
/**
 *  Guarda el nuevo tipo de equipo
 */
function saveNewType()
{
    var tipo = $( 'type' ).value;
    if( tipo != '' )
    {
        var aja = new Ajax( urlEquipos,
            {   'method'    : 'get',
                'data' : {'action':'new_equi_type','type' : tipo},
                'update' : $( 'equiTipoDiv' )
            }
        ).request();
    }
}
/**
 *  Carga el formulario de captura
 */
function getEquiCaptForm()
{
    var aja = new Ajax( urlEquipos,
        {   'method'    :   'get',
            'data'      :   {   
                                'action' : 'get_equi_capt_form',
                                'equipo_id' : ( arguments[ 0 ] ? arguments[ 0 ] : 0 ) 
                            },
            'update'    :   $( 'equiposFormularioDiv' ),
            'onComplete': function()
            {
                preLoader(0);
            }
        }
    ).request();
}
/**
 * Edicion de equipos
 */
function editEqui( equipo_id )
{
    preLoader( 1, 'equiposFormularioDiv' );
    getEquiCaptForm( equipo_id );
}
/**
 * Filtrado de equipos
 */
function filtraEquiList( like )
{
    var aja = new Ajax( urlEquipos,
        {   'method'    :   'get',
            'update'    :   $( 'equiposListado' ),
            'data'      :   {   'action' : 'filter', 
                                'like' : like ,
                                'functionName'  :   'captEquiParams',
                                'idDiv' : 'recuMateDiv'
                            }
        }
    ).request();
}
/**
 *  Listado de equipos
 */
function openEquiList()
{
    if( $( 'recuMateDiv' ) ) $( 'recuMateDiv' ).remove();
    var pos = getAvailablePosition();
    var DIV = new Element( 'div', { 'id' : 'recuMateDiv' } ).inject( document.body );

    $( 'recuMateDiv' ).setStyles(
        {   'position'  :   'absolute',
            'top'       :   pos.y + 'px',
            'left'      :   pos.x + 'px'
        }
    );

    var aja = new Ajax( urlEquipos,
        {   'method'    :   'get',
            'data'      :   {   'action' : 'get_equi_list', 
                                'functionName' : 'captEquiParams',
                                'idDiv' : 'recuMateDiv'
                            },
            'update'    :   $( 'recuMateDiv' ),
            'onComplete':   function(){ showOver( 'recuMateDiv' ); }
        }
    ).request();
}
/**
 *  Captura de parametros
 */
function captEquiParams( equipo_id )
{
    resetHourE();
    var DIV = new Element( 'div', { 'id' : 'recuMateParams' } ).inject( document.body );
    var pos = getAvailablePosition();
    
    $( 'recuMateParams' ).setStyles(
        {   'position'  :   'absolute',
            'top'       :   pos.y + 'px',
            'left'      :   pos.x + 'px'
        }
    );

    var aja = new Ajax( urlEquipos,
        {   'method'    :   'get',
            'data'      :   {   'action' : 'form_capt_equi_params',
                                'equipo_id' : equipo_id,
                                'date'  :   $( 'acti_fech_fin' ).value
                            },
            'update'    :   $( 'recuMateParams' ),
            'onComplete':   function(){ showOver( 'recuMateParams' ); }
        }
    ).request();
}
/**
 *  Actualiza el panel de disposiciones de equipos
 */
function updateEquiDisp()
{
    if( $( 'rm_fecha_ini' ).value != $( 'old_fecha_ini' ).value ||
        $( 'rm_fecha_fin' ).value != $( 'old_fecha_fin' ).value
    )
    {
        resetHourE();
        $( 'equiDispDiv' ).setHTML('');
        var aja = new Ajax( urlEquipos,
            {   'method'    :   'get',
                'data'      :   {   'action' : 'update_equi_disp',
                                    'fech_ini' : $( 'rm_fecha_ini' ).value,
                                    'fech_fin' : $( 'rm_fecha_fin' ).value,
                                    'rm_equipo_id' : $( 'rm_equipo_id' ).value
                                },
                'update'    :   $( 'equiDispDiv' ),
                'onComplete': function()
                {
                    $( 'old_fecha_ini' ).value = $( 'rm_fecha_ini' ).value;
                    $( 'old_fecha_fin' ).value = $( 'rm_fecha_fin' ).value;
                }
            }
        ).request();
    }
}
/**
 *  Resetear global
 */
function resetHourE()
{
    selectHourE = {
        'stat'  :   false,
        'col1'  :   false,
        'col2'  :   false,
        'row1'  :   false,
        'row2'  :   false,
        'date1' :   false,
        'date2' :   false,
        'hour1' :   false,
        'hour2' :   false
    }
}
/**
 * Regresa los horarios al color original
 */
function resetColors()
{
    var els = $$( 'div.equiClassDisp' );
    for( i = 0;  i < els.length; i++ )
    {
        $( els[i].id ).setStyle('background-color','#ffffff' );
    }
}
/**
 *  Selecciona el dia y hora en la que se recogera el equipo y cuando se entregara
 */
function selectEquiDate( obj )
{
    var error = false;
    if( selectHourE.stat == false )
    {
        if( $( 'ed_' + obj.col + '_' + obj.row ).innerHTML == "X" )
        {   
            alert( 'Esta seleccionando un horario ocupado por otro usuario' );
            resetColors;
            $( 'rm_hora_ini' ).value    =   '';
            $( 'rm_hora_fin' ).value    =   '';
            return;
        }
        resetColors();
        $( 'ed_' + obj.col + '_' + obj.row ).setStyle( 'background-color','#9dbd96' );
        selectHourE.col1 = obj.col.toInt();
        selectHourE.row1 = obj.row.toInt();
        selectHourE.date1 = obj.date;
        selectHourE.hour1 = obj.hour;
        selectHourE.stat = 1;

        $( 'rm_fecha_ini' ).value   =   obj.date;
        $( 'rm_fecha_fin' ).value   =   obj.date;
        $( 'rm_hora_ini' ).value    =   obj.hour + ':00';
        $( 'rm_hora_fin' ).value    =   obj.hour + ':59';
        return;
    }
    if( selectHourE.stat == 1 )
    {
        selectHourE.col2 = obj.col.toInt();
        selectHourE.row2 = obj.row.toInt();
        selectHourE.date2 = obj.date;
        selectHourE.hour2 = obj.hour;

        /**
         * ordenando
         */

        if( selectHourE.col2 < selectHourE.col1 )
        {
            var tmp = {
                'col'   : selectHourE.col2,
                'row'   : selectHourE.row2,
                'date'  : selectHourE.date2,
                'hour'  : selectHourE.hour2
            };
            selectHourE.col2    =   selectHourE.col1;
            selectHourE.col1    =   tmp.col;
            selectHourE.row2    =   selectHourE.row1;
            selectHourE.row1    =   tmp.row;
            selectHourE.date2   =   selectHourE.date1;
            selectHourE.date1   =   tmp.date;
            selectHourE.hour2   =   selectHourE.hour1;
            selectHourE.hour1   =   tmp.hour;
        }

        if( selectHourE.col2 == selectHourE.col1 && selectHourE.row2 < selectHourE.row1 )
        {
            var tmp = {
                'row'   :   selectHourE.row2,
                'date'  :   selectHourE.date2,
                'hour'  :   selectHourE.hour2
            };
            selectHourE.row2    =   selectHourE.row1;
            selectHourE.row1    =   tmp.row;
            selectHourE.date2   =   selectHourE.date1;
            selectHourE.date1   =   tmp.date;
            selectHourE.hour2   =   selectHourE.hour1;
            selectHourE.hour1   =   tmp.hour;
        }

        resetColors();
        if( selectHourE.col1 == selectHourE.col2 )
        {
            for( var r = selectHourE.row1; r <= selectHourE.row2; r++ )
            {
                $( 'ed_' + selectHourE.col1 + '_' + r ).setStyle('background-color' , '#d4e5d0' );
                error = ( $( 'ed_' + selectHourE.col1 + '_' + r ).innerHTML == "X" ? true : error );
            }
        }
        else
        {
            for( var i = 0; i < 12; i++ )
            {
                for( var j = selectHourE.col1; j <= selectHourE.col2; j++ )
                {
                    if( (   j == selectHourE.col1 && i >= selectHourE.row1 )  ||
                        (   j == selectHourE.col2 && i <= selectHourE.row2 )  ||
                        (   j > selectHourE.col1 && j < selectHourE.col2 )
                    )
                    {
                        $( 'ed_' +  j  + '_'  + i ).setStyle('background-color' , '#d4e5d0' );
                        error = ( $( 'ed_' +  j  + '_'  + i ).innerHTML == "X" ? true : error );
                    }
                }
            }
        }
        if( error == true )
        {
            alert( 'Esta seleccionando un horario ocupado por otro usuario' );
            resetHourE();
            resetColors();
            $( 'rm_hora_ini' ).value    =   '';
            $( 'rm_hora_fin' ).value    =   '';
            return;
        }
        $( 'rm_fecha_ini' ).value   =   selectHourE.date1;
        $( 'rm_fecha_fin' ).value   =   selectHourE.date2;
        $( 'rm_hora_ini' ).value    =   selectHourE.hour1 + ':00';
        $( 'rm_hora_fin' ).value    =   selectHourE.hour2 + ':59';

        selectHourE = {
            stat : false,
            col1 : false,
            col2 : false,
            row1 : false,
            row2 : false
        };
    }
}
/**
 * Agrega el equipo seleccionado a la base de datos y ejecuta el script para agragar el equipo a la lista 
 */
function addRMList()
{
    if( $( 'rm_hora_ini' ).value == '' || $( 'rm_hora_fin' ).value == '' )
    {
        alert( "Necesita seleccionar el horario en el cual va a estar ocupado el equipo\nFecha y hora en la que recoge el equipo\nFecha y hora en la que entregara el equipo." );
    }
    else
    {
        var obj =   {
            'action'        :   'add_equi_list',
            'rm_acti_id'    :   ( $( 'rm_acti_id' ) && $( 'rm_acti_id' ).value > 0 ? $( 'rm_acti_id' ).value : false ),
            'rm_equipo_id'  :   $( 'rm_equipo_id' ).value,
            'rm_fecha_ini'  :   $( 'rm_fecha_ini' ).value,
            'rm_fecha_fin'  :   $( 'rm_fecha_fin' ).value,
            'rm_hora_ini'   :   $( 'rm_hora_ini' ).value,
            'rm_hora_fin'   :   $( 'rm_hora_fin' ).value,
            'rm_status'     :   ( $( 'rm_acti_id' ) && $( 'rm_acti_id' ).value > 0 ? 2 : 1 )
        }
        var aja = new Ajax( urlEquipos,
            {   'method'    :   'get',
                'data'      :   obj,
                'evalScripts':  true
            }
        ).request();
    }
}
/**
 *  Agrega el div a la lista de equipos seleccionados
 */
function addEquiDivList( obj )
{
    if( !inArray( obj.rm_id, rm_equipos_id ) )
    {
        rm_equipos_id.push( obj.rm_id );
    }
    var html =  "<div id='equiSoliDiv_" + obj.rm_id  + "' style='width:200px;height:15px;overflow:hidden;white-space:nowrap;" + 
                "border-bottom: 1px solid rgb(205, 205, 205); cursor: pointer;' >" + 
                "<span onclick=deleteEquiDiv(" + obj.rm_id + ")>" + 
                "<img align='top' src='img/themes/sisma/iconos/menos.png'/>" + 
                "</span>" +
                "<span onclick=detaEquiSoli({'f1':'" + obj.f1 + "','f2':'" + obj.f2+ "','h1':'" + obj.h1 + "','h2':'" + obj.h2 + "'}) >" + 
                obj.desc +
                "</span>" +
                "</div>";
    $( 'listaRecuMateDiv' ).innerHTML += html;
    $( 'rm' ).value =  rm_equipos_id;
}
/**
 * Alerta con la informacion de los horarios del equipo seleccionado
 */
function detaEquiSoli( obj )
{
    alert( "Recurso solicitado\n de: " + obj.f1 + " " + obj.h1 + "\n a: " + obj.f2 + " " + obj.h2 );
}
/**
 *  Eliminar equipos de la lista de seleccionados
 */
function deleteEquiDiv( rm_id )
{
    var removeDivs = arguments[1] == 'unremoveDiv' ? false : true;
    var jsn = new Json.Remote( urlEquipos + "&action=rm_equi_soli&rm_id=" + rm_id,
        {   'onComplete'    :   function( obj )
                                {
                                    if( obj.complete == 'ok' )
                                    {
                                        if( removeDivs )
                                        {
                                            $( 'equiSoliDiv_' + rm_id ).remove();
                                            rm_equipos_id = arrayDel( rm_id, rm_equipos_id );
                                            $( 'rm' ).value =  rm_equipos_id;
                                        }
                                    }
                                }
        }
    ).send();
}
/**
 *  Checar si no se quedo algun equipo al cancelar captura de tarea
 */
function chk_undefined_rm()
{
    if( $( 'recuMateDiv' ) ) $( 'recuMateDiv' ).remove();

    if( $( 'rm' ) && $( 'rm' ).value != '' && $( 'rm_acti_id' ).value == '' )
    {
        var arr = $( 'rm' ).value.split( ',' );
        for( var i = 0; i < arr.length; i++ )
        {
            deleteEquiDiv( arr[ i ] , 'unremoveDiv' );
        }
    }
    $('nuevaTareaDiv').remove();
}
/**
 * en la edicion de tareas, verifica si existen equipos registrados para la actividad y los presenta
 */
function chkRecuMate( acti_id )
{   
    var jsn = new Json.Remote( urlEquipos + "&action=chk_recu_mate&rm_acti_id=" + acti_id,
        {   'onComplete' : function( obj )
            {
                if( obj.complete == 'ok' )
                {
                    for( var i = 0; i < obj.recuMateArr.length; i++ )
                    {
                        addEquiDivList( obj.recuMateArr[ i ] ); 
                    }
                }
            }
        }
    ).send();
}
/**
 *  Disponibilidad de equipos
 */
function chkDispEqu()
{
}

