﻿// Funzioni gestione campo /////////////////////////////////////////////////////////////////////////////////////////////////////////
function emptyField(field){if(field.defaultValue==field.value){field.value='';}}
function fillField(field){if(field.value==''){field.value=field.defaultValue;}}

// Controllo submit form /////////////////////////////////////////////////////////////////////////////////////////////////////////
function checkSubmitForm(sender) {
    sender = $(sender);
    
    var formsubmit = true;
    $$('.required-field').setStyle('display','none');
    
    var req = sender.getElements('.required-field');
    req.each(function(el){
        var prev = el.getPrevious('input');
        if (!prev) { prev = el.getPrevious('select'); }
        if (!prev) { prev = el.getPrevious('textarea'); }

        var fieldValue = '';
        if (prev.get('type') == 'checkbox') {
            fieldValue = prev.checked ? '1' : '';
        }
        else if(prev.className == 'email') {
            fieldValue = isEmail(prev.value) ? prev.value : '';
        }
        else {
            if ($defined(prev.value)) {
                fieldValue = prev.value;
            }
        }

        if (fieldValue.length <= 0) {
            prev.focus();
            el.setStyle('display','block');
            formsubmit = false;
        }

    });
    
    return formsubmit;
}

// Controllo indirizzi email /////////////////////////////////////////////////////////////////////////////////////////////////////////
function isEmail (emailStr) {
	// Formato user@domain e separazione di username e dominio
	var emailPat=/^(.+)@(.+)$/ ;
	// Pattern per ritrovare i caratteri speciali (non consentiti)
	var specialChars="\\(\\)<>@,;:\\\\\\\"\\.\\[\\]" ;
	// Caratteri consentiti in username o domainname
	var validChars="\[^\\s" + specialChars + "\]" ;
	// Username contenente spazi
	var quotedUser="(\"[^\"]*\")" ;
	// domainName costituito da un indirizzo IP
	var ipDomainPat=/^\[(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})\]$/ ;
	// Unità 'atomo' ovvero una serie di caratteri non speciali
	var atom=validChars + '+' ;
	// Una 'word' dell'username. L'username può essere costituito da più 'word'
	// separate da .
	var word="(" + atom + "|" + quotedUser + ")" ;
	// Struttura dell'username
	var userPat=new RegExp("^" + word + "(\\." + word + ")*$") ;
	// Dominio sombolico
	var domainPat=new RegExp("^" + atom + "(\\." + atom +")*$") ;

	// Controllo della sintassi username@domain e separazione dell'username dal
	// domain
	var matchArray=emailStr.match(emailPat) ;
	if (matchArray==null) {
		//alert("Email address seems incorrect (check @ and .'s)")
		return false;
	}
	var user=matchArray[1] ;
	var domain=matchArray[2];
	
	// User valido.
	if (user.match(userPat)==null) {
	    //alert("The username doesn't seem to be valid.")
	    return false;
	}
	
	// Indirizzo IP valido (nel caso in cui il domain sia un IP.
	var IPArray=domain.match(ipDomainPat);
	if (IPArray!=null) {
		  for (var i=1;i<=4;i++) {
		    if (IPArray[i]>255) {
		        //alert("Destination IP address is invalid!")
			return false;
		    }
	    }
	    return true;
	}
	
	// Domain è un nome simbolico
	var domainArray=domain.match(domainPat);
	if (domainArray==null) {
		//alert("The domain name doesn't seem to be valid.")
	    return false;
	}

	// controllo sulla parte terminale del domain.

	// Spezzo il domain in 'atomi'
	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>6)) {
	   // alert("The address must end in a three-letter domain, or two letter country.")
	   return false;
	}
	
	// Parte terminale del dominio preceduta da un host name.
	if (len<2) {
	   //var errStr="This address is missing a hostname!"
	   //alert(errStr)
	   return false;
	}
	
	return true;
}

// Funzione back browser /////////////////////////////////////////////////////////////////////////////////////////////////////////
function browserBack(e) {
    e = new Event(e);
    e.preventDefault();
    history.back();
    return false;
}
