function booleanChangeValue(fieldName) {
	f=document.getElementById(fieldName);
	if (f.value==1) { 
		f.value=0;
	} else {
		f.value=1;
	}
}

function toggleElement(elemName) {
	el=document.getElementById(elemName);
	if (el.style.display=='none') {
		el.style.display='';
	} else {
		el.style.display='none';
	}
}

// AJAX SUPPORT //////////////////////////////////////////////////

// IE support
if (window.ActiveXObject && !window.XMLHttpRequest) {
  window.XMLHttpRequest = function() {
    var msxmls = new Array(
      'Msxml2.XMLHTTP.5.0',
      'Msxml2.XMLHTTP.4.0',
      'Msxml2.XMLHTTP.3.0',
      'Msxml2.XMLHTTP',
      'Microsoft.XMLHTTP');
    for (var i = 0; i < msxmls.length; i++) {
      try {
        return new ActiveXObject(msxmls[i]);
      } catch (e) {
      }
    }
    return null;
  };
}
// Gecko support
/* ;-) */
// Opera support
if (window.opera && !window.XMLHttpRequest) {
  window.XMLHttpRequest = function() {
    this.readyState = 0; // 0=uninitialized,1=loading,2=loaded,3=interactive,4=complete
    this.status = 0; // HTTP status codes
    this.statusText = '';
    this._headers = [];
    this._aborted = false;
    this._async = true;
    this._defaultCharset = 'ISO-8859-1';
    this._getCharset = function() {
      var charset = _defaultCharset;
      var contentType = this.getResponseHeader('Content-type').toUpperCase();
      val = contentType.indexOf('CHARSET=');
      if (val != -1) {
        charset = contentType.substring(val);
      }
      val = charset.indexOf(';');
      if (val != -1) {
        charset = charset.substring(0, val);
      }
      val = charset.indexOf(',');
      if (val != -1) {
        charset = charset.substring(0, val);
      }
      return charset;
    };
    this.abort = function() {
      this._aborted = true;
    };
    this.getAllResponseHeaders = function() {
      return this.getAllResponseHeader('*');
    };
    this.getAllResponseHeader = function(header) {
      var ret = '';
      for (var i = 0; i < this._headers.length; i++) {
        if (header == '*' || this._headers[i].h == header) {
          ret += this._headers[i].h + ': ' + this._headers[i].v + '\n';
        }
      }
      return ret;
    };
    this.getResponseHeader = function(header) {
      var ret = getAllResponseHeader(header);
      var i = ret.indexOf('\n');
      if (i != -1) {
        ret = ret.substring(0, i);
      }
      return ret;
    };
    this.setRequestHeader = function(header, value) {
      this._headers[this._headers.length] = {h:header, v:value};
    };
    this.open = function(method, url, async, user, password) {
      this.method = method;
      this.url = url;
      this._async = true;
      this._aborted = false;
      this._headers = [];
      if (arguments.length >= 3) {
        this._async = async;
      }
      if (arguments.length > 3) {
        opera.postError('XMLHttpRequest.open() - user/password not supported');
      }
      this.readyState = 1;
      if (this.onreadystatechange) {
        this.onreadystatechange();
      }
    };
    this.send = function(data) {
      if (!navigator.javaEnabled()) {
        alert("XMLHttpRequest.send() - Java must be installed and enabled.");
        return;
      }
      if (this._async) {
        setTimeout(this._sendasync, 0, this, data);
        // this is not really asynchronous and won't execute until the current
        // execution context ends
      } else {
        this._sendsync(data);
      }
    }
    this._sendasync = function(req, data) {
      if (!req._aborted) {
        req._sendsync(data);
      }
    };
    this._sendsync = function(data) {
      this.readyState = 2;
      if (this.onreadystatechange) {
        this.onreadystatechange();
      }
      // open connection
      var url = new java.net.URL(new java.net.URL(window.location.href), this.url);
      var conn = url.openConnection();
      for (var i = 0; i < this._headers.length; i++) {
        conn.setRequestProperty(this._headers[i].h, this._headers[i].v);
      }
      this._headers = [];
      if (this.method == 'POST') {
        // POST data
        conn.setDoOutput(true);
        var wr = new java.io.OutputStreamWriter(conn.getOutputStream(), this._getCharset());
        wr.write(data);
        wr.flush();
        wr.close();
      }
      // read response headers
      // NOTE: the getHeaderField() methods always return nulls for me :(
      var gotContentEncoding = false;
      var gotContentLength = false;
      var gotContentType = false;
      var gotDate = false;
      var gotExpiration = false;
      var gotLastModified = false;
      for (var i = 0; ; i++) {
        var hdrName = conn.getHeaderFieldKey(i);
        var hdrValue = conn.getHeaderField(i);
        if (hdrName == null && hdrValue == null) {
          break;
        }
        if (hdrName != null) {
          this._headers[this._headers.length] = {h:hdrName, v:hdrValue};
          switch (hdrName.toLowerCase()) {
            case 'content-encoding': gotContentEncoding = true; break;
            case 'content-length'  : gotContentLength   = true; break;
            case 'content-type'    : gotContentType     = true; break;
            case 'date'            : gotDate            = true; break;
            case 'expires'         : gotExpiration      = true; break;
            case 'last-modified'   : gotLastModified    = true; break;
          }
        }
      }
      // try to fill in any missing header information
      var val;
      val = conn.getContentEncoding();
      if (val != null && !gotContentEncoding) this._headers[this._headers.length] = {h:'Content-encoding', v:val};
      val = conn.getContentLength();
      if (val != -1 && !gotContentLength) this._headers[this._headers.length] = {h:'Content-length', v:val};
      val = conn.getContentType();
      if (val != null && !gotContentType) this._headers[this._headers.length] = {h:'Content-type', v:val};
      val = conn.getDate();
      if (val != 0 && !gotDate) this._headers[this._headers.length] = {h:'Date', v:(new Date(val)).toUTCString()};
      val = conn.getExpiration();
      if (val != 0 && !gotExpiration) this._headers[this._headers.length] = {h:'Expires', v:(new Date(val)).toUTCString()};
      val = conn.getLastModified();
      if (val != 0 && !gotLastModified) this._headers[this._headers.length] = {h:'Last-modified', v:(new Date(val)).toUTCString()};
      // read response data
      var reqdata = '';
      var stream = conn.getInputStream();
      if (stream) {
        var reader = new java.io.BufferedReader(new java.io.InputStreamReader(stream, this._getCharset()));
        var line;
        while ((line = reader.readLine()) != null) {
          if (this.readyState == 2) {
            this.readyState = 3;
            if (this.onreadystatechange) {
              this.onreadystatechange();
            }
          }
          reqdata += line + '\n';
        }
        reader.close();
        this.status = 200;
        this.statusText = 'OK';
        this.responseText = reqdata;
        this.readyState = 4;
        if (this.onreadystatechange) {
          this.onreadystatechange();
        }
        if (this.onload) {
          this.onload();
        }
      } else {
        // error
        this.status = 404;
        this.statusText = 'Not Found';
        this.responseText = '';
        this.readyState = 4;
        if (this.onreadystatechange) {
          this.onreadystatechange();
        }
        if (this.onerror) {
          this.onerror();
        }
      }
    };
  };
}
// ActiveXObject emulation
if (!window.ActiveXObject && window.XMLHttpRequest) {
  window.ActiveXObject = function(type) {
    switch (type.toLowerCase()) {
      case 'microsoft.xmlhttp':
      case 'msxml2.xmlhttp':
      case 'msxml2.xmlhttp.3.0':
      case 'msxml2.xmlhttp.4.0':
      case 'msxml2.xmlhttp.5.0':
        return new XMLHttpRequest();
    }
    return null;
  };
}


