function validarCampos(str,classField,classFieldError){
	//recibe un string de tecto separado por comas donde el formato de cada item es <id del TAG Html> (<F,C,N,E,T>): (F) Fecha, (C) String, (N) numerico , (E) email,  (T) telefono, (X)* campo obligatorio
	//necesita Jquery 1.3.2
	array=str.split(',')
	for(var i=0 ; i<array.length ; i++){
		tipo=array[i].substring(array[i].indexOf('(')+1,array[i].indexOf(')'))
		id=trim('#'+array[i].substring(0,array[i].indexOf('(')))
		$(id).toggleClass(classField);
		
		//alert($(id).css(classField));
		if(array[i].indexOf('*')>-1){
			//alert('campo obligatorio '+id)
			if($(id).isEmpty()) $(id).toggleClass(classFieldError);
		}else{
			if(tipo=='F'){
				$(id).toggleClass(classFieldError);
			}
			if(tipo=='C'){
				//alert('E')
			}		
			if(tipo=='N'){
				//alert('E')
			}
			if(tipo=='E'){
				//alert('E')
			}
			if(tipo=='T'){
				//alert('E')
			}
		}
	}
}

/* 
 * Esta función genera "hiddens" de manera dinámica, y realiza el submit del form.
 */
 
function algo(firstValue, secondValue, urlValue) {
	//creo el primer hidden.
	firstElement = document.createElement("input");
	firstElement.setAttribute("type", "hidden");
	firstElement.setAttribute("name", "firstHidden");
	//currentElement.setAttribute("id", "hiddenName");
	firstElement.setAttribute("value", firstValue);
	//agrego al form el hidden creado.
	document.forms['formulario'].appendChild(firstElement);

	//verifico si viene un segundo valor como parámetro antes de crear el hidden.
	if (secondValue != '') {
		//creo el segundo hidden.
		secondElement = document.createElement("input");
		secondElement.setAttribute("type", "hidden");
		secondElement.setAttribute("name", "secondHidden");
		//currentElement.setAttribute("id", "hiddenName");
		secondElement.setAttribute("value", secondValue);
		//agrego al form el hidden creado.		
		document.forms['formulario'].appendChild(secondElement);
	}
	
	
	//seteo el action y realizo el submit.
	document.forms['formulario'].action = "./" + urlValue;
//	document.forms['formulario'].target = 'abajo';
	document.forms['formulario'].submit(); 
}

/* Autor: cristian.camon
 * 
 * Modificación de la funcion anterior para pasar otro parametro extra
 */
 
function algo2(firstValue, secondValue, otroValue, urlValue) {
	//creo el primer hidden.
	firstElement = document.createElement("input");
	firstElement.setAttribute("type", "hidden");
	firstElement.setAttribute("name", "firstHidden");
	//currentElement.setAttribute("id", "hiddenName");
	firstElement.setAttribute("value", firstValue);
	//agrego al form el hidden creado.
	document.forms['formulario'].appendChild(firstElement);

	//verifico si viene un segundo valor como parámetro antes de crear el hidden.
	if (secondValue != '') {
		//creo el segundo hidden.
		secondElement = document.createElement("input");
		secondElement.setAttribute("type", "hidden");
		secondElement.setAttribute("name", "secondHidden");
		//currentElement.setAttribute("id", "hiddenName");
		secondElement.setAttribute("value", secondValue);
		//agrego al form el hidden creado.		
		document.forms['formulario'].appendChild(secondElement);
	}
	//verifico si viene un tercer valor como parámetro antes de crear el hidden.
	if (otroValue != '') {
		//creo el tercer hidden.
		thirdElement = document.createElement("input");
		thirdElement.setAttribute("type", "hidden");
		thirdElement.setAttribute("name", "thirdHidden");
		//currentElement.setAttribute("id", "hiddenName");
		thirdElement.setAttribute("value", otroValue);
		//agrego al form el hidden creado.		
		document.forms['formulario'].appendChild(thirdElement);
	}
	
	
	//seteo el action y realizo el submit.
	document.forms['formulario'].action = "./" + urlValue;
//	document.forms['formulario'].target = 'abajo';
	document.forms['formulario'].submit(); 
}

function openVentana(urlValue) {
	var altoResolucion = window.screen.height; 
	var anchoResolucion = window.screen.width; 
	var top = (altoResolucion - 140) / 2; 
    var left = (anchoResolucion - 150) / 2; 

	venta_sec=window.open(urlValue,'Tipo', 'height=200, width=230, +, scrollbars=no, titlebar=no, status=no, resizable=false, top='+top+', left='+left);
}

