function contarCaracteres(textarea, contador){
	
	var limite = 4000;
		
	if (textarea.value.length > limite) 
		textarea.value = textarea.value.substring(0, limite);
	else 
		contador.value = limite - textarea.value.length;
}

function contarCaracteresRespuesta(textarea, contador){
	
	var limite = 3800;
		
	if (textarea.value.length > limite) 
		textarea.value = textarea.value.substring(0, limite);
	else 
		contador.value = limite - textarea.value.length;
}

function selectRow(CB){
	if (CB.checked) 
		Pintar(CB);
	else
		DesPintar(CB);
}

function alwaysSelect(CB){
	CB.checked = true; 
}

function mensajeAlerta(mensaje) {
	alert(mensaje);
}

function Pintar(E){
	while (E.tagName!="TR")
		{E=E.parentNode;
	}
	E.className = "selectRow";
}

function DesPintar(E){
	while (E.tagName!="TR")
		{E=E.parentNode;
	}
	E.className = "";
}

function DesmarcarTodo(nomCBX){
	for (var i=1;i<document.forms[0].elements.length;i++) {
		var e = document.forms[0].elements[i];
		if (e.type == 'checkbox') {
			if (e.name == nomCBX) {
				if (e.checked) {
					DesPintar(e);
					e.checked = false;
				}
			}
		}
	}
}

function MarcarTodo(nomCBX){
	for (var i=1;i<document.forms[0].elements.length;i++) {
		var e = document.forms[0].elements[i];
		if (e.type == 'checkbox') {
			if (e.name == nomCBX) {
				if (e.checked) {
					DesPintar(e);
					e.checked = false;
				}
				if (e.checked == false) {
					Pintar(e);
					e.checked = true;
				}
			}
		}
	}
}

function MarqueTotal(CBX,nomCBX){
	if (CBX.checked) 
		MarcarTodo(nomCBX);
	else
		DesmarcarTodo(nomCBX);
}

function inhabilitarTeclaF11()
{
	var tecla=window.event.keyCode;
	if (tecla==122) {
		event.keyCode=0;
		event.returnValue=false;
	}
}

function validaNum(campoTipo,campoNumero) {
	
	if (campoTipo=='' && campoNumero=='')
		alert ('Debe seleccionar un Tipo y Escribir un Número de Documento');
	else {
		  if (campoTipo=='')
			 alert ('Debe seleccionar un Tipo de Documento');
		  else {
				if (campoNumero=='')
					alert ('Debe ingresar un Número de Documento');
				else
					return true;
			}
		 }
	return false;
}
//-----------------------------------------------------------------------
//Función para abrir una ventana , recibe el ancho y alto personalizados
//orlando_erazo@coomeva.com.co - 06/02/2004
//-----------------------------------------------------------------------
function abrirVentana(url,parametrosUrl, nombre, ancho, alto, retornar,maximizar) {
	
	izquierda = (screen.width) ? (screen.width-ancho)/2 : 0;
	derecha = (screen.height) ? (screen.height-alto)/2 : 0;
	var maxim = 'no';
	if(maximizar)
		maxim = 'yes';
	//Argumentos para crear la nueva ventana...
	argumentos = "width=" + ancho +",top=" + derecha +",left=" +izquierda + ",height=" + alto + ",toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=yes,resizable="+maxim+",copyhistory=no";
	// En caso de que la url tenga parametros para pasar por request...
	if (parametrosUrl != '')
		nuevaVentana = window.open(url+parametrosUrl, nombre, argumentos);
	else
	//En caso de que la url no tenga parametros...
		nuevaVentana = window.open(url, nombre, argumentos);
	if (nuevaVentana != null) {
		// Asignamos a la nueva ventana una referencia a la ventana que creo
		if (nuevaVentana.opener == null) {
			nuevaVentana.opener = self;
		}
	}
	if (retornar) {
		return nuevaVentana;
	}
	
}
//--------------------------------------------------------------------------------
//Función para validar que en un cadena no existan caracteres distintos a numeros
//diegof_agudelo@coomeva.com.co - 06/02/2004
//--------------------------------------------------------------------------------
function valString(cadena) {

	  var checkOK = "0123456789"; 
	  var checkStr = cadena; 
	  var allValid = true; 
	  var decPoints = 0; 
	  var allNum = ""; 
	  
	  for (i = 0; i < checkStr.length; i++) { 
		ch = checkStr.charAt(i); 
		for (j = 0; j < checkOK.length; j++) 
		  if (ch == checkOK.charAt(j))
			break; 
		  if (j == checkOK.length) { 
		    allValid = false; 
		  	break; 
		  } 
		  allNum += ch; 
	  }	
	  if (!allValid) { 
		return (false); 
	  }
	  return (true); 
}

function enviarFormulario() {
	document.forms.forma.submit();
}
/*-- ------------------------------------------------------------------------------------ --
  -- @Author		: federico_rocha@coomeva.com.co
  -- @Date 			: 23-Noviembre-20067 11:39am.
  -- @Modulo		: Varios
  -- @Caso de Uso	: Varios
  -- @Funcion		: Boolean getkey(e)
  -- @Descripcion	: Devuelve el caracter contenido en el evento.
  -- ------------------------------------------------------------------------------------ --*/
