var sUtenteCliente;
var sFamCliente;
var expiryDateCal;
var startingDateCal;

var expiryDate;
var effectiveDate;
var bersaniFacilitation;
var cuClass;
var accidentRecentYears;
var bersaniInsuranceCompany;
var plateMoto;
var houseHold;
var classeMerito;
var sinistriUltimiAnni;         

window.addEvent('domready', function() {                
    initData();
} );

function initData(){

    if($('sUtenteCliente')!=null){
		houseHold = new Fx.Slide('houseHold',{link:'cancel'});
	
		sUtenteCliente = new Fx.Slide('sUtenteCliente',{link:'cancel'});
	    sFamCliente = new Fx.Slide('sFamCliente',{link:'cancel'});
	}
	expiryDate = new CustomSlide('expiryDate',{link:'cancel'});
    effectiveDate = new CustomSlide('effectiveDate',{link:'cancel'});
    bersaniFacilitation = new Fx.Slide('bersaniFacilitation',{link:'cancel'});
    cuClass = new CustomSlide('cuClass',{link:'cancel'});
    accidentRecentYears = new CustomSlide('accidentRecentYears',{link:'cancel'});
    bersaniInsuranceCompany = new CustomSlide('bersaniInsuranceCompany',{link:'cancel'});
    plateMoto = new CustomSlide('plateMoto',{link:'cancel'});
        
   	if($('dataDecorrenza').get('value') != ''){
	   	$('effectiveDate').style.display = 'inline';
		effectiveDate.slideIn();
	}
	
	//bersaniFacilitation.slideOut();
	//bersaniInsuranceCompany.slideOut();
	//plateMoto.slideOut();
	
	if($('radioSituazAssicurativa1').checked)
		toggleSituazAssicurativaRadio(1);
	else if($('radioSituazAssicurativa2').checked)
		toggleSituazAssicurativaRadio(2);
	else toggleSituazAssicurativaRadio(3);
		
	//calendars init
//	expiryDateCal = new Calendar({ expiryYear: { expiryYear: 'Y', expiryMonth: 'm', expiryDay: 'd' }}, { days: ['Luned&igrave;', 'Marted&igrave;', 'Mercoled&igrave;', 'Gioved&igrave;', 'Venerd&igrave;', 'Sabato', 'Domenica'], months: ['Gennaio', 'Febbraio', 'Marzo', 'Aprile', 'Maggio', 'Giugno', 'Luglio', 'Agosto', 'Settembre', 'Ottobre', 'Novembre', 'Dicembre']});
	expiryDateCal = new Calendar({ expiryYear: { expiryYear: 'Y', expiryMonth: 'm', expiryDay: 'd' }},  { tweak: { x: 6, y: 0 }});
//	startingDateCal = new Calendar({ effectiveYear: { effectiveYear: 'Y', effectiveMonth: 'm', effectiveDay: 'd' }}, { days: ['Luned&igrave;', 'Marted&igrave;', 'Mercoled&igrave;', 'Gioved&igrave;', 'Venerd&igrave;', 'Sabato', 'Domenica'], months: ['Gennaio', 'Febbraio', 'Marzo', 'Aprile', 'Maggio', 'Giugno', 'Luglio', 'Agosto', 'Settembre', 'Ottobre', 'Novembre', 'Dicembre']});
	startingDateCal = new Calendar({ effectiveYear: { effectiveYear: 'Y', effectiveMonth: 'm', effectiveDay: 'd' }},  { tweak: { x: 6, y: 0 }});
}