/*======================================================================================
Funcion que elimina los blancos a la izquierda de un string.
Obj: Objeto que contiene Strin a eliminar blancos de la izquierda.
Retorna :Un Objeto
*/
function ltrim(obj) {
	var InString = obj;
	n = i = 0;
	
	while (i < InString.length) {
		if (InString.charAt(i) != " ") {
			n = i
			break
		}
		i++
	}
	if (n == 0 && i == InString.length)
		obj.value = ''
	else
		obj.value = InString.substring(n, InString.length)
	return obj;
}

/*======================================================================================
Elimina los blancos a la derecha de un string.
obj:	objeto que contiene string a eliminar blancos de la derecha
Retorna: Un Objeto	
*/
function rtrim(obj) {
	InString = obj;
	n = i = InString.length
	while (i > 0) {
		if (InString.charAt(i - 1) != " ") {
			n = i
			break
		}
		i--
	}
	if (n == InString.length && i == 0)
		obj.value = ''
	else
		obj.value = InString.substring(0, n);
	return obj;
}

/*======================================================================================
Elimina los blancos de los extremos de un string.
Obj:	objeto que contiene string a eliminar blancos de los extremos
Retorna: Un Objeto	
*/
function trim(Obj) {
	return rtrim(ltrim(Obj));	
}

function esNumerico(Char, Tipo) {
	var i;
	var f;
	var flg_pto=0;
	var flg_nroDec = 0;
	var flg_nroEnt = 0;
	
	if(Tipo == 'E')
		regexpr = '0123456789';
	else
		regexpr = '0123456789.';

	if(Char.length == 0) 
		return false;
	f=Char.length
	
	for (i=0;i<f;i++) {
		if(regexpr.indexOf(Char.charAt(i),0)==-1)
			return false;

		if(flg_pto == 1)
			flg_nroDec++;

		if(Char.charAt(i)=='.')
			flg_pto++;

		if(flg_pto == 0)
			flg_nroEnt++;

		if((Tipo == '7.5') && (flg_pto == 2 || flg_nroDec == 6 || flg_nroEnt == 3))
			return false;

		if((Tipo == '16.2') && (flg_pto == 2 || flg_nroDec == 3 || flg_nroEnt == 15))
			return false;
	}
	return true;
}
	
function verFecha(Obj) {
	if((!Mascara(Obj.value,'99/99/9999'))&&(!Mascara(Obj.value,'9/9/9999'))&&(!Mascara(Obj.value,'99/9/9999'))&&(!Mascara(Obj.value,'9/99/9999'))){
		alert('Formato de fecha es dd/mm/aaaa');
		Obj.value='';
		Obj.focus();
		return false;
	}
	else{
		if (!EsFecha(Obj.value,'dma')) {
			alert('Fecha incorrecta.');
			Obj.value='';
			Obj.focus();
			return false;
		}
	}
	return true;
}

function Mascara(InString, Mask) {
	LenStr = InString.length;
	LenMsk = Mask.length;

	if ((LenStr==0) || (LenMsk==0))
		return false;
	if (LenStr != LenMsk)
		return false;

	TempString="";

	for (Cont=0; Cont < LenStr; Cont++) {
		StrChar = InString.charAt(Cont);
		MskChar = Mask.charAt(Cont);

		if (MskChar == '9') {
			if(!esNumerico(StrChar, 'E'))
				return false;
		}
		else {
			if (MskChar != StrChar) // compara otros caracteres
				return false;		// ej: los / de la fecha
		}
	}
	return true;
}

