  $(document).ready(function(){
			$("#soloandata").click(function() {
				var today = $("#date1id").val();
				
				if ($(this).is(":checked")) 
				{
					$("#type").val('OW');
					$("#date2id").val('');
					$("#date2id").attr("disabled", "true");
				}
				else
				{
					$("#type").val('RT');
					$("#date2id").val(today);
					$("#date2id").removeAttr("disabled"); 
				}
			});

			$("#submit").click(function() {
						
				if ($("#myHidden2").val() == '')
				{
					alert ("ERRORE:\nL'aeroporto di PARTENZA non è stato selezionato. \n\nSOLUZIONE:\nTi preghiamo di scrivere una parte del nome dell'aeroporto (anche solo 3 caratteri) dunque selezionare uno dei nomi che ti vengono suggeriti mediante il tasto TAB, Enter o col mouse");	
					$('#myInput').focus();   // Focus e Seleziona tutta la stringa
					$('#myInput').select();
					return false;
				}
					
				if ($("#myHidden4").val() == '')
				{
					alert ("ERRORE:\nL'aeroporto di DESTINAZIONE non è stato selezionato. \n\nSOLUZIONE:\nTi preghiamo di scrivere una parte del nome dell'aeroporto (anche solo 3 caratteri) dunque selezionare uno dei nomi che ti vengono suggeriti mediante il tasto TAB, Enter o col mouse");				
					$('#myInput2').focus();
					$('#myInput2').select();
					return false;
				}
				
				if (!$("#soloandata").is(":checked"))
				{
					date1 =  $("#date1id").val().substr (6,4) + $("#date1id").val().substr (3,2) + $("#date1id").val().substr (0,2);
					date2 =  $("#date2id").val().substr (6,4) + $("#date2id").val().substr (3,2) + $("#date2id").val().substr (0,2);
					if (date2 < date1)
					{
						alert ("ERRORE:\nIl volo di ritorno è antecedente a quello di andata\n\nSOLUZIONE:\nCorreggi la data del volo di RITORNO o clicca sula casella 'Solo Andata' se si tratta di un volo di sola andata");
						return false;
					}
				}
				
				return true;
			});
			
		YAHOO.example.FnMultipleFields = function(){
		    
		    // Define a custom search function for the DataSource
		    var matchNames = function(sQuery) {
		        // Case insensitive matching
		        var query = sQuery.toLowerCase(),
		            contact,
		            i=0,
		            l=myAirports.length,
		            matches = [];
		        
		        // Match against each name of each contact
		        for(; i<l; i++) {
		            contact = myAirports[i];
		            // basta mettere == 0 per far partire la ricerca dall'inizio della stringa aeroporti
		            if((contact.fname.toLowerCase().indexOf(query) > -1) ||
		                (contact.lname.toLowerCase().indexOf(query) > -1) ||
		                (contact.nname && (contact.nname.toLowerCase().indexOf(query) > -1))) {
		                matches[matches.length] = contact;
		            }
		        }
		
		        return matches;
		    };
		
		    // Use a FunctionDataSource
		    var oDS = new YAHOO.util.FunctionDataSource(matchNames);
		    oDS.responseSchema = {
		        fields: ["id", "fname", "lname", "nname"]
		    }
		 
		    
		    // Helper function for the formatter
		    var highlightMatch = function(full, snippet, matchindex) {
		        return full.substring(0, matchindex) + 
		                "<span class='match'>" + 
		                full.substr(matchindex, snippet.length) + 
		                "</span>" +
		                full.substring(matchindex + snippet.length);
		    };
		    
		    
		    // Instantiate AutoComplete
		    var oAC = new YAHOO.widget.AutoComplete("myInput", "myContainer", oDS);
		    oAC.minQueryLength = 3;
		    oAC.useShadow = true;
		    oAC.resultTypeList = false;
		        
		    // Instantiate AutoComplete2
		    var dAC = new YAHOO.widget.AutoComplete("myInput2", "myContainer2", oDS);
		    dAC.minQueryLength = 3;
		    dAC.useShadow = true;
		    dAC.resultTypeList = false;
		    
			// Custom formatter to highlight the matching letters
		    dAC.formatResult = function(oResultData, sQuery, sResultMatch) {
		        var query = sQuery.toLowerCase(),
		            fname = oResultData.fname,
		            lname = oResultData.lname,
		            nname = oResultData.nname || "", // Guard against null value
		            query = sQuery.toLowerCase(),
		            fnameMatchIndex = fname.toLowerCase().indexOf(query),
		            lnameMatchIndex = lname.toLowerCase().indexOf(query),
		            nnameMatchIndex = nname.toLowerCase().indexOf(query),
		            displayfname, displaylname, displaynname;
		            
		        if(fnameMatchIndex > -1) {
		            displayfname = highlightMatch(fname, query, fnameMatchIndex);
		        }
		        else {
		            displayfname = fname;
		        }
		
		        if(lnameMatchIndex > -1) {
		            displaylname = highlightMatch(lname, query, lnameMatchIndex);
		        }
		        else {
		            displaylname = lname;
		        }
		
		        if(nnameMatchIndex > -1) {
		            displaynname = "(" + highlightMatch(nname, query, nnameMatchIndex) + ")";
		        }
		        else {
		            displaynname = nname ? "(" + nname + ")" : "";
		        }
		
		        return displayfname + " " + displaylname + " " + displaynname;
		            
		    };
		     
		    // Custom formatter to highlight the matching letters
		    oAC.formatResult = function(oResultData, sQuery, sResultMatch) {
		        var query = sQuery.toLowerCase(),
		            fname = oResultData.fname,
		            lname = oResultData.lname,
		            nname = oResultData.nname || "", // Guard against null value
		            query = sQuery.toLowerCase(),
		            fnameMatchIndex = fname.toLowerCase().indexOf(query),
		            lnameMatchIndex = lname.toLowerCase().indexOf(query),
		            nnameMatchIndex = nname.toLowerCase().indexOf(query),
		            displayfname, displaylname, displaynname;
		            
		        if(fnameMatchIndex > -1) {
		            displayfname = highlightMatch(fname, query, fnameMatchIndex);
		        }
		        else {
		            displayfname = fname;
		        }
		
		        if(lnameMatchIndex > -1) {
		            displaylname = highlightMatch(lname, query, lnameMatchIndex);
		        }
		        else {
		            displaylname = lname;
		        }
		
		        if(nnameMatchIndex > -1) {
		            displaynname = "(" + highlightMatch(nname, query, nnameMatchIndex) + ")";
		        }
		        else {
		            displaynname = nname ? "(" + nname + ")" : "";
		        }
		
		        return displayfname + " " + displaylname + " " + displaynname;
		        
		    };
		       
		    // Define an event handler to populate a hidden form field
		    // when an item gets selected and populate the input field
		    var myHiddenField = YAHOO.util.Dom.get("myHidden");
		    var myHiddenField2 = YAHOO.util.Dom.get("myHidden2");
		      
		    var myHandler = function(sType, aArgs) {
		        var myAC = aArgs[0]; // reference back to the AC instance
		        var elLI = aArgs[1]; // reference to the selected LI element
		        var oData = aArgs[2]; // object literal of selected item's result data
		        
		        // update hidden form field with the selected item's ID
		        myHiddenField.value = oData.id;
		        myHiddenField2.value = oData.nname;
		        
		        myAC.getInputEl().value = oData.fname + " " + oData.lname + (oData.nname ? " (" + oData.nname + ")" : "");
		    };
		    oAC.itemSelectEvent.subscribe(myHandler); 
		    
		    var myHiddenField3 = YAHOO.util.Dom.get("myHidden3");
		    var myHiddenField4 = YAHOO.util.Dom.get("myHidden4");      
		    var myHandler2 = function(sType, aArgs) {
		        var myAC = aArgs[0]; // reference back to the AC instance
		        var elLI = aArgs[1]; // reference to the selected LI element
		        var oData = aArgs[2]; // object literal of selected item's result data
		        
		        // update hidden form field with the selected item's ID
		        
		        myHiddenField3.value = oData.id;
		        myHiddenField4.value = oData.nname;
		        
		        myAC.getInputEl().value = oData.fname + " " + oData.lname + (oData.nname ? " (" + oData.nname + ")" : "");
		    };
		           
		    dAC.itemSelectEvent.subscribe(myHandler2);      
		    
		    return {
		        oDS: oDS,
		        oAC: oAC,
		        dAC: dAC 
		    };
		    
		    // ------------------------------------------------------------------------------------------------
		    
		
		 
		}();
		
    	 
	});	