function checkForm() {
	var check = true;
	var error = 0;
	
	var dateError = 0;
	var expiryDate;
	var effectiveDate;
	
	if ($('targa1')) {
		error += isAlphaNumeric('targa1','targaInvalid');
	}
	
	if(!$('radioSituazAssicurativa1').checked){
		dateError = isDateMandatory($('expiryDay').value, $('expiryMonth').value, $('expiryYear').value, 'expiryDateMandatoryError', 'expiryDateValidationError',null,null,false);
		
		if(dateError == 0){
			expiryDate =  $('expiryYear').get('value') + "/" + $('expiryMonth').get('value') + "/" + $('expiryDay').get('value');
			check = checkInsuranceExpiryDate(expiryDate);
		}
		
		error += dateError;
	}
	
	if($('radioSituazAssicurativa1').checked || $('dataDecorrenza').get('value') != ''){
		dateError = isDateMandatory($('effectiveDay').value, $('effectiveMonth').value, $('effectiveYear').value, 'effectiveDateMandatoryError', 'effectiveDateValidationError',null,null,false);
			
		if(check && dateError == 0){
			effectiveDate =  $('effectiveYear').get('value') + "/" + $('effectiveMonth').get('value') + "/" + $('effectiveDay').get('value');
			check = checkInsuranceEffectiveDate(effectiveDate);
		}
		
		error += dateError;
	}
	
	if(check && dateError == 0 && effectiveDate!=null && expiryDate!=null){
		dataScadenza =  $('expiryDay').get('value') + "/" + $('expiryMonth').get('value') + "/" + $('expiryYear').get('value');
		dataDecorrenza =  $('effectiveDay').get('value') + "/" + $('effectiveMonth').get('value') + "/" + $('effectiveYear').get('value');
		var dateCheck = isDateAfter(dataScadenza,dataDecorrenza);
		if(dateCheck){
			showError('99990091');
			check = false;
		}
	}
	
	if(!($('radioSituazAssicurativa1').checked && $('radioBersaniFacilitation1').checked)){
		error += isMandatory('comboClasseCU', 'comboClasseCUError');
		error += isMandatory('comboSinistriUltAnni', 'comboSinistriUltAnniError');
	}
	
	if($('radioSituazAssicurativa1').checked){
		if($('radioBersaniFacilitation2') != null && $('radioBersaniFacilitation2').checked){
			if(isLogged){	// Profilo 2/4 senza diritto alla Bersani interna (nel caso di Bersani interna, l'opzione 2 di "Agevolazione Bersani" non compare)
				error += isMandatory(new Array('radioCompagniaAssicBersani2','radioCompagniaAssicBersani3'), 'radioCompagniaAssicBersaniError');
			}else{			// Profilo 1/3
				error += isMandatory(new Array('radioCompagniaAssicBersani1','radioCompagniaAssicBersani2','radioCompagniaAssicBersani3'), 'radioCompagniaAssicBersaniError');
			}
			if (isMandatory('targa2','targa2Error') == 1) {
				error++;
			} else {
				error += isAlphaNumeric('targa2','targa2Invalid');
			}
		}else if($('radioBersaniFacilitation4') != null && $('radioBersaniFacilitation4').checked){
			error += isMandatory(new Array('radioCompagniaAssicBersani1','radioCompagniaAssicBersani2'), 'radioCompagniaAssicBersaniError'); // Profilo 2/4 con diritto alla Bersani interna
			if($('radioCompagniaAssicBersani2').checked){
				if (isMandatory('targa2','targa2Error') == 1) {
					error++;
				} else {
					error += isAlphaNumeric('targa2','targa2Invalid');
				}
			}
		}
	}
	
	if(error > 0 || !check)
		check = false;
	else disableControls(document);
	
	return check;
}

function checkInsuranceExpiryDate(strExpiryDate){
	var check = true;
	
	var expiryDateMin = new Date(Date.parse(strExpiryDate));
	var expiryDateMax = new Date(Date.parse(strExpiryDate));
	
	var today = new Date();
	
	today.setHours(0);
	today.setMinutes(0);
	today.setSeconds(0);
	today.setMilliseconds(0);
	
	expiryDateMin.setMonth(expiryDateMin.getMonth()-12);
	expiryDateMax.setMonth(expiryDateMax.getMonth()+60);
	
	if (expiryDateMin > today || expiryDateMax < today) {
		showError('99990008');
		check = false;
	}
	
	return check;
}

function checkInsuranceEffectiveDate(strEffectiveDate){
	var check = true;
	
	var effectiveDate = new Date(Date.parse(strEffectiveDate));
	
	var today = new Date();
	
	today.setHours(0);
	today.setMinutes(0);
	today.setSeconds(0);
	today.setMilliseconds(0);
	
	if (effectiveDate < today) {
		showError('99990086');
		check = false;
	} else{
		today.setMonth(today.getMonth()+12);
		if (effectiveDate > today) {
			showError('99990088');
			check = false;
		}	
	}
	
	return check;
}

