function checkForm(objForm)

{

	var arClass, bValid;

	var objField = objForm.getElementsByTagName('*');



	for (var iFieldCounter=0; iFieldCounter<objField.length; iFieldCounter++)

	{

		// Allow for multiple values being assigned to the class attribute

		arClass = objField[iFieldCounter].className.split(' ');

		for (var iClassCounter=0; iClassCounter<arClass.length; iClassCounter++)

		{

			switch (arClass[iClassCounter])

			{

				case 'select0':

					bValid = objField[iFieldCounter].selectedIndex > 0;

					break;

				case 'acceptcheckbox':

					bValid = objField[iFieldCounter].checked;

					break;

				case 'string':

					bValid = isString(objField[iFieldCounter].value.replace(/^\s*|\s*$/g, ''));

					break;

				case 'number' :

					bValid = isNumber(objField[iFieldCounter].value);

					break;

				case 'date' :

					bValid = isDMY(objField[iFieldCounter].value);

					break;

				case 'email' :

					bValid = isEmail(objField[iFieldCounter].value);

					break;

				case 'rutwithdv' :

					bValid = isRut(objField[iFieldCounter].value);

					break;

				default:

					bValid = true;

			}



			if (bValid == false)

			{

				// If this field is invalid, leave the testing early,

				// and alert the visitor to this error

				mensaje = '';

				if(objField[iFieldCounter].title) {

					mensaje = ('Debe ingresar el campo ' + objField[iFieldCounter].title + ' correctamente');

				} else {

					mensaje = ('Debe ingresar el campo ' + objField[iFieldCounter].name + ' correctamente');

				}

				if(arClass[iClassCounter] == 'date') {

					mensaje += ".\nEl formato es dd-mm-aaaa (ej: 30-01-1978).";

				}

				if(objField[iFieldCounter].select) {

					objField[iFieldCounter].select();

				}

				if(objField[iFieldCounter].focus) {

					objField[iFieldCounter].focus();

				}

				alert(mensaje);

				return false;

			}

		}

	}

	return true;

}



function isRadioChecked(objForm, name)

{

	var arClass, bValid;

	var objField = objForm.getElementsByTagName('*');

	var anyChecked = false;



	for (var iFieldCounter=0; iFieldCounter<objField.length; iFieldCounter++) {

		if(objField[iFieldCounter].type == 'radio' && objField[iFieldCounter].name == name) {

			anyChecked = anyChecked || objField[iFieldCounter].checked;

		}

	}

	if(!anyChecked) {

		for (var iFieldCounter=0; iFieldCounter<objField.length; iFieldCounter++) {

			if(objField[iFieldCounter].type == 'radio' && objField[iFieldCounter].name == name) {

				if(objField[iFieldCounter].select) {

					objField[iFieldCounter].select();

				}

				if(objField[iFieldCounter].focus) {

					objField[iFieldCounter].focus();

				}

				break;

			}

		}

	}

	return anyChecked;

}



function isRut(strValue)

{

	if(typeof strValue == 'undefined') {

		return false;

	}

	rutdv = strValue.split(/-/);

	if(typeof rutdv[1] == 'undefined') {

		return false;

	}

	return validaRut(rutdv[0], rutdv[1]);

}



function isString(strValue)

{

	return (typeof strValue == 'string' && strValue != '');

}



function isNumber(strValue)

{

	return (!isNaN(strValue) && strValue != '');

}



function isEmail(strValue)

{

	var objRE = /^[\w-\.\']{1,}\@([\da-zA-Z-]{1,}\.){1,}[\da-zA-Z-]{2,}$/;



	return (strValue != '' && objRE.test(strValue));

}

function isLeapYear(aa)

{

	if(aa%400==0) return true;

	if(aa%100==0) return false;

	if(aa%4==0) return true;

	return false;

}

function isDMY(strValue)

{

	strValue=strValue.replace('/','-');

	var dmy=strValue.split('-');

	var dias_mes=[31,28,31,30,31,30,31,31,30,31,30,31];

	var mydate=new Date();

	if (!(parseInt(dmy[2],10) && parseInt(dmy[1],10) && parseInt(dmy[0],10))){

		 return false;

	}

	if(isLeapYear(dmy[2])) {

		dias_mes[1]++;

	}

	if(dmy[1]<1||dmy[1]>12) {

		 return false;

	}

	if(dmy[0]<1||dmy[0]>dias_mes[dmy[1]-1]) {

		 return false;

	}

	return true;

}

/* R.U.T. Validation routines. Please call validaRut(rut,dv)

** Taken from the SII site. No copyright notice was found. */

function trimval(str){

	var ini=0;

	var fin=str.length-1;

	while(ini<=fin && str.charAt(ini)==" ") ini++;

	if (ini<=fin) {

		while(str.charAt(fin)==" ") fin--;

		if (fin<str.length-1) {

				fin++;

				return str.substring(ini,fin);

		} else return str.substr(ini);

	} else return '';

}



function isNumero(str)

{

	var flag=true;

	var i=0;

	var nums=new Array(1,1,1,1,1,1,1,1,1,1);

	while (i<str.length && flag) {

		flag= (nums[str.charAt(i++)]!=null);

	}

	return flag;

}



function validaM11(rut,dv)

{

	var suma=0;

	var mul=2;

	var i=0;

	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;

}



var ruterror='';

function validaRut(rut,dv)

{

	rut=trimval(rut);

	rut=rut.replace(/\./g,'');

	dv=trimval(dv).toUpperCase();

	if (rut=='' && dv=='') {

		return true;

	}

	if (rut=='' || !isNumero(rut) || rut*1==0) {

		ruterror='Rut Inválido';

		return false;

	}else if ((!isNumero(dv) && (dv != "K")) || (dv == "")) {

		ruterror='Dígito Verificador inválido';

		return false;

	}else if (!validaM11(rut,dv)) {

		ruterror='Dígito Verificador Erróneo';

		return(false);

	}

	return true;

}