var xmlHttp;
/*var requestSelectAll;
var requestDeSelectAll;
var requestSelectRow;
var requestDeSelectRow;*/
    
function createXMLHttpRequest(){
  if(window.ActiveXObject){
    xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
  }else{
    xmlHttp = new XmlHttpRequest();
  }
}

function handleStateChange(){

  if(xmlHttp.readyState==4){
    if(xmlHttp.status!=200){
            alert("Si  verificato un errore!");
    }
  }
}
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////

// workaround x IE che non e' in grado di settare la proprieta' innerHTML per elementi di una tabella
// ricostruisce la struttura di una riga partendo dall'html appositamente taggato
function trSetInnerHTML(rowElem, html) {
	var tds=new Array();
	var i=1;
	while (true) {
		//start=html.indexOf('<!-- TD'+i+' -->');
		start=html.indexOf('<SPAN id=startTD'+i); //ie
		if (start==-1) 
			start=html.indexOf('<span id="startTD'+i); //ffx
		if (start==-1) 
			break;
		end=html.indexOf('<SPAN id=\endTD'+i); //ie
		if (end==-1)
			end=html.indexOf('<span id="endTD'+i); //ffx
		htmlTD=html.substring(start, end);
		htmlTD=htmlTD+('<SPAN id=endTD'+i+'></SPAN>');
		tds.push(htmlTD);
		i++;
	}
	
	for (i=0; i<tds.length; i++) {
		var cell=rowElem.insertCell(-1);
		cell.setAttribute("align", "center");
		if (i==tds.length-1) {
			cell.colSpan="2";
		}
		cell.innerHTML=tds[i];
	}
}