function toggleSituazAssicurativaRadio(situazioneAssicurativa,element) {
	if(element == null || element.getElementsByTagName('input')[0].checked) {
	    if (situazioneAssicurativa == 1) {
		    $('bersaniFacilitation').style.display = 'inline';
	   		bersaniFacilitation.slideIn();
	   		
	   		$('effectiveDate').style.display = 'inline';
	   		effectiveDate.slideIn();
	
		    resetSinistriUltimiAnni();
		    resetClassiCU();
		    
	//		if($('radioBersaniFacilitation1').checked)		// Le combo "Classe CU" e "Sinistri ultimi anni" devono essere nascoste solo se 
	//	    	cuClass.slideOut();							// nel radio "Agevolazione Bersani" è settato il valore 1
	//			accidentRecentYears.slideOut();
	//		}
		
		 	if($('radioBersaniFacilitation1').checked)
				toggleAgevolazioneBersaniRadio(1);
			else if($('radioBersaniFacilitation2') != null && $('radioBersaniFacilitation2').checked)
				toggleAgevolazioneBersaniRadio(2);
			else if($('radioBersaniFacilitation3') != null && $('radioBersaniFacilitation3').checked)
				toggleAgevolazioneBersaniRadio(3);
			else if($('radioBersaniFacilitation4') != null && $('radioBersaniFacilitation4').checked)
				toggleAgevolazioneBersaniRadio(4);
			
			expiryDate.slideOut();
	    }else {	
	    	if($('houseHold')!=null && !isConvenzione) {
		   		$('houseHold').style.display = 'inline';
		   		houseHold.slideIn();
				initializeHouseHold();
			}
			
		   	$('expiryDate').style.display = 'inline';
	    	expiryDate.slideIn();
	    	
	    	$('cuClass').style.display = 'inline';
	    	cuClass.slideIn();
	    	
	    	$('accidentRecentYears').style.display = 'inline';
			accidentRecentYears.slideIn();
			
	   		bersaniFacilitation.slideOut();
			bersaniInsuranceCompany.slideOut();
			plateMoto.slideOut();
			
	   	   	if($('dataDecorrenza').get('value') == '')
		   		effectiveDate.slideOut();
		   	
			//resetBersaniFacilitation();
		   	//resetBersaniInsuranceCompany();
		    getSinistriUltimiAnni(situazioneAssicurativa);
		    getClassiCU(situazioneAssicurativa);
	    }
	// 	if($('radioBersaniFacilitation1').checked)
	//		toggleAgevolazioneBersaniRadio(1);
	//	else if($('radioBersaniFacilitation2') != null && $('radioBersaniFacilitation2').checked)
	//		toggleAgevolazioneBersaniRadio(2);
	//	else if($('radioBersaniFacilitation3') != null && $('radioBersaniFacilitation3').checked)
	//		toggleAgevolazioneBersaniRadio(3);
	//	else if($('radioBersaniFacilitation4') != null && $('radioBersaniFacilitation4').checked)
	//		toggleAgevolazioneBersaniRadio(4);
	}		
}