function getkey(e)
{
	timemean = 0;
        if (window.event)
        {
		//alert("window.event");
               return window.event.keyCode;
        }
        else if (e)
        {
		//alert("e.which");
                return e.which;
        }
        //alert("e.which");
        return null;
}
/*-- ------------------------------------------------------------------------------------ --
  -- @Author		: federico_rocha@coomeva.com.co
  -- @Date 			: 23-Noviembre-20067 11:39am.
  -- @Modulo		: Varios
  -- @Caso de Uso	: Varios
  -- @Funcion		: Boolean checking(e, goods)
  -- @Descripcion	: Valida si el evento tiene un caracter contenido en los caracteres
  					  permitidos
  -- ------------------------------------------------------------------------------------ --*/
function checking(e, goods)
{
	var key, keychar;
        key = getkey(e);
        //window.status = key;
        if (key == null)
		return true;
	// get character
	keychar = String.fromCharCode(key);
	keychar = keychar.toLowerCase();
        goods = goods.toLowerCase();
        // check goodkeys
        if (goods.indexOf(keychar) != -1)
		return true;

        // control keys
        if ( key==null || key==0 || key==8 || key==9 || key==13 || key==27 )
		return true;
       // else return false
        return false;
}
/*-- ------------------------------------------------------------------------------------ --
  -- @Author		: federico_rocha@coomeva.com.co
  -- @Date 			: 23-Noviembre-20067 11:39am.
  -- @Modulo		: Varios
  -- @Caso de Uso	: Varios
  -- @Funcion		: Boolean checkingLetter(keychar, goods)
  -- @Descripcion	: Valida si el caracter entrante está contenido en los caracteres
  					  permitidos
  -- ------------------------------------------------------------------------------------ --*/
function checkingLetter(keychar, goods)
{
        goods = goods.toLowerCase();
        // check goodkeys
        if (goods.indexOf(keychar) != -1)
		return true;
        return false;
}
/*-- ------------------------------------------------------------------------------------ --
  -- @Author		: federico_rocha@coomeva.com.co
  -- @Date 			: 23-Noviembre-20067 11:39am.
  -- @Modulo		: Varios
  -- @Caso de Uso	: Varios
  -- @Funcion		: Boolean blocking(e, bads)
  -- @Descripcion	: Valida si el evento tiene una letra contenida en los caracteres no
  					  permitidos
  -- ------------------------------------------------------------------------------------ --*/
function blocking(e, bads)
{
	var key, keychar;
        key = getkey(e);
        //window.status = key;
        if (key == null)
		return true;
       // get character
       keychar = String.fromCharCode(key);
       keychar = keychar.toLowerCase();
       bads = bads.toLowerCase();
       // check goodkeys
       if (bads.indexOf(keychar) != -1)
	       return false;
       return true;
}
/*-- ------------------------------------------------------------------------------------ --
  -- @Author		: federico_rocha@coomeva.com.co
  -- @Date 			: 23-Noviembre-20067 11:39am.
  -- @Modulo		: Varios
  -- @Caso de Uso	: Varios
  -- @Funcion		: Boolean validarNatural(e,fObject)
  -- @Descripcion	: Valida si es un valor natural
  -- ------------------------------------------------------------------------------------ --*/
function validarNatural(e,fObject)
{
	if(fObject)
	{
		return checking(e,'0123456789');
	}
	return true;
}

/*-- ------------------------------------------------------------------------------------ --
  -- @Author		: federico_rocha@coomeva.com.co
  -- @Date 			: 03-Febrero-2009 15:39pm.
  -- @Modulo		: Varios
  -- @Caso de Uso	: Varios
  -- @Funcion		: void validarObligatorios(arregloObj,nameClassError)
  -- @Descripcion	: Valida campos obligatorios parametrizados.
  -- ------------------------------------------------------------------------------------ --*/
function validarObligatorios(arregloObj,nameClassError){
	if(arregloObj.length){
		for(var k= 0;k < arregloObj.length;k++){
			var itemObj = document.getElementById(arregloObj[k][0]);
			var divItemObj = null;
			//alert('Validando algo más0-'+arregloObj[k][0]);
			//alert('Validando algo más1-'+arregloObj[k][1]);
			//alert('Validando algo más2-'+arregloObj[k][2]);
			if(arregloObj[k][2] != ''){		
				//alert('Validando algo más2-'+arregloObj[k][2]);
			 	divItemObj = document.getElementById(arregloObj[k][2]);
			}
			if(itemObj.value == ""){
				itemObj.className = nameClassError[k][0];
				if(divItemObj){
					//alert('Validando algo más22-'+nameClassError[k][0]);
					divItemObj.className = nameClassError[k][0];
				}
				itemObj.focus();
				alert('El Campo '+arregloObj[k][1]+' se encuentra vacio y es requerido');
				return false;
			}else{
				itemObj.className = nameClassError[k][1];
				if(divItemObj){
					//alert('Quitando algo más22-'+nameClassError[k][1]);
					divItemObj.className = nameClassError[k][1];
				}
			}					
		}
	}else{
		var itemObj = document.getElementById(arregloObj[0]);
		var divItemObj = null;
		if(arregloObj[2] != ''){
			//alert('Validando algo más2-'+arregloObj[2]);
			divItemObj = document.getElementById(arregloObj[2]);
		}		
		if(itemObj.value == ""){
			itemObj.className = nameClassError[0];
			if(divItemObj){
				//alert('Validando algo más22-'+nameClassError[0]);
				divItemObj.className = nameClassError[0];
			}
			itemObj.focus();
			alert('El Campo '+arregloObj[1]+' se encuentra vacio y es requerido');
			return false;
		}else{
			itemObj.className = nameClassError[1];
			if(divItemObj)
				divItemObj.className = nameClassError[1];
		}			
	}
	return true;
}