function check (strForm) {
	//Properties
	this.strForm = strForm;
	this.arrErrors = new Array();

	//Methods
	this.getInput = check_getInput;
	this.getNextPosition = check_getNextPosition;
	this.checkError = check_checkError
	this.isDate = check_isDate;
	
	this.AddError = check_AddError;
	this.checkString = check_string;
	this.checkTelefono = check_telefono;
	
	this.checkNumber = check_number;
	this.checkDate = check_date;
	this.checkEmail = check_email;
	this.compareDates = check_compareDates;
	this.checkRadio = check_radio;
	this.checkCombo = check_combo;
	this.toString = check_toString;
	/*alan*/
	this.checkCompareString = check_compare_string_pass;
	this.checkLength = check_length_pass;
	this.checkCuit = check_cuit;
	this.checkEmpty = check_empty;
	this.checkCodigoPostal = check_codigo_postal;
	this.checkDniCuil = check_equal_dni_cuil;
}

var strGuardaError = '';
function check_equal_dni_cuil(strInput1, strInput2, strError){
	var PosicionArr = this.getNextPosition();
	var strToma1 = this.getInput(strInput1);
	var strToma2 = this.getInput(strInput2);
	
	if (!isNaN(strToma1.value) || !isNaN(strToma2.value)){
		if (parseInt(strToma1.value,10) != parseInt(strToma2.value,10)){
			this.arrErrors[PosicionArr] = strError;		
		}
	}
	else{
		this.arrErrors[PosicionArr] = strError;		
	}
}

function check_codigo_postal(strInput1,strError){
	
	var PosicionArr = this.getNextPosition();
	var objInput = this.getInput(strInput1);
	
	if (objInput.value.length != 4 && objInput.value.length != 8){
		this.arrErrors[PosicionArr] = strError;
		
		if (strGuardaError == ''){
			strGuardaError = strInput1;
		}
	}
	else{
		var strRegExp;
		
		if (objInput.value.length == 8 ){
			strRegExp = /[A-Z][0-9][0-9][0-9][0-9][A-Z][A-Z][A-Z]/;
		}
		else{
			strRegExp = /[0-9][0-9][0-9][0-9]/;
		}
			
		var takerror;
		var blnOptional = false;
		takerror = this.checkError(objInput, strError, strRegExp, 4, 8, blnOptional, false);
		if (!takerror){
			if (strGuardaError == ''){
				strGuardaError = strInput1;
			}
		}
		return takerror;
	
	}
}

function check_compare_string_pass(strInput1,strInput2,strError){
	var PosicionArr = this.getNextPosition();
	
	var strUno = this.getInput(strInput1);
	var strDos = this.getInput(strInput2);
	
	if (strUno.value != strDos.value){
		this.arrErrors[PosicionArr] = strError;
	}


}
function check_length_pass(strInput,strInput2,minLen,Maxlen,strError){
	
	var PosicionArr = this.getNextPosition();
	var stringInput = this.getInput(strInput);
	var stringInput2 = this.getInput(strInput2);
	
	if ((stringInput.value.length < minLen || stringInput.value.length > Maxlen) && (stringInput2.value.length < minLen || stringInput2.value.length > Maxlen)){
		this.arrErrors[PosicionArr] = strError;

	}
}


function check_cuit(strInput1,strInput2,strInput3,strError){
	var error;
	var position =  this.getNextPosition();
	var strUno = this.getInput(strInput1);
	var strDos = this.getInput(strInput2);
	var strTres = this.getInput(strInput3);
	
	error = 0
	if (strUno.value.length != 2 || strDos.value.length != 8 || strTres.value.length != 1){
		error = 1;
	}
	if (error==1){
		this.arrErrors[position] = strError;
	}
}
function check_empty(strInput,strError){
	var position =  this.getNextPosition();
	var strIngresa = this.getInput(strInput)	;
	if (strIngresa.value == ""){	
		this.arrErrors[position] = strError;
		if (strGuardaError == ''){
			strGuardaError = strInput;
		}
	}

}


/*fin alan*/


function check_AddError (strError){
	var intPosition = this.getNextPosition();
	this.arrErrors[intPosition] = strError;
}

function check_getInput (strInput) {
	return eval("document." + this.strForm + "." + strInput);
}

function check_getNextPosition () {
	return this.arrErrors.length;
}

function check_checkError (objInput, strNameShow, strRegExp, intMinLen, intMaxLen, blnOptional, strErrorMessage) {
	var intPosition = this.getNextPosition();

	if (!objInput.value.length) {
		if (!blnOptional){
			this.arrErrors[intPosition] = strNameShow;
			return false;
		}else
			return true;
	}else{
		if ((!strRegExp.test(objInput.value))) {
			this.arrErrors[intPosition] = strNameShow;
			return false;
		}else if (objInput.value.length < intMinLen) {
				this.arrErrors[intPosition] = strNameShow;
				return false;
			}else if (objInput.value.length > intMaxLen) {
					this.arrErrors[intPosition] = strNameShow;
					return false;
				}
				else
					return true;
	}
}