function toggleAgevolazioneBersaniRadio(agevolazioneBersani,element) {
	if(element == null || element.getElementsByTagName('input')[0].checked) {
	    if (agevolazioneBersani == 1) {
	    	if($('houseHold')!=null && !isConvenzione) {
		    	$('houseHold').style.display = 'inline';
	   			houseHold.slideIn();
				initializeHouseHold();
		    }
	    
			bersaniInsuranceCompany.slideOut();
			plateMoto.slideOut();
			cuClass.slideOut();
			accidentRecentYears.slideOut();
			
			//resetBersaniInsuranceCompany();
	    }else {
	    	if (agevolazioneBersani == 2) {
	   	   		$('bersaniInsuranceCompany').style.display = 'inline';
				bersaniInsuranceCompany.slideIn();
				
			   	$('plateMoto').style.display = 'inline';
				plateMoto.slideIn();
				
			   	if($('radioCompagniaAssicBersani1') != null && $('radioCompagniaAssicBersani1').checked) {
					getSinistriUltimiAnni(1,2,1);
					getClassiCU(1,2,1);
				} else if($('radioCompagniaAssicBersani2').checked) {
					getSinistriUltimiAnni(1,2,2);
					getClassiCU(1,2,2);
				} else if($('radioCompagniaAssicBersani3') != null && $('radioCompagniaAssicBersani3').checked) {
					getSinistriUltimiAnni(1,2,3);
					getClassiCU(1,2,3);
				}	
			    
			} else if (agevolazioneBersani == 3) {
				bersaniInsuranceCompany.slideOut();
				plateMoto.slideIn();
				//resetBersaniInsuranceCompany();
				
			    getSinistriUltimiAnni(1,3);
			    getClassiCU(1,3);
			} else if (agevolazioneBersani == 4) {
		   		$('bersaniInsuranceCompany').style.display = 'inline';
				bersaniInsuranceCompany.slideIn();
	
				if($('radioCompagniaAssicBersani1') != null && $('radioCompagniaAssicBersani1').checked) {
					getSinistriUltimiAnni(1,4,1);
					getClassiCU(1,4,1);
					plateMoto.slideOut();
				} else if($('radioCompagniaAssicBersani2').checked) {
					$('plateMoto').style.display = 'inline';
					plateMoto.slideIn();
					
					getSinistriUltimiAnni(1,4,2);
					getClassiCU(1,4,2);
				} else if($('radioCompagniaAssicBersani3') != null && $('radioCompagniaAssicBersani3').checked) {
					getSinistriUltimiAnni(1,4,3);
					getClassiCU(1,4,3);
				} else {
					// Se non è ancora stato selezionato alcun valore in "Compagnia assicurata per Bersani",
					// allora non visualizzo il campo targa.
					plateMoto.slideOut();
				}
			}
	
			$('cuClass').style.display = 'inline';
			cuClass.slideIn();
			
			$('accidentRecentYears').style.display = 'inline';
			accidentRecentYears.slideIn();
			if($(houseHold)!=null){
				houseHold.slideOut();
			}
	    }
    }
}

function toggleCompagniaAssicBersaniRadio(compagniaAssicBersani,element) {
	if(!element.getElementsByTagName('input')[0].checked) {
	    if (compagniaAssicBersani == 1) {
			// Disabilitazione campo "Targa moto già assicurata" SOLTANTO nel caso di UTENTE LOGGATO CON DIRITTO ALLA BERSANI INTERNA 
			if(isLogged && bersaniInterna){	
			    toggleRadio(element, plateMoto, false);
			    $('comboClasseCU').value = bersaniCU;
			    classeMerito = bersaniCU;
				$('comboSinistriUltAnni').value = bersaniSinistri;
				sinistriUltimiAnni = bersaniSinistri;
				
	    	}
	    	getSinistriUltimiAnni(1,2,1);
			getClassiCU(1,2,1);
	    }else if (compagniaAssicBersani == 2) {
	   		// Abilitazione campo "Targa moto già assicurata" SOLTANTO nel caso di UTENTE LOGGATO CON DIRITTO ALLA BERSANI INTERNA
	    	if(isLogged && bersaniInterna){	
			    toggleRadio(element, plateMoto, true, 'plateMoto');
	    	}
	        getSinistriUltimiAnni(1,2,2);
			getClassiCU(1,2,2);
	    }else if (compagniaAssicBersani == 3) {
	        getSinistriUltimiAnni(1,2,3);
			getClassiCU(1,2,3);
		}
	}
}

//Reset del radio button 'Agevolazione Bersani'
function resetBersaniFacilitation() {
	//Setting al valore di default 1 del radio button 'Agevolazione Bersani'
   	$('radioBersaniFacilitation1').checked = true;
   	var allLabels = $('radioBersaniFacilitation1').parentNode.parentNode.getElementsByTagName('label');
   	allLabels[0].className = 'selected';
   	for(var i=1;i<allLabels.length;i++){
	   	allLabels[i].className = 'normal';
   	}
}

