

//funzioni calendario

	
function pickDate(buttonObj,inputObject, inputObjectRif) {
    if(inputObject.disabled) return;
	myCalendarModel.invalidDateRange = new Array();
	var now = new Date();
	myCalendarModel.addInvalidDateRange(false,{year: now.getFullYear(), month: now.getMonth() + 1,day: now.getDate()-1});
	myCalendarModel.addInvalidDateRange({year: now.getFullYear()+1,month: now.getMonth() + 1, day: now.getDate()},false);
	calendarObjForForm.setCalendarPositionByHTMLElement(inputObject,0,inputObject.offsetHeight+2); 
	var parse = parseDate(inputObject);
	calendarObjForForm.setInitialDateFromInput(inputObject,'dd-mm-yyyy');
	if(inputObjectRif && !parse){
		parseDate(inputObjectRif);
		calendarObjForForm.setInitialDateFromInput(inputObjectRif,'dd-mm-yyyy');
	}
	if(inputObjectRif && parseDate(inputObjectRif)) {
		var sp = inputObjectRif.value.split("-");
		var dt = new Date(sp[2], sp[1]-1, sp[0]);
		myCalendarModel.invalidDateRange = new Array();
		myCalendarModel.addInvalidDateRange(false,{year: dt.getFullYear(), month: dt.getMonth() + 1,day: dt.getDate()-1});
		myCalendarModel.addInvalidDateRange({year: now.getFullYear()+1,month: now.getMonth() + 1, day: now.getDate()},false);
	}
	calendarObjForForm.addHtmlElementReference('myDate',inputObject);
	if(calendarObjForForm.isVisible()){
		calendarObjForForm.hide();
	} else {
		calendarObjForForm.resetViewDisplayedMonth();
		calendarObjForForm.display();
	} 
	return true;
} 

function getDateFromCalendar(inputArray) {
	var references = calendarObjForForm.getHtmlElementReferences();
	references.myDate.value = inputArray.day + '-' + inputArray.month + '-' + inputArray.year;
	calendarObjForForm.hide();
    getRitorni();	
}

function readDate(inputObject) {
	var val = inputObject.value.split("-");
	var obDate = new Date(val[2], val[1]-1, val[0]);
	return obDate;
}	

//fine funzioni calendario

//reset dei dati
function resetData(area, collegamento, data_and, data_rit) {
	try {
		//macorregione e collegamento
		document.forms['sceltaviaggio'].MACROREGIONE.selectedIndex = 0;
		var opt = document.forms['sceltaviaggio'].MACROREGIONE.options;
		var slc = false;
		for (var k=0; !slc && k < opt.length; ++k) {
			if(opt[k].value == area) {
				document.forms['sceltaviaggio'].MACROREGIONE.selectedIndex = k;
				load_percorso();
				slc = true;
			}
		}
		if(slc && "" != collegamento && document.forms['sceltaviaggio'].PERCORSO) 
		{
			opt = document.forms['sceltaviaggio'].PERCORSO.options;
			slc = false;
			for (var k=0; !slc && k < opt.length; ++k) {
				if(opt[k].value == collegamento) {
					document.forms['sceltaviaggio'].PERCORSO.selectedIndex = k;
					slc = true;
				}
			}
		}
		load_tratte();
		//data andata
		document.forms['sceltaviaggio'].DATA_ANDATA.value = data_and;
		//data ritorno
		document.forms['sceltaviaggio'].DATA_RITORNO.value = data_rit;
		getRitorni();
	} catch (e) 
	{
	;
	}
}

function setItiner(itiand) {
		var itic;
		var citi;
		for(var k=0; k < document.forms['sceltaviaggio'].ITI_AND.length; ++k){
			for(var h=0; h<itiand.length; ++h) {
				citi = document.forms['sceltaviaggio'].ITI_AND[k];
				if(citi.value == itiand[h]) {
					citi.checked = true;
					itic = citi;
				}
			}
		}
		if(itic) {
		   andClick(itic);
		} else {
			andClick(citi);
		}
  }
  
function strInvert(cod) {
	var ini = cod.substring(0, 4);
	var fin = cod.substring(4, 8);
	return fin+ini;
}


