// JavaScript Document

//begin desabilitar teclas 
document.onkeydown = function(){  
//116->f5 
//122->f11 window.event.keyCode == 122 ||
if (window.event && (window.event.keyCode == 116)){ 
window.event.keyCode = 505;  
} 

if (window.event.keyCode == 505){  
return false;  
}  

if (window.event && (window.event.keyCode == 8)) 
{ 
valor = document.activeElement.value; 
if (valor==undefined) { return false; } //Evita Back en página. 
else 
{ 
if (document.activeElement.getAttribute('type')=='select-one') 
    { return false; } //Evita Back en select. 
if (document.activeElement.getAttribute('type')=='button') 
    { return false; } //Evita Back en button. 
if (document.activeElement.getAttribute('type')=='radio') 
    { return false; } //Evita Back en radio. 
if (document.activeElement.getAttribute('type')=='checkbox') 
    { return false; } //Evita Back en checkbox. 
if (document.activeElement.getAttribute('type')=='file') 
    { return false; } //Evita Back en file. 
if (document.activeElement.getAttribute('type')=='reset') 
    { return false; } //Evita Back en reset. 
if (document.activeElement.getAttribute('type')=='submit') 
    { return false; } //Evita Back en submit. 
else //Text, textarea o password 
{ 
    if (document.activeElement.value.length==0) 
        { return false; } //No realiza el backspace(largo igual a 0). 
    else 
        { document.activeElement.value.keyCode = 8; } //Realiza el backspace. 
} 
} 
} 
} 
//end desabilitar teclas 
 
if(history.forward(1)){
history.replace(history.forward(1));
}


function NoBack(){ history.go(1) } 

function MM_swapImgRestore() { //v3.0
  var i,x,a=document.MM_sr; for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++) x.src=x.oSrc;
}

function MM_findObj(n, d) { //v4.01
  var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
  if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
  if(!x && d.getElementById) x=d.getElementById(n); return x;
}

function MM_swapImage() { //v3.0
  var i,j=0,x,a=MM_swapImage.arguments; document.MM_sr=new Array; for(i=0;i<(a.length-2);i+=3)
   if ((x=MM_findObj(a[i]))!=null){document.MM_sr[j++]=x; if(!x.oSrc) x.oSrc=x.src; x.src=a[i+2];}
}

function MM_reloadPage(init) {  //reloads the window if Nav4 resized
  if (init==true) with (navigator) {if ((appName=="Netscape")&&(parseInt(appVersion)==4)) {
    document.MM_pgW=innerWidth; document.MM_pgH=innerHeight; onresize=MM_reloadPage; }}
  else if (innerWidth!=document.MM_pgW || innerHeight!=document.MM_pgH) location.reload();
}
MM_reloadPage(true);

function MM_preloadImages() { //v3.0
  var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();
    var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++)
    if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}
}

		function DesactivaCOMP(lst)
		{
			var obj_res=document.getElementById(lst);	
			if (obj_res!=null)
			{		
					if (obj_res.style.display!='none')
					{
						obj_res.style.display='none';
					}
			}
		}

function chkSelect_OnMouseMove(tableRowId, checkBox)
				{
					if(checkBox.checked == false)
						tableRowId.style.backgroundColor = "#ffffcc";
				}

				function chkSelect_OnMouseOut(tableRowId, checkBox, rowIndex)
				{
					if(checkBox.checked == false)
					{
						var bgColor;
						if(rowIndex%2 == 0)
							bgColor = "#ffffff";
						else
							bgColor = "#FAE8E8";
						tableRowId.style.backgroundColor = bgColor;
					}
				}

				function chkSelect_OnClick(tableRowId,checkBox, rowIndex)
				{
					var bgColor;
					if(rowIndex%2 == 0)
						bgColor = "#ffffff";
					else
						bgColor = "#FAE8E8";
					if(checkBox.checked == true)
						tableRowId.style.backgroundColor = "gold";
					else
						tableRowId.style.backgroundColor = bgColor;
						
				}

				function chkSelectAll_OnClick(checkBox,datagrid)
				{
					re = new RegExp('_chkSelect$')
					res = new RegExp(datagrid)
					for(i = 0; i < 
						document.forms[0].elements.length; i++) 
					{
						elm = document.forms[0].elements[i]
						if (elm.type == 'checkbox') 
						{
							if (re.test(elm.id)&&res.test(elm.id)) 
							{
								elm.checked = checkBox.checked;
								var tableId = elm.parentNode.parentNode.id;
								var rowIndex = 
								tableId.substring(tableId.length - 1, 
								tableId.length);								
								chkSelect_OnClick(
								document.getElementById(tableId), 
								elm, rowIndex);
							}
						}
					} 
				}