//Reset del radio button 'Compagnia assicurata per Bersani'
function resetBersaniInsuranceCompany() {
	var allLabels;
	
   	if($('radioCompagniaAssicBersani1') != null)
		$('radioCompagniaAssicBersani1').checked = false;
	$('radioCompagniaAssicBersani2').checked = false;
	if($('radioCompagniaAssicBersani3') != null)
   		$('radioCompagniaAssicBersani3').checked = false;

   	allLabels = $('radioCompagniaAssicBersani2').parentNode.parentNode.getElementsByTagName('label');
   	for(var i=0;i<allLabels.length;i++){
	   	allLabels[i].className = 'normal';
   	}
}

function initializeHouseHold(){
	if ($('radioUtenteClienteY').checked){
		sFamCliente.slideOut();
	}
	if ($('radioUtenteClienteN').checked){
		sFamCliente.slideIn();
	}
	if ($('radioFamClienteY').checked){
		sUtenteCliente.slideOut();
	}
	if ($('radioFamClienteN').checked){
		sUtenteCliente.slideIn();
	}
}

function getSinistriUltimiAnni(situazioneAssicurativa,agevolazioneBersani,compagniaAssicBersani) {

	if(agevolazioneBersani == null)
		agevolazioneBersani = 0;
	
	if(compagniaAssicBersani == null)
		compagniaAssicBersani = 0;

	resetSinistriUltimiAnni();

	var jsonRequest = new Request.JSON({url: host, 
		data: JSON.encode({"id":1,"method":"jsonFactory.searchSinistriUltimiAnni","params":[situazioneAssicurativa,agevolazioneBersani,compagniaAssicBersani]}),
		                        
		onRequest: function() {
			$('comboSinistriUltAnni').disabled = 'true';
		},
		onLoading: function() {
		   	$('comboSinistriUltAnni').disabled = 'true';
		},
		onComplete: function(jsonItem){                     
		    $('comboSinistriUltAnni').disabled = null; 
			objson = (JSON.decode(jsonItem.result.times));
			objson.each(function(item) {
				var opt = document.createElement('option');
		        opt.value = item.CodSinUlt;
		        opt.innerHTML = item.Descrizione;
   	    		if(sinistriUltimiAnni == opt.value)
					opt.selected = 'selected';
		        $('comboSinistriUltAnni').appendChild(opt);
			});	
			if(isLogged && bersaniInterna && compagniaAssicBersani==1){	
				$('comboSinistriUltAnni').disabled = true;
			} else
				$('comboSinistriUltAnni').disabled = null;
		}
	}).send();

	return void(0);
}

function resetSinistriUltimiAnni() {
	// Se l'utente ha selezionato effettivamente un valore dalla combobox
	if(!($$('#comboSinistriUltAnni option').length == 1 && $('comboSinistriUltAnni').value == ''))
		sinistriUltimiAnni = $('comboSinistriUltAnni').value;

   	$$('#comboSinistriUltAnni option').each(function(item) {
       	if(item.value != '') {
           	item.parentNode.removeChild(item);
        }
   	});
}

function getClassiCU(situazioneAssicurativa,agevolazioneBersani,compagniaAssicBersani) {

	if(agevolazioneBersani == null)
		agevolazioneBersani = 0;
	
	if(compagniaAssicBersani == null)
		compagniaAssicBersani = 0;

	resetClassiCU();

	var jsonRequest = new Request.JSON({url: host, 
		data: JSON.encode({"id":1,"method":"jsonFactory.searchClassiCU","params":[situazioneAssicurativa,agevolazioneBersani,compagniaAssicBersani]}),
		                        
	    onRequest: function() {
			$('comboClasseCU').disabled = 'true';
	    },
	    onLoading: function() {
	    	$('comboClasseCU').disabled = 'true';
	    },
	    onComplete: function(jsonItem){                     
	        $('comboClasseCU').disabled = null; 
			objson = (JSON.decode(jsonItem.result.times));
			objson.each(function(item) {
				var opt = document.createElement('option');
	            opt.value = item.CodCUClai;
	            opt.innerHTML = item.Descrizione;
	            // CR1408
	            if (situazioneAssicurativa == '3' && classeMerito == '')
	            {
	               if( opt.value == '14')
	               {
					opt.selected = 'selected';					
				   }
	            }
	            // CR1408 FINE
	            else
	            {
	   	    		if(classeMerito == opt.value)
						opt.selected = 'selected';
				}	
		        $('comboClasseCU').appendChild(opt);
			});	
			if(isLogged && bersaniInterna && compagniaAssicBersani==1){	
				$('comboClasseCU').disabled = true;
			} else
				$('comboClasseCU').disabled = null;
		}
	}).send();

	return void(0);
}