// parametri per uso generico (per passare parametri a funzioni handle delle risposte ajax)
var globalParam1; 
var globalParam2;
var globalParam3;

function ajaxHandleShowTableRow() {
	var formName=globalParam1
	if (xmlHttp.readyState==4) {
		var htmlElem=document.getElementById(formName); 
		htmlElem.deleteCell(0);
		trSetInnerHTML(htmlElem, xmlHttp.responseText);
		htmlElem.style.display="";
		
	}
		
}

function ajaxHandleAddTableRow() 
{
	var formName=globalParam1;
	var tableSlotName=globalParam2;
	var errorsSlotName=globalParam3;
	//alert('here');
	
	if (xmlHttp.readyState==4) {
	
		// salva form html x ripresentarlo se ci sono errori
		var savedFormHTML=document.getElementById(formName).innerHTML;
		var htmlElem=document.getElementById(tableSlotName);
		htmlElem.innerHTML=xmlHttp.responseText;
		var errorsElem=document.getElementById(errorsSlotName);
		var errorsHtml=errorsElem.innerHTML;
		var noErrors=errorsHtml.indexOf('<li>')==-1 && errorsHtml.indexOf('<LI>')==-1;  // innerHTML di explorer si inventa il case dei tag
		if (!noErrors)  {
			var formSlot=document.getElementById(formName);
			formSlot.deleteCell(0);
			trSetInnerHTML(formSlot, savedFormHTML);
			formSlot.style.display="";
		} 
			
	}
}

function ajaxHandleModifyTableRow() {
	if (xmlHttp.readyState==4) {

		rowElemName=globalParam1;
		var rowElem=document.getElementById(rowElemName);
		n=rowElem.cells.length;
		for (i=0; i<n; i++)
			rowElem.deleteCell(0);
		trSetInnerHTML(rowElem, xmlHttp.responseText);
	}
		
}

var lastReplaced=""; 
var newReplacedText=""; // utilizzata in addEsperienzaProfessionale per ovviare a misteriosi comportamenti
function ajaxHtmlReplace() {
	if (xmlHttp.readyState==4) {
		//alert(globalParam1);
		var htmlElemName=globalParam1;
		var htmlElem=document.getElementById(htmlElemName);
		//alert(htmlElem.innerHTML);
		lastReplaced=htmlElem.innerHTML;
		htmlElem.innerHTML=xmlHttp.responseText;
		newReplacedText=htmlElem.innerHTML
		//alert(htmlElem.innerHTML);
	}
}

// TITOLI DI STUDIO //////////////////////////////////////////////////////////////////////////////////////////


function addTitoloDiStudio() {
	
	var form=document.getElementById('formTitoloDiStudio');
	var titolo=form.titolo.value;
	var mese=form.mese.value;
	var anno=form.anno.value;
	
	createXMLHttpRequest();
	
	globalParam1='form_aggiungiTitoloDiStudio'; // form
	globalParam2='titoliDiStudio'; // la tabella
	globalParam3='titoliDiStudioErrors'; // lista errori
	xmlHttp.onreadystatechange=ajaxHandleAddTableRow;
	
	var url="ajaxTitoliDiStudio.do?operation=aggiungi&titolo="+titolo+"&mese="+mese+"&anno="+anno
	//alert("url: "+url);
	xmlHttp.open("GET", url);
	xmlHttp.send(null);
}



function showFormTitoliDiStudio() {
	// se il form � visibile non fa nulla
	if (document.getElementById('formTitoloDiStudio')) // form inserimento gia presente
		return;
	createXMLHttpRequest();
	globalParam1='form_aggiungiTitoloDiStudio';
	xmlHttp.onreadystatechange=ajaxHandleShowTableRow;
	
	var url="ajaxTitoliDiStudio.do?operation=formAggiungi";
	xmlHttp.open("GET", url);
	xmlHttp.send(null);
}





