﻿//El presente script controla las actualizaciones de grillas por ajax
var rowToUpdate;
var rowToDelete;
//eventos de la grilla
var event_name_grid_refreshed = "refreshed";
var event_name_grid_updated = "rowUpdated";
var event_name_grid_deleted = "rowDeleted";
var event_name_grid_created = "rowCreated";

$(document).ready(function() {
    $(".GridEditButton").live("click", function() {
        rowToUpdate = $(this).parents(".updatebleRow");
        
    });
});
// recarga la grilla completo por ajax y actualiza al Div con class = ".updatePanel"
function reload_content(url) {
    $.ajax({
        url: url,
        type: "GET",
        cache: false,
        success: function(data) {
            $(".updatePanel").html(data);
            $(".updatePanel").trigger(event_name_grid_refreshed);
        }
    })
}

function reload_content_page(url) {
    window.location = (url);
}
// recarga la grilla completo por ajax y actualiza el Div con un id específico
function reload_content_to_target_id(url, targetId) {
    $.ajax({
        url: url,
        type: "GET",
        cache: false,
        success: function(data) {
            $("#" + targetId).html(data);
            $("#" + targetId).trigger(event_name_grid_refreshed);
        }
    })
}
// recarga la grilla solo a la fila con que fue actualizada, 
// no actualiza la grilla completa, dispara el evento event_name_grid_updated
function reload_content_after_update(url) {
    //alert(url);
    $.ajax({
        url: url,
        type: "GET",
        cache: false,
        success: function(data) {
            $(".updatePanel").html(data);
            if (!is_undefined_or_null_or_empty(rowToUpdate)) {
                rowToUpdate.trigger(event_name_grid_updated);
                rowToUpdate = null;
            }
            $(".updatePanel").trigger(event_name_grid_refreshed);
            
        }
    })
}
// recarga la grilla agregado el nuevo registro creado al final de la grilla, sin actualizar la grilla completa, 
// dispara el evento event_name_grid_created
function reload_content_after_create(url) {
    $.ajax({
        url: url,
        type: "GET",
        cache: false,
        success: function(data) {
            $(".appendableArea").append(data);
            $(".appendableArea :last").trigger(event_name_grid_created);
            $(".updatePanel").trigger(event_name_grid_refreshed);
        }
    })
}

// elimina la fila de la grilla y dispara el evento event_name_grid_deleted, 
//al eliminar la fila de la grilla se comunica al servidor para realizar cambios en el base de dato o en SessionState
function grid_delete_button_handler(event, url, message) {

    var srcElement = $(get_srcElement(event));
    if (message == "" || confirm(message)) {
        rowToDelete = srcElement.parents(".updatebleRow");
        srcElement.parents(".updatebleRow").addClass("rowToDelete");
        $.ajax({
            url: url,
            type: "POST",
            cache: false,
            success: function(data) {
            rowToDelete.trigger(event_name_grid_deleted)
                rowToDelete.remove();
                $(".updatePanel").trigger(event_name_grid_refreshed);
            }
        })
    }
}


