/*******************************************************************************
* SCRIPT   : formTools.js
* AUTOR    : ExpertWeb Consulting
* OBJETIVO : Conjunto de funciones que permiten validar formas
*
* HISTORIA :
* - 2000/06/22	Creacion del conjunto de funcioes (JT)
* - 2000/11/21	Ajuste de la funcion isDate para validar fechas en el formato
*				dd/MM/yyyy
*
* COPYRIGHT: ExpertWeb Cia. Ltda. (c) 2000 Quito-Ecuador
********************************************************************************/

function isEmpty (field) {
	var ok = true;
	if ( field.value != '' ) {
		var text = field.value;
		for (var i=0; i<text.length; i++)
			if (text.charAt(i) != ' ')
				ok = false;
	}
	return(ok);
}

function isNotEmpty (field) {
	var ok = false;
	if ( field.value != '' ) {
		var text = field.value;
		for (var i=0; i<text.length; i++)
			if (text.charAt(i) != ' ')
				ok = true;
	}
	return(ok);
}

function isNumber (field) {
	var ok = false;
	var digits = "0123456789.-";

	if ( isNotEmpty(field) ) {
		var temp = "";
		var firstp = true;
		var firstl = true;
		var len = field.value.length;
		ok = true;
		for (var i=0; i<len; i++) {
			temp = field.value.substring(i, i+1);
			if ( digits.indexOf(temp) != -1 ) {
				if (temp == '.') {
					if ( firstp ) 
						firstp = false;
					else
						ok = false;
				}
				if (temp == '-') {
					if ( firstl ) 
						firstl = false;
					else
						ok = false;
				}
			} else {
				ok = false;
			}
		}
		if ( field.value.substring(len-1, len) == '.' )
			ok = false;
	}
	return (ok);
}

function isInt (field) {
	var ok = false;
	var digits = "0123456789";

	if ( isNotEmpty(field) ) {
		var temp = "";
		var firstp = true;
		var firstl = true;
		var len = field.value.length;
		ok = true;
		for (var i=0; i<len; i++) {
			temp = field.value.substring(i, i+1);
			if ( digits.indexOf(temp) != -1 ) {
				if (temp == '.') {
					if ( firstp ) 
						firstp = false;
					else
						ok = false;
				}
				if (temp == '-') {
					if ( firstl ) 
						firstl = false;
					else
						ok = false;
				}
			} else {
				ok = false;
			}
		}
		if ( field.value.substring(len-1, len) == '.' )
			ok = false;
	}
	return (ok);
}

function isEmail (field) {
	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 emailStr = field.value;
	var matchArray = emailStr.match(emailPat);
	if (matchArray == null)
		return false;

	var user = matchArray[1];
	var domain = matchArray[2];

	if (user.match(userPat)==null)
 	   return false;

	var IPArray = domain.match(ipDomainPat);
	if (IPArray != null) {
		for (var i=1;i<=4;i++) {
			if (IPArray[i]>255)
				return false;
    	}
    	return true;
	}

	var domainArray = domain.match(domainPat);
	if (domainArray == null)
		return false;

	var atomPat = new RegExp(atom,"g")
	var domArr = domain.match(atomPat)
	var len = domArr.length
	
	if (domArr[domArr.length-1].length<2 || domArr[domArr.length-1].length>3)
		return false;

	if ( len < 2 )
		return false;

	return true;
}

function maxValue (field, max) {
	var ok = false;
	if ( isNotEmpty(field) ) {
		if ( isNumber(field) ) {
			var num = parseFloat(field.value);
			if ( num <= max)
				ok = true;
		}
	}
	return (ok);
}

function mimValue (field, mim) {
	var ok = false;
	if ( isNotEmpty(field) ) {
		if ( isNumber(field) ) {
			var num = parseFloat(field.value);
			if ( num >= mim)
				ok = true;
		}
	}
	return (ok);
}

function isDate(field) {
	var ok = false;
	var dateStr = field.value;
	var datePat = /^(\d{4})(\/|-)(\d{1,2})\2(\d{1,2})$/;
	
	if ( isNotEmpty(field) ) {
		var matchArray = dateStr.match(datePat);
		if (matchArray != null) {
			var day = parseFloat(matchArray[4]);
			var month = parseFloat(matchArray[3]);
			var year = parseFloat(matchArray[1]);

			ok = true;
			if (month < 1 || month > 12)
				ok = false;
			if (day < 1 || day > 31)
				ok = false;
			if ((month==4 || month==6 || month==9 || month==11) && day==31)
				ok = false;
			if (month == 2) {
				var isleap = (year % 4 == 0 && (year % 100 != 0 || year % 400 == 0));
				if (day>29 || (day==29 && !isleap))
					ok = false;
			}
		}
	}
	return(ok);
}

function setChecked(fname, val) {
	var i = 0;
	var len = document.forms[0].elements.length;
	
	for( i=0 ; i<len ; i++) {
		if (document.forms[0].elements[i].name == fname) {
			document.forms[0].elements[i].checked = val;
		}
	}
}

function SubDel(cdgo) {
	var answer = confirm("Esta seguro de que desea borra este registro?")
	if (answer)
	document.forms[0].DEL.value=cdgo;	
	document.forms[0].submit ();
}

function SubOrder(colName) {
	if (document.forms[0].ORD.value == colName) {
		if (document.forms[0].DIR.value == 'ASC')
			document.forms[0].DIR.value = 'DESC';
		else
			document.forms[0].DIR.value = 'ASC';
	} else {
		document.forms[0].DIR.value = 'ASC';
	}
	document.forms[0].ORD.value = colName;
	document.forms[0].submit();
}

function winStatus( msg ) {
	window.status = msg;
}

function SubOper (cdgo) {		
		//asigna la operacion a realizarse
		if ( SubValidate ()){
			document.forms[0].OPE.value = cdgo;
			document.forms[0].submit();
		}
		else
			document.forms[0].OPE.value = 0;			
	}

function isValidPwd (field) {
	var ok = false;
	var digits = "0123456789.,;:?¿!¡()+-*/{}[]_&%$@#|";

	if ( isNotEmpty(field) ) {
		var temp = "";
		var first = true;
		ok = true;
		for (var i=0; i<1; i++) {
			temp = field.value.substring(i, i+1);
			if ( digits.indexOf(temp) != -1 ) {
				if (temp == '.') {
					if ( first )
						first = false;
					else
						ok = false;
				}
			} else {
				ok = false;
			}
		}
	}
	return (ok);
}