//Mascara de Fechas
                                    var reOneOrMoreDigits = /[\d+]/;
                                    var reNoDigits = /[^\d]/gi;
                                    function doMask(textBox) 

                                    {
                                                var keyCode = event.which ? event.which : event.keyCode;
                                                // enter, backspace, delete and tab keys are allowed thru
                                                if(keyCode == 13 || keyCode == 8 || keyCode == 9 || keyCode == 46) return true;
                                                // get character from keyCode....dealing with the "Numeric KeyPad" 
                                                // keyCodes so that it can be used
                                                var keyCharacter = cleanKeyCode(keyCode);
                                                // grab the textBox value and the mask
                                                var val = textBox.value;
                                                var mask = textBox.mask;
                                                // simple Regex to check if key is a digit
                                                if(reOneOrMoreDigits.test(keyCharacter) == false)
                                                            return false;
                                                // get value minus any masking by removing all non-numerics
                                                val = val.replace(reNoDigits,'');                             
                                                // add current keystroke
                                                val += keyCharacter;
                                                // mask it...val holds the existing TextBox.value + the current keystroke
                                                textBox.value = val.maskValue(mask);
                                                setCaretAtEnd(textBox);
                                                return false;
                                    }

                                    // puts starting chars in field
                                    function onFocusMask(textBox) 
                                     {
                                                var val = textBox.value;
                                                var mask = textBox.mask;
                                                if(val.length == 0 || val == null) 

                                                {
                                                            var i = mask.indexOf('#');
                                                            textBox.value = mask.substring(0,i);
                                                }
                                               setCaretAtEnd(textBox);
                                                // set just in case.
                                               textBox.maxlength = mask.length;
                                    }

                                    // blank field if no digits entered

                                    function onBlurMask(textBox) 

                                                {
                                                           var val = textBox.value;
                                                          // if no digits....nada entered.....blank it.
                                                            if(reOneOrMoreDigits.test(val) == false) {
                                                            textBox.value = '';
                                                }

                                    }

                                    String.prototype.maskValue = function(mask) 
                                    {
                                                var retVal = mask;
                                                var val = this;
                                                //loop thru mask and replace #'s with current value one at a time
                                                // better way of doing this ???
                                                for(var i=0;i<val.length;i++) 
                                                {
                                                            retVal = retVal.replace(/#/i, val.charAt(i));
                                                }
 
                                                // get rid of rest of #'s
                                                retVal = retVal.replace(/#/gi, "");
                                                return retVal;
                                    }
                                    // The Numeric KeyPad returns keyCodes that ain't all that workable.
                                    //
                                    // ie: KeyPad '1' returns keyCode 97 which String.fromCharCode converts to an 'a'.
                                    //
                                    // This cheesy way allows the Numeric KeyPad to be used
                                    function cleanKeyCode(key)
                                    {
                                                switch(key)
                                                {
                                                            case 96: return "0"; break;
                                                            case 97: return "1"; break;
                                                            case 98: return "2"; break;
                                                            case 99: return "3"; break;
                                                            case 100: return "4"; break;
                                                            case 101: return "5"; break;
                                                            case 102: return "6"; break;
                                                            case 103: return "7"; break;
                                                            case 104: return "8"; break;
                                                            case 105: return "9"; break;
                                                            default: return String.fromCharCode(key); break;
                                                }
                                    }
                                   // From:

                                    function setCaretAtEnd (field) 

                                    {
                                               if (field.createTextRange) 

                                                {
                                                            var r = field.createTextRange();
                                                            r.moveStart('character', field.value.length);
                                                             r.collapse();
                                                            r.select();
                                                }

                                    }

function validarmail(campo01){
   var chr;
   var arrobas=0;
   var puntos=0;
   var blancos=0;
   if (campo01.value.length!=0)
   {
		for (var i=0;i<campo01.value.length;i++)
		{
			chr=campo01.value.substring(i,i+1);
			if ((chr=="@"))
			   arrobas=arrobas+1;
			if ((chr=="."))
			   puntos=puntos+1;
			if ((chr==" "))
			   blancos=blancos+1;
		}
        if ((blancos!=0) || (arrobas!=1)  ||  (puntos<1))
        {
           return true;
        }
   }
return false;
}

function acceptCaracteres(e)
                {
                                tecla = (document.all) ? e.keyCode : e.which; 
                                if (tecla!=92 && tecla!=124 && tecla!=60 &&  tecla!=62) return true; //Tecla de retroceso
                                patron = /\d/; //Acepta números 
                                te = String.fromCharCode(tecla); 
                                return patron.test(te); 
                }   
               
function EvaluaNumeros(cadena, obj)
{
    opc = false; 
    if (cadena == "%d") 
        if (event.keyCode > 47 && event.keyCode < 58) 
            opc = true;             
            if(opc == false) 
                event.returnValue = false; 
                }

function EvaluaLetrasyNumeros(e)
{		
       tecla = (document.all) ? e.keyCode : e.which; 
       //if (tecla!=92 && tecla!=124 && tecla!=60 &&  tecla!=62) return true; //Tecla de retroceso
       patron = /[A-Za-z0-9_]/; //Acepta números y letras 
       te = String.fromCharCode(tecla); 
       return patron.test(te); 
}   

function EvaluaDigitos(e)
{		
       tecla = (document.all) ? e.keyCode : e.which; 
       //if (tecla!=92 && tecla!=124 && tecla!=60 &&  tecla!=62) return true; //Tecla de retroceso
       patron = /[0-9_]/; //Acepta digitos 
       te = String.fromCharCode(tecla); 
       return patron.test(te); 
}   
//Evalua Reales
function EvaluaNumReales(cadena, obj){ 
        opc = false;
        puntos=0;
         if (cadena == "%d")
            if (event.keyCode > 47 && event.keyCode < 58) opc = true; 
             if (cadena == "%f")
             { 
                if (event.keyCode > 47 && event.keyCode < 58) opc = true; 
                //if (event.keyCode == 44) opc = true; 
               
            } 
            if (event.keyCode == 46) opc = true;  //acepta punto decimal
				puntos=puntos+1;
			if (puntos>1) opc = false;
            if(opc == false) event.returnValue = false; 
            }
            
//valida fechas para formato correcto ---- INICIO

function esDigito(sChr){
var sCod = sChr.charCodeAt(0);
return ((sCod > 47) && (sCod < 58));
}
function valSep(oTxt){
var bOk = false;
bOk = bOk || ((oTxt.value.charAt(2) == "-") && (oTxt.value.charAt(5) == "-"));
bOk = bOk || ((oTxt.value.charAt(2) == "/") && (oTxt.value.charAt(5) == "/"));
return bOk;
}
function finMes(oTxt){
var nMes = parseInt(oTxt.value.substr(3, 2), 10);
var nRes = 0;
switch (nMes){
case 1: nRes = 31; break;
case 2: nRes = 29; break;
case 3: nRes = 31; break;
case 4: nRes = 30; break;
case 5: nRes = 31; break;
case 6: nRes = 30; break;
case 7: nRes = 31; break;
case 8: nRes = 31; break;
case 9: nRes = 30; break;
case 10: nRes = 31; break;
case 11: nRes = 30; break;
case 12: nRes = 31; break;
}
return nRes;
}
function valDia(oTxt){
var bOk = false;
var nDia = parseInt(oTxt.value.substr(0, 2), 10);
bOk = bOk || ((nDia >= 1) && (nDia <= finMes(oTxt)));
return bOk;
}
function valMes(oTxt){
var bOk = false;
var nMes = parseInt(oTxt.value.substr(3, 2), 10);
bOk = bOk || ((nMes >= 1) && (nMes <= 12));
return bOk;
}
function valAno(oTxt){
var bOk = true;
var nAno = oTxt.value.substr(6);
bOk = bOk && ((nAno.length == 2) || (nAno.length == 4));
if (bOk){
for (var i = 0; i < nAno.length; i++){
bOk = bOk && esDigito(nAno.charAt(i));
}
}
return bOk;
}
function valFecha(oTxt){
var bOk = true;
if (oTxt.value != ""){
bOk = bOk && (valAno(oTxt));
bOk = bOk && (valMes(oTxt));
bOk = bOk && (valDia(oTxt));
bOk = bOk && (valSep(oTxt));
if (!bOk){
alert("Fecha inválida");
oTxt.value = "";
oTxt.focus();
}
}
}
//valida fechas para formato correcto ---- FIN

var VentanaEmergente=0;
		function AbrirPopup(URLStr, left, top, width, height, idcat, valor)
		{			
			if(VentanaEmergente)
			{
				if(!VentanaEmergente.closed) VentanaEmergente.close();
			}
			VentanaEmergente = open(URLStr+'?Catreqid='+idcat+'&IdBusq='+valor,'PopupWin','titlebar=yes,toolbar=NO,location=NO,directories=NO,status=NO,scrollbars=yes, menubar=NO,resizable=yes,copyhistory=no,width='+width+',height='+height+',left='+left+', top='+top+',screenX='+left+',screenY='+top+'');
		}
              
   
    //abre la pagina de exportar a excel
    
    var VentanaDatosExportar=0;
		function VentanaExportar(URLStr, left, top, width, height, quien, donde, tipo)
		{			
			if(VentanaDatosExportar)
			{
				if(!VentanaDatosExportar.closed) VentanaDatosExportar.close();
			}
			VentanaDatosExportar = open(URLStr+'?opc='+quien+'&opc2='+donde+'&tipo_busqueda='+tipo, 'PopupWin', 'titlebar=yes,toolbar=NO,location=NO,directories=NO,status=NO,scrollbars=yes, menubar=NO,resizable=yes,copyhistory=no,width='+width+',height='+height+',left='+left+', top='+top+',screenX='+left+',screenY='+top+'');
		}
		
		function cerrarVentana(){
        //la referencia de la ventana es el objeto window del popup. Lo utilizo para acceder al método close
        VentanaDatosExportar.close()
        } 
		
  //Valida que solo se puedan escribir numeros reales con un punto decimal en la captura de precios unitarios
  
  		function EvaluateText(obj)
		{ 
          opc = false;      
          var valor = document.getElementById(obj.id).value;
          var puntos=0;
          if (valor.length>0)
          {
            for (var i=0;i<valor.length;i++)
		    {
			  chr = valor.substring(i,i+1);
			  if ((chr=="."))
			    puntos=puntos+1;
		    }
          }
          if (event.keyCode > 47 && event.keyCode < 58) 
            opc = true;            
          if (event.keyCode == 46)
          {
            puntos=puntos+1;
            if (puntos<=1)
              opc = true;  //acepta punto decimal
            else
              opc = false;   
          }      
          if(opc == false) 
            event.returnValue = false;     
        }
        
        	function EvaluateTextDigitos(obj)
		{ 
          
          opc = false;      
          var valor = document.getElementById(obj.id).value;
          var puntos=1;
          if (valor.length>0)
          {
            for (var i=0;i<valor.length;i++)
		    {
			  chr = valor.substring(i,i+1);
			  if ((chr=="."))
			    puntos=puntos+1;
		    }
          }
          if (event.keyCode > 47 && event.keyCode < 58) 
            opc = true;            
          if (event.keyCode == 46)
          {
            puntos=puntos+1;
            if (puntos<=1)
              opc = true;  //acepta punto decimal
            else
              opc = false;   
          }      
          if(opc == false) 
            event.returnValue = false;     
        }

        
        //Abre la ventana para los reportes
        
        var VentanaDatosBusqueda=0;
		function Reportes(URLStr, left, top, width, height, quien, donde,donde2, tipob)
		{
			if(VentanaDatosBusqueda)
			{
				if(!VentanaDatosBusqueda.closed) VentanaDatosBusqueda.close();
			}
			VentanaDatosBusqueda = open(URLStr+'?opc='+tipob+'&opc2='+donde+'&opc3='+quien+'&opc4='+donde2, 'PopupWin2', 'titlebar=NO,toolbar=NO,location=NO,directories=NO,status=yes,scrollbars=YES, menubar=NO,resizable=yes,copyhistory=no,width='+width+',height='+height+',left='+left+', top='+top+',screenX='+left+',screenY='+top+'');
		}

//evalua el enter para presionar el boton 
		
		function EvaluaEnter(obj, event)
		{ 
            if(event.which || event.keyCode)
            {
                if ((event.which == 13) || (event.keyCode == 13)) 
                {
                    document.getElementById(obj).click();
                    return false;
                }
            } 
            else 
            {
               return true
            } 
        }

