/********************************************************************* 
* validation.js.                                                     *
* Form validation functions for validating entire forms (onSubmit)   *
*
* val = value to validate
* len = lenght to check (if > 0)
* req = 'R' if requested
*
* boolean isAlpha(val, len, req) 
* boolean isDate(val, req) 
* boolean isEmail(val, req) 
* boolean isNum(val, len, req) 
* boolean isPhone(val, req) 
* boolean isText(val, len, req) 
*
*********************************************************************/

function valid_login_form1(form) {
   	
	var message="";

	clearBg(form);
	
   	if (!isText(form.lgn_uid,'0','R')) { message+="Username mancante.\n"; return errorBg(form.lgn_uid, message); }
   	if (!isText(form.lgn_password,'0','R')) { message+="Password mancante.\n"; return errorBg(form.lgn_password, message); }
   	
   	return true;
}

function clearBg(form){
//imposto il bgcolor per gli elementi del form	 
	obj=form.elements;
  	
	for (i=0; i<obj.length; i++){
		if (obj[i].type.toString() == 'text' ||
			obj[i].type.toString() == 'password' ||
			obj[i].type.toString() == 'select-one' ||
			obj[i].type.toString() == 'textarea' ||
			obj[i].type.toString() == 'file') {
			obj[i].style.background = '#FFFFFF';	
		}
	}
}

function errorBg(form_item, message){
	
	form_item.style.background = '#fb7f81';
	form_item.focus();
	alert(message);
 	return false;
}

function isConfirmed(message) {
// Pop up a confirmation box. Return true for OK and false for Cancel.
   	if (!confirm(message)) {
      	return false;
   	}
   	return true;
}

function isAlpha(val, len, req) {
// Check for "a-z", "A-Z", " ", and optionally length.
   	if ((val.value.length == 0) && (req == "R")) {
      	return false;
   	}
   	if (val.value.length != 0) {
      	for (i = 0; i < val.value.length; i++) {
         	var ch = val.value.charAt(i);
         	if ((ch >= "A" && ch <= "Z") || (ch >= "a" && ch <= "z") || (ch == " ")) {
            	continue;
         	} else {
            	return false;
         	}
      	}
      	if (len != "0") {
         	if (val.value.length != len) {
            	return false;
         	}
      	}
   	}
   	return true;
}

function isDate(val, req) {
// Check for a properly formatted ANSI short date or a date shortcut.
   	if ((val.value.length == 0) && (req == "R")) {
      	return false;
   	}
   	if (val.value.length != 0) {
      	var shortform = /^[TtDd]{1}/;
      	var longform = /^[0-9]{4}\-[0-9]{2}\-[0-9]{2}$/;
      	if (!longform.test(val.value)) {
         	if (shortform.test(val.value)) {
            	return true;
        	}
         	return false;
      	}
   	}
   	return true;
}

function isEmail(val, req) {

   	if ((val.value.length == 0) && (req == "R")) {
      	return false;
   	}

   	p=val.value.indexOf('@');
   	// l'email deve contenere il carattere @, ma non come primo o come ultimo
   	if ( (p <= 1) || (p==val.value.length)) return (false);
   	//dato che dopo il carattere @ ci possono essere n livelli di dominio analizziamo il tld da destra
   	p1=val.value.lastIndexOf('.');
   	// il punto non puo' trovarsi dopo @, o negli ultimi 2 caratteri (il TLD deve essere di almeno 2 chars)
   	if ( (p1 <= p+1) || (p1>=val.value.length-2)) return (false);
   	// il second level domain deve essere di almeno 2 caratteri
   	// nota: se e' un dominio di terzo livello questo controllo non funziona
   	if (val.value.substring(p,p1).length<3) return (false);

   	return true;
}

function isNum(val, len, req) {
// Check for "0-9", ".", "-", and optionally length.
   	if ((val.value.length == 0) && (req == "R")) {
      	return false;
   	}
   	if (val.value.length != 0) {
      	for (i = 0; i < val.value.length; i++) {
         	var ch = val.value.charAt(i);
         	if ((ch >= "0" && ch <= "9") || (ch == ".") || (ch == "-")) {
            	continue;
         	} else {
            	return false;
         	}
      	}
      	if (len != "0") {
         	if (val.value.length != len) {
            	return false;
         	}
      	}
   	}
   	return true;
}

function isPhone(val, req) {

// Check for a North American style phone number (555-555-5555).
   	if ((val.value.length == 0) && (req == "R")) {
      	return false;
   	}
   	if (val.value.length != 0) {
      	var phoneformat = /^[0-9]{3}\-[0-9]{3}\-[0-9]{4}$/;
      	if (!phoneformat.test(val.value)) {
         	return false;
      	}
   	}
   	return true;
}

function isText(val, len, req) {
// Check that field is not empty and optionally length.
   	if ((val.value.length == 0) && (req == "R")) {
      	return false;
   	}
   	if (val.value.length != 0) {
      	if (len != "0") {
         	if (val.value.length != len) {
            	return false;
         	}
      	}
   	}
   	return true;
}

function isSelected(form, field, req){

   	i = eval(form.elements[field]).selectedIndex;
   
   	if ((eval(form.elements[field]).options[i].value=="") && (req == "R")){
	   	return false;
   	} else {
	   	return true;
   	}
}

function isChecked(form, field, req){
   	
	if ((form[0].elements[field].checked) && (req == "R")){
	   	return true;
   	} else {
	   	return false;
   	}
}

function isExists(val){
   	
	if (val){
	   	return true;
   	} else {
	   	return false;
   	}
}
