﻿// JScript File
//funcion que llena un combo despues de un callback
function llenaComboPorId(idCombo, datos){
    var oCombo = document.getElementById(idCombo);
    var renglones = datos.split('|');
    var valores;
    var option;
    
    if (!oCombo){
        alert(idCombo + ' NO EXISTE');
        return;
    }
    
    if (!datos){
        return;
    }
    
    oCombo.length = 0;
    for (var i = 0; i < renglones.length; ++i){
        valores = renglones[i].split('^');
        option = document.createElement('OPTION');
        option.value = valores[0];
        option.innerHTML = valores[1];
        oCombo.appendChild(option);
    }
}

//funcion que llena un combo cuando ya tenemos la instancia del objeto
function llenaCombo(oCombo, datos){
    var renglones = datos.split('|');
    var valores;
    var option;
    
    if (!datos){
        return;
    }
    
    oCombo.length = 0;
    for (var i = 0; i < renglones.length; ++i){
        valores = renglones[i].split('^');
        option = document.createElement('OPTION');
        option.value = valores[0];
        option.innerHTML = valores[1];
        oCombo.appendChild(option);
    }
}

//funcion que se ejecuta a manera de onchange en un combo indicado y que dispara una llamada a CallServer 
//  para obtener datos en un combo dependiente
function combo_onchangeCallServer(comboClientId) {
    var oCombo = document.getElementById(comboClientId);
    if (!oCombo){
        alert(comboClientId + ' NO EXISTE');
        return;
    }

    var valor = oCombo.options[oCombo.selectedIndex].value;
    CallServer(comboClientId + '|'+valor, comboClientId + '_onchange');
}

//funcion que se asocia a objetos customValidator para validar que la opcion seleccionada en un combo
//  no sea la opcion -NO ESTABLECIDO- (indice 0)
function ValidaComboOpcionDiferenteNoEstablecido(source, arguments){
    if (arguments.Value == '0'||arguments.Value == 'XX')
        arguments.IsValid = false;
    else
        arguments.IsValid = true;
}

//Funcion que selecciona en una lista la opcion con value igual a thelist esta funcion viene de utilsValida.js en raiz de la bolsa en asp 3.0
function SetSelectedStringItems(theItem,theList)
{	if ( theList.length > 0)
	{	for (var i=0; i<theList.length; i++)
		{	var pos = theList.indexOf(",",i)
			if (pos != -1)
			{	var item = theList.substring(i,pos)
				i = pos
			}
			else
			{	var item = theList.substring(i,theList.length)
				i = theList.length
			}
				for (var k=0; k<theItem.length; k++)
			{	if (item == theItem.options[k].value)
				{	theItem.options[k].selected = true
					break
				}
			}
		}
	}
}

// Funcion que manda ejecutar un metodo del lado del servidor, para ser procesado
// el resultado por una funcion javascript
// parametros:
//   nombreMetodoServidor: Nombre de la funcion o metodo a ejecutar del lado del servidor.
//   parametrosVariables: Arreglo de nombres de variables queryString.
//   parametrosValores: Arreglo de valores de variables queryString.
//   NombreMetodoRegresoCliente: Nombre de la funcion javascript que procesa del
//                               lado del cliente el resultado del servidor.
function llamadaServidor(nombreMetodoServidor, parametrosVariables, parametrosValores, NombreMetodoRegresoCliente){
  var queryString = "";
  document.all.hdnNombreMetodoRegresoCliente.value = "";
  document.all.hdnNombreMetodoRegresoCliente.value = String(NombreMetodoRegresoCliente);
  for(i=0;i<parametrosVariables.length;i++){
    queryString += parametrosVariables[i] + "=";
    queryString += parametrosValores[i] + "&";
  }
  queryString = queryString.substr(0, queryString.length - 1);
  createXMLHttpRequest();
  xmlHttp.onreadystatechange = handleStateChange
  xmlHttp.open("GET", "?NombreMetodo=" + nombreMetodoServidor + "&" + queryString, true);
  xmlHttp.send(null);
}

function createXMLHttpRequest(){
  if (window.ActiveXObject){
    xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
  } 
  else if (window.XMLHttpRequest){
    xmlHttp = new XMLHttpRequest();
  }
}

function handleStateChange(){
  if(xmlHttp.readyState == 4){
    if(xmlHttp.status == 200){
      var arg = "" + xmlHttp.responseText;
      ReceiveServerData(arg, document.all.hdnNombreMetodoRegresoCliente.value);
    }
  }
}

function ReceiveServerData(arg, NombreMetodoRegresoCliente){
  NombreMetodoRegresoCliente = String(NombreMetodoRegresoCliente);
  window[NombreMetodoRegresoCliente](arg);
}

function MostrarObjeto(idObjeto, valor){
   var oStyle;
   var oObjetoEsconder = document.getElementById(idObjeto);
   oStyle = oObjetoEsconder.getAttribute('style');
   if (valor)
      oStyle.display =  'block';
   else
      oStyle.display =  'none';
}

function validaFechaAnteriorHoy(strFechaValidar)
{
    var hoy = new Date();
    var arrFecha = strFechaValidar.split("/");
    var fechaValidar = new Date(arrFecha[2], arrFecha[1]-1, arrFecha[0]);

    return ((hoy-fechaValidar)/(24*60*60*1000)).toFixed(0) >= 0;

}

function cumpleFormatoEmail(obj){
    var valor = obj.value;
    return cumpleFormatoEmailXValor(valor);
}

function cumpleFormatoEmailXValor(valor){
      var validador = /\b[A-Za-z0-9._%-]+@(?:[A-Za-z0-9-]+\.)+[A-Za-z]{2,4}\b/;
      var resultado = validador.exec(valor);
      if (resultado == null){
         return false;
      }
      return true;
}

//<input type="text"
// onblur="extractNumber(this,2,true);"
// onkeyup="extractNumber(this,2,true);"
// onkeypress="return blockNonNumbers(this, event, true, true);" />
function blockNonNumbers(obj, e, allowDecimal, allowNegative){
        var key;
        var isCtrl = false;
        var keychar;
        var reg;                       

        if(window.event) {
            key = e.keyCode;
            isCtrl = window.event.ctrlKey
        }
        else if(e.which) {
            key = e.which;
            isCtrl = e.ctrlKey;
        }                  

        if (isNaN(key)) return true;                  

        keychar = String.fromCharCode(key);                  

        // check for backspace or delete, or if Ctrl was pressed
        if (key == 8 || isCtrl){
            return true;
        }

        reg = /\d/;
        var isFirstN = allowNegative ? keychar == '-' && obj.value.indexOf('-') == -1 : false;
        var isFirstD = allowDecimal ? keychar == '.' && obj.value.indexOf('.') == -1 : false;                  

        return isFirstN || isFirstD || reg.test(keychar);
}

