/*********************** email check ***********************************/
function emailCheck(emailStr){
	var checkTLD=1;
	var knownDomsPat=/^(com|net|org|edu|int|mil|gov|arpa|biz|aero|name|coop|info|pro|museum)$/;
	var emailPat=/^(.+)@(.+)$/;
	var specialChars="\\(\\)><@,;:\\\\\\\"\\.\\[\\]";
	var validChars="\[^\\s" + specialChars + "\]";
	var quotedUser="(\"[^\"]*\")";
	var ipDomainPat=/^\[(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})\]$/;
	var atom=validChars + '+';
	var word="(" + atom + "|" + quotedUser + ")";
	var userPat=new RegExp("^" + word + "(\\." + word + ")*$");
	var domainPat=new RegExp("^" + atom + "(\\." + atom +")*$");
	var matchArray=emailStr.match(emailPat);

	if (matchArray==null) {
		alert("La dirección de correo electrónico contiene un error (checar @ y .'s)");
		return false;
	}
	var user=matchArray[1];
	var domain=matchArray[2];
	for (i=0; i<user.length; i++) {
		if (user.charCodeAt(i)>127) {
		alert("El nombre de usuario del e-mail, contiene caracteres inválidos.");
		return false;
   		}
	}
	for (i=0; i<domain.length; i++) {
		if (domain.charCodeAt(i)>127) {
			alert("El nombre de dominio del e-mail contiene caracteres inválidos.");
			return false;
   		}
	}

	if (user.match(userPat)==null) {
		alert("El nombre de usuario del e-mail parece no ser válido");
		return false;
	}

	var IPArray=domain.match(ipDomainPat);
	if (IPArray!=null) {
		for (var i=1;i<=4;i++) {
			if (IPArray[i]>255) {
				alert("La direcci&oacute;n IP del e-mail es inválida");
				return false;
   			}
		}
		return true;
	}

	var atomPat=new RegExp("^" + atom + "$");
	var domArr=domain.split(".");
	var len=domArr.length;
	for (i=0;i<len;i++) {
		if (domArr[i].search(atomPat)==-1) {
			alert("El nombre de dominio parece ser inválido");
			return false;
   		}
	}

	if (checkTLD && domArr[domArr.length-1].length!=2 && 
		domArr[domArr.length-1].search(knownDomsPat)==-1) {
			alert("El nombre de dominio debe terminar en dos letras de región o dominio conocido ");
			return false;
	}

	if (len<2) {
		alert("La dirección es desconocida");
		return false;
	}

	return true;
}

/*********************** stripReal, quital el punto del numero real ********************/
function stripReal(Real){
	var atsign = Real.substring(0,Real.lastIndexOf('.')+1);
	var after = Real.substring(atsign.length,Real.length+1);
	Return = atsing + after;
}
/********************** checa los decimales permitidos *******************************/
function checkDecimals(fieldName, fieldValue) {
	decallowed = 2;  // how many decimals are allowed?
	if (isNaN(fieldValue) || fieldValue == "") {
		alert("Oops!  That does not appear to be a valid number.  Please try again.");
		fieldName.select();
		fieldName.focus();
	}
	else {
		if (fieldValue.indexOf('.') == -1) fieldValue += ".";
		dectext = fieldValue.substring(fieldValue.indexOf('.')+1, fieldValue.length);
		if (dectext.length > decallowed){
			alert ("Oops!  Please enter a number with up to " + decallowed + " decimal places.  Please try again.");
			fieldName.select();
			fieldName.focus();
      	}
		else {
			alert ("That number validated successfully.");
      	}
   	}
}


/********************* checa la fecha ****************************/
var intday;
var intMonth;
var intYear;
var strDayC;
var strMonthC;
var strYearC;
var strSeparatorArray = new Array("-"," ","/",".");
var intElementNr;
var radio_selection="";
			
