  function NewWindow(mypage,myname,w,h,scroll)
  {
    var win = null;
    LeftPosition = (screen.width) ? (screen.width-w)/2 : 0;
    TopPosition = (screen.height) ? (screen.height-h)/2 : 0;
    settings = 'height='+h+',width='+w+',top='+TopPosition+',left='+LeftPosition+',scrollbars='+scroll+''
    win = window.open(mypage,myname,settings)
    if(win.window.focus){win.window.focus();}
  }

//////
  
  function NewWindow2(mypage,myname,w,h,scroll)
  {
    var win = null;
    LeftPosition = 0;
    TopPosition = 0;
    settings = 'height='+h+',width='+w+',top='+TopPosition+',left='+LeftPosition+',scrollbars='+scroll+''
    win = window.open(mypage,myname,settings)
    if(win.window.focus){win.window.focus();}
  }
//////
  
  function NewWindow3(mypage,myname,w,h,scroll)
  {
    var win = null;
    LeftPosition = (screen.width) ? (screen.width-w)/2 : 0;
    TopPosition = (screen.height) ? (screen.height-h)/2 : 0;
    settings = 'height='+h+',width='+w+',top='+TopPosition+',left='+LeftPosition+',scrollbars='+scroll+',menubar=1, resizable=1'
    win = window.open(mypage,myname,settings)
    if(win.window.focus){win.window.focus();}
  }

// Crea efecto en las imagenes con los eventos del mouse
	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 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];}
	}
// ********************************************************

// Obliga a colocar solo numeros en un campo.
	function maskKeyPress(objEvent) 
	{
		var iKeyCode;  	
		iKeyCode = objEvent.keyCode;			
		if(iKeyCode>=48 && iKeyCode<=57) return true;
		return false;
	}
// Como usar:
// <input type="text" name="txtCedula" size="20" maxlength="20" onKeyPress="return maskKeyPress(event)">

// ********************************************************

// Produce un efecto visual
	function mOvr(src,color_entrada) {src.bgColor=color_entrada; src.style.cursor="default"; }
	function mOut(src,color_default) {src.bgColor=color_default; src.style.cursor="default"; }
// ********************************************************

// Valida los campos vacios
	function fm_campoVacio (campo, nombre){
		if (campo.value==""){
			alert ("Ingrese un valor en el campo " + nombre + ".");
			campo.focus();
			return false;
		}
		return true;
	}
// ********************************************************

// ini --  Esta funcion valida la cantidad de caracteres por textarea, 11-Jun-04
// aplicar esta funcion en el evento OnKeyPress y OnBlur
	function maxLenText(campo, maxChar)
	{
		if ( campo.value.length >= maxChar ) 
		{
			alert("Este campo sólo permite un máximo de " + maxChar + " caracteres ");
			campo.value=campo.value.substring(0,maxChar);
			campo.focus();
			return false;
		}
	}
