function wrapSubstring(original, substring, prefix, suffix, fromIndex) {
    var result = original;
    pos = result.toUpperCase().indexOf(substring.toUpperCase(), fromIndex);
    if (pos >= 0) {
        result = result.substring(0, pos) + prefix + result.substring(pos, pos+substring.length) + suffix + result.substring(pos+substring.length);
        fromIndex = pos + suffix.length + prefix.length + substring.length;
        if (fromIndex<=result.length) {
            result = wrapSubstring(result, substring, prefix, suffix, fromIndex);
        }
    }
    return result;
}

function isAllDigits(argvalue) {
	argvalue = argvalue.toString();
	var validChars = "0123456789";
	var startFrom = 0;
	if (argvalue.substring(0, 2) == "0x") {
	   validChars = "0123456789abcdefABCDEF";
	   startFrom = 2;
	} else if (argvalue.charAt(0) == "0") {
	   validChars = "01234567";
	   startFrom = 1;
	} else if (argvalue.charAt(0) == "-") {
		startFrom = 1;
	}
	for (var n = startFrom; n < argvalue.length; n++) {
		if (validChars.indexOf(argvalue.substring(n, n+1)) == -1) return false;
	}
	return true;
}

function isAllDigitsOrDot(argvalue) {
    argvalue = argvalue.toString();
    var validChars = "0123456789.";
    var startFrom = 0;
    if (argvalue.substring(0, 2) == "0x") {
       validChars = "0123456789abcdefABCDEF";
       startFrom = 2;
    } else if (argvalue.charAt(0) == "0") {
       validChars = "01234567";
       startFrom = 1;
    } else if (argvalue.charAt(0) == "-") {
        startFrom = 1;
    }
    for (var n = startFrom; n < argvalue.length; n++) {
        if (validChars.indexOf(argvalue.substring(n, n+1)) == -1) return false;
    }
    return true;
}

// Selecciona todos los elementos de un select                                                                                                                                              
function selectAll(sel) {
    var i;
    for (i=0; i<sel.length; i++) {
        sel.options[i].selected = true;
    }
}

function overToolsMenu(){
    $("#filter_select").hide();
    $("#gDesdeMes").hide();
    $("#gDesdeAnio").hide();
    $("#gHastaMes").hide();
    $("#gHastaAnio").hide();
    $("#section_title").hide();
}

function outToolsMenu(){
    $("#filter_select").show();
    $("#gDesdeMes").show();
    $("#gDesdeAnio").show();
    $("#gHastaMes").show();
    $("#gHastaAnio").show();
    $("#section_title").show();
}

function formatCurrency(num) {
  num = num.toString().replace(/\$|\,/g,'');
  if(isNaN(num))
  num = "0";
  sign = (num == (num = Math.abs(num)));
  num = Math.floor(num*100+0.50000000001);
  cents = num%100;
  num = Math.floor(num/100).toString();
  if(cents<10)
  cents = "0" + cents;
  for (var i = 0; i < Math.floor((num.length-(1+i))/3); i++)
  num = num.substring(0,num.length-(4*i+3))+','+
  num.substring(num.length-(4*i+3));
  return (((sign)?'':'-') + num + '.' + cents);
}

function formatCurrencyNoCents(num) {
  num = num.toString().replace(/\$|\,/g,'');
  if(isNaN(num))
  num = "0";
  sign = (num == (num = Math.abs(num)));
  num = Math.floor(num*100+0.50000000001);
  cents = num%100;
  num = Math.floor(num/100).toString();
  if(cents<10)
  cents = "0" + cents;
  for (var i = 0; i < Math.floor((num.length-(1+i))/3); i++)
  num = num.substring(0,num.length-(4*i+3))+','+
  num.substring(num.length-(4*i+3));
  return (((sign)?'':'-') + num);
}

function enterKeyPressed(event) {
    var code = -1;
    if (window.event) { //IE
        code = event.keyCode;
    } else if (event.which) { //Netscape/Firefox/Opera
        code = event.which;
    }
    return (code == 13);
}
