﻿//Este script es la más importante de todos, controla la lógica de interfaz en general para toda la aplicacion soap

var opacity_colorbox = 0.3;
var jtable; // la variable global que sirve para controlar los jtable
$(document).ready(function() {
    initMeioMask();
    executeJqueryFormPlugins();
    $('.button-close-popup').live("click", function() {
        close_popup();
    });

    $(".redirect-to").live("click", redirecto_to);

    $(".clearFormBtn").live("click", function() {
        var parentForm = $(this).parents("form");
        parentForm.find("input[type=text]").val("");
        //parentForm.find("input[type=checkbox]").attr("checked", "");
        parentForm.find("select").val("");
    });

    //popup a elementos inilne está desactivado, ya que el unico que ocupaba esa funcionalidad fue modificado

    //Ej: el input que activa popup inline: <input type="button" class = "inlineShowPopupBtn Wrapper"/>
    //    el div que aparece: <div id="DivWrapper" style="display:none"> -$(".inlineShowPopyoBtn").click(function() {
    //    if ($(".inlineShowPopupBtn").attr("class") != undefined) {
    //        $(".inlineShowPopupBtn").colorbox({
    //            close: "",
    //            opacity: opacity_colorbox,
    //            width: 600,
    //            scrolling: false,
    //            overlayClose: false,
    //            inline: true,
    //            href: "#Div" + get_second_class_parameter($(".inlineShowPopupBtn")),
    //            onOpen: function() { $("#Div" + get_second_class_parameter($(".inlineShowPopupBtn"))).css("display", "inline"); },
    //            onComplete: function() { $.fn.colorbox.resize(); },
    //            onCleanup: function() { $("#Div" + get_second_class_parameter($(".inlineShowPopupBtn"))).css("display", "none") }
    //        });
    //    }

    initTablePaginationAndSorting();
    $(".updatePanel").bind("refreshed", function() {
        initTablePaginationAndSorting();
    })

    //lo siguiente sirve para eliminar mensajes de error generado por parte de servidor para una mejor usabilidad,
    //actualmente responde con el evento focusin 
    $(".jformHtml, .jformAjax").live("focusin", function() {
        $(".serverValidationMessage").html("");
    })

});