// fin --  Esta funcion valida la cantidad de caracteres por textarea, 11-Jun-04

	// ******************************************************************************

  // Esta función se encarga de ir contando los caracteres ingresados en un textarea y va disminuyendo del textbox que indica la cantidad de caracteres permitidos,
  // y la dejo abierta al público que NO puede pensar y solo sabe copiar las cosas buenas.
  function textCounter(field, countfield, maxlimit) 
  {
    if (field.value.length > maxlimit)
      field.value = field.value.substring(0, maxlimit);
    else
      countfield.value = maxlimit - field.value.length;
  }
	// Como usar:
	// <textarea name="TxtResumen" rows="3" cols="80" wrap="physical" onKeyDown="textCounter(this.form.TxtResumen,this.form.remLen1,500);" onKeyUp="textCounter(this.form.TxtResumen,this.form.remLen1,500);"></textarea>
	// <input readonly type="text" name="remLen1" size="3" maxlength="3" value="500">

  // ******************************************************************************

	// Esta funcion cuenta los caracteres ingresados en un textarea
	function TextKeyDown(vlcampo, countfield, vlMax)
	{
		var campo = document.getElementById(vlcampo);
		if (campo.value.length > vlMax)
			campo.value = campo.value.substring(0, vlMax);
			countfield.innerText = vlMax -  campo.value.length;	
	}
	// Como usar:
	// <textarea name="txtDir_Emp" id="txtDir_Emp" accesskey="d" rows="4" cols="80" wrap="physical" onKeyDown="TextKeyDown(this.form.txtDir_Emp, txtCounter, 250);" onKeyUp="TextKeyDown(this.form.txtDir_Emp, txtCounter, 250);"></textarea>
	// <div style="margin-left: 5px"><span id="txtCounter" title="Cantidad máxima de caracteres permitidos">250</span></div>

  // ******************************************************************************

  /**************************************************************************************************************
 DESCRIPCION:  JS que automaticamente le da formato numerico a un campo, en el mimso momento en que se escribe.
***************************************************************************************************************/
function fm_formato_moneda(fld, milSep, decSep, e, vt_long) 
{
	var sep = 0;
	var key = '';
	var i = j = 0;
	var len = len2 = 0;
	var strCheck = '0123456789';
	var aux = aux2 = '';
	var whichCode = (window.Event) ? e.which : e.keyCode;
	if ((whichCode == 13) || (whichCode == 8) || (whichCode == 0)) return true;		// Enter, Back Space ó Tab.
	key = String.fromCharCode(whichCode);			// Get key value from key code
	if (strCheck.indexOf(key) == -1) return false;  // Not a valid key
	len = fld.value.length;
	for(i = 0; i < len; i++)
	if ((fld.value.charAt(i) != '0') && (fld.value.charAt(i) != decSep)) break;
	aux = '';
	for(; i < len; i++)
	if (strCheck.indexOf(fld.value.charAt(i))!=-1) aux += fld.value.charAt(i);
	aux += key;
	len = aux.length;
	if (len == 0) fld.value = '';
	if (len == 1) fld.value = '0'+ decSep + '0' + aux;
	if (len == 2) fld.value = '0'+ decSep + aux;
	if (len > 2) {
	aux2 = '';
	for (j = 0, i = len - 3; i >= 0; i--) {
	if (j == 3) {
	aux2 += milSep;
	j = 0;
	}
	aux2 += aux.charAt(i);
	j++;
	}
	fld.value = '';
	len2 = vt_long		// comentado por Carlos Muñoz ->  aux2.length;
	for (i = len2 - 1; i >= 0; i--)
	fld.value += aux2.charAt(i);
	fld.value += decSep + aux.substr(len - 2, len);
	}
	return false;
}
// ******************************************************************************
function fm_regresar(vtpag)
{
  window.location.href=vtpag
}

// ******************************************************************************
function fm_total(vtcampo, vttotal, vtvalor)
{
	var i;
	var sum = 0 ;
	var doc = 0;
	var vlcampo;
	for (i=1; i <= parseInt(vtvalor); i ++)
	{
		vlcampo = vtcampo+i;
		doc = eval("document.form1."+vlcampo+".value");
		if (doc == "") doc = 0;
		sum = parseInt(sum) + parseInt(doc);
	}
		//document.form1.txtTotalTR.value= sum;
		if (sum!="") {
			vttotal.value = sum;
		}else{
			vttotal.value = '';
		}

}
// ******************************************************************************
function fm_total2(vtcampo, vttotal, vtvalor)
{
	var i;
	var sum = 0 ;
	var doc = 0;
	var vlcampo;
	for (i=0; i <= parseInt(vtvalor); i ++)
	{
		vlcampo = vtcampo+i;
		doc = eval("document.form1."+vlcampo+".value");
		if (doc == "") doc = 0;
		sum = parseInt(sum) + parseInt(doc);
	}
		//document.form1.txtTotalTR.value= sum;
		if (sum!="") {
			vttotal.value = sum;
		}else{
			vttotal.value = '';
		}
}
// ******************************************************************************
function fm_porcen(vtvalor, vtcampo, vtcampo2)
{
	if(vtvalor != 0){
		vtcampo2.value=vtcampo.value;
	}else{
		if(vtvalor != ""){
			vtcampo2.value = '0';
		}else{
			vtcampo2.value = '';
		}
	} 
}
// ******************************************************************************
function fm_prod(vtcombo, vtcampo, vtcampo2, vttotal, vtcont, vtcont2)
//javascript:fm_prod('cmbPro', 'txtPor', 'txtPro', 'txtTotal', <%= ii %>, 5);
{
	var i;
	var j;
	var sum = 0;
	var sum2 = 0;
	var mult = 0;
	var vlcombo;
	var vlcampo;
	var vlcampo2;
	var vltotal;
	var combo;
	var porcen;
	var campo;
	var total;
	var sumtot;

	for (j=0; j <= parseInt(vtcont2); j ++)
	{
		
		vlcombo  = vtcombo+j+vtcont;
		vlcampo  = vtcampo+j;
		vlcampo2 = vtcampo2+j+vtcont;
		vltotal  = vttotal+vtcont;
		
		combo = eval("document.form1."+vlcombo);
		porcen = eval("document.form1."+vlcampo);
		campo  = eval("document.form1."+vlcampo2);
		total  = eval("document.form1."+vltotal);
				
		fm_porcen(combo.value, porcen, campo);
		
		if(combo.value != "" && combo.value != 0)
		{
			if(porcen.value != "")
			{
				mult = parseInt(combo.value) * parseInt(porcen.value); 
				sum = parseInt(sum) + parseInt(mult);
			}else{
				sum = parseInt(sum);
			}
		}else{
			sum = parseInt(sum);
		}

		if (campo.value == "")
		{
			sum2 = parseInt(sum2);
		}else{
			sum2 = parseInt(sum2) + parseInt(campo.value);
		}	
				
		if (sum != "" && sum != 0 && sum2 != "" && sum2 != 0) {
			sumtot = sum/sum2;
			total.value = fm_redondea(sumtot,1)
		}else{
			total.value = '';
		}
	}	
}		
// ******************************************************************************
function fm_sum_ind_nor(vtcampo, vtcampo2, vtconst, vtconst2, vttotal, vtcont)
//javascript:fm_sum_ind_nor('txtPorPes', 'txtTotal', 1, 9, 'txtIndNor', <%= VLCont-1 %>);
{
	var z;
	var sum = 0;
	var mult = 0;
	var vlcampo;
	var vlcampo2;
	var vltotal;
	var campo;
	var campo2;
	var total;
	var totConst;

	for (z=0; z <= parseInt(vtcont); z ++)
	{
		vlcampo  = vtcampo+z;
		vlcampo2 = vtcampo2+z;
		campo = eval("document.form1."+vlcampo);
		campo2 = eval("document.form1."+vlcampo2);
		total  = eval("document.form1."+vttotal);
			if(campo.value!="" && campo.value!=0)
			{
				if(campo2.value!="")
				{
					mult = (campo.value)/100 * campo2.value; 
					sum = sum + mult;
				}else{
					sum = sum;
				}
			}else{
				sum = sum;
			}
	}	

		if (sum != "" && sum != 0) {
			if (vtconst != "")
			{
				totConst =  vtconst2 - vtconst;
				sum = sum - vtconst;
				sum = (10 * sum);
				sum = sum /totConst;
			}
			total.value = fm_redondea(sum,1);
		}else{
			total.value = '';
		}

}		
// ******************************************************************************
/* Cambia un valor pasado con puntos y comas a un valor flotante */
/* Christian Diaz - CDV */
function fm_flotante(vlvalor) {
var valdeci
var valent
   valDeci = 0;
   valent = vlvalor.substr(0, vlvalor.length - (parseInt(2,10)+1));
   valDeci = vlvalor.substr(vlvalor.length - 2);
   valent = eliminaChr(valent, ".");
   valent = valent + "." + valDeci;
   valent = parseFloat(valent);

return valent;
}
// ******************************************************************************