//quando viene selezionato/desezionato un itinerario di andata
function andClick(chk) {
	var ctr = getTratta(chk.value);
	if(chk.checked) {
	   //tolgo le altre direzioni di andata
	   for(var k=0; k < document.forms["sceltaviaggio"].ITI_AND.length;  ++k) {
			ttr = getTratta(document.forms["sceltaviaggio"].ITI_AND[k].value);
			if(ttr.cod_gruppo != ctr.cod_gruppo) document.forms["sceltaviaggio"].ITI_AND[k].parentNode.parentNode.style.display="none";
		}
		land = document.getElementById("list_itiand");
		for(var k=0; k<land.childNodes.length; ++k) {
			if(land.childNodes[k].className=="perSep" && land.childNodes[k+1].style.display=="none")land.childNodes[k].style.display='none';
		}
	} else {
	    var onec = false;
	    for(var k=0; !onec && k < document.forms["sceltaviaggio"].ITI_AND.length;  ++k) {
			if(document.forms["sceltaviaggio"].ITI_AND[k].checked) onec=true;
		}
		//metto le altre direzioni di ritorno
		if(!onec) {
			for(var k=0; k<land.childNodes.length; ++k) {
			land.childNodes[k].style.display='block';
			}
		}
		
	}
	//riempie i ritorni
	getRitorni();
}

//prende la tratta selezionata partendo dal codice
function getTratta(clin) {
	for(var k=0; k<tratte.length; ++k) {
        if(tratte[k].cod_lin == clin) return tratte[k];	
	}
	return undefined;
}

//prende il percorso selezionato partendo dal codice
function getPercorso(gruppo) {
	for(var k=0; k<percorsi.length; ++k) {
        if(percorsi[k].cod_gruppo == gruppo) return percorsi[k];	
	}
	return undefined;
}

function getRitorni() {
	try {
	var t_rit = new Array();
	var itirit = "";
	var trit;
	var prevd = "";
	for(var k=0; k<document.forms["sceltaviaggio"].ITI_AND.length; ++k) {   
		
		if(document.forms["sceltaviaggio"].ITI_AND[k].checked) {
			var v = document.forms["sceltaviaggio"].ITI_AND[k].value;
			for (var i = 0; i < tratte_rit[v].ritorni.length; ++i) {
				try {
				var found = false;
				for(var j = 0; !found && j < t_rit.length; ++j) {
					if(t_rit[j] == tratte_rit[v].ritorni[i]) {
						found = true;
					}
				}
				if(!found) {
					trit = getTratta(tratte_rit[v].ritorni[i]);
					t_rit.push(tratte_rit[v].ritorni[i]);
					itirit += "<li><label><input type='checkbox' name='ITI_RIT' class='entry_chk' value='"+trit.cod_lin+"'>&nbsp;&nbsp;"+trit.desc_lin+"</label></li>";
					if(trit) {
						agruppo = trit.cod_gruppo;
						var per = getPercorso(agruppo);
						if(per && per.desc_percorso != prevd) {
							itirit = "<li class='perSep'>" + per.desc_percorso + "</li>" + itirit;				
							prevd = per.desc_percorso;
						}
					}
				}
				} catch (e) {
					var ex = e;
				}
			}
		}
	}
	
	if(document.forms["sceltaviaggio"].DATA_RITORNO.disabled) {
		document.getElementById("list_itirit").innerHTML = "";
	} else {
		document.getElementById("list_itirit").innerHTML = itirit;
		for(var k=0; k<document.forms["sceltaviaggio"].ITI_AND.length; ++k) {   
			if(document.forms["sceltaviaggio"].ITI_AND[k].checked) {
				var vr = strInvert(document.forms["sceltaviaggio"].ITI_AND[k].value);
				var found = false;
				if(document.forms["sceltaviaggio"].ITI_RIT.length) {
					for(var h=0; !found && h < document.forms["sceltaviaggio"].ITI_RIT.length; ++h) {
						if(document.forms["sceltaviaggio"].ITI_RIT[h].value == vr) {
						    document.forms["sceltaviaggio"].ITI_RIT[h].checked=true;
							found = true;
						}
					}
				} else if(document.forms["sceltaviaggio"].ITI_RIT.value == vr) {
				    document.forms["sceltaviaggio"].ITI_RIT.checked=true;
				}
			}
		}
	}
	} catch (e) {
		var ex = e;
		
	}
}


