Ciao a tutti.

Ho un problema con lo script che posto di seguito e che ho trovato con l'uso della ricerca: in pratica con gli orari a cavallo della mezzanotte si hanno dei problemi... come posso ovviare al problema mantenendo la logica iniziale dello script ?

Logica iniziale dello script:

orario del campo B sempre > orario in campo A
orario del campo C sempre > orario in campo B
orario del campo D sempre > orario in campo C
orario del campo E sempre > orario in campo D
orario del campo F sempre > orario in campo E
orario del campo G sempre > orario in campo F
orario del campo H sempre > orario in campo G
Ad esempio se nel campo precedente inserisco orario 23:00 e nel campo successivo successivo inserisco orario 01:00 mi dice giustamente orario inferiore al precedente, invece si tratta in realtà di un'altro giorno e dovrebbe essere convalidato...

codice:
<script> 

function isTime(str) { 
	str="0"+str+":0"
	spz = str.replace("\.",":").split(":"); // accetta anche il . come separatore
	hh = parseInt(spz[0],10)
	mm = parseInt(spz[1],10)
	if ((hh == 24 && mm == 0) || (hh < 24 && mm < 60)) 
		return (hh*60+mm);
	return false;
} 

function Calcola() {

    //b-a
	cx = "AUTOMA_BLOCCO";
	cy = "SCATTO_LINEA";
	x = isTime(document.myform.elements(cx).value);
	y = isTime(document.myform.elements(cy).value);
	if(x && y) {
		document.myform.elements(cy).style.background = 'white';
		if(y>x) {
			document.myform.elements(cx).style.background = 'orange';
			alert("Attenzione!\nOrario inferiore al precedente.");
            document.myform.elements(cx).value = 'HHMM';		
		} else {
			document.myform.elements(cx).style.background = 'white';
		}
	}

    //c-b
	cx = "MANOVRA_TC";
	cy = "AUTOMA_BLOCCO";
	x = isTime(document.myform.elements(cx).value);
	y = isTime(document.myform.elements(cy).value);
	if(x && y) {
		document.myform.elements(cy).style.background = 'white';
		if(y>x) {
			document.myform.elements(cx).style.background = 'orange';
			alert("Attenzione!\nOrario inferiore al precedente.");
            document.myform.elements(cx).value = 'HHMM';
		} else {
			document.myform.elements(cx).style.background = 'white';
		}
	}
	

    //D-A
	cx = "SELEZIONE_TC";
	cy = "SCATTO_LINEA";
	x = isTime(document.myform.elements(cx).value);
	y = isTime(document.myform.elements(cy).value);
	if(x && y) {
		document.myform.elements(cy).style.background = 'white';
		if(y<x) {
			document.myform.elements(cx).style.background = 'white';
			document.myform.elements("DURATA_SELEZIONE_TC").style.background = 'white';
			document.myform.elements("DURATA_SELEZIONE_TC").value = (x-y);			
		} else {			
			alert("Attenzione!\nOrario inferiore al precedente.");
			document.myform.elements(cx).value = 'HHMM';
			document.myform.elements(cx).style.background = 'orange';			
			document.myform.elements("DURATA_SELEZIONE_TC").style.background = 'orange';
			document.myform.elements("DURATA_SELEZIONE_TC").value = 0;
			
		}
	}	

    //d-c
	cx = "SELEZIONE_TC";
	cy = "MANOVRA_TC";
	x = isTime(document.myform.elements(cx).value);
	y = isTime(document.myform.elements(cy).value);
	if(x && y) {
		document.myform.elements(cy).style.background = 'white';
		if(y>x) {
			document.myform.elements(cx).style.background = 'orange';
			alert("Attenzione!\nOrario inferiore al precedente.");
            document.myform.elements(cx).value = 'HHMM';
		} else {
			document.myform.elements(cx).style.background = 'white';
		}
	}
	

    //e-d
	cx = "INFO_REPERIBILI";
	cy = "SELEZIONE_TC";
	x = isTime(document.myform.elements(cx).value);
	y = isTime(document.myform.elements(cy).value);
	if(x && y) {
		document.myform.elements(cy).style.background = 'white';
		if(y>x) {
			document.myform.elements(cx).style.background = 'orange';
			alert("Attenzione!\nOrario inferiore al precedente.");
            document.myform.elements(cx).value = 'HHMM';
		} else {
			document.myform.elements(cx).style.background = 'white';
		}
	}		
	  
    
    //F-E
	cx = "MANOVRA_MANUALE";
	cy = "INFO_REPERIBILI";
	x = isTime(document.myform.elements(cx).value);
	y = isTime(document.myform.elements(cy).value);
	if(x && y) {
		document.myform.elements(cy).style.background = 'white';
		if(y<x) {
			document.myform.elements(cx).style.background = 'white';
			document.myform.elements("DURATA_LOGISTICA").style.background = 'white';
			document.myform.elements("DURATA_LOGISTICA").value = (x-y);			
		} else {
			alert("Attenzione!\nOrario inferiore al precedente.");
			document.myform.elements(cx).value = 'HHMM';
			document.myform.elements(cx).style.background = 'orange';			
			document.myform.elements("DURATA_LOGISTICA").style.background = 'orange';
			document.myform.elements("DURATA_LOGISTICA").value = 0;
			
			
			
		}
	}
		



    //G-F
	cx = "FINE_SELEZIONE";
	cy = "MANOVRA_MANUALE";
	x = isTime(document.myform.elements(cx).value);
	y = isTime(document.myform.elements(cy).value);
	if(x && y) {
		document.myform.elements(cy).style.background = 'white';
		if(y<x) {
			document.myform.elements(cx).style.background = 'white';
			document.myform.elements("DURATA_SELEZIONE_MANUALE").style.background = 'white';
			document.myform.elements("DURATA_SELEZIONE_MANUALE").value = (x-y);			
		} else {			
			alert("Attenzione!\nOrario inferiore al precedente.");
			document.myform.elements(cx).value = 'HHMM';
			document.myform.elements(cx).style.background = 'orange';			
			document.myform.elements("DURATA_SELEZIONE_MANUALE").style.background = 'orange';
			document.myform.elements("DURATA_SELEZIONE_MANUALE").value = 0;			
		}
	}	

    //H-G
	cx = "FINE_EVENTO";
	cy = "FINE_SELEZIONE";
	x = isTime(document.myform.elements(cx).value);
	y = isTime(document.myform.elements(cy).value);
	if(x && y) {
		document.myform.elements(cy).style.background = 'white';
		if(y<x) {
			document.myform.elements(cx).style.background = 'white';
			document.myform.elements("DURATA_RIPARAZIONE").style.background = 'white';
			document.myform.elements("DURATA_RIPARAZIONE").value = (x-y);			
		} else {
			alert("Attenzione!\nOrario inferiore al precedente.");
			document.myform.elements(cx).value = 'HHMM';
			document.myform.elements(cx).style.background = 'orange';			
			document.myform.elements("DURATA_RIPARAZIONE").style.background = 'orange';
			document.myform.elements("DURATA_RIPARAZIONE").value = 0;				
		}
	}


    //H-A
	cx = "FINE_EVENTO";
	cy = "SCATTO_LINEA";
	x = isTime(document.myform.elements(cx).value);
	y = isTime(document.myform.elements(cy).value);
	if(x && y) {
		document.myform.elements(cy).style.background = 'white';
		if(y<x) {
			document.myform.elements(cx).style.background = 'white';
			document.myform.elements("DURATA_EVENTO").style.background = 'white';
			document.myform.elements("DURATA_EVENTO").value = (x-y);			
		} else {
			alert("Attenzione!\nOrario inferiore al precedente.");
			document.myform.elements(cx).value = 'HHMM';
			document.myform.elements(cx).style.background = 'orange';			
			document.myform.elements("DURATA_EVENTO").style.background = 'orange';
			document.myform.elements("DURATA_EVENTO").value = 0;	
		}
	}
	


		
}