function ValidarFormatoFecha(obj) {
	str_date = obj.value;
	arr_date = str_date.split('/');
	var RE_NUM = /^\-?\d+$/;
	
	if (arr_date.length != 3) return cal_error ("Fecha o formato de fecha inválido: '" + str_date + "'.\nFormato correcto es dd/mm/yyyy.");
	if (!arr_date[0]) return cal_error ("Fecha o formato de fecha inválido: '" + str_date + "'.\nLos valores del día del mes no son encontrados.");
	if (!RE_NUM.exec(arr_date[0])) return cal_error ("Valor del mes inválido: '" + arr_date[0] + "'.\nLos valores permitidos deben ser enteros.");
	if (!arr_date[1]) return cal_error ("Fecha o formato de fecha inválido: '" + str_date + "'.\nLos valores del mes no son encontrados.");
	if (!RE_NUM.exec(arr_date[1])) return cal_error ("Valor del mes inválido: '" + arr_date[1] + "'.\nLos valores permitidos deben ser enteros.");
	if (!arr_date[2]) return cal_error ("Fecha o formato de fecha inválido: '" + str_date + "'.\nLos valores del ańo no son encontrados.");
	if (!RE_NUM.exec(arr_date[2])) return cal_error ("Valor del ańo inválido: '" + arr_date[2] + "'.\nLos valores permitidos deben ser enteros.");

	var dt_date = new Date();
	dt_date.setDate(1);

	if (arr_date[1] < 1 || arr_date[1] > 12) return cal_error ("Valor del mes inválido: '" + arr_date[1] + "'.\nEl rango permitido es 01-12.");
	dt_date.setMonth(arr_date[1]-1);
	 
	if (arr_date[2] < 100) arr_date[2] = Number(arr_date[2]) + (arr_date[2] < NUM_CENTYEAR ? 2000 : 1900);
	dt_date.setFullYear(arr_date[2]);

	var dt_numdays = new Date(arr_date[2], arr_date[1], 0);
	dt_date.setDate(arr_date[0]);
	if (dt_date.getMonth() != (arr_date[1]-1)) return cal_error ("Valor del día del mes inválido: '" + arr_date[0] + "'.\nEl rango permitido es 01-"+dt_numdays.getDate()+".");

	return (dt_date)
}
	
function EsFecha(InString,formato) {
	if((!Mascara(InString,'99/99/9999'))&&(!Mascara(InString,'9/9/9999'))&&(!Mascara(InString,'99/9/9999'))&&(!Mascara(InString,'9/99/9999')))
		return false;

	//---- Agrega ceros a la fecha -----
	if (InString.substring(1,2)=="/")
	  InString="0"+InString

	if (InString.substring(4,5)=="/")
	  InString=InString.substring(0,3)+"0"+InString.substring(3,9)
	//----------------------------------
	
	if (formato == "dma"){
		dia=InString.substring(0,2);
		mes=InString.substring(3,5);
		anyo=InString.substring(6,10);
	}
	if (formato == "mda"){
		mes=InString.substring(0,2);
		dia=InString.substring(3,5);
		anyo=InString.substring(6,10);
	}
	if (formato == "amd"){
		anyo=InString.substring(0,4);
		mes=InString.substring(5,7);
		dia=InString.substring(8,10);
	}

//funcionalidad agregada para control de periodos
	if (formato == "ma"){
		dia = 01
		mes=InString.substring(0,2);
		anyo=InString.substring(3,7);
	}

	if (dia == '08') dia = '8';	// parseInt("08") == 10		base octogonal
	if (dia == '09') dia = '9';	// parseInt("09") == 11		base octogonal
	if (mes == '08') mes = '8';	// parseInt("08") == 10		base octogonal
	if (mes == '09') mes = '9'; // parseInt("09") == 11		base octogonal

	dia=parseInt(dia);
	mes=parseInt(mes);
	anyo=parseInt(anyo);

	if (anyo < 1900) return false;    // Anyo mayor a 1900 (por la Base de Datos)
	mes = mes - 1;  // El mes se representa del 0 al 11 (solo para la validación)
	esfecha = new Date(anyo,mes,dia);
	//esfecha = new Date();
	
	esfecha.setFullYear(anyo);
	esfecha.setMonth(mes);
	esfecha.setDate(dia);

	if (dia == esfecha.getDate()){
		if(mes == esfecha.getMonth()){
			if(anyo == esfecha.getFullYear()){
				return true;
			}
		}
	}		
	return false;
}