function eliminaChr (str1, charset)
{   
   var str2 = "";
   for (i = 0; i < str1.length; i++)
      if ((charset.indexOf(str1.charAt (i))) == -1)
         str2 += str1.charAt (i);
   return str2;
}

// ******************************************************************************
/* Redondea un numero con sus decimales */
function fm_redondea(nro,d) 
{ 
    var m = Math.pow(10,d); 
    var nro2 = nro * m; 
    return (Math.round(nro2) / m) ; 
}
// ******************************************************************************
/* Valida un Email */
function fm_val_email(vtEmail) 
{ 
	if( vtEmail.indexOf('@',0) <= 0  || vtEmail.indexOf(';',0) != -1
     || vtEmail.indexOf(' ',0) != -1 || vtEmail.indexOf('/',0) != -1
     || vtEmail.indexOf(';',0) != -1 || vtEmail.indexOf('<',0) != -1
     || vtEmail.indexOf('>',0) != -1 || vtEmail.indexOf('*',0) != -1
     || vtEmail.indexOf('|',0) != -1 || vtEmail.indexOf('`',0) != -1
     || vtEmail.indexOf('&',0) != -1 || vtEmail.indexOf('$',0) != -1
     || vtEmail.indexOf('!',0) != -1 || vtEmail.indexOf('"',0) != -1
     || vtEmail.indexOf(':',0) != -1 || vtEmail.length < 5 )
	{ 
		return false; 
	}else{
		return true;
	}
}
// ******************************************************************************

function getHTTPObject() {
    var xmlhttp;
    /*@cc_on
    @if (@_jscript_version >= 5)
       try {
          xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
       } catch (e) {
          try {
             xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
          } catch (E) { xmlhttp = false; }
       }
    @else
    xmlhttp = false;
    @end @*/
    
		if (!xmlhttp && typeof XMLHttpRequest != 'undefined') {
       try {
          xmlhttp = new XMLHttpRequest();
       } catch (e) { xmlhttp = false; }
    }
    return xmlhttp;
}

var enProceso = false; // lo usamos para ver si hay un proceso activo
var http = getHTTPObject(); // Creamos el objeto XMLHttpRequest

// ******************************************************************************
//Coloca formato correcto de valores moneda
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 fm_return (vtPag)
	{
	  window.location.href=vtPag
	}