function showFormModifyTitoloDiStudio(id,mese,anno) {
	createXMLHttpRequest();
	globalParam1='row_TitoloDiStudio'+id;
	xmlHttp.onreadystatechange=ajaxHandleModifyTableRow;
	var url="ajaxTitoliDiStudio.do?operation=formModifica&titolo="+id+"&mese="+mese+"&anno="+anno;
	xmlHttp.open("GET", url);
	xmlHttp.send(null);

}


function deleteTitoloDiStudio(id) {

	createXMLHttpRequest();
	globalParam1='titoliDiStudio'; // id contenitore html tabella
	xmlHttp.onreadystatechange=ajaxHtmlReplace;
	
	var url="ajaxTitoliDiStudio.do?operation=elimina&titolo="+id;
	xmlHttp.open("GET", url);
	xmlHttp.send(null);
}	

function modifyTitoloDiStudio(id) {
	var formName='formModificaTitoloDiStudio'+id
	var form=document.getElementById(formName);
	var titolo=form.titolo.value;
	var mese=form.mese.value;
	var anno=form.anno.value;
	
	createXMLHttpRequest();
	globalParam1=formName; // form
	globalParam2='titoliDiStudio'; // la tabella
	globalParam3='titoliDiStudioErrors'; // lista errori
	xmlHttp.onreadystatechange=ajaxHandleAddTableRow;
	
	//xmlHttp.onreadystatechange=ajaxHandleAddTitoloDiStudio;
	
	var url="ajaxTitoliDiStudio.do?operation=modifica&current="+id+"&titolo="+titolo+"&mese="+mese+"&anno="+anno
	//alert("url: "+url);
	xmlHttp.open("GET", url);
	xmlHttp.send(null);	
}

// LINGUE CONOSCIUTE //////////////////////////////////////////////////////////////////////////////////////

function showFormLingueConosciute() {

	// se il form � gia presente non fa nulla
	if (document.getElementById('formLinguaConosciuta')) 
		return;
	createXMLHttpRequest();
	globalParam1='form_aggiungiLinguaConosciuta';
	xmlHttp.onreadystatechange=ajaxHandleShowTableRow;
	
	var url="ajaxLingueConosciute.do?operation=formAggiungi";
	xmlHttp.open("GET", url);
	xmlHttp.send(null);
}

function addLinguaConosciuta() {
	
	var form=document.getElementById('formLinguaConosciuta');
	var lingua=form.lingua.value;
	var livelloScritto=form.livelloScritto.value;
	var livelloParlato=form.livelloParlato.value;
	
	createXMLHttpRequest();
	
	globalParam1='form_aggiungiLinguaConosciuta'; // form
	globalParam2='lingueConosciute'; // la tabella
	globalParam3='lingueConosciuteErrors'; // lista errori
	
	xmlHttp.onreadystatechange=ajaxHandleAddTableRow;
	
	var url="ajaxLingueConosciute.do?operation=aggiungi&lingua="+lingua+"&livelloScritto="+livelloScritto+"&livelloParlato="+livelloParlato
	xmlHttp.open("GET", url);
	xmlHttp.send(null);
}

function deleteLinguaConosciuta(id) {

	createXMLHttpRequest();
	globalParam1='lingueConosciute'; // id contenitore html tabella
	xmlHttp.onreadystatechange=ajaxHtmlReplace;
	
	var url="ajaxLingueConosciute.do?operation=elimina&lingua="+id;
	xmlHttp.open("GET", url);
	xmlHttp.send(null);
}	

function showFormModifyLinguaConosciuta(id,livelloParlato,livelloScritto) {
	createXMLHttpRequest();
	globalParam1='row_LinguaConosciuta'+id;
	xmlHttp.onreadystatechange=ajaxHandleModifyTableRow;
	var url="ajaxLingueConosciute.do?operation=formModifica&lingua="+id+"&livelloScritto="+livelloScritto+"&livelloParlato="+livelloParlato;
	xmlHttp.open("GET", url);
	xmlHttp.send(null);

}