function comparaFecha(Obj1,Obj2,Band) {
	// Obj1: objeto que contiene la primera fecha 
	// Obj2: objeto que contiene la segunda fecha 
	String1 = Obj1.value;
	String2 = Obj2.value;
	var flag = Band;

	// Si los dia y los meses llegan con un valor menor que 10 
	// Se concatena un 0 a cada valor dentro del string  
	if (String1.substring(1,2)=="/") 
		String1="0"+String1;

	if (String1.substring(4,5)=="/")
		String1=String1.substring(0,3)+"0"+String1.substring(3,9);

	
	if (String2.substring(1,2)=="/")
		String2="0"+String2;

	if (String2.substring(4,5)=="/")
		String2=String2.substring(0,3)+"0"+String2.substring(3,9);

    var dia1=String1.substring(0,2);
	var mes1=String1.substring(3,5);
	var anyo1=String1.substring(6,10);
	var dia2=String2.substring(0,2);
	var mes2=String2.substring(3,5);
	var anyo2=String2.substring(6,10);

   if (dia1 == "08")	// parseInt("08") == 10		base octogonal
		dia1 = "8";
	if (dia1 == '09')	// parseInt("09") == 11		base octogonal
		dia1 = "9";
	if (mes1 == "08")	// parseInt("08") == 10		base octogonal
		mes1 = "8";
	if (mes1 == "09")	// parseInt("09") == 11		base octogonal
		mes1 = "9";
	if (dia2 == "08")	// parseInt("08") == 10		base octogonal
		dia2 = "8";
	if (dia2 == '09')	// parseInt("09") == 11		base octogonal
		dia2 = "9";
	if (mes2 == "08")	// parseInt("08") == 10		base octogonal
		mes2 = "8";
	if (mes2 == "09")	// parseInt("09") == 11		base octogonal
		mes2 = "9";
	dia1=parseInt(dia1);
	dia2=parseInt(dia2);
	mes1=parseInt(mes1);
	mes2=parseInt(mes2);
	anyo1=parseInt(anyo1);
	anyo2=parseInt(anyo2);   

	if (anyo1>anyo2){
		if(flag != "V2")
			Obj1.focus()
		//alert("salio por el anio");
		return false;		
	}
	if ((anyo1==anyo2) && (mes1>mes2)){
		if(flag != "V2")
			Obj1.focus()		//si modifican esta linea verificar el correcto funcionamiento de Subsidios de Cesantia (i_u)
		//alert("salio por el mes");
		return false;		
	}
	if(flag != "V1"){
		if ((anyo1==anyo2) && (mes1==mes2) && (dia1>dia2)){
			if(flag != "V2")
				Obj1.focus()	//si modifican esta linea verificar el correcto funcionamiento de Subsidios de Cesantia (i_u)
			//alert("salio por el dia");
			return false;
		}
	}else{
		if ((anyo1==anyo2) && (mes1==mes2) && (dia1>dia2)){
			Obj1.focus()		//si modifican esta linea verificar el correcto funcionamiento de Subsidios de Cesantia (i_u)
			//alert("salio por el dia");
			return false;
		}
	}
	return true;
}

function esVacio (a) {
    if (a == "")
		return true;
	else
		return false;
}

function cal_error (str_message) {
	alert (str_message);
	return null;
}

function ValidarFecha(Obj) {
	if (Obj.value != ''){
		if (!EsFecha(Obj.value,"dma")){			
			Obj.focus();
			Obj.select();
			return false;
		}
		if (!ValidarFormatoFecha(Obj)){
			Obj.focus();
			return false;
		}
	}
	return true;	
}

/*======================================================================================
Función que verifica que la entrada sea solo una cadena de String
objeto :	objeto a evalúar
Retorna : Un Booleano*/
function esCadenaString(objeto) {
	var i;
	var cant;
	Ban=1;

	if(objeto.length==0)
		return false;
	
	cant=objeto.length;
	var regexpr = /^[a-z,A-Z,' ',.,ń,Ń,á,é,í,ó,ú,Á,É,í,Ó,Ú,]+$/;

	for (i=0;i<cant;i++){
		if(!regexpr.test(objeto.charAt(i)))
			Ban=0;
	}

	if(Ban==0)
		{return false;}
	if (Ban==1)
		{return true;}
}
 
/*==========================================================================================
 * Esta funcion sirve para controlar si el parametro es un numero telefonico
 */  
function esNumeroTelefonico(objeto) 
{
	var i;
	var cant;
	Ban=1;

	if(objeto.length==0)
		return false;
	
	cant=objeto.length;
	var regexpr = /^[1,2,3,4,5,6,7,8,9,0,-]+$/;

	for (i=0;i<cant;i++)
	{
		if(!regexpr.test(objeto.charAt(i)))
			Ban=0;
	}

	if(Ban==0)
		{return false;}
	if (Ban==1)
		{return true;}
}
 
/*==========================================================================================
 * Esta funcion valida una direccion de Email.
 */ 
function validarEmail(str) 
{
	if (/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/.test(str))
	{
		return (true)
  	} 
  	else 
  	{
     	return (false);
  	}
}