// ******************************************************************************
function getkey(e)						  			
{								  			
		if (window.event)                                         			
			return window.event.keyCode;                      			
		else if (e)                                               			
			return e.which;                                   			
		else                                                      			
			return null;								
} 
                                                                                     
/* chequea si la tecla presionada se encuentra en el string caracteresPermitidos,              
   y que no se vaya a colocar un caracter restringido mas de una vez */                        
function restringirN(e, caracteresPermitidos)   
{                                                                                     
		var key, keychar;                                                               
		key = getkey(e); 
		
		if (key == null) return true;                                                   
        
		// get character                                                                
		keychar = String.fromCharCode(key);                                             
		keychar = keychar.toLowerCase();                                                
		caracteresPermitidos = caracteresPermitidos.toLowerCase();                           
	
		// chequea si el caracter es un caracter permitido                              
		if (caracteresPermitidos.indexOf(keychar) != -1)                                
			return true;                                                            
        
		// control keys 
			if ( key==null || key==0 || key==8 || key==9 || key==13 || key==27 || key == 118 )
			return true;                                                            
        
		// else return false                                                            
		return false;                                                                   
}

function restringirNumerosTamano(e, caracteresPermitidos, tamano)   
{
		var key, keychar;
		key = getkey(e); 
		
		if (key == null) return true;

		// get character
		keychar = String.fromCharCode(key);
		keychar = keychar.toLowerCase();
		caracteresPermitidos = caracteresPermitidos.toLowerCase();
	
		// chequea si el caracter es un caracter permitido
		if (caracteresPermitidos.indexOf(keychar) != -1) {
			if (key.length<tamano) {
				return true;
			}
		}

		// control keys 
			if ( key==null || key==0 || key==8 || key==9 || key==13 || key==27 || key == 118 ) {
				if (key.length<tamano) {
					return true;
				}
			}

		// else return false
		return false;
}


function restringirFormatoFecha(e)
{
	return restringirN(e, '/0123456789');
}

function restringirFormatoTel(e)
{
	return restringirN(e, '()+0123456789');
}

function restringirOP(e)
{
	return restringirN(e, 'OP');
}

function restringirFormatoEntero(e)
{
	return restringirN(e, '0123456789');
}

function restringirLetNum(e)
{
	return restringirN(e, '0123456789abcdefghijklmnñopqrstuvwxyz .()@_-áéíóú:"",/');
}

// ******************************************************************************

function ValidarFecha(vtFech, vtColor){
	var campo = document.getElementById(vtFech);
	var valor = campo.value
	if (valor != '')
	{
		var Fecha= new String(valor);	// Crea un string
		var RealFecha= new Date();	// Para sacar la fecha de hoy
		// Cadena Año
		var Ano= new String(Fecha.substring(Fecha.lastIndexOf("/")+1,Fecha.length));
		// Cadena Mes
		var Mes= new String(Fecha.substring(Fecha.indexOf("/")+1,Fecha.lastIndexOf("/")));
		// Cadena Día
		var Dia= new String(Fecha.substring(0,Fecha.indexOf("/")));

		//Validamos que las tres cadenas esten llenas
		if (Ano == '' || Mes == '' || Dia == ''){
			alert('Introdujo un fecha inválida, por favor intentelo nuevamente');
			campo.value = '';
			campo.focus();
			campo.style.backgroundColor = vtColor;
			return false
		}
		// Valido el año
		if (isNaN(Ano) || Ano.length<4 || parseFloat(Ano)<1900){
			alert('Año inválido');
			campo.value = '';
			campo.focus();
			campo.style.backgroundColor = vtColor;
			return false
		}
		// Valido el Mes
		if (isNaN(Mes) || parseFloat(Mes)<1 || parseFloat(Mes)>12){
			alert('Mes inválido');
			campo.value = '';
			campo.focus();
			campo.style.backgroundColor = vtColor;
			return false
		}
		// Valido el Dia
		if (isNaN(Dia) || parseFloat(Dia)<1 || parseFloat(Dia)>31){
			alert('Día inválido');
			campo.value = '';
			campo.focus();
			campo.style.backgroundColor = vtColor;
			return false
		}
		if (Mes==4 || Mes==6 || Mes==9 || Mes==11 || Mes==2) {
			if (Mes==2 && Dia > 28 || Dia>30) {
				alert('Día inválido');
				campo.value = '';
				campo.focus();
				campo.style.backgroundColor = vtColor;
				return false
			}
		}
		
		//alert("Fecha correcta");
		campo.style.backgroundColor = '';
		return true;
	}
}

// ******************************************************************************

function fm_erase(vtId){document.getElementById(vtId).style.backgroundColor = '';}

// ******************************************************************************