function initTablePaginationAndSorting() {
    
    if ($('.jtable').html() != null) {
        jtable = $(".jtable").dataTable({
            bInfo: false,
            sPaginationType: "full_numbers",
            bAutoWidth: true,
            
            oLanguage: {
                sZeroRecords: "No se encontraron resulados",
                sSearch: "Buscar:",
                sProcessing: "Procesando",
                sLengthMenu: 'Mostrar <select><option value="10">10</option><option value="20">20</option></select> registros',
                oPaginate: {
                    sFirst: "Primero",
                    sLast: "Último",
                    sNext: "Siguiente",
                    sPrevious: "Previo"
                }
            }
        });
   }
}

            //popup con html dinamico
            function show_popup(data) {
                    $.fn.colorbox(
                    {
                        open: true,
                        overlayClose: false,
                        close: "",
                        opacity: opacity_colorbox,
                        scrolling: false,
                        html: data,
                        onComplete: handlePopupOnComplete
                    });
                      		 
            }
            // se puede extender este método implementando la funcion popupOnComplete
            function handlePopupOnComplete() {
       
                executeJqueryFormPlugins();
                if (typeof popupOnComplete == "function") {
                    popupOnComplete();
                }
            }
            
           
           function close_popup_and_reload() {

               close_popup();
               window.location.reload();
           }

           function close_popup() {
               $.fn.colorbox.close();
           }
           //se cierra el popup y recarga el contenido de .updatePanel
           function close_popup_and_reload_content(url) {
               close_popup();
               reload_content(url);
           }
           //se cierra el popup y recarga el contenido de la pagina de referencia con la url
           function Close_popup_and_reload_content_page(url) {
                   close_popup();
                   reload_content_page(url);
               }
           //se cierra el popup y regarga el contenido a un div con id especifico
           function close_popup_and_reload_target_id(url, targetId) {
               close_popup();
               reload_content_to_target_id(url, targetId);
           }
           //los siguientes casos son especiales, vea la descripcion en JqueryMvcAjaxGrid.js
           function close_popup_and_reload_content_after_update(url) {
               close_popup();
               reload_content_after_update(url);
           }

           function close_popup_and_reload_content_after_create(url) {
               close_popup();
               reload_content_after_create(url);
           }
           
           
           ////script para el helper jqueryAjaxActionLink y el jqueryAjaxActionButton
           function jqueryAjax(httpMethod, actionLink, selectedId, callBackFunctionName) {
               if (selectedId != "") {
                   var selectValueParamName = getSelectValueParamName($("#" + selectedId));
                   var selectValue = getSelectedValue($("#" + selectedId));
               }
               var dataString = getSelectedValueDataString(selectValue,selectValueParamName);
               jQuery.ajax({
                   type: httpMethod,
                   url: actionLink,
                   data: dataString,
                   cache: false,
                   success: callBackFunctionName
               });
           }
           
           ////script para el helper jqueryAjaxFileUpload
           function ajaxFileUpload(url,fileElementId) {
               $.ajaxFileUpload
                (
                    {
                        url: url,
                        secureuri: false,
                        fileElementId: fileElementId,
                        dataType: 'json',
                        success: function(data, status) {
                            if (typeof (data.error) != 'undefined') {
                                if (data.error != '') {
                                    alert(data.error);
                                } else {
                                    alert(data.msg);
                                }
                            }
                        },
                        error: function(data, status, e) {
                            alert("error ocurrido: " + e);
                        }
                    }
                )
           }

           ////script para el helper jqueryCascadingDropDownList
           function triggerCascadingDropDownListEvent(callerId, jsonData) {
               //alert(callerId);
               //alert(jsonData);
               $.each(jsonData, function(i, val) {
                   //alert(val.Url + " " + val.TargetId);
                   cascadingDropDownListHandler(callerId, val.Url, val.TargetId, val.OnSuccessCallBackFunctionName);
               })
           }

           function cascadingDropDownListHandler(callerId, url, targetId, onSuccess) {

               var valorSeleccionado = getSelectedValue($("#" + callerId));
               if (valorSeleccionado != "") {
                   var selectedValueParamName = getSelectValueParamName($("#" + callerId));
                   var dataString = getSelectedValueDataString(valorSeleccionado, selectedValueParamName);
                   //alert(dataString);
                   //alert(onSuccess);
                   $.ajax({
                       url: url,
                       type: "POST",
                       cache: false,
                       data: dataString,
                       success: onSuccess != "no_callback" ? eval(onSuccess) : function(data) {
                           $("#" + targetId).html(data);
                           $("#" + targetId).show(500);
                       }
                   });
               }
           }
           //las siguientes funciones son auxiliares, sirve para apoyar los helpers anteriores
           function getSelectedValue(callerId) {
               switch (callerId.attr("type")) {
                   case "checkbox":
                       return callerId.attr("checked");
                       break;
                   default:
                       return callerId.val(); 
               }
           }

           function getSelectedValueDataString(selectedValue, selectedValueParamName) {
               return selectedValue != undefined ? selectedValueParamName + "=" + selectedValue : "{}";
           }

           function getSelectValueParamName(callerId) {
               var selectedValueParameterName = get_second_class_parameter(callerId);
               if (!is_undefined_or_null_or_empty(selectedValueParameterName)) {
                   return selectedValueParameterName.split("-")[1];
               } else {
                   switch (callerId.attr("type")) {
                       case "checkbox":
                           return "checkBoxSelectedValue";
                           break;
                       default:
                           return "selectedValue";
                   }
               }
           }

           function refresh_updatePanel() {
               $(".updatePanel").trigger("refresh");
           }
           
           function no_callback() {}
           function test_callback() {alert("test funciona"); }

           function is_undefined_or_null_or_empty(value) {
               return value == undefined || value == "" || value == null;
           } 
           function redirecto_to() {

               $(location).attr('href', url_to_redirect_when_session_close);

           }
           
           function get_srcElement(e) {
               var targ;
               if(!e) var e = window.event;
               if(e.target) targ = e.target;
               else if (e.srcElement) targ = e.srcElement;
               if(targ.nodeType == 3) //estoy es para arreglar el bug de safari
                    targ = targ.parentNode;
               return targ;
           } 
            
           function get_second_class_parameter(target) {
               if(target.attr("class")!=undefined) return target.attr("class").split(" ")[1];
           }

           function string_insert_at(string_origen, pos, string_destino) {
               return string_origen.substr(0, pos) + string_destino + string_origen.substr(pos);
           }

           function every_chkbx_deselected_except(exceptionTargetClass) {
               var resultado = true;
               $("input[type=checkbox]").each(function(index) {
                   if ($(this).attr("checked")&&exceptionTargetClass!=undefined&&!$(this).hasClass(exceptionTargetClass)) {
                       resultado = false;
                   }
               });
               return resultado;
           }

           