var minAnno=1900;
var maxAnno=2150;
var votoDiplBase1 = 60;
var votoDiplBase1Min = 36;
var votoDiplBase2 = 100;
var votoDiplBase2Min = 60;


/***********************************************************************/
/***                    INIZIO: FUNZIONI DI UTILITY                  ***/
/***********************************************************************/

function isInteger(s){
	var i;
    for (i = 0; i < s.length; i++){   
        // Check that current character is number.
        var c = s.charAt(i);
        if (((c < "0") || (c > "9"))) return false;
    }
    // All characters are numbers.
    return true;
}

function stripCharsInBag(s, bag){
	var i;
    var returnString = "";
    // Search through string's characters one by one.
    // If character is not in bag, append to returnString.
    for (i = 0; i < s.length; i++){   
        var c = s.charAt(i);
        if (bag.indexOf(c) == -1) returnString += c;
    }
    return returnString;
}

function trim(stringa)
{
	while (stringa.charAt(0) == " ")
		stringa = stringa.substring(1, stringa.length-1);
	
	while (stringa.charAt(stringa.length-1) == " ")
		stringa = stringa.substring(0, stringa.length-2);
	
	return stringa;
}

function existsNumberInString(strValue){

	if(strValue.search("0")!=-1 || strValue.search("1")!=-1 || strValue.search("2")!=-1 || strValue.search("3")!=-1 
			||strValue.search("4")!=-1 || strValue.search("5")!=-1 || strValue.search("6")!=-1 || strValue.search("7")!=-1 
			|| strValue.search("8")!=-1 || strValue.search("9")!=-1 ) {
		return false;
	}
	
	return true;

}

function IsNumeric(inputVal) {
    if (isNaN(parseFloat(inputVal))) {
         return false;
    }
    return true;
}

function isPrice(str) { 
	priceRegExp = /^(\d{1,3}(\.\d{3})*|(\d+))(\,\d{2})?$/;
	if (!priceRegExp.test(str)) { 
		return false;	
	} 		
	return true; 
} 

/*** loadPage: esegue il caricamento della pagina indicata ***/
function loadPage(pageName, baseUrl) {
	
	var fileNamePath = pageName;
	if (baseUrl != "") {
		fileNamePath = baseUrl + "/" + fileNamePath;
	}
	
	window.location=fileNamePath;
}

/*** loadPopupPage: esegue il caricamento della pagina indicata ***/
function loadPopupPage(pageName, baseUrl, Msg, paramPage) {

	var fileNamePath = pageName;
	if (baseUrl != "") {
		fileNamePath = baseUrl + "/" + fileNamePath;
	}
	
	window.open(fileNamePath, Msg, paramPage);
}

/*** AjaxInclude: esegue l'include della pagina specificata ***/
function AjaxInclude(idTag, filePathName) {
	$('#'+idTag).load(filePathName);
}


/***********************************************************************/
/***                    FINE: FUNZIONI DI UTILITY                  ***/
/***********************************************************************/

/***********************************************************************/
/***       INIZIO: FUNZIONI PER LA VALIDAZIONE DEL CODICE FISCALE      ***/
/***********************************************************************/

function calcolaCodiceFiscale(codFis, Giorno, Mese, annoIntero, siglaSesso, cog, nom, provNascita, locNascita, statoNascita){
	var gs=0;
	var i=0;
	var somma=0;

	strCodFis="";
	strcognome="";
	strnome="";
	strgiornosex="";
	chrcontrollo='';
	
  if (Mese == '01') Mese = 'A';
	if (Mese == '02') Mese = 'B';
	if (Mese == '03') Mese = 'C';
	if (Mese == '04') Mese = 'D';
	if (Mese == '05') Mese = 'E';
	if (Mese == '06') Mese = 'H';
	if (Mese == '07') Mese = 'L';
	if (Mese == '08') Mese = 'M';
	if (Mese == '09') Mese = 'P';
	if (Mese == '10') Mese = 'R';
	if (Mese == '11') Mese = 'S';
	if (Mese == '12') Mese = 'T';

	Anno=annoIntero.substring(2,4);
	
	Comune=locNascita.toUpperCase();
	Stato=statoNascita.toUpperCase();

	Sesso=null;
	if (siglaSesso == 'M') {
		Sesso = 0;
	} else if (siglaSesso == 'F') {	
		Sesso = 1;
	}

	//------------------------------------------------------------
	// Processa il cognome
	//----------------------------------------------------------------
	cognome = cog.toUpperCase();
	for (i=0; i<cognome.length; i++){
		switch (cognome.charAt(i)){
		case 'A':
		case 'E':
		case 'I':
		case 'O':
		case 'U': break;
		default :
			if((cognome.charAt(i)<='Z')&& (cognome.charAt(i)>'A'))
				strcognome = strcognome + cognome.charAt(i);
			}
	}
	if (strcognome.length < 3){
		for (i=0; i<cognome.length; i++){
			switch (cognome.charAt(i)){
			case 'A':
			case 'E':
			case 'I':
			case 'O':
			case 'U': strcognome = strcognome + cognome.charAt(i);
			}
		}
		if (strcognome.length < 3){
			for (i=strcognome.length; i<=3; i++){
				strcognome = strcognome + 'X';
			}
		}
	}
	strcognome = strcognome.substring(0,3);
	
	//------------------------------------------------------------
	// processa il nome
	//----------------------------------------------------------------
	nome = nom.toUpperCase();
	for (i=0; i<nome.length; i++){
		switch (nome.charAt(i)){
		case 'A':
		case 'E':
		case 'I':
		case 'O':
		case 'U': break;
		default:
			if((nome.charAt(i)<='Z')&& (nome.charAt(i)>'A'))
				strnome = strnome + nome.charAt(i);
			}
		}
		if (strnome.length > 3){
			strnome = strnome.substring(0,1) + strnome.substring(2,4);
		}	else {
			if (strnome.length < 3){
				for (i=0; i<nome.length; i++){
					switch (nome.charAt(i)){
					case 'A':
					case 'E':
					case 'I':
					case 'O':
					case 'U': strnome = strnome + nome.charAt(i);
					}
				}
				if (strnome.length < 3){
					for (i=strnome.length; i<=3; i++){
						strnome = strnome + 'X';
					}
				}
			}
			strnome = strnome.substring(0,3);
		}
	//--------------------------------------- Fine processa nome
	
	// processa giorno e sesso
	//--------------------------------------------
		gs = parseInt(Giorno) + (40 * parseInt(Sesso));
		if(gs<10) strgiornosex = "0" + gs;
		else strgiornosex = gs;
	//--------------------------------------------
	Comune = trim(Comune);
	Stato= trim(Stato);

	//Gestione nati all'estero
	if(trim(provNascita) == "EE")
		strCodFis = strcognome + strnome + Anno + Mese + strgiornosex + Stato;
	else //nati in italia
		strCodFis = strcognome + strnome + Anno + Mese + strgiornosex + Comune;
	
	// calcola la cifra di controllo
	//--------------------------------------------
	for (i=0; i<15; i++) {
		if (((i+1) % 2) != 0) //caratteri dispari
		{
			switch (strCodFis.charAt(i))
			{
			case '0':
			case 'A':{ somma += 1; break;}
			case '1':
			case 'B':{ somma += 0; break;}
			case '2':
			case 'C':{ somma += 5; break;}
			case '3':
			case 'D':{ somma += 7; break;}
			case '4':
			case 'E':{ somma += 9; break;}
			case '5':
			case 'F':{ somma += 13; break;}
			case '6':
			case 'G':{ somma += 15; break;}
			case '7':
			case 'H':{ somma += 17; break;}
			case '8':
			case 'I':{ somma += 19; break;}
			case '9':
			case 'J':{ somma += 21; break;}
			case 'K':{ somma += 2; break;}
			case 'L':{ somma += 4; break;}
			case 'M':{ somma += 18; break;}
			case 'N':{ somma += 20; break;}
			case 'O':{ somma += 11; break;}
			case 'P':{ somma += 3; break;}
			case 'Q':{ somma += 6; break;}
			case 'R':{ somma += 8; break;}
			case 'S':{ somma += 12; break;}
			case 'T':{ somma += 14; break;}
			case 'U':{ somma += 16; break;}
			case 'V':{ somma += 10; break;}
			case 'W':{ somma += 22; break;}
			case 'X':{ somma += 25; break;}
			case 'Y':{ somma += 24; break;}
			case 'Z':{ somma += 23; break;}
			}
		}
		else //caratteri pari
		{
			switch (strCodFis.charAt(i))
			{
			case '0':
			case 'A':{ somma += 0; break;}
			case '1':
			case 'B':{ somma += 1; break;}
			case '2':
			case 'C':{ somma += 2; break;}
			case '3':
			case 'D':{ somma += 3; break;}
			case '4':
			case 'E':{ somma += 4; break;}
			case '5':
			case 'F':{ somma += 5; break;}
			case '6':
			case 'G':{ somma += 6; break;}
			case '7':
			case 'H':{ somma += 7; break;}
			case '8':
			case 'I':{ somma += 8; break;}
			case '9':
			case 'J':{ somma += 9; break;}
			case 'K':{ somma += 10; break;}
			case 'L':{ somma += 11; break;}
			case 'M':{ somma += 12; break;}
			case 'N':{ somma += 13; break;}
			case 'O':{ somma += 14; break;}
			case 'P':{ somma += 15; break;}
			case 'Q':{ somma += 16; break;}
			case 'R':{ somma += 17; break;}
			case 'S':{ somma += 18; break;}
			case 'T':{ somma += 19; break;}
			case 'U':{ somma += 20; break;}
			case 'V':{ somma += 21; break;}
			case 'W':{ somma += 22; break;}
			case 'X':{ somma += 23; break;}
			case 'Y':{ somma += 24; break;}
			case 'Z':{ somma += 25; break;}
			}
		}
	}
	somma %= 26;
	switch (somma)
	{
		case 0: {chrcontrollo='A'; break;}
		case 1: {chrcontrollo='B'; break;}
		case 2: {chrcontrollo='C'; break;}
		case 3: {chrcontrollo='D'; break;}
		case 4: {chrcontrollo='E'; break;}
		case 5: {chrcontrollo='F'; break;}
		case 6: {chrcontrollo='G'; break;}
		case 7: {chrcontrollo='H'; break;}
		case 8: {chrcontrollo='I'; break;}
		case 9: {chrcontrollo='J'; break;}
		case 10: {chrcontrollo='K'; break;}
		case 11: {chrcontrollo='L'; break;}
		case 12: {chrcontrollo='M'; break;}
		case 13: {chrcontrollo='N'; break;}
		case 14: {chrcontrollo='O'; break;}
		case 15: {chrcontrollo='P'; break;}
		case 16: {chrcontrollo='Q'; break;}
		case 17: {chrcontrollo='R'; break;}
		case 18: {chrcontrollo='S'; break;}
		case 19: {chrcontrollo='T'; break;}
		case 20: {chrcontrollo='U'; break;}
		case 21: {chrcontrollo='V'; break;}
		case 22: {chrcontrollo='W'; break;}
		case 23: {chrcontrollo='X'; break;}
		case 24: {chrcontrollo='Y'; break;}
		case 25: {chrcontrollo='Z'; break;}
	}
	//--------------------------------------------

	var codCalc = strCodFis + chrcontrollo;
	codiceFiscale = codFis.toUpperCase();
	if (codCalc != codiceFiscale){
		return false;
	}else {
		return true;
	}
}
/***********************************************************************/
/***       FINE: FUNZIONI PER LA VALIDAZIONE DEL CODICE FISCALE      ***/
/***********************************************************************/


