﻿
function actionCustomFormatter (cellvalue, options, rowdata) {

        var l = options.colModel.link;
        return '<a href="/' + l.area + '/' + l.controller + '/' + l.action + '/' + options.rowId +
               '" rel="localize[' + l.lang + ']" >' + l.lang + '</a>';
}

function actionCustomFormatterJavascript(cellvalue, options, rowdata) {

    var l = options.colModel.link;
    return '<a href="javascript:void(0);" rel="localize[' + l.lang + ']" onclick="' + l.method + '(\''+ options.rowId + '\')" >' + l.lang + '</a>';
}

function adjustGrid(id) {
        /*Esto no está funcionando bien...*/
        /*$("table#" + id).setGridWidth($("table#" + id).parents(".ui-tabs-panel:first").width());*/
}

function htmlEncode(value) {
    return $('<div/>').text(value).html();
}

function htmlDecode(value) {
    return $('<div/>').html(value).text();
}


function focusWatermark(elementId, text) {
    var element = $('input#' + elementId); 
    if (element.val() == text) {
        element.val('');
        element.toggleClass('tbWaterMark');
    }
}

function blurWatermark(elementId, text) {
    var element = $('input#' + elementId);
    if (element.val() == '') {
        element.val(text);
        var selectedValueControlId = elementId + 'SelectedValue';
        var selectedValueControl = $('input:hidden#' + selectedValueControlId);
        if (selectedValueControl) {
            selectedValueControl.val(''); //Saco el valor seleccionado del hidden.
        }
        element.toggleClass('tbWaterMark');
    }
}

function filterNumeric(e) {
    
    if ([e.keyCode || e.which] == 9) //this is to allow tab
        return true;
    if ([e.keyCode || e.which] == 8) //this is to allow backspace
        return true;    
    if ([e.keyCode || e.which] < 48 || [e.keyCode || e.which] > 57)
        e.preventDefault ? e.preventDefault() : e.returnValue = false;
}

function filterDecimal_allowsNegative(e) {
    if ([e.keyCode || e.which] == 39) //this is to allow right arrow
        return true;
    if ([e.keyCode || e.which] == 37) //this is to allow left arrow
        return true;
    if ([e.keyCode || e.which] == 9) //this is to allow tab
        return true;   
    if ([e.keyCode || e.which] == 8) //this is to allow backspace
        return true;
    if ([e.keyCode || e.which] == 46 || [e.keyCode || e.which] == 45) //Acepto punto y el - para números negativos
        return true;
    if ([e.keyCode || e.which] < 48 || [e.keyCode || e.which] > 57)
        e.preventDefault ? e.preventDefault() : e.returnValue = false;
}

function getCursorSelection(textBox) {
    var pos = -1;
    var len = -1;
    if (document.selection) {
        //IE
        var range = document.selection.createRange();
        len = range.text.length;
        pos = Math.abs(range.moveStart("character", -1000000));
        return { pos: pos, len: len };
    } else {
        if (textBox.selectionStart != undefined && textBox.selectionEnd != undefined) {
            pos = textBox.selectionStart;
            len = textBox.selectionEnd - pos;
            return { pos: pos, len: len };
        }
    }
    return undefined;
}


function validateDecimal(ev) {
    var $target = $(ev.target);
    var val = $target.val();
    var point = val.indexOf('.', 0) != -1; //Hay punto?
    var i = point ? val.indexOf('.', 0) : val.length;
    var first = val.substr(0, i);    //Parte a la izquierda del punto
    var second = point ? val.substr(i + 1, val.length - i) : "";  //Parte a la derecha del punto
    var isValid = true;
    var cursorSelection = getCursorSelection(ev.target);
    if ($target.attr('scale') && $target.attr('prec') && (cursorSelection != undefined)) {
        if (cursorSelection.pos > first.length) {
            isValid = (second.length - cursorSelection.len < $target.attr('scale'));
        }
        isValid = isValid && ((first.length + second.length - cursorSelection.len) < $target.attr('prec')) &&
                !( cursorSelection.pos == val.indexOf('.', 0) && cursorSelection.len == 1) ;
    }

    return {
        point: point,
        first: first,
        second : second,
        prec: first.length + second.length,
        scale: second.length,
        isValid: isValid
    };
}

function filterDecimal(e) {

    if ([e.keyCode || e.which] == 39) //this is to allow right arrow
        return true;
    if ([e.keyCode || e.which] == 37) //this is to allow left arrow
        return true;
    if ([e.keyCode || e.which] == 9) //this is to allow tab
        return true;
    if ([e.keyCode || e.which] == 8) //this is to allow backspace
        return true;

    var $target = $(e.target);
    var dec = validateDecimal(e);
    if ([e.keyCode || e.which] == 46) { //Acepto punto (si no existe)
        if (dec.point) {
            e.preventDefault ? e.preventDefault() : e.returnValue = false;
        } else {
            return true;
        }
    }

    if ([e.keyCode || e.which] < 48 || [e.keyCode || e.which] > 57) {
        e.preventDefault ? e.preventDefault() : e.returnValue = false;
    } else if (!dec.isValid) {
        e.preventDefault ? e.preventDefault() : e.returnValue = false;
    }
}

/*
function filterDecimal(e) {

    if ([e.keyCode || e.which] == 9) //this is to allow tab
        return true;
    if ([e.keyCode || e.which] == 8) //this is to allow backspace
        return true;
    if ([e.keyCode || e.which] == 46) //Acepto punto
        return true;
    if ([e.keyCode || e.which] < 48 || [e.keyCode || e.which] > 57)
        e.preventDefault ? e.preventDefault() : e.returnValue = false;
}*/



