
	/* GLOBAL VARIABLES */
	var approvedCarURL = "";
	var currentMakeId = 0;
	var currentModelId = 0;
	var modelJSON = {};
	var makefields = "#quicksearchform select[name='makeid'],#standardSearchPanel select[name='makeid']";
	var	modelfields = "#quicksearchform select[name='modelid'],#standardSearchPanel select[name='modelid']";

	$(document).ready(function() {
		// Put anything that needs to wait until window is loaded in here
		imagePreview();
		$(".isTab").removeClass("isTab");
		initAddToShowroom("/approvedcars/?event=showroom.add.ajax");	
	});
	
	function changeClass(_cont,_class) {
		_cont.className = _class;
	}
	
	function loadOptions(jsondata,selectName,valueCol,titleCol,selectText,currentItem,callback) {
		var colMap = new Object();
		var options = '';
		var val = 0;
		var selStr;

		
	    for(var i = 0; i < jsondata.COLUMNS.length; i++) {
	    	colMap[jsondata.COLUMNS[i]] = i;      
	    }
		if (selectText) 
			options += '<option value="0">' + selectText + '</option>';
		for (var i = 0; i < jsondata.DATA.length; i++) {
			selStr = ((val = jsondata.DATA[i][colMap[valueCol]])==currentItem)?'selected="selected"':'';
			options += '<option value="' + val + '" '+selStr+'>' + jsondata.DATA[i][colMap[titleCol]] + '</option>';
		}
		
		$(selectName).html(options);
		if (typeof(callback) == "function") callback();
	}
	
	function clearSelect(fieldName,value) {
		typeof(value) != "undefined" ? $(fieldName).html('<option value="0">' + value + '</option>') : $(fieldName).html('');
	}
	
	this.imagePreview = function() {	
		var xOffset = 10;
		var yOffset = 30;
		var title = "";
		
		$(".car_image img.car").hover(function(e){
			
			title = this.title;
			
			this.t = "";
			this.title = "";
			
			var c = (this.t != "") ? "<br/>" + this.t : "";
			var src = this.src;
			var aThumbURL = src.split("/");
			var filename = aThumbURL.pop();
			var src = "";
			
			if (filename != "awaiting.jpg" && filename != "sold.jpg" && filename != "offerexpired.jpg" && filename != "discontinued.jpg") {
				
				src = (filename.substr(0,7) != "search_") ? "http://image.drivebenfield.com/approved/298x194/" + filename : aThumbURL.join("/") + "/hero_" + filename.substr(7,filename.length-7);
				
				$("body").append("<p id='carimagepreview'><img src='"+ src +"' alt='Image preview' />"+ c +"</p>");								 
				$("#carimagepreview")
					.css("top",(e.pageY - xOffset) + "px")
					.css("left",(e.pageX + yOffset) + "px")
					.fadeIn("fast");
								
			}			
	    },
		function(){
			this.title = title;
			$("#carimagepreview").remove();
	    });	
		$(".car_image img.car").mousemove(function(e){
			$("#carimagepreview")
				.css("top",(e.pageY - xOffset) + "px")
				.css("left",(e.pageX + yOffset) + "px");
		});			
	};
	
	initAddToShowroom = function(baseURL) {
		
		$(".car_buttons .add a").click(function() {
			var qs = this.search.split("&");
			var data = {};
			var button = $(this);
			qs.shift();
			$(qs).each(function() {
				var value = this.split("=");
				data[value[0]] = value[1];
			});
			button.parent().addClass("adding");
			$.getJSON(baseURL, data, function (json) {
				$("#myBenfieldPanel").load
				(
					"/?getmybenfieldpanel=1 #myBenfieldPanel",
					{},
					function() {
						button.parent().removeClass("adding");
					}
				);
			});
			return false;
		});
		
		
		$(".actions .addtoshowroom").click(function() {
			var qs = this.search.split("&");
			var data = {};
			var button = $(this);
			qs.shift();
			$(qs).each(function() {
				var value = this.split("=");
				data[value[0]] = value[1];
			});
			button.addClass("adding");
			$.getJSON(baseURL, data, function (json) {			
				$("#myBenfieldPanel").load
				(
					"/?getmybenfieldpanel=1 #myBenfieldPanel",
					{},
					function() {
						button.removeClass("adding");
					}
				);
			});
			return false;
		});
		
	};
	
	/* very simple function to close the "invalid login" popup */
	this.removeGrandParent = function(child) {
		var grandparent = child.parentNode.parentNode;
		grandparent.parentNode.removeChild(grandparent);
		return false;
	};
	
	/* if the form field has it's default value, it should be cleared when entered into */
	this.clearField = function(formField, defaultVal) {
		if (formField.value == defaultVal) formField.value = '';
	};
	
	/* TRIGGERS A MAKE UPDATED EVENT */
	this.triggerMakeChange = function(elem,modelid)
	{
		var makeid = 0;
		
		(typeof(elem) == "object") ? makeid = $(elem).val() : makeid = elem;
		
		currentMakeId = makeid;
		
		// Unbind change event so we can update all select boxes to current make
		$(makefields).unbind("change");
		
		// Update select boxes to current make
		$(makefields).find("option").each(
			function()
			{
				if ($(this).attr("value") == currentMakeId)
				{
					this.selected = true;
				}
				else
				{
					this.selected = false;
				}
			}
		);
		
		// Rebind change event for any future changes
		$(makefields).bind("change",function() {triggerMakeChange(this);});
		
		// Show in model field we are loading the data in...
		$(modelfields).html('<option value="0">Loading...</option>');
		
		// Get the JSON model data
		$.getJSON(
			approvedCarURL + "?event=modellist.ajax",
			{makeid: currentMakeId},
			function (json)
			{
				modelJSON = json;
				
				if (typeof(modelid) != "undefined")
				{
					$("select[name='modelid']").trigger("MAKEUPDATED", [makeid,modelid]);
				}
				else
				{
					$("select[name='modelid']").trigger("MAKEUPDATED", [makeid]);
				}
			}
		);
			
	};
	
	/* USED FOR ATTACHING A MAKE UPDATED LISTENER */
	this.listenMakeChange = function(elem, makeid, modelid)
	{
		if (currentMakeId > 0)
		{
			loadOptions(modelJSON,elem,'MODELID','MODELTITLELONG','Model',0,function() {updateModelDropdowns(modelid);});
		}
		else
		{
			clearSelect(elem,'Model');
		}
		
		/* if (modelid) updateModelDropdowns(modelid); */		
	};
	
	this.updateModelDropdowns = function(modelid) {
	
		currentModelId = modelid;
			
		// Unbind myself
		$(modelfields).unbind("change");
		
		// Update select boxes to current make
		$(modelfields).find("option").each(
			function()
			{
				if ($(this).attr("value") == currentModelId)
				{
					this.setAttribute('selected','selected');
				}
				else
				{
					this.removeAttribute('selected');
				}
			}
		);
		
		// Re-bind myself
		$(modelfields).change(
			function() {
				updateModelDropdowns($(this).val());
			}
		);
	
	};
	
	/* ATTACHES TRIGGERS & LISTENERS FOR CAR SEARCH */
	this.initSearch = function(baseURL,makeId,modelId)
	{
		approvedCarURL = baseURL;
		
		// Update everything (if need be)
		if (makeId && typeof(modelId) != "undefined")
		{
			triggerMakeChange(makeId,modelId);
		}
		else if (makeId)
		{
			triggerMakeChange(makeId);
		}
		
		// Attach listeners for any further changes
		$(makefields).change(function() {triggerMakeChange(this);});
		$(modelfields).bind("MAKEUPDATED", function(e, makeid, modelid) {listenMakeChange(this, makeid, modelid);});
		$(modelfields).change(function() {updateModelDropdowns($(this).val());});
		
	};
	
	document.write ("<style type=\"text/css\">.isTab {display: none;}</style>");