/***********************************************************************/
/***          INIZIO: FUNZIONI PER LA VALIDAZIONE DELLE DATA         ***/
/***********************************************************************/
var dtCh= "/";
var minYear=1900;
var maxYear=2100;


function daysInFebruary (year){
	// February has 29 days in any year evenly divisible by four,
    // EXCEPT for centurial years which are not also divisible by 400.
    return (((year % 4 == 0) && ( (!(year % 100 == 0)) || (year % 400 == 0))) ? 29 : 28 );
}

function DaysArray(n) {
	for (var i = 1; i <= n; i++) {
		this[i] = 31
		if (i==4 || i==6 || i==9 || i==11) {this[i] = 30}
		if (i==2) {this[i] = 29}
   } 
   return this
}

function isDate(dtStr){
	var daysInMonth = DaysArray(12)
	var pos1=dtStr.indexOf(dtCh)
	var pos2=dtStr.indexOf(dtCh,pos1+1)
	var strDay=dtStr.substring(0,pos1)
	var strMonth=dtStr.substring(pos1+1,pos2)
	var strYear=dtStr.substring(pos2+1)
	strYr=strYear
	if (strDay.charAt(0)=="0" && strDay.length>1) strDay=strDay.substring(1)
	if (strMonth.charAt(0)=="0" && strMonth.length>1) strMonth=strMonth.substring(1)
	for (var i = 1; i <= 3; i++) {
		if (strYr.charAt(0)=="0" && strYr.length>1) strYr=strYr.substring(1)
	}
	month=parseInt(strMonth)
	day=parseInt(strDay)
	year=parseInt(strYr)
	if (pos1==-1 || pos2==-1){
		//alert("The date format should be : dd/mm/yyyy")
		return false
	}
	if (strMonth.length<1 || month<1 || month>12){
		//alert("Please enter a valid month")
		return false
	}
	if (strDay.length<1 || day<1 || day>31 || (month==2 && day>daysInFebruary(year)) || day > daysInMonth[month]){
		//alert("Please enter a valid day")
		return false
	}
	if (strYear.length != 4 || year==0 || year<minYear || year>maxYear){
		//alert("Please enter a valid 4 digit year between "+minYear+" and "+maxYear)
		return false
	}
	if (dtStr.indexOf(dtCh,pos2+1)!=-1 || isInteger(stripCharsInBag(dtStr, dtCh))==false){
		//alert("Please enter a valid date")
		return false
	}
return true
}

/***********************************************************************/
/***          FINE: FUNZIONI PER LA VALIDAZIONE DELLE DATA         ***/
/***********************************************************************/


/***********************************************************************/
/***         FINE: FUNZIONE PER LA VALIDAZIONE EMAIL STRING          ***/
/***********************************************************************/

/** emailCheck() verifica se e' una email valida
 * @param emailStr email address
 * @return true se la email e' ok altrimenti false
 */
