/*
 * Validador de formularios HTML
 * Autor				: JN
 * Ultima Modificacion 	: 05 Diciembre del 2000
 * 
 */

var swOK = 0;
var nEle = 0;
var sError = '';
var undefined;

function isNumeric(inputParam) {
	if ( inputParam.search(/\D/) != -1 ) {
		return false;
	} else {
		return true;
	}
}
function ltrim(inputParam){
	return inputParam.replace(/\s*(\w*)/, "$1");
}

function rtrim(inputParam){
	return inputParam.replace(/(\w*)\s*$/, "$1");
}

function trim(inputParam){
	return ltrim(rtrim(inputParam));
}

function validCharFilter(inputParam){
	var aux = inputParam.replace(/(\')/g, "\'\'");
	return trim(aux.replace(/\#*\"*\%*\>*\<*\+*/g , ""));
}

function ceroltrim( inputParam ){
	return inputParam.replace(/^\0+(\w*)/, "$1")
}

function lengthCompliant( inputParam, validLength) {
	if (inputParam.length != validLength) {
		return false;
	} else {
 		return true;
	}
}

function isEmpty(inputParam){
	if ( trim(inputParam) == "" ) {
		return true;
	} else {
		return false;
	}
}

function formatFieldMsg(inputParam) {
	return inputParam.substr(3).replace(/\_/g, " ");
}

function isValidRutFormat(inputParam){

	var arrRUT	= inputParam.split('-');

	if ( arrRUT.length != 2 ){
		return false;
	} 
	if ( arrRUT[0].length < 1 ) {
		return false;
	}
	if ( arrRUT[1].length != 1 ) {
		return false;
	}
	if ( ! arrRUT[1].match(/[\dKk]/) ) {
		return false;
	}
	if ( ! isNumeric(arrRUT[0]) ) {
		return false;
	} else {
		return true;
	}
}

function calculaDV( inputParam ){
	var suma	= 0;
	var mul		= 2;
	var i		= 0;
	
	var rut		= inputParam;
	for (i = rut.length - 1; i >= 0; i-- ){
		suma = suma + rut.charAt(i) * mul;
		mul = mul == 7 ? 2 : mul+1;
	}

	var dvr = '' + (11 - suma % 11);
	if ( dvr == '10' ) {
		dvr = 'K';
	}
	else if (dvr == '11'){
		dvr = '0';
	}
	return dvr;
}

function isValidDV( inputParam ){
	var suma	= 0;
	var mul		= 2;
	var i		= 0;
	
	if (inputParam.indexOf("-") != -1){
		var arrRUT	= inputParam.split("-");
		var rut		= arrRUT[0];
		var dv		= arrRUT[1].toUpperCase();
	} else {
		var largoInput = inputParam.length;
		var dv		= inputParam.substr(largoInput - 1, 1).toUpperCase();
		var rut		= inputParam.substr(0, largoInput - 1);
	}
	
	for (i = rut.length - 1; i >= 0; i-- ){
		suma = suma + rut.charAt(i) * mul;
		mul = mul == 7 ? 2 : mul+1;
	}

	var dvr = '' + (11 - suma % 11);
	if ( dvr == '10' ) {
		dvr = 'K';
	}
	else if (dvr == '11'){
		dvr = '0';
	}
	if ( dvr != dv ){
		return false;
	} else {
		return true;
	}
}

function isValidRut( inputParam ){
	if ( isValidDV ( inputParam ) ) {
		return true;
	} else {
		return false;
	}
}



function isValidDateFormat(inputParam){
	if ( inputParam.match(/\d{1,2}\-\d{1,2}\-\d\d\d\d/) ) {
		arrDate = inputParam.split("-");
		if ( (isNumeric(arrDate[0]) ) && ( isNumeric(arrDate[1]) ) && ( isNumeric(arrDate[2]) ) ){
			return true;
		}else{
			return false;
		}
	} else {
		return false;
	}
}

function isValidDate( inputParam ){
	if (! isValidDateFormat( inputParam ) ) {
		return false;
	}
	
	var arrDate	= inputParam.split("-");
	var day		= arrDate[0];
	var month	= arrDate[1] - 1;
	var year	= arrDate[2];

	var fecha = new Date(year, month, day);
	if (year != fecha.getFullYear())
		return false;
	if (month != fecha.getMonth())
		return false;
	if (day != fecha.getDate())
		return false;

	return true;
}

function isMenorFecha ( inputParam_1 , inputParam_2 ) {

	var arrDate_1	= inputParam_1.split("-");
	var day_1		= arrDate_1[0];
	var month_1		= arrDate_1[1] - 1;
	var year_1		= arrDate_1[2];
	var fecha_1 	= new Date(year_1, month_1, day_1);

	var arrDate_2	= inputParam_2.split("-");
	var day_2		= arrDate_2[0];
	var month_2		= arrDate_2[1] - 1;
	var year_2		= arrDate_2[2];
	var fecha_2 	= new Date(year_2, month_2, day_2);

	if ((fecha_2.getTime() - fecha_1.getTime()) > 0 ) {
		return true;
	}
	else {
		return false;
	}
}

function isValidEmail(inputParam){

	if ( inputParam.match(/[\w\-]+\@[\w\-]+(\.[\w\-]+)+/) ) {
		return true;
	} else {
		return false;
	}
}

function verifica(inputForm, p_modo) {

	if (p_modo === undefined)
		p_modo = true;

	var nTot	= 0;
	var nPas	= 0;
	var nTorna	= 0;
	sError		= "Resultado de la Validacion : "+"\n";

	for (var j = 0; j < inputForm.length; j++) {
		nEle = j;

		var sNom	= inputForm.elements[j].name;
		
		var sOne	= sNom.substring(0,1);
		var sTwo	= sNom.substring(1,2);
		var sThree	= sNom.substring(2,3);
		
		var sPrefix	= sNom.substring(0,2);

		inputForm.elements[j].value = trim( inputForm.elements[j].value )
		if ( (sThree == '_') && (sTwo.search(/[ro]/) != -1 ) && (sOne.search(/[snedrv]/) != -1 ) ){
			caracterNoValid(inputForm.elements[j], sPrefix );
		}
		nTot+=swOK;
	
		if (nPas == 0 && nTot > 0){
			if (inputForm.elements[nEle].type.toUpperCase() != "HIDDEN" ){
				inputForm.elements[nEle].focus();
				nPas = 1;
			}
		}
	}

	if (nTot > 0){
		alert( sError );
		return false;
	}else{
		if (p_modo)
			//inputForm.submit();
			return true;
	}
	return true;
}

function caracterNoValid(pCaracter,pType) {

	swOK = 0;
	if (pType == 'rr'){
		if ( ( isEmpty(pCaracter.value) ) || ( ! isValidRut(pCaracter.value) ) ){
			swOK = 1;
			if ( ( pCaracter.title === undefined ) || ( pCaracter.title == '' ) ){
				sError+="\r\n\tEl campo " + formatFieldMsg( pCaracter.name )+" es obligatorio y debe ser un RUT Valido" +"\r\n"
			} else {
				sError+="\r\n\tEl campo " + pCaracter.title +" es obligatorio y debe ser un RUT Valido" +"\r\n"
			}
		}
	}

	if (pType == 'ro'){
		if ( ( ! isEmpty(pCaracter.value) ) && ( ! isValidRut(pCaracter.value) ) ){
			swOK = 1;
			if ( ( pCaracter.title === undefined ) || ( pCaracter.title == '' ) ){
				sError+="\r\n\tEl campo " + formatFieldMsg( pCaracter.name )+" debe ser un RUT Valido" +"\r\n"
			}else{
				sError+="\r\n\tEl campo " + pCaracter.title +" debe ser un RUT Valido" +"\r\n"
			}
		}
	}

	if (pType == 'er'){ 
		
		if ( ( isEmpty(pCaracter.value) ) || ( ! isValidEmail(pCaracter.value) ) ){
			swOK = 1;
			if ( ( pCaracter.title === undefined) || ( pCaracter.title == '' ) ){
				sError+="\r\n\tEl campo " + formatFieldMsg( pCaracter.name ) + " es obligatorio y debe ser un e-mail Valido" +"\r\n"
			}else{
				sError+="\r\n\tEl campo " + pCaracter.title +" es obligatorio y debe ser un e-mail Valido" +"\r\n"
			}
		}
		return;
	}
	
	if (pType == 'eo'){ 
		swOK = 0;
		if ( ( !isEmpty(pCaracter.value ) ) && ( ! isValidEmail( pCaracter.value ) )   ){
			swOK = 1;
			if ( (pCaracter.title === undefined) || ( pCaracter.title == '' ) ){
				sError+="\r\n\tEl campo " + formatFieldMsg( pCaracter.name ) + " debe ser un e-mail Valido" +"\r\n"
			} else {
				sError+="\r\n\tEl campo " +  pCaracter.title  + " debe ser un e-mail Valido" +"\r\n"
			}
		}
		return;
	}

	if (pType=='nr') { 
		swOK = 0;
		if (isEmpty(pCaracter.value) || ( ! isNumeric(pCaracter.value) ) ) {
			swOK = 1;
			if ( ( pCaracter.title === undefined ) || ( pCaracter.title == '' ) ){
				sError += "\r\n\tEl campo " + formatFieldMsg( pCaracter.name ) + " es obligatorio y debe ser numerico" +"\r\n";
			}else{
				sError += "\r\n\tEl campo " +  pCaracter.title  + " es obligatorio y debe ser numrico" +"\r\n";
			}
		}
		return;
	}

	if (pType =='no'){ 
		swOK = 0;
		if ( (! isEmpty(pCaracter.value)) && ( ! isNumeric(pCaracter.value) ) ) {
			swOK = 1;
			if ( ( pCaracter.title.value === undefined ) ||( pCaracter.title == '' ) ){
				sError += "\r\n\tEl campo " + formatFieldMsg( pCaracter.name ) + " debe ser numérico" +"\r\n";
			} else {
				sError += "\r\n\tEl campo " +  pCaracter.title + " debe ser numérico" +"\r\n";
			}
		}
		return;
	}
	
	if (pType=='vr') { 
		swOK = 0;
		hayError = false;
		pEntero = '0';
		pFraccion = '0';
		
		if (isEmpty(pCaracter.value) || (pCaracter.value == '.')) {
			hayError = true;
		}
		else {
			NUM = '0' + pCaracter.value;
			var arrNUM	= pCaracter.value.split('.');
			if ((arrNUM.length < 1) || (arrNUM.length > 2)) {
				hayError = true;
			}
			else {
				pEntero = arrNUM[0];
				if (arrNUM.length == 2) {
					pFraccion = arrNUM[1];
				}
				if ((pEntero.length > 5) || ( ! isNumeric(pEntero) ) ) {
					hayError = true;
				}
				if ((pFraccion.length > 4) || ( ! isNumeric(pFraccion) ) ) {
					hayError = true;
				}
			}
		}
		 
		if (hayError) {
			swOK = 1;
			if ( ( pCaracter.title === undefined ) || ( pCaracter.title == '' ) ){
				sError += "\r\n\tEl campo " + formatFieldMsg( pCaracter.name ) + " es obligatorio y debe ser numérico.\r\nValor Max.: 99999.9999" +"\r\n";
			}else{
				sError += "\r\n\tEl campo " +  pCaracter.title  + " es obligatorio y debe ser numérico.\r\nValor Max.: 99999.9999" +"\r\n";
			}
		}
		return;
	}

	if (pType == 'dr') { 
		swOK = 0;
		if (isEmpty(pCaracter.value) || ( ! isValidDate(pCaracter.value) ) ) {
			swOK = 1;
			if ( ( pCaracter.title === undefined ) || ( pCaracter.title == '' ) ){
				sError += "\r\n\tEl campo " + formatFieldMsg( pCaracter.name ) + " es obligatorio y debe ser una fecha Valida (dd-mm-yyyy)" +"\r\n";
			} else {
				sError += "\r\n\tEl campo " + pCaracter.title+ " es obligatorio y debe ser una fecha Valida (dd-mm-yyyy)" +"\r\n";
			}
		}
		return;
	}

	if (pType == 'do'){
		swOK = 0;
		if ( ! isEmpty(pCaracter.value) && ( ! isValidDate(pCaracter.value) ) ) {
			swOK = 1;
			if ( ( pCaracter.title === undefined ) || ( pCaracter.title == '' ) ){
				sError += "\r\n\tEl campo " + formatFieldMsg( pCaracter.name ) +" debe ser una fecha Valida (dd-mm-yyyy)" +"\r\n";
			} else {
				sError += "\r\n\tEl campo " + pCaracter.title +" debe ser una fecha Valida (dd-mm-yyyy)" +"\r\n";
			}
		}
		return;
	}
	
	if (pType == 'sr'){
		swOK = 0;
		if ( isEmpty(pCaracter.value) ){
			if ( ( pCaracter.title === undefined ) || ( pCaracter.title == '' ) ){
				sError += "\r\n\tEl campo " + formatFieldMsg(pCaracter.name ) + " es obligatorio y debe ser texto"+"\r\n";
			} else {
				sError += "\r\n\tEl campo " + pCaracter.title  + " es obligatorio y debe ser texto"+"\r\n";
			}
			swOK = 1;
			return;
		}
	}
}