function modifyLinguaConosciuta(id) {
	var formName='formModificaLinguaConosciuta'+id
	var form=document.getElementById(formName);
	var lingua=form.lingua.value;
	var livelloScritto=form.livelloScritto.value;
	var livelloParlato=form.livelloParlato.value;
	
	createXMLHttpRequest();
	globalParam1=formName; // form
	globalParam2='lingueConosciute'; // la tabella
	globalParam3='lingueConosciuteErrors'; // lista errori
	xmlHttp.onreadystatechange=ajaxHandleAddTableRow;
	
	var url="ajaxLingueConosciute.do?operation=modifica&current="+id+"&lingua="+lingua+"&livelloScritto="+livelloScritto+"&livelloParlato="+livelloParlato
	//alert("url: "+url);
	xmlHttp.open("GET", url);
	xmlHttp.send(null);	
}

// CONOSCENZE INFORMATICHE
function showFormConoscenzeInformatiche() {

	// se il form � gia presente non fa nulla
	if (document.getElementById('formConoscenzaInformatica')) 
		return;
	createXMLHttpRequest();
	globalParam1='form_aggiungiConoscenzaInformatica';
	xmlHttp.onreadystatechange=ajaxHandleShowTableRow;
	
	var url="ajaxConoscenzeInformatiche.do?operation=formAggiungi";
	xmlHttp.open("GET", url);
	xmlHttp.send(null);
}

function addConoscenzaInformatica() {
	
	var form=document.getElementById('formConoscenzaInformatica');
	var strumento=form.strumento.value;
	var livello=form.livello.value;
	
	createXMLHttpRequest();
	
	globalParam1='form_aggiungiConoscenzaInformatica'; // form
	globalParam2='conoscenzeInformatiche'; // la tabella
	globalParam3='conoscenzeInformaticheErrors'; // lista errori
	
	xmlHttp.onreadystatechange=ajaxHandleAddTableRow;
	
	var url="ajaxConoscenzeInformatiche.do?operation=aggiungi&strumento="+strumento+"&livello="+livello;
	xmlHttp.open("GET", url);
	xmlHttp.send(null);
}

function deleteConoscenzaInformatica(id_settore, id_descrizione) {

	createXMLHttpRequest();
	globalParam1='conoscenzeInformatiche'; // id contenitore html tabella
	xmlHttp.onreadystatechange=ajaxHtmlReplace;
	
	var url="ajaxConoscenzeInformatiche.do?operation=elimina&strumento="+id_settore+":"+id_descrizione;
	xmlHttp.open("GET", url);
	xmlHttp.send(null);
}	

function showFormModifyConoscenzaInformatica(id_settore,id_descrizione,livello) {
	createXMLHttpRequest();
	globalParam1='row_ConoscenzaInformatica'+id_settore+'_'+id_descrizione;
	xmlHttp.onreadystatechange=ajaxHandleModifyTableRow;
	var url="ajaxConoscenzeInformatiche.do?operation=formModifica&strumento="+id_settore+":"+id_descrizione+"&livello="+livello;
	xmlHttp.open("GET", url);
	xmlHttp.send(null);

}

function modifyConoscenzaInformatica(id_settore, id_descrizione) {
	var formName='formModificaConoscenzaInformatica'+id_settore+"_"+id_descrizione
	var form=document.getElementById(formName);
	var strumento=form.strumento.value;
	var livello=form.livello.value;
	
	createXMLHttpRequest();
	globalParam1=formName; // form
	globalParam2='conoscenzeInformatiche'; // la tabella
	globalParam3='conoscenzeInformaticheErrors'; // lista errori
	xmlHttp.onreadystatechange=ajaxHandleAddTableRow;
	
	var url="ajaxConoscenzeInformatiche.do?operation=modifica&current="+id_settore+":"+id_descrizione+"&strumento="+strumento+"&livello="+livello;
	//alert("url: "+url);
	xmlHttp.open("GET", url);
	xmlHttp.send(null);	
}

// ESPERIENZE PROFESSIONALI
function showFormEsperienzeProfessionali() {

	// se il form � gia presente non fa nulla
	if (document.getElementById('formEsperienzaProfessionale')) 
		return;
	createXMLHttpRequest();
	globalParam1='form_aggiungiEsperienzaProfessionale';
	xmlHttp.onreadystatechange=ajaxHtmlReplace;
	
	var url="ajaxEsperienzeProfessionali.do?operation=formAggiungi";
	xmlHttp.open("GET", url);
	xmlHttp.send(null);
}