function chkdate(objName) {
			var strDate;
			var strDateArray;
			var strDay;
			var strMonth;
			var strYear;
			var booFound = false;
			var datefield = objName;
			var err = 0;
			var strMonthArray = new Array(12);
				strMonthArray[0] = "Ene";
				strMonthArray[1] = "Feb";
				strMonthArray[2] = "Mar";
				strMonthArray[3] = "Abr";
				strMonthArray[4] = "May";
				strMonthArray[5] = "Jun";
				strMonthArray[6] = "Jul";
				strMonthArray[7] = "Ago";
				strMonthArray[8] = "Sep";
				strMonthArray[9] = "Oct";
				strMonthArray[10] = "Nov";
				strMonthArray[11] = "Dic";
		var datefield = objName;
		
		strDate=datefield.value;	
		for (intElementNr=0; intElementNr < strSeparatorArray.length; intElementNr++) {
		  if (strDate.indexOf(strSeparatorArray[intElementNr]) != -1) {
				  		strDateArray=strDate.split(strSeparatorArray[intElementNr]);
						if (strDateArray.length != 3) {
								err = 1;
								return false;
						}
						else {
						strDay = strDateArray[0];
						strMonth = strDateArray[1];
						strYear = strDateArray[2];
						}
				booFound = true;
	   		}
		}
		if (booFound == false) {
		//alert ("booFound es falso")
			if (strDate.length>5) {
				strDay = strDate.substr(0, 2);
				strMonth = strDate.substr(2, 2);
				strYear = strDate.substr(4);
			  }
			 else{ return false; }
		}
		if (strYear.length==2) {
				strYear = '20' + strYear;
		}
		//si se introdujo un anio mayor a 4 numeros 
		if (strYear.length>4) {	
		alert ("La longitud del año es mayor de 4");
		return false; }
		//si se introudujo un numero de anio menor a 2 o 
		if (strYear.length==3) { 
			alert ("La fecha contiene un año no valido, puede ser que metio un año 200");
			return false; 
		}
		intday = parseInt(strDay, 10);
		if (isNaN(intday)) {
				err = 2;
				return false;
		}
		intMonth = parseInt(strMonth, 10);
		if (isNaN(intMonth)) {
			for (i = 0;i<12;i++) {
				if (strMonth.toUpperCase() == strMonthArray[i].toUpperCase()) {
					intMonth = i+1;
					strMonth = strMonthArray[i];
					i = 12;
				  }
			}
			if (isNaN(intMonth)) {
				err = 3;
				return false;
			  }
		}
		intYear = parseInt(strYear, 10);
		if (isNaN(intYear)) {
			err = 4;
			return false;
		}
		if (intMonth>12 || intMonth<1) {
			err = 5;
			return false;
		}
		if ((intMonth == 1 || intMonth == 3 || intMonth == 5 || intMonth == 7 || intMonth == 8 || intMonth == 10 || intMonth == 12) && (intday > 31 || intday < 1)) {
			err = 6;
			return false;
		}
		if ((intMonth == 4 || intMonth == 6 || intMonth == 9 || intMonth == 11) && (intday > 30 || intday < 1)) {
				err = 7;
		return false;
		}
		if (intMonth == 2) {
			if (intday < 1) {
				err = 8;
			return false;
			}
		if (LeapYear(intYear) == true) {
				if (intday > 29) {
					err = 9;
					return false;
				}
			}
		else {
				if (intday > 28) {
					err = 10;
					return false;
				}
			}	
		}
		//datefield.value = intday + " " + strMonthArray[intMonth-1] + " " + strYear;
		return true;
	   }
	   
function LeapYear(intYear) {
				if (intYear % 100 == 0) {
					if (intYear % 400 == 0) { return true; }
				}
				else {
					if ((intYear % 4) == 0) { return true; }
				}
				return false;
		}
		


function splitDate(objNameC) {
			var strDateC;
			var strDateCArray;
			
			var booFoundC = false;
     		var datefieldC = objNameC;
		
		strDateC=datefieldC.value;	
		for (intElementNr=0; intElementNr < strSeparatorArray.length; intElementNr++) {
		  if (strDateC.indexOf(strSeparatorArray[intElementNr]) != -1) {
				  		strDateCArray=strDateC.split(strSeparatorArray[intElementNr]);
						strDayC = strDateCArray[0];
						strMonthC = strDateCArray[1];
						strYearC = strDateCArray[2];
						booFound = true;
	   					}
		}
		if (booFound == false) {		
			if (strDateC.length>5) {
				strDayC = strDateC.substr(0, 2);
				strMonthC = strDateC.substr(2, 2);
				strYearC = strDateC.substr(4);
			  }
		}
		if (strYearC.length==2) {
				strYearC = '20' + strYearC;
		}
	   intdayC = parseInt(strDayC, 10);
	   intMonthC = parseInt(strMonthC, 10);
	   intYearC = parseInt(strYearC, 10);				
       return true;
}
//comienza la funcion compara fecha Inicial con Fecha del sistema
function cmpDate() { 

		if (intYear<intYearC) { return false; } //si el anio es menor error
		   else {
		      if (intYear==intYearC) {
			        intMonthCTemp=intMonthC - 1;
					if (intMonth<intMonthCTemp){ return false; } //se introdujo un mes antes de la fecha actual 
					else {
					 if (intMonth==intMonthCTemp) {
					 	 if (intday<intdayC){ return false; } //se verifica que el dia este realmente a un mes de la fecha actual
					  }
					} 
			   }
		   }
		return true;
	   }

//compara dos fechas para validad que una fecha es menor a otra o viceversa, eje. cuando inicia y cuando acaba
function doDateCheck(from, to) {
if (Date.parse(from.value) <= Date.parse(to.value)) {
alert("Las fechas son v&aacute;lidas");
}
else {
if (from.value == "" || to.value == "") 
alert("Both dates must be entered.");
else 
alert("To date must occur after the from date.");
   }
}

//valida entradas solo numeros y letras
function validate(field) {
var valid = "abcdefghijklmnopqrstuvwxyz0123456789"
var ok = "yes";
var temp;
for (var i=0; i<field.value.length; i++) {
	temp = "" + field.value.substring(i, i+1);
	if (valid.indexOf(temp) == "-1") ok = "no";
}
if (ok == "no") { return false; }
else { return true; }
}