function emailCheck (emailStr) {
	/* The following pattern is used to check if the entered e-mail address
	   fits the user@domain format.  It also is used to separate the username
	   from the domain. */
	var emailPat=/^(.+)@(.+)$/
	/* The following string represents the pattern for matching all special
	   characters.  We don't want to allow special characters in the address. 
	   These characters include ( ) < > @ , ; : \ " . [ ]    */
	var specialChars="\\(\\)<>@,;:\\\\\\\"\\.\\[\\]"
	/* The following string represents the range of characters allowed in a 
	   username or domainname.  It really states which chars aren't allowed. */
	var validChars="\[^\\s" + specialChars + "\]"
	/* The following pattern applies if the "user" is a quoted string (in
	   which case, there are no rules about which characters are allowed
	   and which aren't; anything goes).  E.g. "jiminy cricket"@disney.com
	   is a legal e-mail address. */
	var quotedUser="(\"[^\"]*\")"
	/* The following pattern applies for domains that are IP addresses,
	   rather than symbolic names.  E.g. joe@[123.124.233.4] is a legal
	   e-mail address. NOTE: The square brackets are required. */
	var ipDomainPat=/^\[(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})\]$/
	/* The following string represents an atom (basically a series of
	   non-special characters.) */
	var atom=validChars + '+'
	/* The following string represents one word in the typical username.
	   For example, in john.doe@somewhere.com, john and doe are words.
	   Basically, a word is either an atom or quoted string. */
	var word="(" + atom + "|" + quotedUser + ")"
	// The following pattern describes the structure of the user
	var userPat=new RegExp("^" + word + "(\\." + word + ")*$")
	/* The following pattern describes the structure of a normal symbolic
	   domain, as opposed to ipDomainPat, shown above. */
	var domainPat=new RegExp("^" + atom + "(\\." + atom +")*$")


	/* Finally, let's start trying to figure out if the supplied address is
	   valid. */

	/* Begin with the coarse pattern to simply break up user@domain into
	   different pieces that are easy to analyze. */
	var matchArray=emailStr.match(emailPat)
	if (matchArray==null) {
	  /* Too many/few @'s or something; basically, this address doesn't
	     even fit the general mould of a valid e-mail address. */
//		alert("Email address seems incorrect (check @ and .'s)")
		return false
	}
	var user=matchArray[1]
	var domain=matchArray[2]

	// See if "user" is valid 
	if (user.match(userPat)==null) {
	    // user is not valid
//	    alert("The username doesn't seem to be valid.")
	    return false
	}

	/* if the e-mail address is at an IP address (as opposed to a symbolic
	   host name) make sure the IP address is valid. */
	var IPArray=domain.match(ipDomainPat)
	if (IPArray!=null) {
	    // this is an IP address
		  for (var i=1;i<=4;i++) {
		    if (IPArray[i]>255) {
//		        alert("Destination IP address is invalid!")
			return false
		    }
	    }
	    return true
	}

	// Domain is symbolic name
	var domainArray=domain.match(domainPat)
	if (domainArray==null) {
//		alert("The domain name doesn't seem to be valid.")
	    return false
	}

	/* domain name seems valid, but now make sure that it ends in a
	   three-letter word (like com, edu, gov) or a two-letter word,
	   representing country (uk, nl), and that there's a hostname preceding 
	   the domain or country. */

	/* Now we need to break up the domain to get a count of how many atoms
	   it consists of. */
	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) {
	   // the address must end in a two letter or three letter word.
	//   alert("The address must end in a three-letter domain, or two letter country.")
	   return false
	}

	// Make sure there's a host name preceding the domain.
	if (len<2) {
	   var errStr="This address is missing a hostname!"
	//   alert(errStr)
	   return false
	}

	// If we've gotten this far, everything's valid!
	return true;
}
	//  End -->

/***********************************************************************/
/***         FINE: FUNZIONE PER LA VALIDAZIONE EMAIL STRING          ***/
/***********************************************************************/


/***********************************************************************/
/***            INIZIO: FUNZIONI PER LA VALIDAZIONE CAMPI            ***/
/***********************************************************************/

/*** validFieldText: intercetta onchange sui campi di tipo text ***/
function validFieldText(idTxt, idLbl, tipoPag) {

	if (tipoPag == 'CV') {
		$('label#'+idLbl).removeClass("lbl_Error");
		$('input#'+idTxt).parent('div').removeClass("inp_Error");
	}
	
}

/*** validFieldTextArea: intercetta onchange sui campi di tipo textarea ***/
function validFieldTextArea(idTxt, idLbl, tipoPag) {

	if (tipoPag == 'CV') {
		$('label#'+idLbl).removeClass("lbl_Error");
		$('textarea#'+idTxt).parent('div').removeClass("inp_Error");
	}
	
}

/*** validFieldOption: intercetta onchange sui campi di tipo option ***/
function validFieldOption(idSel, idLbl, tipoPag) {

	if (tipoPag == 'CV') {
		$('label#'+idLbl).removeClass("lbl_Error");
		$('select#'+idSel).parent('div').removeClass("inp_Error");
	}
	
}

/***********************************************************************/
/***             FINE: FUNZIONI PER LA VALIDAZIONE CAMPI             ***/
/***********************************************************************/


/***********************************************************************/
/***           INIZIO: FUNZIONI A SUPPORTO DELL'OPERATIVITA          ***/
/***********************************************************************/

/*** AjaxLoadPopUpMediaBox: esegue la chiamata alla pagina di pou-up ***/
function AjaxLoadPopUpMediaBox(idTag, filePathName, idCnt, nazName) {

	$('#'+idTag).empty();
	$('#boxMain').html('<div class="box_Popup_Media"><div class="box_Loading">Loading...</div></div></div>');
	$('#boxMain').html('').hide();
	$('#'+idTag).show();
	AjaxInclude(idTag, filePathName + '?rnd=' + Math.ceil(Math.random()*10000));

	$('li[name="'+nazName+'"]').addClass('li_Selected');
	$('li[id="'+idCnt+'"]').addClass('li_Selected');

}

/*** AjaxClosePopUpMediaBox: esegue la chiamata alla pagina di pou-up ***/
function AjaxClosePopUpMediaBox(idTag, idCnt, nazName) {

	$('#'+idTag).hide();
	$('#boxMain').html('').hide();
	$('#boxLoading').show();

	$('li').removeClass('li_Selected');
}


/*** AjaxLoadLocalita: esegue la chiamata per il caricamento dei comuni ***/
function AjaxLoadLocalitaStato(idTagLoc, filePathNameLoc, idTagSt, filePathNameSt, tpProv) {
	var siglaProv = "";
	var dataStr = "";
	
	if (tpProv == 'NAS') {
		siglaProv = $("select#optProvNascita").val();
		dataStr += '?tpProv=NAS&prov='+siglaProv;
	}	else if (tpProv == 'RES') {
		siglaProv = $("select#optProvRes").val();
		dataStr += '?tpProv=RES&prov='+siglaProv;
	}	else if (tpProv == 'DOM') {
		siglaProv = $("select#optProvDom").val();
		dataStr += '?tpProv=DOM&prov='+siglaProv;
	} 

	AjaxInclude(idTagLoc, filePathNameLoc + dataStr + '&rnd=' + Math.ceil(Math.random()*10000));
	AjaxInclude(idTagSt, filePathNameSt + dataStr + '&rnd=' + Math.ceil(Math.random()*10000));

}