function check_isDate(datFecha) {
	
	var arrFecha = datFecha.split("/");
	var datFechaValida = new Date(arrFecha[2], arrFecha[1] - 1, arrFecha[0]);

	if ((arrFecha[0] == datFechaValida.getDate()) && 
		(arrFecha[1] == (datFechaValida.getMonth() + 1)) && 
		(arrFecha[2] == datFechaValida.getFullYear()))
		return true;
	else
		return false;
}

function check_telefono (strInput, strNameShow, intMinLen, intMaxLen, blnOptional) {
	var objInput = this.getInput(strInput);
	var strRegExp = /^[a-z|A-Z|0-9|/|\-|_| ]+$/;
	var takerror
		
	takerror = this.checkError(objInput, strNameShow, strRegExp, intMinLen, intMaxLen, blnOptional, false);
	if (!takerror){
		if (strGuardaError == ''){
			strGuardaError = strInput;
		}
	}
	return takerror;
}


function check_string (strInput, strNameShow, intMinLen, intMaxLen, blnOptional) {
	var objInput = this.getInput(strInput);
	var strRegExp = /^[a-z|A-Z|0-9|á|é|í|ó|ú|Á|É|Í|Ó|Ú|ñ|Ñ|'|@|\-|_| |.]+$/;
	var takerror
		
	takerror = this.checkError(objInput, strNameShow, strRegExp, intMinLen, intMaxLen, blnOptional, false);
	if (!takerror){
		if (strGuardaError == ''){
			strGuardaError = strInput;
		}
	}
	return takerror;
}

function check_number (strInput, strNameShow, intMinLen, intMaxLen, blnOptional) {
	var objInput = this.getInput(strInput);
	var strRegExp = /^[0-9]+$/;
	var takerror
	takerror = this.checkError(objInput, strNameShow, strRegExp, intMinLen, intMaxLen, blnOptional, false);
	if (!takerror){
		if (strGuardaError == ''){
			strGuardaError = strInput;
		}
	}
	return takerror
}

function check_date (strInput, strNameShow, blnOptional) {
	var objInput = this.getInput(strInput);
	var strRegExp = /^[0-9]{1,2}\/[0-9]{1,2}\/[0-9]{4}/;
	var intPosition;
	
	if ((objInput.value.length == 0) && (blnOptional)) return true;
	if (this.checkError(objInput, strNameShow, strRegExp, 8, 10, blnOptional, " no contiene una fecha válida"))
		if (!this.isDate(objInput.value)) {
			var intPosition = this.getNextPosition();
			this.arrErrors[intPosition] = strNameShow;
			return false;
		} else
			return true;
}

function check_email (strInput, strNameShow, intMinLen, intMaxLen, blnOptional) {
	var objInput = this.getInput(strInput);
	var strRegExp = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9])+$/;
	return this.checkError(objInput, strNameShow, strRegExp, intMinLen, intMaxLen, blnOptional, false);
}

function check_compareDates(strInput1, strInput2, strUnidad) {
	if ((!this.isDate(strInput1)) || (!this.isDate(strInput2)))
		return null;
	
//	Si son fechas válidas, las paso a arrays para compararlas.
	var arrFecha1 = strInput1.split("/");
	var datFechaValida1 = new Date(arrFecha1[2], arrFecha1[1] - 1, arrFecha1[0]);
	var arrFecha2 = strInput2.split("/");
	var datFechaValida2 = new Date(arrFecha2[2], arrFecha2[1] - 1, arrFecha2[0]);
	var intAjuste;
	
	switch (strUnidad) {
//		El resultado te lo devuelve en años
		case "a":
		case "A":
			intAjuste = 86400000 * 365;
			break;
//		El resultado te lo devuelve en horas
		case "h":
		case "H":
			intAjuste = 86400000 / 24;
			break;
//		El resultado te lo devuelve por default en días
		case "d":
		case "D":
		default:
			intAjuste = 86400000;
			break;
	}
	
	return ((datFechaValida1 - datFechaValida2) / intAjuste);
}

function check_radio(strInput, strNameShow){
	var blnSel = false;
	var objInput = this.getInput(strInput);

	for (var i=0;i<objInput.length;i++)
		if (objInput[i].checked) {
			blnSel = true;
			break;
		}

	if (!blnSel) {
		var intPosition = this.getNextPosition();
		this.arrErrors[intPosition] = strNameShow;
	}
	
}

function check_combo(strInput, strNameShow){
	var objInput = this.getInput(strInput);

	if (objInput.selectedIndex==0) {
		var intPosition = this.getNextPosition();
		this.arrErrors[intPosition] = strNameShow;
		if (strGuardaError == ''){
			strGuardaError = strInput;
		}
		
	}
}

function check_toString () {
	var strErrors = "";
	var i;
	
	for (i = 0; i < this.arrErrors.length; i++) {
		strErrors = strErrors + this.arrErrors[i] + "\n";
	}
	
	if (strGuardaError != ''){
		eval("document." + this.strForm + "." + strGuardaError + ".focus()");
		strGuardaError = '';
	}
	
	return strErrors;
	
}