</script>

<form name="myform">

A<input id="SCATTO_LINEA" type="text" name="SCATTO_LINEA" size="10" onblur="Calcola()">
B<input id="AUTOMA_BLOCCO" type="text" name="AUTOMA_BLOCCO" size="10" onblur="Calcola()">
C<input id="MANOVRA_TC" type="text" name="MANOVRA_TC" size="10" onblur="Calcola()">
D<input id="SELEZIONE_TC" type="text" name="SELEZIONE_TC" size="10" onblur="Calcola()">
E<input id="INFO_REPERIBILI" type="text" name="INFO_REPERIBILI" size="10" onblur="Calcola()">
F<input id="MANOVRA_MANUALE" type="text" name="MANOVRA_MANUALE" size="10" onblur="Calcola()">
G<input id="FINE_SELEZIONE" type="text" name="FINE_SELEZIONE" size="10" onblur="Calcola()">
H<input id="FINE_EVENTO" type="text" name="FINE_EVENTO" size="10" onblur="Calcola()">





F-E<input type="text" name="DURATA_LOGISTICA" size="10" readonly value="0">
D-A<input type="text" name="DURATA_SELEZIONE_TC" size="10" readonly value="0">
G-F<input type="text" name="DURATA_SELEZIONE_MANUALE" size="10" readonly value="0">
H-G<input type="text" name="DURATA_RIPARAZIONE" size="10" readonly value="0">
H-A<input type="text" name="DURATA_EVENTO" size="10" readonly value="0">

</form>