function filterAlfabetical(e, _object) {
    if ([e.keyCode || e.which] == 9) //this is to allow tab
        return true;
    if ([e.keyCode || e.which] == 8) //this is to allow backspace
        return true;

    if ([e.keyCode || e.which] < 65
    || ([e.keyCode || e.which] > 90 && [e.keyCode || e.which] < 97) 
    ||  [e.keyCode || e.which] > 122) {
        e.preventDefault ? e.preventDefault() : e.returnValue = false;
    }


//    var letter = [e.keyCode || e.which];
//    if ([e.keyCode || e.which] >= 97 && [e.keyCode || e.which] <= 122) {
//        alert(String.fromCharCode(letter - 32));
//        _object.value = _object.value.toUpperCase();
//    }
    
}

function trace(s) {
    if (this.console && typeof console.log != "undefined")
        console.log(s);    
}

function param() {
    this.array = new Array(1);

    this.setValue = function(v) { this.array[0] = v; }
    this.getValue = function() { return this.array[0]; }
}


//Fechas
function InicializeDatePicker(datepickerId, asociated, limit) {
    $("#" + datepickerId).datepicker({
        showOn: 'button',
        buttonImageOnly: true,
        changeMonth: true,
        changeYear: true,
        dateFormat: 'dd/mm/yy',
        minDate: '-1d',
        hideIfNoPrevNext: true,
        buttonImage: '/Content/img/datepicker.gif',
        onSelect: function(dateText, inst) {
            $("#" + asociated).datepicker('option', limit, dateText);
        },
        open: function () {
            $("#ui-datepicker-div").css("z-index", $(this).parent().css("z-index") + 1);
        } 
    });
}

function InicializeDatePickerNoMinDate(datepickerId, asociated, limit) {
    $("#" + datepickerId).datepicker({
        showOn: 'button',
        buttonImageOnly: true,
        changeMonth: true,
        changeYear: true,
        dateFormat: 'dd/mm/yy',        
        hideIfNoPrevNext: true,
        buttonImage: '/Content/img/datepicker.gif',
        onSelect: function(dateText, inst) {
            $("#" + asociated).datepicker('option', limit, dateText);
        }
    });
}

function typeDateFormat(value) {
    var val1 = /^[\d]?\d\D\D\D$/.test(value);
    var val2 = /^\d\d$/.test(value) || /^\d\d\d\d$/.test(value);
    var val4 = /^\d\d\d\d\d\d+/.test(value);
    var val3 = /^\d?\d[\/-]\d?\d[\/-]\d\d+/.test(value);
    var val5 = /^[\d]?\d\D\D\D\d\d+/.test(value);
    if (value == "") {
        return true;
    }
    else {
        return (val1 || val2 || val3 || val4 || val5);
    }
}

function typeIntFormat(value) {
    var val = /^\d+$/.test(value);
    return val;
}

function ParseDate(cId) {
    var day, month, year;
    if ($("#" + cId).val() != "") {
        if (typeDateFormat($("#" + cId).val())) {
            day = $("#" + cId).datepicker('getDate').getDate();
            month = $("#" + cId).datepicker('getDate').getMonth() + 1;
            year = $("#" + cId).datepicker('getDate').getFullYear();
            $("#" + cId).val(day + "/" + month + "/" + year);
            day = ""; month = ""; year = "";
        }
        else {
            $("#" + cId).val("");
        }
    }
}

function initJqGridData(gridId, keyName, data, sortName, sortOrder) {
    var $table = $('#' + gridId);
    
    var sort_order = sortOrder;
    if (!sort_order) {
        sort_order = "asc";
    }
    
    if (!sortName) {
        sortName = $table.getGridParam("sortname");
    }
    $.each(data, function() {
        var result = $table.addRowData(this[keyName], this);
    });

    $table.setGridParam({ sortname: sortName, sortorder: sort_order }).trigger('reloadGrid');
}

function addJqGridPostData(gridId, formId, dataPrefix, colNames) {
    //creo un contenedor para los inputs
    var divClass = "jqGridPostData-" + gridId;
    var $container = $('#' + formId + " ." + divClass);
    if ($container.length == 0) {
        $container = $("<div />").hide().addClass(divClass).appendTo($('#' + formId));
    }
    $container.html('');

    //agrego los inputs
    var $table = $('#' + gridId);
    var tableIDs = $table.getDataIDs();
    var i = 0;
    $.each(tableIDs, function() {
        var rowData = $table.getRowData(this);
        var pre = dataPrefix + "[" + i + "].";
        $.each(colNames, function() {
            var name = pre + this;
            $container.append($("<input type='hidden'/>").attr('name', name).attr('value', rowData[this]));
        });
        i++;
    });
}


    function collapseSingle(id) {
        $("#" + id).hide();
        $("#" + id.replace('table_', 'exp_')).show();
        $("#" + id.replace('table_', 'coll_')).hide();
    }

    function expandSingle(id) {
        $("#" + id).show();
        $("#" + id.replace('table_', 'coll_')).show();
        $("#" + id.replace('table_', 'exp_')).hide();
    }

    function collapse() {
        $("[type=collapse]").hide();
        $("[type=collapseBtn]").hide();
        $("[type=expandBtn]").show();
    }
    function expand() {
        $("[type=collapse]").show();
        $("[type=collapseBtn]").show();
        $("[type=expandBtn]").hide();
    }