//fine reset dei dati

//abilita disabilita ritorno
function enableRit(chk) {
	chk.form.DATA_RITORNO.disabled = !chk.checked;
	getRitorni();
	if(chk.checked) {
		   //document.getElementById('ritTit').className = '';
		   document.getElementById('list_itirit').style.backgroundColor='#FFFFFF';
	} else {
			//document.getElementById('ritTit').className = 'rTit';
			document.getElementById('list_itirit').style.backgroundColor='#E0DFE3';
	}
	try {
		for(var k=0; k < chk.form.ITI_RIT.length; ++k)chk.form.ITI_RIT[k].disabled=!chk.checked; 
	} catch (e) {;}
}

//inizializzazione di form esterne
function initForm(fname) {
	var frm = document.forms[fname];
	try {
	cleanList(frm.MACROREGIONE);
    } catch (e) {;}
   frm.MACROREGIONE.options[0] = new Option("===============", "");
   for (var i = 1; i <= lineePerDa.length; i++) {
     frm.MACROREGIONE.options[i] = new Option(lineePerDa[i-1].desc_area, lineePerDa[i-1].cod_area);
   }
}

//carica itinerari andata in una form esterna
function load_itiand(frm) {
	try {
	cleanList(frm.ITI_AND);
    } catch (e) {;}
	frm.ITI_AND.options[0] = new Option("===============", "");
	var index = frm.MACROREGIONE.options.selectedIndex;
	if(index == 0) return;
	var _area = frm.MACROREGIONE.options[index].value;
    for (var i = 0; i < tratte.length; ++i) {
      if(tratte[i].cod_area == _area) frm.ITI_AND.options.add(new Option(tratte[i].desc_lin, tratte[i].cod_lin));
    }
}

//carica itinerari ritorno in una form esterna
function load_itirit(frm) {
	if(! frm.ITI_RIT) return;
	try {
	cleanList(frm.ITI_RIT);
    } catch (e) {;}
	frm.ITI_RIT.options[0] = new Option("===============", "");
	var index = frm.ITI_AND.options.selectedIndex;
	if(index == 0) return;
	var _rit = tratte_rit[frm.ITI_AND.options[index].value].ritorni;
    for (var i = 0; i < _rit.length; ++i) {
      var rit = getTratta(_rit[i]);
	  frm.ITI_RIT.options.add(new Option(rit.desc_lin, rit.cod_lin));
    }
}

//validazione di una form esterna
function chkForm(frm) 
{
   //date
   if(!parseDate(frm.DATA_ANDATA)) {
	alert("Specificare la data di andata: gg-mm-aaaa");
	frm.DATA_ANDATA.focus();
	return false;
   }
   
   var dataAnd = readDate(frm.DATA_ANDATA);
   if(frm.DATA_RITORNO.value != "" && !parseDate(frm.DATA_RITORNO)) {
		alert("Verificare la data di ritorno: gg-mm-aaaa");
		frm.DATA_RITORNO.focus();
		return false;
   }
   
   if(frm.DATA_RITORNO.value != "") {
	var dataRit = readDate(frm.DATA_RITORNO);
	if(dataRit < dataAnd) {
		alert("La data di ritorno non puo' essere minore della data di andata");
		frm.DATA_RITORNO.focus();
		return false;
	}
   }
   //fine date
   //itinerari
   if(frm.ITI_AND.selectedIndex <= 0) {
		alert("Selezionare un itinerario di andata.");
		frm.ITI_AND.focus();
		return false;
	}
   
   //itinerari ritorno
   if(frm.DATA_RITORNO.value != "" && frm.ITI_RIT && frm.ITI_RIT.selectedIndex <= 0) {
		alert("Selezionare un itinerario di ritorno.");
		frm.ITI_RIT[0].focus();
		return false;
   } 
   return true;
}