function ajaxHandleAddEsperienzaProfessionale() 
{
	var formName=globalParam1;
	var tableSlotName=globalParam2;
	var errorsSlotName=globalParam3;
	//alert('here');
	
	if (xmlHttp.readyState==4) {
	
		// salva form html x ripresentarlo se ci sono errori
		var form=document.getElementById(formName);
		//var savedFormHTML=form.innerHTML; // non funziona, utilizza newReplacedText impostata dall'ultima chiamata di ajaxHtmlReplace
		var htmlElem=document.getElementById(tableSlotName);
		htmlElem.innerHTML=xmlHttp.responseText;
		var errorsElem=document.getElementById(errorsSlotName);
		var errorsHtml=errorsElem.innerHTML;
		var noErrors=errorsHtml.indexOf('<li>')==-1 && errorsHtml.indexOf('<LI>')==-1;  // innerHTML di explorer si inventa il case dei tag
		if (!noErrors)  {
			var formSlot=document.getElementById(formName);
			//alert(formSlot.innerHTML);
			//formSlot.deleteCell(0);
			//trSetInnerHTML(formSlot, savedFormHTML);
			formSlot.innerHTML=newReplacedText
			//formSlot.style.display="";
		} 
			
	}
}

function addEsperienzaProfessionale() {

	//el=document.getElementById('form_aggiungiEsperienzaProfessionale');
	//alert(el.innerHTML);
	//alert(newReplacedText);

	var form=document.getElementById('formEsperienzaProfessionale');

	var esperienza=form.esperienza.value;
	var inizioMese=form.inizioMese.value;
	var inizioAnno=form.inizioAnno.value;
	var fineMese=form.fineMese.value;
	var fineAnno=form.fineAnno.value;
	var azienda=form.azienda.value;
	var posizione=form.posizione.value;
	var mansione=form.mansione.value;
	var settore=form.settore.value;
	
	createXMLHttpRequest();
	

	globalParam1='form_aggiungiEsperienzaProfessionale'; // form
	globalParam2='esperienzeProfessionali'; // la tabella
	globalParam3='esperienzeProfessionaliErrors'; // lista errori

	//globalParam1='esperienzeProfessionali';	
	xmlHttp.onreadystatechange=ajaxHandleAddEsperienzaProfessionale;
	
	var url="ajaxEsperienzeProfessionali.do?operation=aggiungi&esperienza="+esperienza+"&inizioMese="+inizioMese;
	url+="&inizioAnno="+inizioAnno+"&fineMese="+fineMese+"&fineAnno="+fineAnno+"&azienda="+azienda+"&posizione="+posizione;
	url+="&mansione="+mansione+"&settore="+settore;
	xmlHttp.open("GET", url);
	xmlHttp.send(null);
}

function deleteEsperienzaProfessionale(id) {
	createXMLHttpRequest();
	globalParam1='esperienzeProfessionali'; // id contenitore html tabella
	xmlHttp.onreadystatechange=ajaxHtmlReplace;
	document.getElementById('checkPrimaEsperienzaProfessionale').value=0; // assicura coerenza con db
	
	var url="ajaxEsperienzeProfessionali.do?operation=elimina&id="+id;
	xmlHttp.open("GET", url);
	xmlHttp.send(null);
}

function showFormModifyEsperienzaProfessionale(id,inizioMese,inizioAnno,fineMese,fineAnno,azienda,posizione,mansione,settore) {
	createXMLHttpRequest();
	globalParam1='row_EsperienzaProfessionale'+id;
	xmlHttp.onreadystatechange=ajaxHtmlReplace;
	var url="ajaxEsperienzeProfessionali.do?operation=formModifica&id="+id+"&inizioMese="+inizioMese;
	url+="&inizioAnno="+inizioAnno+"&fineMese="+fineMese+"&fineAnno="+fineAnno+"&azienda="+azienda+"&posizione="+posizione;
	url+="&mansione="+mansione+"&settoreIndustriale="+settore;
	xmlHttp.open("GET", url);
	xmlHttp.send(null);

}

