	function onSuccededComuniNascita(originalRequest)
	{ 
        $("dp_LuogoNascita").selectedIndex = getIndexByValue($("dp_LuogoNascita"), $("sLuogoNascita").value);
        onChangeComuniNascita();
	}
	
    function onSuccededComuniDomicilio(originalRequest)
	{ 
        $("dp_Comune").selectedIndex = getIndexByValue($("dp_Comune"), $("sComune").value);
	}
	
    function reportError(request)
	{
	    alert("ERRORE"+ request);
	}
    
    function fillComuniNascita(provincia)
    {
       new Ajax.Updater('divComuniNascita', 'GetComuniNascita.metis', {method: 'post', onComplete: onSuccededComuniNascita, onFailure: reportError, parameters: {code: provincia} } );
    }

    function fillComuniDomicilio(provincia)
    {
       new Ajax.Updater('divComuniDomicilio', 'GetComuniDomicilio.metis', {method: 'post', onComplete: onSuccededComuniDomicilio, onFailure: reportError, parameters: {code: provincia} } );
    }
    
    function logError(nome, cognome, datadinascita, comune, sesso, cf, cfCalcolato) 
    {
        new Ajax.Request('/candidato/logError.metis', {parameters: {nome: nome,cognome: cognome, datadinascita: datadinascita, comune:comune, sesso:sesso, cf:cf, cfCalcolato : cfCalcolato}});
    }
    
    function onChangeStatoNascita(value)
    {
        if (value == "    ")
        {
            $("trProvinciaNascita").style.display = '';
            $("trLuogoNascita").style.display = '';
        }
        else
        {
            $("trProvinciaNascita").style.display = 'none';
            $("trLuogoNascita").style.display = 'none';
        }
        checkCF();
    }
    
    function onChangeComuniNascita()
    {
        $("sLuogoNascita").value = getValueByIndex($("dp_LuogoNascita"), $("dp_LuogoNascita").selectedIndex);
        if ($("sLuogoNascita").value != "")
        {
            new Ajax.Updater('divCodiceCatastale', 'GetCodiceCatastale.metis', {method: 'post', onComplete: onSuccededCodiceCatastale, onFailure: reportError, parameters: {code: $("sLuogoNascita").value} });
        }
        else
        {
            $("CodiceCatastale").value = "";
            checkCF();
        }
    }
    
    function onChangeComuniDomicilio()
    {
        $("sComune").value = getValueByIndex($("dp_Comune"), $("dp_Comune").selectedIndex);
        new Ajax.Updater('divCapDomicilio', 'GetCap.metis', {method: 'post', onFailure: reportError, parameters: {code: $("sComune").value} } );
    }
    
    function fillFacoltaIndirizzo(element, titolo)
    {
        var callbackFunction = eval('onSuccededFacoltaIndirizzo'+ element);
        new Ajax.Updater('divFacoltaIndirizzo'+ element, 'GetFacoltaIndirizzo.metis', {method: 'post', onComplete: callbackFunction, onFailure: reportError, parameters: {obj: element, idTitoloStudio: titolo} } );
    }

    function onSuccededFacoltaIndirizzo0(originalRequest)
    {
        $("dp_FacoltaIndirizzo0").selectedIndex = getIndexByValue($("dp_FacoltaIndirizzo0"), $("sFacoltaIndirizzo0").value);
    }
    
    function onSuccededFacoltaIndirizzo1(originalRequest)
    {
        $("dp_FacoltaIndirizzo1").selectedIndex = getIndexByValue($("dp_FacoltaIndirizzo1"), $("sFacoltaIndirizzo1").value);
    }
        
    function onSuccededCodiceCatastale(originalRequest)
    {
        checkCF();
    }
    
    function onChangeFacoltaIndirizzo(element, value)
    {
        $("sFacoltaIndirizzo"+ element).value = value;
    }

    function onSuccededAttivita0(originalRequest)
	{
	    var value = $("sAttivita0").value;
        $("dp_Attivita0").selectedIndex = getIndexByValue($("dp_Attivita0"), value);
        value = getValueByIndex($("dp_Attivita0"), $("dp_Attivita0").selectedIndex);
        $("sAttivita0").value = value;
        if (value != "")
            new Ajax.Updater('divMansione0', 'GetMansioni.metis', {method: 'post', onComplete: onSuccededMansione0, onFailure: reportError, parameters: {obj: '0', idAttivita: value} } );
	}
	
	function onSuccededAttivita1(originalRequest)
	{
	    var value = $("sAttivita1").value;
        $("dp_Attivita1").selectedIndex = getIndexByValue($("dp_Attivita1"), value); 
        value = getValueByIndex($("dp_Attivita1"), $("dp_Attivita1").selectedIndex);
        $("sAttivita1").value = value;
        if (value != "")
            new Ajax.Updater('divMansione1', 'GetMansioni.metis', {method: 'post', onComplete: onSuccededMansione1, onFailure: reportError, parameters: {obj: '1', idAttivita: value} } );
	}
	
	function onSuccededAttivita2(originalRequest)
	{
	    var value = $("sAttivita2").value;
        $("dp_Attivita2").selectedIndex = getIndexByValue($("dp_Attivita2"), value);
        value = getValueByIndex($("dp_Attivita2"), $("dp_Attivita2").selectedIndex);
        $("sAttivita2").value = value;
        if (value != "")
            new Ajax.Updater('divMansione2', 'GetMansioni.metis', {method: 'post', onComplete: onSuccededMansione2, onFailure: reportError, parameters: {obj: '2', idAttivita: value} } );
	}
	
    function onSuccededAttivita3(originalRequest)
	{
	    var value = $("sAttivita3").value;
        $("dp_Attivita3").selectedIndex = getIndexByValue($("dp_Attivita3"), value);
        value = getValueByIndex($("dp_Attivita3"), $("dp_Attivita3").selectedIndex);
        $("sAttivita3").value = value;      
        if (value != "")
            new Ajax.Updater('divMansione3', 'GetMansioni.metis', {method: 'post', onComplete: onSuccededMansione3, onFailure: reportError, parameters: {obj: '3', idAttivita: value} } );
	}
	
	function onSuccededMansione0(element)
	{
	    var value = $("sMansione0").value;
        $("dp_Mansione0").selectedIndex = getIndexByValue($("dp_Mansione0"), value);
	}
	
	function onSuccededMansione1(element)
	{
	    var value = $("sMansione1").value;
        $("dp_Mansione1").selectedIndex = getIndexByValue($("dp_Mansione1"), value);
	}
	
	function onSuccededMansione2(element)
	{
	    var value = $("sMansione2").value;
        $("dp_Mansione2").selectedIndex = getIndexByValue($("dp_Mansione2"), value);
	}
	
	function onSuccededMansione3(element)
	{
	    var value = $("sMansione3").value;
        $("dp_Mansione3").selectedIndex = getIndexByValue($("dp_Mansione3"), value);
	}
	    
    function fillAttivita(element, settore)
    {
        var callbackFunction = eval('onSuccededAttivita'+ element);
        new Ajax.Updater('divAttivita'+ element, 'GetAttivita.metis', {method: 'post', onComplete: callbackFunction, onFailure: reportError, parameters: {obj: element, idSettoreArea: settore} } );
    }

    function onChangeSettore(element, value)
    {
        clearCombo($("dp_Mansione"+ element));
        $("sAttivita"+ element).value = "";
        $("sMansione"+ element).value = "";
        fillAttivita(element, value);
    }
    
    function onChangeAttivita(element, value)
    {
        $("sAttivita"+ element).value = value;
        new Ajax.Updater('divMansione'+ element, 'GetMansioni.metis', {method: 'post', onFailure: reportError, parameters: {obj: element, idAttivita: value} } );
    }
    
    function onChangeMansione(element, value)
    {
        $("sMansione"+ element).value = value;
    }
    
    var validating;
    
    Validation.addAllThese([
        ['validate-maggiore-6','la password deve contenere almeno 6 caratteri', {minLength :6}],
        ['same-as-newPassword','le due password devono coincidere', {equalToField: 'dp_PasswordCandidato'}],
        ['validate-email', 'Formato non valido', { pattern : /^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/ }],
        ['validate-regexcf', 'Formato non valido', { pattern : /^([a-zA-Z]{6}\d{2}[a-zA-Z]\d{2}[a-zA-Z]\d{3}[a-zA-Z]|\d{11})$/ }], 
        ['validate-cell','Il numero di cellulare non &#232; valido. Il formato corretto &#232;: +39nnnnnn', {pattern : /^\+39(\d)*$/ }],
        ['validate-tels','Inserire almeno un numero di telefono', function tels(v,elm) {
            var x;

            if (elm.id == 'dp_Cellulare') {
                x = !Validation.get('IsEmpty').test(v) || ($('dp_Telefono').value != null && $('dp_Telefono').value != "") ;
                if (!validating) {
                    validating = true;
                    Validation.validate($('dp_Telefono'));
                }
            }
            if (elm.id == 'dp_Telefono') {
                x = !Validation.get('IsEmpty').test(v) || ($('dp_Cellulare').value != null && $('dp_Cellulare').value != "") ;
                if (!validating) {
                    validating = true;
                    Validation.validate($('dp_Cellulare'));
                }
            }    
            validating = false;         
            return x;
        }],
        ['validate-date-range','Prego inserire una data compresa fra 01/01/1753 e 31/12/9999', function checkDate(v,elm)
            {
                if(Validation.get('IsEmpty').test(v)) return true;
                var date_array = v.split('/');
                var day = date_array[0];
                var month = date_array[1] - 1;
                var year = date_array[2];

                var dayobj = new Date(year, month, day);
                if ((dayobj.getMonth()!=month)||(dayobj.getDate()!=day)||(dayobj.getFullYear()!=year))
                    return false;
                else
                {
                    // Check range
                    //01/01/1753 e minore di 31/12/9999
                    var minDate = new Date(1753,0,01);
                    var maxDate = new Date(9999,11,31);
                    
                    if (dayobj < minDate || dayobj > maxDate)
                    {
                        return false;
                    }
                }
                return true;
            }
        ],
        ['validate-compare-date','Le date devono essere consecutive (data da < data a)', function(v,elm)
            {
                var dataDa;
                var dataA;
                
                dataDa = $('dp_DataDa'+elm.id.substring(elm.id.length-1));
                dataA = $('dp_DataA'+elm.id.substring(elm.id.length-1));
                if(Validation.get('IsEmpty').test(dataDa.value) || Validation.get('IsEmpty').test(dataA.value)) return true;
                
                if (CheckDate(dataDa.value, dataA.value) == -1)
                { 
                    return true;
                } else {
                    return false;
                }
                
            }
        ],
        ['validate-calcolaCF','Il codice fiscale non &#232; corretto', function(v,elem)
            {
                $("dp_Cognome").value = trim($("dp_Cognome").value.toUpperCase());
                $("dp_Nome").value = trim($("dp_Nome").value.toUpperCase());
                elem.value = trim(v.toUpperCase());
                var inDataNasc = $("dp_DataNascita").value;
                var inSComCatast;
                if (trim($("dp_StatoNascita").value) == "")
                {   // ITALIA
                    inSComCatast = trim($("CodiceCatastale").value);
                }
                else
                {   // ESTERO
                    inSComCatast = trim($("dp_StatoNascita").value);
                }
                
                var inSesso = $("dp_Sesso").options[$("dp_Sesso").selectedIndex].value;
                var inCognome = $("dp_Cognome").value;
                var inNome = $("dp_Nome").value;
                var cfExt = /^[0-9]{11}$/;
                var cfsExt = /^[a-zA-Z]{6}\d{2}[a-zA-Z]\d{2}[a-zA-Z]\d{3}[a-zA-Z]$/;
                var toLog;
                if (elem.value.search(cfExt) == -1) {
                    if (elem.value.search(cfsExt) == -1) {
                    } else {
                        if (inDataNasc != '' && inSComCatast != '' && inSesso != '' && inCognome != '' && inNome != '') {            
                            var cfCalcolato = (CalcolaCodiceFiscale(inDataNasc, inSComCatast, parseInt(inSesso,10), inCognome, inNome)).toUpperCase();    
                            if (cfCalcolato == elem.value) {
                                return true;
                            } else {
                                toLog = "cfCalcolato: " + cfCalcolato + ", codicecatastale: " + $("CodiceCatastale").value + ", statoNascita: " + $("dp_StatoNascita").value;
                                 logError(inNome, inCognome, inDataNasc, inSComCatast, inSesso, elem.value, toLog) ;
                                return false;
                            }
                        }
                        else {
                            return false;
                        }
                    }
                }
                return true;
            }
        ],
        ['validate-cap', 'Formato non valido', { pattern : /^\d{5}$/ }], 
        ['validate-titolo','Prego inserire prima il titolo principale', function(v,elem)
            {
                var titolo0 = $("dp_TitoloStudio0").options[$("dp_TitoloStudio0").selectedIndex].value;
                if (titolo0 == "0")
                {
                    return false;
                }
                else return true;
            }
        ], 
        ['validate-mansionepenultima','Prego inserire prima l\'ultima mansione', function(v,elem)
            {
                var mansione0 = $("dp_Mansione0").options[$("dp_Mansione0").selectedIndex].value;
                if (v != "0" && (mansione0 == "" || mansione0 == "0"))
                {   return false;}
                else return true;
            }
        ],
        ['validate-mansioneterzultima','Prego inserire prima la penultima mansione', function(v,elem)
            {
                var mansione1 = $("dp_Mansione1").options[$("dp_Mansione1").selectedIndex].value;
                if (v != "0" && (mansione1 == "" || mansione1 == "0"))
                {   return false;}
                else return true;
            }
        ],
        ['validate-mansione0','Prego inserire prima la mansione', function(v,elem)
            {
                var mansione = $("dp_Mansione0").options[$("dp_Mansione0").selectedIndex].value;
                if (mansione == "" && v != "")
                {   return false;}
                else return true;
            }
        ],
        ['validate-mansione1','Prego inserire prima la mansione', function(v,elem)
            {
                var mansione = $("dp_Mansione1").options[$("dp_Mansione1").selectedIndex].value;
                if (mansione == "" && v != "")
                {   return false;}
                else return true;
            }
        ],
        ['validate-mansione2','Prego inserire prima la mansione', function(v,elem)
            {
                var mansione = $("dp_Mansione2").options[$("dp_Mansione2").selectedIndex].value;
                if (mansione == "" && v != "")
                {   return false;}
                else return true;
            }
        ],
        ['validate_CfExistance','Il codice fiscale inserito &egrave; gi&agrave; presente', function(v,elem)
            {
                if(Validation.get('IsEmpty').test(v)) return true;
                obj = null;
                new Ajax.Request('/candidato/CfExistence.metis',{asynchronous:false, method:'post',parameters:{cf:v},onComplete:function (response) {obj =  eval("("+ response.responseText +")");}});
                if (obj.count == "0") {
                    $('CodiceFiscalePresente').style.display = 'none';
                    return true;
                }
                else {
                    // Visualizzo il div con la mail della filiale da contattare.
                    writeEmail('mailPerCodiceFiscale',obj.email);
                    $('CodiceFiscalePresente').style.display = 'block';
                    return false;
                }
            }
        ],      
        ['validate_MailExistence','La mail inserita &egrave; gi&agrave; presente', function(v,elem)
            {
                if(Validation.get('IsEmpty').test(v)) return true;
                obj = null;
                new Ajax.Request('/candidato/MailExistence.metis',{asynchronous:false, method:'post',parameters:{email:v},onComplete:function (response) {obj =  eval("("+ response.responseText +")");}});
                if (obj.count == "0") {
                    $('EmailPresente').style.display = 'none';
                    return true;
                }
                else {
                    // Visualizzo il div con la mail della filiale da contattare.
                    writeEmail('mailPerEmail',obj.email);
                    $('EmailPresente').style.display = 'block';
                    return false;
                }
                    
            }
        ]          
    ]);
    
    // given two dates:
    // return -1 if date 1 < date 2
    // return 0 if date 1 == date 2
    // return 1 if date 1 > date 2
    function CheckDate(objDate1, objDate2)
    {
        var date_array1 = objDate1.split('/');
        var date_array2 = objDate2.split('/');
        var day1 = date_array1[0];
        var month1 = date_array1[1] - 1;
        var year1 = date_array1[2];
        
        var day2 = date_array2[0];
        var month2 = date_array2[1] - 1;
        var year2 = date_array2[2];

        var dayobj1 = new Date(year1, month1, day1);
        var dayobj2 = new Date(year2, month2, day2);
        
        // Check range
        //01/01/1753 e minore di 31/12/9999
        
        if (dayobj1 < dayobj2)
        {
            return -1;
        }
        if (dayobj1 == dayobj2)
        { 
            return 0;
        }
        if (dayobj1 > dayobj2)
        {
            return 1;
        }
        
        return null;
    }
    
    var obj;
    
    function writeEmail(elem, indirizzo) {
        $(elem).innerHTML = "";
        var testo = "<a href='mailto:"+indirizzo+"?subject=RICHIESTA ASSISTENZA SITO INTERNET'>"+indirizzo+"</a>";
        $(elem).innerHTML = testo;
    }

    function DisplayTitolo(n) {
        for (var i=0; i<=3; i++)
        {   eval("$('trTitolo" + n + "_"+ i +"').style.display = ''");}
        eval("$('btnDisplayTitolo" + n + "').style.display = 'none'");
        if (eval("$('btnHideTitolo" + (n-1) + "')"))
            eval("$('btnHideTitolo" + (n-1) + "').style.display = 'none'");
        if (eval("$('btnDisplayTitolo" + (n+1) + "')"))
            eval("$('btnDisplayTitolo" + (n+1) + "').style.display = ''");
        eval("$('btnHideTitolo" + n + "').style.display = ''");
    }
    
    function HideTitolo(n) {
        for (var i=0; i<=3; i++)
        {   eval("$('trTitolo" + n + "_"+ i +"').style.display = 'none'");}
        eval("$('btnDisplayTitolo" + n + "').style.display = ''");
        if (eval("$('btnHideTitolo" + (n-1) + "')"))
            eval("$('btnHideTitolo" + (n-1) + "').style.display = ''");
        if (eval("$('btnDisplayTitolo" + (n+1) + "')"))
            eval("$('btnDisplayTitolo" + (n+1) + "').style.display = 'none'");
        eval("$('btnHideTitolo" + n + "').style.display = 'none'");

        $('dp_TitoloStudio'+ (n - 1)).selectedIndex = getIndexByValue($("dp_TitoloStudio" + (n - 1)), "0");
        $('dp_Voto'+ (n - 1)).value = "";
        $('sFacoltaIndirizzo' + (n - 1)).value = "";
        fillFacoltaIndirizzo(n -1, "0");
    }
    
    function DisplayEsperienza(n) {
        for (var i=0; i<=6; i++)
        {   eval("$('trEsperienza" + n + "_"+ i +"').style.display = ''");}

        eval("$('btnDisplayEsperienza" + n + "').style.display = 'none'");
        if (eval("$('btnHideEsperienza" + (n-1) + "')"))
            eval("$('btnHideEsperienza" + (n-1) + "').style.display = 'none'");
        if (eval("$('btnDisplayEsperienza" + (n+1) + "')"))
            eval("$('btnDisplayEsperienza" + (n+1) + "').style.display = ''");
        eval("$('btnHideEsperienza" + n + "').style.display = ''");
    }
    
    function HideEsperienza(n) {
        for (var i=0; i<=6; i++)
        {   eval("$('trEsperienza" + n + "_"+ i +"').style.display = 'none'");}
        
        eval("$('btnDisplayEsperienza" + n + "').style.display = ''");
        if (eval("$('btnHideEsperienza" + (n-1) + "')"))
            eval("$('btnHideEsperienza" + (n-1) + "').style.display = ''");
        if (eval("$('btnDisplayEsperienza" + (n+1) + "')"))
            eval("$('btnDisplayEsperienza" + (n+1) + "').style.display = 'none'");
        eval("$('btnHideEsperienza" + n + "').style.display = 'none'");
        
        $('dp_Settore'+ (n - 1)).selectedIndex = getIndexByValue($("dp_Settore" + (n - 1)), "0");
        $('dp_DataDa'+ (n - 1)).value = "";
        $('dp_DataA'+ (n - 1)).value = "";
        $('dp_Azienda'+ (n - 1)).value = "";
        $('dp_Note'+ (n - 1)).value = "";

        
        fillAttivita(n - 1, "0");
    }
    
    
    function LoadPage()
    {
        onChangeStatoNascita($('dp_StatoNascita').value);
        var provSelected = $("dp_ProvinciaNascita").options[$("dp_ProvinciaNascita").selectedIndex].value;
        if (provSelected != "")
        {   fillComuniNascita(provSelected);}
        provSelected = $("dp_Provincia").options[$("dp_Provincia").selectedIndex].value;
        if (provSelected != "")
        {   fillComuniDomicilio(provSelected);}
        
        var titoloStudio0Sel = $("dp_TitoloStudio0").options[$("dp_TitoloStudio0").selectedIndex].value;
        if (titoloStudio0Sel != "")
        {
            fillFacoltaIndirizzo(0, titoloStudio0Sel);
        }
        
        var titoloStudio1Sel = $("dp_TitoloStudio1").options[$("dp_TitoloStudio1").selectedIndex].value;
        if (titoloStudio1Sel != "")
        {
            if (titoloStudio1Sel != "0") DisplayTitolo(2);
            fillFacoltaIndirizzo(1, titoloStudio1Sel);
        }
        
        for (var i=0; i<=3; i++)
        {
            var Settore = $("dp_Settore"+ i).options[$("dp_Settore"+ i).selectedIndex].value;
            if (Settore  != "")
            {   
                fillAttivita(i, Settore);
                if (i>0 && i<=2 && Settore != "0") {
                    DisplayEsperienza(i+1);
                }
            }
        }
    }
    
    function checkCF()
    {
        if ($('dp_CodiceFiscale').value != "")
            Validation.validate('dp_CodiceFiscale');
    }
    
if (!window.prototypeValidators) prototypeValidators = $A([]);
var validator = new Validation('form1', {onSubmit:true, focusOnError:true, stopOnFirst:false, immediate:false, useTitles:true});
prototypeValidators['form1'] = validator;

document.onload = LoadPage();