function resetClassiCU() {
	// Se l'utente ha selezionato effettivamente un valore dalla combobox
	if(!($$('#comboClasseCU option').length == 1 && $('comboClasseCU').value == ''))
		classeMerito = $('comboClasseCU').value;
	
   	$$('#comboClasseCU option').each(function(item) {
       	if(item.value != '') {
           	item.parentNode.removeChild(item);
        }
   	});
}

function getCuClassHelpPage(){
	// Imposto popup di default in caso di NON BERSANI
	var helpPageUrl = '/gl/it/home/popup/moto/classe_bonus_malus.popup';
	
	if($('radioSituazAssicurativa1').checked){
		if($('radioBersaniFacilitation2') != null){
			if($('radioBersaniFacilitation2').checked){
				if(($('radioCompagniaAssicBersani1') != null && $('radioCompagniaAssicBersani1').checked) || $('radioCompagniaAssicBersani2').checked){
					// BERSANI INTERNA
					helpPageUrl = '/gl/it/home/popup/comuniquotazione/classe_bersani_interno.popup';
				}else{
					// BERSANI ESTERNA
					// Fin quando l'utente non seleziona uno dei valori proposti nel radio "Compagnia assicurata per Bersani",
					// vengono associati gli help della Bersani Esterna (issue 759)
					helpPageUrl = '/gl/it/home/popup/comuniquotazione/classe_bersani_esterno.popup';
				}
			}
		}else{
			if($('radioBersaniFacilitation3').checked){
				// BERSANI ESTERNA
				helpPageUrl = '/gl/it/home/popup/comuniquotazione/classe_bersani_esterno.popup';
			}else if($('radioBersaniFacilitation4').checked){
				// BERSANI INTERNA	
				helpPageUrl = '/gl/it/home/popup/comuniquotazione/classe_bersani_interno.popup';
			}
		}
	}
	return helpPageUrl;
}

function getAccidentRecentYearsHelpPage(){
	// Imposto popup di default in caso di NON BERSANI
	var helpPageUrl = '/gl/it/home/popup/moto/sinistri_cinque_anni.popup';
	
	if($('radioSituazAssicurativa1').checked){
		if($('radioBersaniFacilitation2') != null){
			if($('radioBersaniFacilitation2').checked){
				if(($('radioCompagniaAssicBersani1') != null && $('radioCompagniaAssicBersani1').checked) || $('radioCompagniaAssicBersani2').checked){
					// BERSANI INTERNA
					helpPageUrl = '/gl/it/home/popup/comuniquotazione/classe_bersani_interno.popup';
				}else{
					// BERSANI ESTERNA
					// Fin quando l'utente non seleziona uno dei valori proposti nel radio "Compagnia assicurata per Bersani",
					// vengono associati gli help della Bersani Esterna (issue 759)
					helpPageUrl = '/gl/it/home/popup/comuniquotazione/sinistri_attestato_bersani_esterno.popup';
				}
			}
		}else{
			if($('radioBersaniFacilitation3').checked){
				// BERSANI ESTERNA
				helpPageUrl = '/gl/it/home/popup/comuniquotazione/sinistri_attestato_bersani_esterno.popup';
			}else if($('radioBersaniFacilitation4').checked){
				// BERSANI INTERNA
				helpPageUrl = '/gl/it/home/popup/comuniquotazione/classe_bersani_interno.popup';
			}
		}
	}
	return helpPageUrl;
}