function modifyEsperienzaProfessionale(id) {
	var formName='formModificaEsperienzaProfessionale'+id
	var form=document.getElementById(formName);
	
	var inizioMese=form.inizioMese.value;
	var inizioAnno=form.inizioAnno.value;
	var fineMese=form.fineMese.value;
	var fineAnno=form.fineAnno.value;
	var azienda=form.azienda.value;
	var posizione=form.posizione.value;
	var mansione=form.mansione.value;
	var settore=form.settore.value;
	
	createXMLHttpRequest();
	globalParam1=formName; // form
	globalParam2='esperienzeProfessionali'; // la tabella
	globalParam3='esperienzeProfessionaliErrors'; // lista errori
	xmlHttp.onreadystatechange=ajaxHandleAddEsperienzaProfessionale;
	
	var url="ajaxEsperienzeProfessionali.do?operation=modifica&current="+id+"&inizioMese="+inizioMese;
	url+="&inizioAnno="+inizioAnno+"&fineMese="+fineMese+"&fineAnno="+fineAnno+"&azienda="+azienda+"&posizione="+posizione;
	url+="&mansione="+mansione+"&settore="+settore;
	//alert("url: "+url);
	xmlHttp.open("GET", url);
	xmlHttp.send(null);	
}

//////////////////////////////////////////////////////////////////////////////////////////////////
function onchangeNazione(f, provinciaFieldName, cittaFieldName, curNazione, currentProv, currentCitta) {

	new Ajax.Request('../standard/jsp/candidato/field_input_provincia.jsp',
		{
			method: 'get',
			parameters: {nazione: f.value, fieldName: provinciaFieldName, targetFieldName: cittaFieldName, currentProv: currentProv, currentCitta: currentCitta},
			onSuccess: function(transport) {
				var text=transport.responseText;
				//alert(text);
				var htmlElem=$('input_'+provinciaFieldName).innerHTML=text;
			}
		});
	onchangeProvincia(f.value, currentProv, currentCitta, cittaFieldName); 
}

function onchangeNazione_old(f, targetFieldName, curNazione, currentProv, currentCitta) {

	new Ajax.Request('../standard/jsp/candidato/field_input_provincia.jsp',
		{
			method: 'get',
			parameters: {nazione: f.value, fieldName: 'residenzaProv', targetFieldName: 'residenzaCitta', currentProv: currentProv, currentCitta: currentCitta},
			onSuccess: function(transport) {
				var text=transport.responseText;
				//alert(text);
				var htmlElem=$('input_'+targetFieldName).innerHTML=text;
			}
		});
	onchangeProvincia(f.value, currentProv, currentCitta, 'residenzaCitta'); // TODO funziona fintanto che la selezione della nazione e' solo sulla residenza
}

function onchangeProvincia(curNazione, curProv, curCitta, targetFieldName) {
	
	new Ajax.Request('../standard/jsp/candidato/field_input_citta.jsp',
		{
			method: 'get',
			parameters: {nazione: curNazione, provincia: curProv, fieldName: targetFieldName, currentCitta: curCitta},
			onSuccess: function(transport) {
				$('input_'+targetFieldName).innerHTML=transport.responseText;
			}
		});
}


function subscribeML(flag) {

	new Ajax.Request('inserisciCV.do',
		{
			method: 'post',
			parameters: {subscribedML: flag, operation: 'ajaxUpdate'},
			onSuccess: function(transport) {
				flag=parseInt(flag);
				success=parseInt(transport.responseText)==1;
				var resultText="";
				if (flag==1 && success) {
					resultText="Iscrizione avvenuta con successo";
				}
				else if (flag==0 && success) {
					resultText="Sottoscrizione alla newsletter cancellata";
				}
				else {
					resultText="ATTENZIONE: si è verificato un errore";
				}
				alert(resultText);
				//$('result_subscribeML').innerHTML=resultText;
			}
		});
}

function cancellaIscrizione() {
	if (confirm("Sei sicuro di voler eliminare il tuo profilo?")) {
		$('deleteProfileForm').submit()
	}
}


////////// REGISTRAZIONE /////////////////////////////////////
function submitRegistrazione() {
	
	$('divRegistrationForm').style.display='none';
	$('divSubmitRegistrationForm').style.display='block';
	$('registrationForm').submit();
}

function checkPrivacy(val) {

	new Ajax.Request('inserisciCV.do',
		{
			method: 'get',
			parameters: {flag: val, operation: 'ajaxCheckPrivacy'}
		});
}

function sendCVAlternativeText(form) {
	//alert(form);
	new Ajax.Request(form.action,
		{
			method: 'post',
			parameters: {'alternativeText': form.alternativeText.value} 
		}
	);
}
