	var makeMenu_one;
	var makeMenu_two;
	var makeMenu_three;
	var anyMakeMenu_one;
	var anyMakeMenu_two;
	var anyMakeMenu_three;

	var modelMenu_one;
	var modelMenu_two;
	var modelMenu_three;

	var makeButton_one;
	var makeButton_two;
	var makeButton_three;
	var anyMakeButton_one;
	var anyMakeButton_two;
	var anyMakeButton_three;
	var modelButton_one;
	var modelButton_two;
	var modelButton_three;

	var chosenBodyStyles = [];
    var bodyStyles = [];    
	var mycriteria_all;
	var mycriteria_new;
	var mycriteria_certified;
	var mycriteria_used;
	var myDistanceMenu;

	var myscope_all;
	var myscope_dealer;
	var myscope_private;

	var setBodyStylesOnLoadFlag = 1;
	var setAnyMakeOnLoadFlag = 1;
	var setMakeOnLoadFlag = 1;
	var setModelOnLoadFlag = 1;

    //YAHOO.example.init = function () {


		var YUC = YAHOO.util.Connect; 
		
		var args = [''];
		

		// #################################################################################
		// #							CALLBACK FUNCTIONS                                 #
		// #################################################################################

		var modelResponseSuccess = function(o){
		/* Please see the Success Case section for more
		 * details on the response object's properties.
		 * o.tId
		 * o.status
		 * o.statusText
		 * o.getResponseHeader[ ]
		 * o.getAllResponseHeaders
		 * o.responseText
		 * o.responseXML
		 * o.argument
		 */
			setModelButtonMenu(o.responseText);
		};
		var modelResponseFailure = function(o){
		// Access the response object's properties in the
		// same manner as listed in responseSuccess( ).
		// Please see the Failure Case section and
		// Communication Error sub-section for more details on the
		// response object's properties.
		};

		var modelcallback =
		{
		  success:modelResponseSuccess,
		  failure:modelResponseFailure,
		  timeout: 5000//,
		  //argument:args
		};

		var makeResponseSuccess = function(o){
			var json = o.responseText;
			// json now contains an array of object literals, each representing
			// a set of YAHOO.widget.MenuItem configuration attributes for the make menu
			setMakeButtonMenu(json);
		};
		var anyMakeResponseSuccess = function(o){
			var json = o.responseText;
			// json now contains an array of object literals, each representing
			// a set of YAHOO.widget.MenuItem configuration attributes for the make menu
			setAnyMakeButtonMenu(json);

			// Get the body styles from the database
			YAHOO.util.Event.onContentReady("bodystylecontainer", function() {
				YUC.asyncRequest('GET', '/ADMIN/makemodel/getBodyStyles.php', bodystylecallback, null);
			});

		};
		var makeResponseFailure = function(o){
			alert("Couldn't get makes!");
		};
		
		var makecallback =
		{
		  success:makeResponseSuccess,
		  failure:makeResponseFailure,
		  timeout: 5000//,
		  //argument:args
		};

		var allmakecallback =
		{
		  success:anyMakeResponseSuccess,
		  failure:makeResponseFailure,
		  timeout: 10000//,
		  //argument:args
		};

		var bodyStyleResponseSuccess = function(o){
			var json = o.responseText;
			// json now contains an array of objects, each one a YAHOO.widget.Button definition
			var i = 0;
			var btnArray = eval(json);
			for (btn in btnArray) {
				bodyStyles[i] = new YAHOO.widget.Button(eval(btnArray[btn]));
				bodyStyles[i].set("disabled", true);
				i++;
			}

			if (setBodyStylesOnLoadFlag && (i >= btnArray.length)) {
				setBodyStylesOnLoadFlag = 0;
				YAHOO.util.Event.onContentReady("advSearch", function () {
					formLoaded();
					setBodyStylesOnLoad();
				});
			}
		};
		var bodyStyleResponseFailure = function(o){
		};

		var bodystylecallback = 
		{
		  success:bodyStyleResponseSuccess,
		  failure:bodyStyleResponseFailure,
		  timeout: 5000//,
		  //argument:args
		};

		// #################################################################################
		// #							BUTTON SETUP                                       #
		// #################################################################################

		YAHOO.util.Event.onContentReady("makebuttons", function() {

			anyMakeMenu_one = new YAHOO.widget.Menu("myanymakebutton_one", { scrollincrement: 2, iframe: false, lazyload: true } );
	        anyMakeButton_one = new YAHOO.widget.Button({ type: "menu", label: "<em>Select make</em>", name: "myanymakebutton_one", menu: anyMakeMenu_one, container: "makebuttons" });            
			anyMakeMenu_two = new YAHOO.widget.Menu("myanymakebutton_two", { scrollincrement: 2, iframe: false, lazyload: true } );
	        anyMakeButton_two = new YAHOO.widget.Button({ type: "menu", label: "<em>Select make</em>", name: "myanymakebutton_two", menu: anyMakeMenu_two, container: "makebuttons" });            
			anyMakeMenu_three = new YAHOO.widget.Menu("myanymakebutton_three", { scrollincrement: 2, iframe: false, lazyload: true } );
	        anyMakeButton_three = new YAHOO.widget.Button({ type: "menu", label: "<em>Select make</em>", name: "myanymakebutton_three", menu: anyMakeMenu_three, container: "makebuttons" });            
	
			//anyMakeButton_one.setStyle("display", "block");
			//anyMakeButton_two.setStyle("display", "block");
			//anyMakeButton_three.setStyle("display", "block");
	
			makeMenu_one = new YAHOO.widget.Menu("mymakebutton_one", { scrollincrement: 2, iframe: false, lazyload: true } );
			makeMenu_one.addItems(["Select a body style first"]);
	        makeButton_one = new YAHOO.widget.Button({ type: "menu", label: "<em>Select make</em>", name: "mymakebutton_one", menu: makeMenu_one, container: "makebuttons" });            
			makeMenu_one.render(document.body);
	
			makeMenu_two = new YAHOO.widget.Menu("mymakebutton_two", { scrollincrement: 2, iframe: false, lazyload: true } );
			makeMenu_two.addItems(["Select a body style first"]);
	        makeButton_two = new YAHOO.widget.Button({ type: "menu", label: "<em>Select make</em>", name: "mymakebutton_two", menu: makeMenu_two, container: "makebuttons" });            
			makeMenu_two.render(document.body);
	
			makeMenu_three = new YAHOO.widget.Menu("mymakebutton_three", { scrollincrement: 2, iframe: false, lazyload: true } );
			makeMenu_three.addItems(["Select a body style first"]);
	        makeButton_three = new YAHOO.widget.Button({ type: "menu", label: "<em>Select make</em>", name: "mymakebutton_three", menu: makeMenu_three, container: "makebuttons" });            
			makeMenu_three.render(document.body);
	
			makeButton_one.setStyle("position", "absolute");
			makeButton_one.setStyle("left", "-1000px");
			makeButton_two.setStyle("position", "absolute");
			makeButton_two.setStyle("left", "-1000px");
			makeButton_three.setStyle("position", "absolute");
			makeButton_three.setStyle("left", "-1000px");

			// #################################################################################
			// #							INITIAL SEARCHES                                   #
			// #################################################################################
	
			// Populate the make menu
			YAHOO.util.Event.onContentReady("makemodel", function() {
				YUC.asyncRequest('GET', '/ADMIN/makemodel/getMakes.php', allmakecallback, null);
			});

		
		});

		YAHOO.util.Event.onContentReady("modelbuttons", function() {

			modelMenu_one = new YAHOO.widget.Menu("mymodelbutton_one", { scrollincrement: 2, iframe: false, lazyload: true } );
	        modelButton_one = new YAHOO.widget.Button({ type: "menu", label: "<em>Select model</em>", name: "mymodelbutton_one", menu: modelMenu_one, container: "modelbuttons" });
			modelMenu_one.addItems(["Select a make first"]);
			modelMenu_one.render(document.body);
	
			modelMenu_two = new YAHOO.widget.Menu("mymodelbutton_two", { scrollincrement: 2, iframe: false, lazyload: true } );
	        modelButton_two = new YAHOO.widget.Button({ type: "menu", label: "<em>Select model</em>", name: "mymodelbutton_two", menu: modelMenu_two, container: "modelbuttons" });
			modelMenu_two.addItems(["Select a make first"]);
			modelMenu_two.render(document.body);
	
			modelMenu_three = new YAHOO.widget.Menu("mymodelbutton_three", { scrollincrement: 2, iframe: false, lazyload: true } );
	        modelButton_three = new YAHOO.widget.Button({ type: "menu", label: "<em>Select model</em>", name: "mymodelbutton_three", menu: modelMenu_three, container: "modelbuttons" });
			modelMenu_three.addItems(["Select a make first"]);
			modelMenu_three.render(document.body);

		});

		// Set up the all/dealer only/private seller only buttons
		myscope_all = new YAHOO.widget.Button({ type: "radio", label: "All", name: "myscope_all", checked: true, onclick: { fn: allOrDealerClick }, value: "all" });
		myscope_dealer = new YAHOO.widget.Button({ type: "radio", label: "Dealer only", name: "myscope_dealer", onclick: { fn: allOrDealerClick }, value: "dealer" });
		myscope_private = new YAHOO.widget.Button({ type: "radio", label: "Private seller only", name: "myscope_private", onclick: { fn: privateSellerClick }, value: "private" });
		var scopeButtons = new YAHOO.widget.ButtonGroup ({ name: "scopebuttons", container: "scope" });
 		scopeButtons.addButton(myscope_all);
 		scopeButtons.addButton(myscope_dealer);
 		scopeButtons.addButton(myscope_private);

		// Set up the all/new/certified/used buttons
		mycriteria_all = new YAHOO.widget.Button({ type: "radio", label: "<em>All cars</em>", name: "mycriteria_all", checked: true,  value: "all" });
		mycriteria_new = new YAHOO.widget.Button({ type: "radio", label: "<em>New cars</em>", name: "mycriteria_new", value: "new" });
		mycriteria_certified = new YAHOO.widget.Button({ type: "radio", label: "<em>Certified cars</em>", name: "mycriteria_certified", value: "certified" });
		mycriteria_used = new YAHOO.widget.Button({ type: "radio", label: "<em>Used cars</em>", name: "mycriteria_used", value: "used" });
		var criteriaButtons = new YAHOO.widget.ButtonGroup ({ name: "criteriabuttons", container: "criteria" });
 		criteriaButtons.addButton(mycriteria_all);
 		criteriaButtons.addButton(mycriteria_new);
 		criteriaButtons.addButton(mycriteria_certified);
 		criteriaButtons.addButton(mycriteria_used);

		/* 	By default, event handlers are called with two arguments: a string 
			representing the name of the event and an array of arguments sent 
			when the event fired. Events based on DOM events (e.g. "mouseover," 
			"mouseout," "click," etc.) pass back the DOM event object to the 
			listener as the first argument in the arguments array; if the target
			of the event was a MenuItem instance, it will be passed back as the 
			second argument.
		*/

		function genericItemClick(p_sType, p_aArgs, p_aParent) {
			var obj = p_aArgs[1];

			// The parent is just a button
			var btn = p_aParent;

			// This is the text value of the menuItem chosen
			labelTxt = obj.cfg.getProperty("text");

			btn.set("label", labelTxt);
		}

		YAHOO.util.Event.onContentReady("yearlabel", function() {

			var yearFromSelectedTxt = document.getElementById("myYearFromMenu").options[document.getElementById("myYearFromMenu").selectedIndex].value;
			var yearToSelectedTxt =  document.getElementById("myYearToMenu").options[document.getElementById("myYearToMenu").selectedIndex].value;
			var yearFromSelected = document.getElementById("myYearFromMenu").selectedIndex;
			var yearToSelected = document.getElementById("myYearToMenu").selectedIndex;

			var myYearFromMenu = new YAHOO.widget.Menu("myYearFromMenu", { scrollincrement: 2 } );
			var myYearToMenu = new YAHOO.widget.Menu("myYearToMenu", { scrollincrement: 2 } );
			var yearto = new YAHOO.widget.Button( "yearto", { label: "Any", type: "menu", menu: myYearToMenu } );
			var yearfrom = new YAHOO.widget.Button( "yearfrom", { label: "Any", type: "menu", menu: myYearFromMenu } );

			myYearFromMenu.render(document.body);
			myYearToMenu.render(document.body);

			if (yearFromSelectedTxt) {			
					yearfrom.set("label", yearFromSelectedTxt);
					myYearFromMenu.getItem(yearFromSelected).cfg.setProperty("selected", true);
			}
			if (yearToSelectedTxt) {			
					yearto.set("label", yearToSelectedTxt);
					myYearToMenu.getItem(yearToSelected).cfg.setProperty("selected", true);
			}

			// We pass in yearfrom here so that the click handler will know which
			// button to update when a menuitem is clicked (selected)
			myYearFromMenu.subscribe("click", genericItemClick, yearfrom);
			myYearToMenu.subscribe("click", genericItemClick, yearto);
		});

		YAHOO.util.Event.onContentReady("pricerangelabel", function() {
			var priceRangeSelected = document.getElementById("myPriceRangeMenu").selectedIndex;
			if (!(priceRangeSelected >= 0)) {
				priceRangeSelected = 0;
			}
			var priceRangeSelectedTxt = document.getElementById("myPriceRangeMenu").options[priceRangeSelected].text;
			var myPriceRangeMenu = new YAHOO.widget.Menu("myPriceRangeMenu", { scrollincrement: 2 } );
			var priceRange = new YAHOO.widget.Button( "pricerange", { type: "menu", menu: myPriceRangeMenu } );
			myPriceRangeMenu.render(document.body);
			myPriceRangeMenu.subscribe("click", genericItemClick, priceRange);
			if (priceRangeSelectedTxt) {			
					priceRange.set("label", priceRangeSelectedTxt);
					myPriceRangeMenu.getItem(priceRangeSelected).cfg.setProperty("selected", true);
			}
		});

		YAHOO.util.Event.onContentReady("mileagelabel", function() {
			var mileageSelected = document.getElementById("myMileageMenu").selectedIndex;
			if (!(mileageSelected >= 0)) {
				mileageSelected = 0;
			}
			var mileageSelectedTxt = document.getElementById("myMileageMenu").options[mileageSelected].text;
			var myMileageMenu = new YAHOO.widget.Menu("myMileageMenu", { scrollincrement: 2 } );
			var mileage = new YAHOO.widget.Button( "mileage", { label: "Any", type: "menu", menu: myMileageMenu } );
			myMileageMenu.setInitialSelection();
			myMileageMenu.render(document.body);
			myMileageMenu.subscribe("click", genericItemClick, mileage);
			if (mileageSelectedTxt) {			
					mileage.set("label", mileageSelectedTxt);
					myMileageMenu.getItem(mileageSelected).cfg.setProperty("selected", true);
			}
		});

		YAHOO.util.Event.onContentReady("adslabel", function() {
			var adswithpictures = new YAHOO.widget.Button( "adswithpictures", { type: "checkbox", label: "<em>Show only ads with pictures</em>" } );
		});

		YAHOO.util.Event.onContentReady("sortbylabel", function() {
			var orderSelected = document.getElementById("myOrderByMenu").selectedIndex;
			if (!(orderSelected >= 0)) {
				orderSelected = 0;
			}
			var orderSelectedTxt = document.getElementById("myOrderByMenu").options[orderSelected].text;

			var myOrderByMenu = new YAHOO.widget.Menu("myOrderByMenu", { scrollincrement: 2 } );
			var sortby = new YAHOO.widget.Button( "sortby", { type: "menu", menu: myOrderByMenu } );
			myOrderByMenu.setInitialSelection();
			myOrderByMenu.render(document.body);
			myOrderByMenu.subscribe("click", genericItemClick, sortby);
			if (orderSelectedTxt) {			
					sortby.set("label", orderSelectedTxt);
					myOrderByMenu.getItem(orderSelected).cfg.setProperty("selected", true);
			}
		});

		YAHOO.util.Event.onContentReady("displaylabel", function() {
			var displaySelected = document.getElementById("myDisplayMenu").selectedIndex;
			if (!(displaySelected >= 0)) {
				displaySelected = 0;
			}
			var displaySelectedTxt = document.getElementById("myDisplayMenu").options[displaySelected].value;
			var myDisplayMenu = new YAHOO.widget.Menu("myDisplayMenu", { scrollincrement: 2 } );
			var display = new YAHOO.widget.Button( "display", { type: "menu", menu: myDisplayMenu } );
			myDisplayMenu.render(document.body);
			myDisplayMenu.subscribe("click", genericItemClick, display);
			if (displaySelectedTxt) {			
					display.set("label", displaySelectedTxt);
					myDisplayMenu.getItem(displaySelected).cfg.setProperty("selected", true);
			}
		});

		YAHOO.util.Event.onContentReady("ziplabel", function() {
			var zipDistanceSelected = document.getElementById("myDistanceMenu").selectedIndex;
			if (!(zipDistanceSelected >= 0)) {
				zipDistanceSelected = 0;
			}
			var zipDistanceSelectedTxt = document.getElementById("myDistanceMenu").options[zipDistanceSelected].value;
			myDistanceMenu = new YAHOO.widget.Menu("myDistanceMenu", { scrollincrement: 2 } );
			var zip = new YAHOO.widget.Button( "distance", { type: "menu", menu: myDistanceMenu } );
			myDistanceMenu.render(document.body);
			myDistanceMenu.subscribe("click", genericItemClick, zip);

			if (zipDistanceSelectedTxt) {			
					zip.set("label", zipDistanceSelectedTxt);
					myDistanceMenu.getItem(zipDistanceSelected).cfg.setProperty("selected", true);
			}

		});

		YAHOO.util.Event.onContentReady("bodystylecontainer", function() {
			anyButton = new YAHOO.widget.Button({ name: "anybutton", type: "radio", label: "Any", checked: true, onclick: { fn: onAnyBodyStyleClick }, value: "any" } );
			selectButton = new YAHOO.widget.Button({ name: "selectbutton", type: "radio", label: "Select", onclick: { fn: onSelectBodyStyleClick }, value: "select" } );
			var bodyChoiceButtons = new YAHOO.widget.ButtonGroup ({ name: "bodychoicebuttons", container: "bodychoice" });
 			bodyChoiceButtons.addButton(anyButton);
 			bodyChoiceButtons.addButton(selectButton);
		});

		function clearForm() {
			document.location = "/index.php?page=en_AdvSearch";
			return false;
		}

		YAHOO.util.Event.onContentReady("submitcontainer", function() {
			submitButton = new YAHOO.widget.Button("submitbutton", { type: "submit", label: "Search" } );
			clearButton = new YAHOO.widget.Button({ type: "reset", label: "Clear Form", onclick: { fn: clearForm }, container: "clearbutton" } );
		});

		function clearContent(obj) {
			obj.clearContent();
		}

		function setAnyMakeButtonMenu(json) {
			anyMakeMenu_one.addItems(eval(json));
			anyMakeMenu_two.addItems(eval(json));
			anyMakeMenu_three.addItems(eval(json));
			anyMakeMenu_one.render(document.body);
			anyMakeMenu_two.render(document.body);
			anyMakeMenu_three.render(document.body);

			if (setAnyMakeOnLoadFlag) { // This can't run before the body styles are loaded
				setAnyMakeOnLoadFlag = 0;
				setAnyMakeOnLoad();
			}
		}

		function setMakeButtonMenu(json) {
			makeButton_one.set("label", "<em>Loading...</em>");  
			modelButton_one.set("label", "<em>Loading...</em>");
			makeButton_two.set("label", "<em>Loading...</em>");  
			modelButton_two.set("label", "<em>Loading...</em>");
			makeButton_three.set("label", "<em>Loading...</em>");  
			modelButton_three.set("label", "<em>Loading...</em>");

			clearContent(makeMenu_one);
			clearContent(makeMenu_two);
			clearContent(makeMenu_three);

			makeMenu_one.addItems(eval(json));
			makeMenu_two.addItems(eval(json));
			makeMenu_three.addItems(eval(json));

			makeButton_one.set("label", "<em>Select make</em>");  
			modelButton_one.set("label", "<em>Select model</em>");
			makeButton_two.set("label", "<em>Select make</em>");  
			modelButton_two.set("label", "<em>Select model</em>");
			makeButton_three.set("label", "<em>Select make</em>");  
			modelButton_three.set("label", "<em>Select model</em>");

			clearContent(modelMenu_one);
			clearContent(modelMenu_two);
			clearContent(modelMenu_three);

			modelMenu_one.addItems(["Select a make first"]);
			modelMenu_two.addItems(["Select a make first"]);
			modelMenu_three.addItems(["Select a make first"]);
			makeMenu_one.render(document.body);
			modelMenu_one.render(document.body);
			makeMenu_two.render(document.body);
			modelMenu_two.render(document.body);
			makeMenu_three.render(document.body);
			modelMenu_three.render(document.body);

			if (setMakeOnLoadFlag) { // This can't run before the body styles are loaded
				setMakeOnLoadFlag = 0;
				setMakeOnLoad();
			}

		}

		function setModelButtonMenu(json) {
			if (json == "") {
				// Nothing to do, something went wrong
				// This happens when you click Select, then choose a style, then click Any, then choose a make
				return;
			} else {
				var data = eval( "(" + json + ")" ); /* Thanks to http://willcode4beer.com/tips.jsp?set=jsonInvalidLabel */
				//alert(data.id);
				//alert(data.buttondef);
				// Need to wipe out the model menu first
	
				if (data.id == "mymakebutton_one" || data.id == "myanymakebutton_one" || data.id == "mymakebutton_one_INITIAL" || data.id == "myanymakebutton_one_INITIAL") {
					clearContent(modelMenu_one);
					modelMenu_one.addItems(data.buttondef); // was eval(json)
					modelMenu_one.render(document.body);
					modelButton_one.set("label", "<em>Select model</em>");  

					if (data.id == "mymakebutton_one_INITIAL" || data.id == "myanymakebutton_one_INITIAL") { // Initial page load with passed-in value for the model
						setModelOnLoad(data.id);
					}
   
				} else if (data.id == "mymakebutton_two" || data.id == "myanymakebutton_two" || data.id == "mymakebutton_two_INITIAL" || data.id == "myanymakebutton_two_INITIAL") {
					clearContent(modelMenu_two);
					modelMenu_two.addItems(data.buttondef); // was eval(json)
					modelMenu_two.render(document.body);
					modelButton_two.set("label", "<em>Select model</em>");

					if (data.id == "mymakebutton_two_INITIAL" || data.id == "myanymakebutton_two_INITIAL") { // Initial page load with passed-in value for the model
						setModelOnLoad(data.id);
					}

				} else if (data.id == "mymakebutton_three" || data.id == "myanymakebutton_three" || data.id == "mymakebutton_three_INITIAL" || data.id == "myanymakebutton_three_INITIAL") {
					clearContent(modelMenu_three);
					modelMenu_three.addItems(data.buttondef); // was eval(json)
					modelMenu_three.render(document.body);
					modelButton_three.set("label", "<em>Select model</em>");

					if (data.id == "mymakebutton_three_INITIAL" || data.id == "myanymakebutton_three_INITIAL") { // Initial page load with passed-in value for the model
						setModelOnLoad(data.id);
					}
				}
			}
		}

		// #################################################################################
		// #							ONCLICK FUNCTIONS                                  #
		// #################################################################################


		function privateSellerClick(p_sType, p_aArgs, p_oVal) {
				// So disable Search for - all, new, certified
				mycriteria_all.set("disabled", true);
				mycriteria_new.set("disabled", true);
				mycriteria_certified.set("disabled", true);
				mycriteria_used.set("checked", true);
		}
		function allOrDealerClick(p_sType, p_aArgs, p_oVal) {
				// Enable Search for - all, new, certified
				mycriteria_all.set("disabled", false);
				mycriteria_new.set("disabled", false);
				mycriteria_certified.set("disabled", false);
		}


        function onMakeItemClick(p_sType, p_aArgs, p_oVal) {
			// p_oVal contains the value of the menu option
			// this.cfg.getProperty("text") gets the label of the menu option
			var btn = this.parent.id; // the button is the parent of the menu, so that's how 
									  // we can tell which button corresponds to the menu item that was clicked
			if (btn == "mymakebutton_one") {
            	makeButton_one.set("label", "<em>"+this.cfg.getProperty("text")+"</em>");
				makeButton_one.set("value", this.cfg.getProperty("text"));
				modelButton_one.set("label", "<em>Loading...</em>"); 
				clearContent(modelMenu_one);
			} else if (btn == "mymakebutton_two") {
				makeButton_two.set("label", "<em>"+this.cfg.getProperty("text")+"</em>");
				makeButton_two.set("value", this.cfg.getProperty("text"));
				modelButton_two.set("label", "<em>Loading...</em>"); 
				clearContent(modelMenu_two);
			} else if (btn == "mymakebutton_three") {
				makeButton_three.set("label", "<em>"+this.cfg.getProperty("text")+"</em>");
				makeButton_three.set("value", this.cfg.getProperty("text"));
				modelButton_three.set("label", "<em>Loading...</em>"); 
				clearContent(modelMenu_three);
			} else if (btn == "myanymakebutton_one") {
            	anyMakeButton_one.set("label", "<em>"+this.cfg.getProperty("text")+"</em>");
				modelButton_one.set("label", "<em>Loading...</em>"); 
				clearContent(modelMenu_one);		
			} else if (btn == "myanymakebutton_two") {
            	anyMakeButton_two.set("label", "<em>"+this.cfg.getProperty("text")+"</em>");
				modelButton_two.set("label", "<em>Loading...</em>"); 
				clearContent(modelMenu_two);
			} else if (btn == "myanymakebutton_three") {
            	anyMakeButton_three.set("label", "<em>"+this.cfg.getProperty("text")+"</em>");
				modelButton_three.set("label", "<em>Loading...</em>"); 
				clearContent(modelMenu_three);
			}

			// Pass the make (the value of the menu option) to getModels.php
			// 7/30/8 - Need a way to have the setModelButton function receive the name of the button/menu
			//			Perhaps it could send the name back in the JSON data, then the modelcallback function could
			//			parse it out and act accordingly.  I don't know how to do that, though.

			// This is not the right way to distinguish whether to get all models or just ones for certain body styles
			if (chosenBodyStyles.length) {
				YUC.asyncRequest('POST', '/ADMIN/makemodel/getModelsForBodyStyles.php', modelcallback, 'btn=' + btn + '&make=' + p_oVal + '&bodystyles=' + chosenBodyStyles.toString());
			} else {
				YUC.asyncRequest('POST', '/ADMIN/makemodel/getModels.php', modelcallback, 'btn=' + btn + '&make=' + p_oVal);
			}
        }

        function onModelItemClick(p_sType, p_aArgs, p_oVal) {
			var btn = this.parent.id;
			if (btn == "mymodelbutton_one") {
    	            modelButton_one.set("label", "<em>"+this.cfg.getProperty("text")+"</em>");
			} else if (btn == "mymodelbutton_two") {
    	            modelButton_two.set("label", "<em>"+this.cfg.getProperty("text")+"</em>");
			} else if (btn == "mymodelbutton_three") {
    	            modelButton_three.set("label", "<em>"+this.cfg.getProperty("text")+"</em>");
			}
        }

		function onAnyBodyStyleClick(p_sType, p_aArgs, p_oVal) {
			if (this._configs.checked.value) {
				// We just checked the button, so load up all makes and disable/uncheck the other buttons
				for (i in bodyStyles) {
					bodyStyles[i].set("checked", false);
					bodyStyles[i].set("disabled", true);
				}

				// Empty out chosenBodyStyles
				chosenBodyStyles = Array();

				// No body styles chosen, so we show all makes
				// Andy Bedinger - 8/8/8
				// We have already loaded all makes into separate make buttons/make menus
				// So just hide the partial ones (the ones we update based on the body type selection)
				// and show the full ones
				// We do this because running clearContent() or destroy() on a menu with 250+ items takes
				// several seconds and the delay is unacceptable
			

				anyMakeButton_one.set("label", "<em>Select make</em>");
				anyMakeButton_two.set("label", "<em>Select make</em>");
				anyMakeButton_three.set("label", "<em>Select make</em>");

				//makeButton_one.setStyle("display", "none");
				//makeButton_two.setStyle("display", "none");
				//makeButton_three.setStyle("display", "none");

				//anyMakeButton_one.setStyle("display", "block");
				//anyMakeButton_two.setStyle("display", "block");
				//anyMakeButton_three.setStyle("display", "block");

				anyMakeButton_one.setStyle("position", "relative");
				anyMakeButton_one.setStyle("left", "0");
				anyMakeButton_two.setStyle("position", "relative");
				anyMakeButton_two.setStyle("left", "0");
				anyMakeButton_three.setStyle("position", "relative");
				anyMakeButton_three.setStyle("left", "0");

				makeButton_one.setStyle("position", "absolute");
				makeButton_one.setStyle("left", "-1000px");
				makeButton_two.setStyle("position", "absolute");
				makeButton_two.setStyle("left", "-1000px");
				makeButton_three.setStyle("position", "absolute");
				makeButton_three.setStyle("left", "-1000px");

				// Wipe out the model menus
				modelButton_one.set("label", "<em>Select model</em>");
				modelButton_two.set("label", "<em>Select model</em>");
				modelButton_three.set("label", "<em>Select model</em>");

				clearContent(modelMenu_one);
				clearContent(modelMenu_two);
				clearContent(modelMenu_three);

				modelMenu_one.addItem("Select make first");
				modelMenu_two.addItem("Select make first");
				modelMenu_three.addItem("Select make first");

				modelMenu_one.render(document.body);
				modelMenu_two.render(document.body);
				modelMenu_three.render(document.body);

			}
		}

		function onSelectBodyStyleClick(p_sType, p_aArgs, p_oVal) {
			if (this._configs.checked.value) {
				// We just checked the button, enable and uncheck the other buttons
				for (i in bodyStyles) {
					bodyStyles[i].set("checked", false);
					bodyStyles[i].set("disabled", false);
				}
				// The any button is not checked, so set the make/model buttons to say "Pick a body style"
				// Because we know none of the other buttons should be checked right now
				for (i in bodyStyles) {
					bodyStyles[i].set("disabled", false);
				}

				// Hide the full make buttons, show the partial ones
				//makeButton_one.setStyle("display", "block");

				makeButton_one.setStyle("position", "relative");
				makeButton_one.setStyle("left", "0");
				makeButton_two.setStyle("position", "relative");
				makeButton_two.setStyle("left", "0");
				makeButton_three.setStyle("position", "relative");
				makeButton_three.setStyle("left", "0");

				anyMakeButton_one.setStyle("position", "absolute");
				anyMakeButton_one.setStyle("left", "-1000px");
				anyMakeButton_two.setStyle("position", "absolute");
				anyMakeButton_two.setStyle("left", "-1000px");
				anyMakeButton_three.setStyle("position", "absolute");
				anyMakeButton_three.setStyle("left", "-1000px");

				//anyMakeButton_one.setStyle("display", "none");
				//anyMakeButton_two.setStyle("display", "none");
				//anyMakeButton_three.setStyle("display", "none");

				// We can afford to run this clearContent() call because
				// the menus are not very big (not many items)
				clearContent(makeMenu_one);
				clearContent(makeMenu_two);
				clearContent(makeMenu_three);

				makeMenu_one.addItems(["Select a body style first"]);
				makeMenu_two.addItems(["Select a body style first"]);
				makeMenu_three.addItems(["Select a body style first"]);

				makeMenu_one.render(document.body);
				makeMenu_two.render(document.body);
				makeMenu_three.render(document.body);

				makeButton_one.set("label", "<em>Select make</em>"); 
				makeButton_two.set("label", "<em>Select make</em>"); 
				makeButton_three.set("label", "<em>Select make</em>"); 

				clearContent(modelMenu_one);
				modelMenu_one.addItems(["Select a make first"]);
				modelButton_one.set("label", "<em>Select model</em>"); 

				clearContent(modelMenu_two);
				modelMenu_two.addItems(["Select a make first"]);
				modelButton_two.set("label", "<em>Select model</em>");

				clearContent(modelMenu_three);
				modelMenu_three.addItems(["Select a make first"]);
				modelButton_three.set("label", "<em>Select model</em>");

				modelMenu_one.render(document.body);
				modelMenu_two.render(document.body);
				modelMenu_three.render(document.body);

				// Since we don't run clearContent on anyMakeMenu_one, _two, and _three
				// the values of their selected items still get passed, even when
				// the regular make menus have other selections
				// removeSelections doesn't seem to help - perhaps it doesn't matter
				//removeSelections(anyMakeMenu_one);
				//removeSelections(anyMakeMenu_two);
				//removeSelections(anyMakeMenu_three);
			}
		}

		function removeSelections(obj) {
					var tmp = obj.getItems();
					for (i in tmp) {
						var item = tmp[i];
						if (item.cfg.getProperty("selected") == true) {
							alert("setting it to false");
							item.cfg.setProperty("selected",false);
						}
					}
		}

		function onBodyStyleItemClick(p_sType, p_aArgs, p_oVal) {
			if (this._configs.checked.value) {
				// We just checked the button, so add the bodystyleid
				chosenBodyStyles.push(p_aArgs);
			} else {
				// We just unchecked, so we have to remove the bodystyleid
				// First, find it
				var i = 0;
				var l = chosenBodyStyles.length;
				while (i < l) {
					if (chosenBodyStyles[i] == p_aArgs) {
						// We found it, take it out
						chosenBodyStyles.splice(i,1);
						i = l+1; // Break the loop
					}
					i++;
				}
			}
			updateMakeModelForBodyStyle();
		}

		function updateMakeModelForBodyStyle() {
			// Update the makes dropdown, clear the models dropdown
			makeButton_one.set("label", "<em>Loading...</em>");  
			modelButton_one.set("label", "<em>Loading...</em>");
			clearContent(makeMenu_one);
			clearContent(modelMenu_one);

			makeButton_two.set("label", "<em>Loading...</em>");
			modelButton_two.set("label", "<em>Loading...</em>");
			clearContent(makeMenu_two);
			clearContent(modelMenu_two);

			makeButton_three.set("label", "<em>Loading...</em>");
			modelButton_three.set("label", "<em>Loading...</em>");
			clearContent(makeMenu_three);
			clearContent(modelMenu_three);

			if (chosenBodyStyles.length) {
				//alert("Some body styles are chosen");
				YUC.asyncRequest('POST', '/ADMIN/makemodel/getMakesForBodyStyles.php', makecallback, 'bodystyles=' + chosenBodyStyles.toString());
				//alert("Current body styles selected: " + chosenBodyStyles.toString());
			} else {
				// No body styles chosen, so tell the user to pick one
				makeMenu_one.addItems(["Select a body style first"]);
				modelMenu_one.addItems(["Select a body style first"]);
				makeButton_one.set("label", "<em>Select make</em>");  
				modelButton_one.set("label", "<em>Select model</em>");  
				makeMenu_one.render(document.body);
				modelMenu_one.render(document.body);

				makeMenu_two.addItems(["Select a body style first"]);
				modelMenu_two.addItems(["Select a body style first"]);
				makeButton_two.set("label", "<em>Select make</em>");
				modelButton_two.set("label", "<em>Select model</em>");
				makeMenu_two.render(document.body);
				modelMenu_two.render(document.body);

				makeMenu_three.addItems(["Select a body style first"]);
				modelMenu_three.addItems(["Select a body style first"]);
				makeButton_three.set("label", "<em>Select make</em>");
				modelButton_three.set("label", "<em>Select model</em>");
				makeMenu_three.render(document.body);
				modelMenu_three.render(document.body);

				//YUC.asyncRequest('GET', '/ADMIN/makemodel/getMakes.php', makecallback, null);
			}
		}

        function onSubmit(p_oEvent) {

            //var bSubmit = window.confirm("Are you sure you want to submit this form?");

			var formComplete = 1;
			var msg = "";

			zipcode = document.getElementById("zipval");

			// See if we have any required fields
			// The zip code is required if a mile distance is chosen

			if (myDistanceMenu.activeItem == null) {
				// No distance has been chosen, make sure no zip was entered
				if (zipcode.value != "") {
					msg = msg + "Search radius for zip code";
					formComplete = 0;
				}
			} else {
				// Some distance is or was chosen
				if (myDistanceMenu.activeItem.index) {
					// A distance is chosen right now
					// Make sure the zip code has a value
					if (zipcode.value == "") {
						msg = msg + "Zip code for search radius";
						formComplete = 0;
					}
				} else if (!myDistanceMenu.activeItem.index) {
					// No distance is selected at present
					if (zipcode.value != "") {
						msg = msg + "Search radius for zip code";
						formComplete = 0;
					}
				}
			}

            if(!formComplete) {
                YAHOO.util.Event.preventDefault(p_oEvent);
				msg = "Please enter a value for the following fields:\n\n" + msg;
            	alert(msg);
            }

			YAHOO.widget.Button.addHiddenFieldsToForm("advSearch");

        }

        YAHOO.util.Event.on("advSearch", "submit", onSubmit);

    //} ();