/*** AjaxInviaCV: esegue la validazione dati e la costruzione dell'xml risultante ***/
function AjaxInviaCV() {
	var dataStr = "";
	var errValid = false;

	// Validazione e Recupero Nome (obbligatorio)		
	var nome = $('input#txtNome').val();
	if (nome == undefined || nome == '') {
		$('label#lblNome').addClass('lbl_Error');
		$('input#txtNome').parent('div').addClass('inp_Error');
		errValid = true;
	}	else if (nome.length < 2) {
			alert("Il nome deve essere lungo almeno due caratteri.");
			return false;		
	}	else if (existsNumberInString(nome) == false) {
			alert("Il nome non deve contenere numeri.");
			return false;		
	}	else {
		dataStr += "nome=" + nome;
	}

	// Validazione e Recupero Cognome (obbligatorio)		
	var cognome = $('input#txtCognome').val();
	if (cognome == undefined || cognome == '') {
		$('label#lblCognome').addClass('lbl_Error');
		$('input#txtCognome').parent('div').addClass('inp_Error');
		errValid = true;
	}	else if (cognome.length < 2) {
			alert("Il cognome deve essere lungo almeno due caratteri.");
			return false;		
	}	else if (existsNumberInString(cognome) == false) {
			alert("Il cognome non deve contenere numeri.");
			return false;		
	} else {
		dataStr += "&cog=" + cognome;
	}

	// Validazione e Recupero Data di Nascita (obbligatorio)		
	var dtGiorno =  $("select#giornoNascita").val();
	var dtMese =  $("select#meseNascita").val();
	var dtAnno =  $("input#annoNascita").val();
	var dtNascita =  dtGiorno+"/"+dtMese+"/"+dtAnno;	
	if (dtGiorno == undefined || dtGiorno == '' || dtMese == undefined || dtMese == '' || dtAnno == '') {
		$('label#lblDataNascita').addClass('lbl_Error');
		$('select#giornoNascita').parent('div').addClass('inp_Error');
		errValid = true;
	} else if (isDate(dtNascita) == false) {
			alert("Inserire una data valida.");
			return false;
	} else {
			dataStr += "&dtNasc=" + dtNascita;
	}

	// Recupero Sesso (obbligatorio)		
	var optSesso = $('input[name=rdSesso]:checked').val();
	dataStr += "&sesso=" + optSesso;

	// Validazione e Recupero Provincia di Nascita (obbligatorio)		
	var nascProv =  $("select#optProvNascita").val();
	if (nascProv == undefined || nascProv == '') {
		$('label#lblProvNascita').addClass('lbl_Error');
		$('select#optProvNascita').parent('div').addClass('inp_Error');
		errValid = true;
	} else {
			dataStr += "&provNasc=" + nascProv;
	}

	// Validazione e Recupero Luogo di Nascita (obbligatorio)		
	var locNasc = $('select#optLuogoNasc').val();
	var locNascText = $('select#optLuogoNasc option[value=' + locNasc + ']:selected').text();
	if (locNasc == undefined || locNasc == '') {
		$('label#lblLuogoNasc').addClass('lbl_Error');
		$('select#optLuogoNasc').parent('div').addClass('inp_Error');
		errValid = true;
	} else {
		dataStr += "&luogoNasc=" + locNascText;
	}

	// Validazione e Recupero Stato di Nascita (obbligatorio)		
	var statoNasc = $('select#optStatoNasc').val();
	var statoNascText = $('select#optStatoNasc option[value=' + statoNasc + ']:selected').text();
	if (statoNasc == undefined || statoNasc == '') {
		$('label#lblStatoNasc').addClass('lbl_Error');
		$('select#optStatoNasc').parent('div').addClass('inp_Error');
		errValid = true;
	} else {
		dataStr += "&statoNasc=" + statoNascText;
	}

	// Recupero Cittadinanza
	if ($('#txtCittadinanza').val() == '') {
		dataStr += "&cittad=";
	} else {
		dataStr += "&cittad=" + $('#txtCittadinanza').val();
	}

	// Recupero Stato Civile
	var stCiv =  $("select#optStatoCivile").val();
	var stCivText = $('select#optStatoCivile option[value=' + stCiv + ']:selected').text();
	if (stCiv == undefined || stCiv == '') {
			dataStr += "&statoCiv=";
	} else {
			dataStr += "&statoCiv=" + stCivText;
	}

	// Recupero Servizio Militare
	var servMil =  $("select#optServMilitare").val();
	var servMilText = $('select#optServMilitare option[value=' + servMil + ']:selected').text();
	if (servMil == undefined || servMil == '') {
			dataStr += "&servMil=";
	} else {
			dataStr += "&servMil=" + servMilText;
	}


	// Validazione e Recupero Indirizzo di Residenza (obbligatorio)		
	if ($('#txtIndRes').val() == '') {
		$('label#lblIndRes').addClass('lbl_Error');
		$('input#txtIndRes').parent('div').addClass('inp_Error');
		errValid = true;
	} else {
		dataStr += "&indRes=" + $('#txtIndRes').val();
	}

	// Validazione e Recupero Provincia di Residenza (obbligatorio)		
	var resProv =  $("select#optProvRes").val();
	if (resProv == undefined || resProv == '') {
		$('label#lblProvRes').addClass('lbl_Error');
		$('select#optProvRes').parent('div').addClass('inp_Error');
		errValid = true;
	} else {
			dataStr += "&provRes=" + resProv;
	}

	// Recupero Localita di residenza
	var locRes =  $("select#optLocRes").val();
	var locResText = $('select#optLocRes option[value=' + locRes + ']:selected').text();
	if (locRes == undefined || locRes == '') {
			dataStr += "&locRes=";
	} else {
			dataStr += "&locRes=" + locResText;
	}

	// Recupero CAP di residenza
	var capRes =  $("input#txtCapRes").val();
	if (capRes == undefined || capRes == '') {
			dataStr += "&capRes=";
	} else {
			dataStr += "&capRes=" + capRes;
	}

	// Recupero Stato di residenza
	var statoRes =  $("select#optStRes").val();
	var statoResText = $('select#optStRes option[value=' + statoRes + ']:selected').text();
	if (statoRes == undefined || statoRes == '') {
			dataStr += "&statoRes=";
	} else {
			dataStr += "&statoRes=" + statoResText;
	}

	// Recupero Telefono abitazione di residenza
	var telAb =  $("input#txtTelAbRes").val();
	if (telAb == undefined || telAb == '') {
			dataStr += "&telAbRes=";
	} else {
			dataStr += "&telAbRes=" + telAb;
	}

	// Recupero Telefono cellulare
	var telCell =  $("input#txtTelCellRes").val();
	if (telCell == undefined || telCell == '') {
			dataStr += "&telCellRes=";
	} else {
			dataStr += "&telCellRes=" + telCell;
	}

	// Recupero Email
	var email =  $("input#txtEmail").val();
	if (email == undefined || email == '') {
		dataStr += "&email=";
	} else if (!emailCheck(email)) {
 			alert("Inserire una E-Mail valida");
	 		return false;
	} else {
			dataStr += "&email=" + email;
	}

	// Recupero Indirizzo di Domicilio
	var domInd =  $("input#txtIndDom").val();
	if (domInd == undefined || domInd == '') {
			dataStr += "&indDom=";
	} else {
			dataStr += "&indDom=" + domInd;
	}

	// Recupero Provincia di Domicilio 
	var domProv =  $("select#optProvDom").val();
	if (domProv == undefined || domProv == '') {
			dataStr += "&domProv=";
	} else {
			dataStr += "&domProv=" + domProv;
	}

	// Recupero Localita di Domicilio
	var locDom =  $("select#optLocDom").val();
	var locDomText = $('select#optLocDom option[value=' + locDom + ']:selected').text();
	if (locDom == undefined || locDom == '') {
			dataStr += "&locDom=";
	} else {
			dataStr += "&locDom=" + locDomText;
	}

	// Recupero CAP di Domicilio
	var capDom =  $("input#txtCapDom").val();
	if (capDom == undefined || capDom == '') {
			dataStr += "&capDom=";
	} else {
			dataStr += "&capDom=" + capDom;
	}

	// Recupero Stato di Domicilio
	var statoDom =  $("select#optStDom").val();
	var statoDomText = $('select#optStDom option[value=' + statoDom + ']:selected').text();
	if (statoDom == undefined || statoDom == '') {
			dataStr += "&statoDom=";
	} else {
			dataStr += "&statoDom=" + statoDomText;
	}

	// Recupero Telefono abitazione di Domicilio
	var telAbDom =  $("input#txtTelAbDom").val();
	if (telAbDom == undefined || telAbDom == '') {
			dataStr += "&telAbDom=";
	} else {
			dataStr += "&telAbDom=" + telAbDom;
	}

	// Recupero Altro Recapito
	var altroRec =  $("input#txtAltroRec").val();
	if (altroRec == undefined || altroRec == '') {
			dataStr += "&altroRec=";
	} else {
			dataStr += "&altroRec=" + altroRec;
	}

	// Validazione e Recupero Codice Fiscale (obbligatorio)		
	var codFis =  $("input#txtCodFis").val();
	if (nascProv != "EE") {
		if (codFis == undefined || codFis == '') {
				$('label#lblCodFis').addClass('lbl_Error');
				$('input#txtCodFis').parent('div').addClass('inp_Error');
				errValid = true;
		}	else if(calcolaCodiceFiscale(codFis, dtGiorno, dtMese, dtAnno, optSesso, cognome, nome, nascProv, locNasc, statoNasc) == false ){
				alert ("Verificare la coerenza tra i dati anagrafici ed il codice fiscale! \n \n (Inserire i dati completi. Es. nel campo 'nome' inserire tutti gli eventuali nomi)");
				return false;
		} else {
				dataStr += "&codFis=" + codFis;
		}
	} else {
		dataStr += "&codFis=";
	}

	// Recupero Titolo di Studio		
	var optTitStudio = $('input[name=rdTitStudio]:checked').val();
	var chkLaureando = "no"; 
	if ($('input[name=chkLaureando]').is(':checked') == true) {
		chkLaureando =  "si";
	}
	dataStr += "&titStud=" + optTitStudio;
	dataStr += "&laureando=" + chkLaureando;

	// Recupero Maturita/Diploma
	var titMatDipl =  $("input#txtMatDipl").val();
	if (titMatDipl == undefined || titMatDipl == '') {
			dataStr += "&titMatDipl=";
	} else {
			dataStr += "&titMatDipl=" + titMatDipl;
	}

	// Recupero Istituto di Maturita/Diploma
	var istMatDipl =  $("input#txtIstDipl").val();
	if (istMatDipl == undefined || istMatDipl == '') {
			dataStr += "&istMatDipl=";
	} else {
			dataStr += "&istMatDipl=" + istMatDipl;
	}

	// Recupero Anno di Conseguimento Maturita/Diploma
	var annoCons =  $("input#txtAnnoCons").val();
	if (annoCons == undefined || annoCons == '') {
		dataStr += "&annoCons=";
	} else if (!isInteger(annoCons)) {
 			alert("Inserire un Anno di Conseguimento Diploma valido.");
	 		return false;
	} else if (annoCons <= minAnno || annoCons >= maxAnno) {
 			alert("Inserire un Anno di Conseguimento Diploma valido.");
	 		return false;
	} else {
			dataStr += "&annoCons=" + annoCons;
	}

	// Recupero Voto di Maturita/Diploma
	var votoDipl =  $("input#txtVotoDipl").val();
	var votoDiplSu =  $("input#txtVotoDiplSu").val();

	if (votoDiplSu == votoDiplBase1) {
		 if (parseInt(votoDipl) >= parseInt(votoDiplBase1Min) && parseInt(votoDipl) <= parseInt(votoDiplBase1)) {
				if (annoCons != "") {
					dataStr += "&votoDipl=" + votoDipl;
					dataStr += "&votoDiplSu=" + votoDiplSu;		 	
			  } else {
		 			alert("Inserire l'anno di conseguimento Diploma.");
			 		return false;		 	
	 		  }				
		 } else {
	 			alert("Inserire un Voto di Diploma valido.");
		 		return false;		 	
 		}
	} else if (votoDiplSu == votoDiplBase2) {
		 if (parseInt(votoDipl) >= parseInt(votoDiplBase2Min) && parseInt(votoDipl) <= parseInt(votoDiplBase2)) {
				if (annoCons != "") {
					dataStr += "&votoDipl=" + votoDipl;
					dataStr += "&votoDiplSu=" + votoDiplSu;		 	
 			  } else {
		 			alert("Inserire l'anno di conseguimento Diploma.");
			 		return false;		 	
	 		  }				
		 } else {
	 			alert("Inserire un Voto di Diploma valido.");
		 		return false;		 	
 		}
	} else if (votoDiplSu == undefined || votoDiplSu == '') {
		 if (votoDipl == undefined || votoDipl == '') {
		 		if (annoCons == "") {
			 		dataStr += "&votoDipl=";
					dataStr += "&votoDiplSu=";
	 		  } else {
		 			alert("Anno di conseguimento valorizzato.\nInserire un Voto di Diploma valido.");
			 		return false;		 		  	
				}
		 } else {
	 			alert("Inserire un Voto di Diploma valido.");
		 		return false;		 	
		 }		 	 		
	}	else {
 			alert("Inserire un Voto di Diploma valido.");
	 		return false;		 	
	}

	// Recupero Laurea vecchio ordinamento
	var laureaVecOrd =  $("select#optLaureaVecOrd").val();
	if (laureaVecOrd == undefined || laureaVecOrd == '') {
			dataStr += "&laureaVecOrd=";
	} else {
			dataStr += "&laureaVecOrd=" + laureaVecOrd;
	}

	// Recupero Laurea straniera
	var laureaStran =  $("select#optLaureaStran").val();
	if (laureaVecOrd == undefined || laureaVecOrd == '') {
			dataStr += "&laureaStran=";
	} else {
			dataStr += "&laureaStran=" + laureaStran;
	}

	// Recupero Altro titolo
	var altroTit =  $("input#txtAltroTit").val();
	if (altroTit == undefined || altroTit == '') {
			dataStr += "&altroTit=";
	} else {
			dataStr += "&altroTit=" + altroTit;
	}

	// Recupero Universitā
	var univ =  $("input#txtUniv").val();
	if (univ == undefined || univ == '') {
			dataStr += "&univ=";
	} else {
			dataStr += "&univ=" + univ;
	}

	// Recupero Anno inizio universitā
	var annoInUniv =  $("input#txtAnnoInUniv").val();
	if (annoInUniv == undefined || annoInUniv == '') {
			dataStr += "&annoInUniv=";
	} else if (!isInteger(annoInUniv)) {
 			alert("Inserire un Anno di Inizio corsi universitari valido.");
	 		return false;
	} else if (annoInUniv <= minAnno || annoInUniv >= maxAnno) {
 			alert("Inserire un Anno di Inizio corsi universitari valido.");
	 		return false;
	} else {
			dataStr += "&annoInUniv=" + annoInUniv;
	}

	// Recupero Anno conseguimento universitā
	var annoConsUniv =  $("input#txtAnnoConsUniv").val();
	if (annoConsUniv == undefined || annoConsUniv == '') {
			dataStr += "&annoConsUniv=";
	} else if (!isInteger(annoConsUniv)) {
 			alert("Inserire un Anno di Conseguimento Laurea valido.");
	 		return false;
	} else if (annoConsUniv <= minAnno || annoConsUniv >= maxAnno) {
 			alert("Inserire un Anno di Conseguimento Laurea valido.");
	 		return false;
	} else {
		//controllo se la data di inizio e antecedente alla data di fine
		if (annoInUniv >= annoConsUniv) {
	 			alert("Inserire dei valori validi per Anno di Inizio e Anno di Conseguimento Laurea.");
		 		return false;
		} else {
			dataStr += "&annoConsUniv=" + annoConsUniv;
		}
	}

	
	// Recupero Voto di Laurea
	var votoUniv =  $("input#txtVotoUniv").val();
	var votoUnivSu =  $("input#txtVotoUnivSu").val();
	var lodeUniv = "no"
	if ($('input[name=chkLodeUniv]').is(':checked') == true) {
		lodeUniv = "si"
	}

	if (votoUnivSu == undefined || votoUnivSu == "") {
		if (votoUniv == undefined || votoUniv == '') {
			if (annoConsUniv == "") {
					dataStr += "&votoUniv=";
					dataStr += "&votoUnivSu=";
			} else {
		 			alert("Anno di conseguimento valorizzato.\nInserire un Voto di Laurea valido.");
			 		return false;		 	
	 		}				
		} else {
			alert("Inserire un Voto di Laurea valido.");
	 		return false;			
		}	
	}	else {
		if (votoUniv == undefined || votoUniv == '') {
			alert("Inserire un Voto di Laurea valido.");
	 		return false;			
		} else {
			if (!isInteger(votoUnivSu)) {
	 			alert("Inserire un Voto di Laurea valido.");
		 		return false;			
			}
			if (!isInteger(votoUniv)) {
	 			alert("Inserire un Voto di Laurea valido.");
		 		return false;			
			}
			if (annoConsUniv != "") {
				//controllo se il voto preso sia compatibile con il massimo voto possibile inserito
				if (parseInt(votoUniv) > parseInt(votoUnivSu)) {
			 			alert("Inserire dei valori validi per il voto di Laurea.");
				 		return false;
				} else {
						dataStr += "&votoUniv=" + votoUniv;
						dataStr += "&votoUnivSu=" + votoUnivSu;				
				}
			} else {
				alert("Inserire l'anno di conseguimento della laurea.");
				return false;
			}
		}	
	}
	dataStr += "&lodeUniv=" + lodeUniv;

	// Recupero Laurea primo livello
	var laureaPrLiv =  $("input#txtLaureaPrLiv").val();
	if (laureaPrLiv == undefined || laureaPrLiv == '') {
			dataStr += "&laureaPrLiv=";
	} else {
			dataStr += "&laureaPrLiv=" + laureaPrLiv;
	}

	// Recupero Classe di Laurea primo livello
	var clsLaureaPrLiv =  $("select#optClsLaureaPrLiv").val();
	if (clsLaureaPrLiv == undefined || clsLaureaPrLiv == '') {
			dataStr += "&clsLaureaPrLiv=";
	} else {
			dataStr += "&clsLaureaPrLiv=" + clsLaureaPrLiv;
	}

	//Altri controlli su laurea di primo livello
	if (laureaPrLiv != '' && clsLaureaPrLiv == '') {
		alert("Laurea di primo livello valorizzato.\nInserire la classe di laurea di primo livello.");
		return false;
	}
	
	// Recupero Universitā primo livello
	var univPrLiv =  $("input#txtUnivPrLiv").val();
	if (univPrLiv == undefined || univPrLiv == '') {
			dataStr += "&univPrLiv=";
	} else {
			dataStr += "&univPrLiv=" + univPrLiv;
	}

	// Recupero Anno inizio universitā primo livello
	var annoInUnivPrLiv =  $("input#txtAnnoInUnivPrLiv").val();
	if (annoInUnivPrLiv == undefined || annoInUnivPrLiv == '') {
			dataStr += "&annoInUnivPrLiv=";
	} else if (!isInteger(annoInUnivPrLiv)) {
 			alert("Inserire un Anno di Inizio corsi universitari di Primo Livello valido.");
	 		return false;
	} else if (annoInUnivPrLiv <= minAnno || annoInUnivPrLiv >= maxAnno) {
 			alert("Inserire un Anno di Inizio corsi universitari di Primo Livello valido.");
	 		return false;
	} else {
			dataStr += "&annoInUnivPrLiv=" + annoInUnivPrLiv;
	}

	// Recupero Anno conseguimento universitā primo livello
	var annoConsUnivPrLiv =  $("input#txtAnnoConsUnivPrLiv").val();
	if (annoConsUnivPrLiv == undefined || annoConsUnivPrLiv == '') {
			dataStr += "&annoConsUnivPrLiv=";
	} else if (!isInteger(annoConsUnivPrLiv)) {
 			alert("Inserire un Anno di Conseguimento Laurea Primo Livello valido.");
	 		return false;
	} else if (annoConsUnivPrLiv <= minAnno || annoConsUnivPrLiv >= maxAnno) {
 			alert("Inserire un Anno di Conseguimento Laurea Primo Livello valido.");
	 		return false;
	} else {
			//controllo se la data di inizio e antecedente alla data di fine
			if (annoInUnivPrLiv >= annoConsUnivPrLiv) {
		 			alert("Inserire dei valori validi per Anno di Inizio e Anno di Conseguimento Laurea di Primo Livello.");
			 		return false;
			} else {
					dataStr += "&annoConsUnivPrLiv=" + annoConsUnivPrLiv;
			}
	}


	// Recupero Voto di Laurea Primo Livello
	var votoUnivPrLiv =  $("input#txtVotoUnivPrLiv").val();
	var votoUnivPrLivSu =  $("input#txtVotoUnivPrLivSu").val();
	var lodeUnivPrLiv = "no"
	if ($('input[name=chkLodeUnivPrLiv]').is(':checked') == true) {
		lodeUnivPrLiv = "si"
	}

	if (votoUnivPrLivSu == undefined || votoUnivPrLivSu == "") {
		if (votoUnivPrLiv == undefined || votoUnivPrLiv == '') {
			if (annoConsUnivPrLiv == "") {
					dataStr += "&votoUnivPrLiv=";
					dataStr += "&votoUnivPrLivSu=";
			} else {
		 			alert("Anno di conseguimento valorizzato.\nInserire un Voto di Laurea di Primo Livello valido.");
			 		return false;		 	
	 		}				
		} else {
			alert("Inserire un Voto di Laurea di Primo Livello valido.");
	 		return false;			
		}	
	}	else {
		if (votoUnivPrLiv == undefined || votoUnivPrLiv == '') {
			alert("Inserire un Voto di Laurea di Primo Livello valido.");
	 		return false;			
		} else {
			if (!isInteger(votoUnivPrLivSu)) {
				alert("Inserire un Voto di Laurea di Primo Livello valido.");
		 		return false;			
			}
			if (!isInteger(votoUnivPrLiv)) {
				alert("Inserire un Voto di Laurea di Primo Livello valido.");
		 		return false;			
			}
			if (annoConsUnivPrLiv != "") {
				//controllo se il voto preso sia compatibile con il massimo voto possibile inserito
				if (parseInt(votoUnivPrLiv) > parseInt(votoUnivPrLivSu)) {
			 			alert("Inserire dei valori validi per il voto di Laurea di Primo Livello.");
				 		return false;
				} else {
						dataStr += "&votoUnivPrLiv=" + votoUnivPrLiv;
						dataStr += "&votoUnivPrLivSu=" + votoUnivPrLivSu;				
				}
			} else {
				alert("Inserire l'anno di conseguimento della Laurea di Primo Livello.");
				return false;
			}
		}	
	}
	dataStr += "&lodeUnivPrLiv=" + lodeUnivPrLiv;


	// Recupero Master di primo livello
	var masterPrLiv =  $("input#txtMasterPrLiv").val();
	if (masterPrLiv == undefined || masterPrLiv == '') {
			dataStr += "&masterPrLiv=";
	} else {
			dataStr += "&masterPrLiv=" + masterPrLiv;
	}

	// Recupero Durata Master di primo livello
	var durMstrPrLiv =  $("input#txtDurMstrPrLiv").val();
	if (durMstrPrLiv == undefined || durMstrPrLiv == '') {
			dataStr += "&durMstrPrLiv=";
	} else {
			dataStr += "&durMstrPrLiv=" + durMstrPrLiv;
	}

	// Recupero Corsi di Specializzazione/Master 
	var spec =  $("input#txtSpec").val();
	if (spec == undefined || spec == '') {
			dataStr += "&spec=";
	} else {
			dataStr += "&spec=" + spec;
	}

	// Recupero Durata Master di primo livello
	var durSpec =  $("input#txtDurSpec").val();
	if (durSpec == undefined || durSpec == '') {
			dataStr += "&durSpec=";
	} else {
			dataStr += "&durSpec=" + durSpec;
	}

	// Recupero Corso di Laurea Specialistica
	var laureaSpec =  $("input#txtLaureaSpec").val();
	if (laureaSpec == undefined || laureaSpec == '') {
			dataStr += "&laureaSpec=";
	} else {
			dataStr += "&laureaSpec=" + laureaSpec;
	}

	// Recupero Classe di Laurea Specialistica
	var clsLaureaSpec =  $("select#optClsLaureaSpec").val();
	var clsLaureaSpecText = $('select#optClsLaureaSpec option[value=' + clsLaureaSpec + ']:selected').text();
	if (clsLaureaSpec == undefined || clsLaureaSpec == '') {
			dataStr += "&clsLaureaSpec=";
	} else {
			dataStr += "&clsLaureaSpec=" + clsLaureaSpecText;
	}

	//Altri controlli su laurea Specialistica
	if (laureaSpec != '' && clsLaureaSpec == '') {
		alert("Laurea specialistica valorizzata.\nInserire la classe di laurea specialistica.");
		return false;
	}

	// Recupero Universitā Specialistica
	var univSpec =  $("input#txtUnivSpec").val();
	if (univSpec == undefined || univSpec == '') {
			dataStr += "&univSpec=";
	} else {
			dataStr += "&univSpec=" + univSpec;
	}

	// Recupero Anno inizio laurea specialistica
	var annoInUnivSpec =  $("input#txtAnnoInUnivSpec").val();
	if (annoInUnivSpec == undefined || annoInUnivSpec == '') {
			dataStr += "&annoInUnivSpec=";
	} else if (!isInteger(annoInUnivSpec)) {
 			alert("Inserire un Anno di Inizio Laurea Specialistica valido.");
	 		return false;
	} else if (annoInUnivSpec <= minAnno || annoInUnivSpec >= maxAnno) {
 			alert("Inserire un Anno di Inizio Laurea Specialistica valido.");
	 		return false;
	} else {
			dataStr += "&annoInUnivSpec=" + annoInUnivSpec;
	}

	// Recupero Anno conseguimento laurea specialistica
	var annoConsUnivSpec =  $("input#txtAnnoConsUnivSpec").val();
	if (annoConsUnivSpec == undefined || annoConsUnivSpec == '') {
			dataStr += "&annoConsUnivSpec=";
	} else if (!isInteger(annoConsUnivSpec)) {
 			alert("Inserire un Anno di Conseguimento Laurea Specialistica valido.");
	 		return false;
	} else if (annoConsUnivSpec <= minAnno || annoConsUnivSpec >= maxAnno) {
 			alert("Inserire un Anno di Conseguimento Laurea Specialistica valido.");
	 		return false;
	} else {
		//controllo se la data di inizio e antecedente alla data di fine
		if (annoInUnivSpec >= annoConsUnivSpec) {
	 			alert("Inserire dei valori validi per Anno di Inizio e Anno di Conseguimento Laurea Specialistica.");
		 		return false;
		} else {
			dataStr += "&annoConsUnivSpec=" + annoConsUnivSpec;
		}
	}

	// Recupero Voto di Laurea Specialistica
	var votoUnivSpec =  $("input#txtVotoUnivSpec").val();
	var votoUnivSpecSu =  $("input#txtVotoUnivSpecSu").val();
	var lodeUnivSpec = "no"
	if ($('input[name=chkLodeUnivSpec]').is(':checked') == true) {
		lodeUnivSpec = "si"
	}
	
	if (votoUnivSpecSu == undefined || votoUnivSpecSu == "") {
		if (votoUnivSpec == undefined || votoUnivSpec == '') {
			if (annoConsUnivSpec == "") {
					dataStr += "&votoUnivSpec=";
					dataStr += "&votoUnivSpecSu=";
			} else {
		 			alert("Anno di conseguimento valorizzato.\nInserire un Voto di Laurea specialistica valido.");
			 		return false;		 	
	 		}				
		} else {
			alert("Inserire un Voto di Laurea specialistica valido.");
	 		return false;			
		}	
	}	else {
		if (votoUnivSpec == undefined || votoUnivSpec == '') {
			alert("Inserire un Voto di Laurea specialistica valido.");
	 		return false;			
		} else {
			if (!isInteger(votoUnivSpecSu)) {
				alert("Inserire un Voto di Laurea specialistica valido.");
		 		return false;			
			}
			if (!isInteger(votoUnivSpec)) {
				alert("Inserire un Voto di Laurea specialistica valido.");
		 		return false;			
			}
			if (annoConsUnivSpec != "") {
				//controllo se il voto preso sia compatibile con il massimo voto possibile inserito
				if (parseInt(votoUnivSpec) > parseInt(votoUnivSpecSu)) {
			 			alert("Inserire dei valori validi per il voto di Laurea specialistica.");
				 		return false;
				} else {
						dataStr += "&votoUnivSpec=" + votoUnivSpec;
						dataStr += "&votoUnivSpecSu=" + votoUnivSpecSu;
				}
			} else {
				alert("Inserire l'anno di conseguimento della Laurea specialistica.");
				return false;
			}
		}	
	}
	dataStr += "&lodeUnivSpec=" + lodeUnivSpec;

	// Recupero Master di Secondo livello
	var masterSecLiv =  $("input#txtMasterSecLiv").val();
	if (masterSecLiv == undefined || masterSecLiv == '') {
			dataStr += "&masterSecLiv=";
	} else {
			dataStr += "&masterSecLiv=" + masterSecLiv;
	}

	// Recupero Durata Master di Secondo livello
	var durMasterSecLiv =  $("input#txtDurMstrSecLiv").val();
	if (durMasterSecLiv == undefined || durMasterSecLiv == '') {
			dataStr += "&durMasterSecLiv=";
	} else {
			dataStr += "&durMasterSecLiv=" + durMasterSecLiv;
	}

	// Validazione e Recupero livello lingua Inglese (obbligatorio)		
	var livIng =  $("select#optIng").val();
	if (livIng == undefined || livIng == '') {
		$('label#lblIng').addClass('lbl_Error');
		$('select#optIng').parent('div').addClass('inp_Error');
		errValid = true;
	} else {
			dataStr += "&livIng=" + livIng;
	}

	// Recupero livello lingua Francese
	var livFra =  $("select#optFra").val();
	if (livFra == undefined || livFra == '') {
			dataStr += "&livFra=";
	} else {
			dataStr += "&livFra=" + livFra;
	}

	// Recupero livello lingua Tedesca
	var livTed =  $("select#optTed").val();
	if (livTed == undefined || livTed == '') {
			dataStr += "&livTed=";
	} else {
			dataStr += "&livTed=" + livTed;
	}

	// Recupero livello lingua Spagnola
	var livSpa =  $("select#optSpa").val();
	if (livSpa == undefined || livSpa == '') {
			dataStr += "&livSpa=";
	} else {
			dataStr += "&livSpa=" + livSpa;
	}

	// Recupero altra lingua
	var altraLingua =  $("input#txtAltraLingua").val();
	if (altraLingua == undefined || altraLingua == '') {
			dataStr += "&altraLingua=";
	} else {
			dataStr += "&altraLingua=" + altraLingua;
	}

	// Recupero Conocenze Informatiche
	var conInf =  $("textarea#txtConInf").val();
	if (conInf == undefined || conInf == '') {
			$('label#lblConInf').addClass('lbl_Error');
			$('textarea#txtConInf').parent('div').addClass('inp_Error');
			errValid = true;
	} else {
			dataStr += "&conInf=" + conInf;
	}

	// Recupero Azienda Attuale
	var azAtt =  $("input#txtAzAtt").val();
	if (azAtt == undefined || azAtt == '') {
			dataStr += "&azAtt=";
	} else {
			dataStr += "&azAtt=" + azAtt;
	}

	// Recupero Data Inizio attivitā Attuale
	var meseInAtt =  $("select#optMeseInAtt").val();
	var annoInAtt =  $("input#txtAnnoInAtt").val();
	if (meseInAtt == undefined || meseInAtt == '') {
			dataStr += "&meseInAtt=";
	} else {
			dataStr += "&meseInAtt=" + meseInAtt;
	}
	if (annoInAtt == undefined || annoInAtt == '') {
			dataStr += "&annoInAtt=";
	} else if (annoInAtt <= minAnno || annoInAtt >= maxAnno) {
 			alert("Inserire l'Anno di Inizio Lavoro Attuale valido.");
	 		return false;			
	} else if (!isInteger(annoInAtt)) {
 			alert("Inserire l'Anno di Inizio Lavoro Attuale valido.");
	 		return false;
	} else {
			dataStr += "&annoInAtt=" + annoInAtt;
	}

	// Recupero Mansione attivitā Attuale
	var mansAtt =  $("input#txtMansAtt").val();
	if (mansAtt == undefined || mansAtt == '') {
			dataStr += "&mansAtt=";
	} else {
			dataStr += "&mansAtt=" + mansAtt;
	}

	// Recupero Inquadramento attivitā Attuale
	var inquAtt =  $("select#optInqAtt").val();
	if (inquAtt == undefined || inquAtt == '') {
			dataStr += "&inquAtt=";
	} else {
			dataStr += "&inquAtt=" + inquAtt;
	}

	// Recupero Retribuzione annua lorda in euro Attuale
	var retribAtt =  $("input#txtRetribAtt").val();
	if (retribAtt == undefined || retribAtt == '') {
			dataStr += "&retribAtt=";
	} else if (!isPrice(retribAtt)) {
 			alert("Inserire un importo valido come retribuzione annua lorda attuale.\nScrivere la cifra utilizzando il punto (.) come separatore delle migliaia e la virgola (,) come separatore decimale.");
	 		return false;
	} else {
			dataStr += "&retribAtt=" + retribAtt;
	}

	// Altri controlli Azienda Attuale
	if (azAtt != '') {
		if (meseInAtt == '' || annoInAtt == '') {
			alert("Inserire il mese/anno di assunzione nell'azienda in cui attualmente si sta lavorando.");
			return false;
		}
		if (mansAtt == '') {
			alert("Inserire la mansione lavorativa attuale.");
			return false;
		}
	}

	// Recupero Azienda Precedente
	var azPrec =  $("input#txtAzPrec").val();
	if (azPrec == undefined || azPrec == '') {
			dataStr += "&azPrec=";
	} else {
			dataStr += "&azPrec=" + azPrec;
	}
	
	// Recupero Data Inizio attivitā Precedente
	var meseInPrec =  $("select#optMeseInPrec").val();
	var annoInPrec =  $("input#txtAnnoInPrec").val();
	if (meseInPrec == undefined || meseInPrec == '') {
			dataStr += "&meseInPrec=";
	} else {
			dataStr += "&meseInPrec=" + meseInPrec;
	}
	if (annoInPrec == undefined || annoInPrec == '') {
			dataStr += "&annoInPrec=";
	} else if (annoInPrec <= minAnno || annoInPrec >= maxAnno) {
 			alert("Inserire l'Anno di Inizio Lavoro Precedente valido.");
	 		return false;			
	} else if (!isInteger(annoInPrec)) {
 			alert("Inserire l'Anno di Inizio Lavoro Precedente valido.");
	 		return false;
	} else {
			dataStr += "&annoInPrec=" + annoInPrec;
	}

	// Recupero Data Fine attivitā Precedente
	var meseFnPrec =  $("select#optMeseFnPrec").val();
	var annoFnPrec =  $("input#txtAnnoFnPrec").val();
	if (meseFnPrec == undefined || meseFnPrec == '') {
			dataStr += "&meseFnPrec=";
	} else {
			dataStr += "&meseFnPrec=" + meseFnPrec;
	}
	if (annoFnPrec == undefined || annoFnPrec == '') {
			dataStr += "&annoFnPrec=";
	} else if (annoFnPrec <= minAnno || annoFnPrec >= maxAnno) {
 			alert("Inserire l'Anno di Fine Lavoro Precedente valido.");
	 		return false;			
	} else if (!isInteger(annoFnPrec)) {
 			alert("Inserire l'Anno di Fine Lavoro Precedente valido.");
	 		return false;
	} else {
		//controllo se la data di inizio e antecedente alla data di fine
		if (annoInPrec > annoFnPrec) {
	 			alert("Inserire dei valori validi per Anno di Inizio e Anno di Fine Lavoro Precedente.");
		 		return false;
		} else {
			dataStr += "&annoFnPrec=" + annoFnPrec;
		}
	}

	// Recupero Mansione attivitā Precedente
	var mansPrec =  $("input#txtMansPrec").val();
	if (mansPrec == undefined || mansPrec == '') {
			dataStr += "&mansPrec=";
	} else {
			dataStr += "&mansPrec=" + mansPrec;
	}

	// Recupero Inquadramento attivitā Precedente
	var inquPrec =  $("select#optInqPrec").val();
	if (inquPrec == undefined || inquPrec == '') {
			dataStr += "&inquPrec=";
	} else {
			dataStr += "&inquPrec=" + inquPrec;
	}

	// Recupero Retribuzione annua lorda in euro Precedente
	var retribPrec =  $("input#txtRetribPrec").val();
	if (retribPrec == undefined || retribPrec == '') {
			dataStr += "&retribPrec=";
	} else if (!isPrice(retribPrec)) {
 			alert("Inserire un importo valido come retribuzione annua lorda precedente.\nScrivere la cifra utilizzando il punto (.) come separatore delle migliaia e la virgola (,) come separatore decimale.");
	 		return false;
	} else {
			dataStr += "&retribPrec=" + retribPrec;
	}

	// Altri controlli Azienda Precedente
	if (azPrec != '') {
		if (meseInPrec == '' || annoInPrec == '') {
			alert("Inserire il mese/anno di assunzione nell'azienda precedente.");
			return false;
		}
		if (meseFnPrec == '' || annoFnPrec == '') {
			alert("Inserire il mese/anno di fine lavoro nell'azienda precedente.");
			return false;
		}
		if (mansPrec == '') {
			alert("Inserire la mansione lavorativa precedente.");
			return false;
		}
	}

	// Recupero Anni esperienza Precedente
	var espeCompl =  $("input#txtEspCompl").val();
	if (espeCompl == undefined || espeCompl == '') {
			dataStr += "&espeCompl=";
	} else if (!isInteger(espeCompl)) {
 			alert("Inserire un numero di anni di esperienza complessiva valido.");
	 		return false;
	} else {
			dataStr += "&espeCompl=" + espeCompl;
	}

	// Recupero le macroaree selezionate
	var paramList = "";
	var checkList = $("input[name|=chkMacroInt][type='checkbox']:checked");
	var totChkSel = checkList.length;
	if (totChkSel == 0) {
		paramList = "";
	} else if (totChkSel > 3) {
 			alert("Specificare al massimo 3 macroaree di interesse.");
	 		return false;
	} else {
		checkList.each(function(){ 
			paramList += '|' + $(this).val();
		});			
	}
	dataStr += '&macroInt=' + paramList.substring(1);

	// Validazione e Recupero Note di autopresentazione (obbligatorio)		
	var note = $('textarea#txtNote').val();
	if (note == undefined || note == '') {
		$('label#lblNote').addClass('lbl_Error');
		$('textarea#txtNote').parent('div').addClass('inp_Error');
		errValid = true;
	} else {
		dataStr += "&note=" + note;
	}

	// Validazione e Recupero File allegato (obbligatorio)		
	if ($('#txtAllegato').val() == '') {
		$('label#lblAllegato').addClass('lbl_Error');
		$('input#txtAllegato').parent('div').addClass('inp_Error');
		errValid = true;
	} else {
		dataStr += "&fileAll=" + $('#txtAllegato').val();
	}

	if (errValid == true) {
		alert("Compilare i campi obbligatori.");
		return;
	} 

	if(confirm("L'operazione potrebbe durare qualche minuto.\nProseguire con l'invio dei dati?")) {

		var errMsg = false;
		
		$.ajax({
			type: "POST",
			async: false,
			url: "invia_dati.jsp",
			data: dataStr,
			success: function(xml) {
				$(xml).find('info').each(function() {
					alert("Dati inseriti correttamente.");
					return;
				});
				$(xml).find('error').each(function() {
					var err = $(this).text();
					errMsg = true;
					alert("Si č verificato il seguente errore: " + err);
					return false;
				});
			},
			error: function() {
				errMsg = true;
				alert("Server momentaneamente non disponibile.\nRiprovare.");
				return false;
			},
			dataType: "xml"
		});

		if (errMsg == false) {
			$('input#codFisPerAll').attr('value', codFis);
			$('form#cvAllFrm').submit();
		}
	
	}

}

/***********************************************************************/
/***           FINE: FUNZIONI A SUPPORTO DELL'OPERATIVITA          ***/
/***********************************************************************/


