// JavaScript Document

var stock_number = "";
var new_used = "";
var type = "";
var make = "";
var model = "";
var year_from = 0;
var year_to = 0;
var price_from = 0;
var price_to = 0;

var field_stock_number = "CAT_Custom_207440";
var field_new_used = "CAT_Custom_207441";
var field_type = "";
var field_make = "CAT_Custom_208809";
var field_model = "CAT_Custom_208810";
var field_year_from = "CAT_Custom_209901_Min";
var field_year_to = "CAT_Custom_209901_Max";
var field_price_range = "CAT_Custom_209902";

function numbersonly(myfield, e, dec)
{
    var key;
    var keychar;
    
    if (window.event)
    {
        e = window.event;
        key = window.event.keyCode;
    }
    else if (e)
        key = e.which;
    else
        return true;
    
    keychar = String.fromCharCode(key);
    // control keys
    if ((key==null) || (key==0) || (key==8) || (key==9) || (key==13) || (key==27) )
    {
         if(window.event)
         {
            e.returnValue = true;
         }
         else
         {
            return true;
         }
    }
    // numbers
    else if ((("0123456789").indexOf(keychar) > -1))
    {
         if(window.event)
         {
            e.returnValue = true;
         }
         else
         {
            return true;
         }
        
        return true;
    }
    // decimal point jump
    else if (dec && (keychar == "."))
     {
         myfield.form.elements[dec].focus();
         if(window.event)
         {
            e.returnValue = false;
         }
         else
         {
            return false;
         }
         
     }
    else
    {
     if(window.event)
     {
        e.returnValue = false;
     }
     else
     {
        return false;
     }
    }
}

function sort_and_unique( my_array ) {
    my_array.sort();
    for ( var i = 1; i < my_array.length; i++ ) {
        if ( my_array[i] === my_array[ i - 1 ] ) {
                    my_array.splice( i--, 1 );
        }
    }
    return my_array;
}

function getSelector()
{
	var selector = ".VehicleSearch";

	if (jQuery.trim(stock_number) != "")
	{
		selector += ".Stock-" + stock_number;
	}
	else 
	{
		if (jQuery.trim(new_used) != "")
			selector += "." + new_used;
			
		if (jQuery.trim(type) != "")
			selector += "." + type;
			
		if (jQuery.trim(make) != "")
			selector += "." + make;
			
		if (jQuery.trim(model) != "")
			selector += "." + model;
		
		if (jQuery.trim(year_to) > 0)
			selector += "." + year_to;

	}
	
	return selector;
}

function resetMenu(field_id)
{
	$("#" + field_id).children('option:gt(0)').remove();
}

function setMenu(field_id)
{
	var selector = getSelector();
	var vehicles = $(selector);
	var select_menu = $("#" + field_id);
	var options_array = new Array();
	var option_html = null;
	
	resetMenu(field_id);
	
	select_menu.val("");

	// Find parameters
	vehicles.each( function(index) {
		//var child = $(this).children().filter("." + field_id);
		//var option_html = $("<option value=\"" + child.html() + "\">" + child.html() + "</option>");
		//alert($(this).children().filter("div.header").children().length);
		var child = $(this).children().filter("div.header").children().filter("." + field_id);
		
		if (child.length == 0)
		{
			child = $(this).children().filter("div.details").children().filter("." + field_id);		
		}
		
		options_array.push(child.html());
		
	});
	
	// Sort and find unique parameters
	options_array = sort_and_unique(options_array);
	
	// Add options to menu
	if (options_array.length > 0)
	{
		for (i = 0; i < options_array.length; i++)
		{
			if (options_array[i])
			{
				option_html = $("<option value=\"" + options_array[i] + "\">" + options_array[i] + "</option>");
				//option_html = $("<option value=\"" + options_array[i].replace(/(&amp;)/g, '-').replace(/\W/g, '-') + "\">" + options_array[i] + "</option>");
				option_html.appendTo(select_menu);
			}
		}
		
		select_menu.removeAttr("disabled");
	}
}

function setMenuYearTo()
{	
	var yearFromMenu = $("#" + field_year_from);
	var yearToMenu = $("#" + field_year_to);
	var yearFromSelectedIndex = yearFromMenu.children(":selected").index();
	var numOfOptions = 0;
	
	yearToMenu.children('option:gt(0)').remove();
	
	if (yearFromSelectedIndex == 0)
	{
		//yearFromMenu.children('option:gt(0)').clone().appendTo(yearToMenu);
		yearToMenu.attr("disabled", "disabled");
	}
	else
	{	
		yearFromMenu.children('option:gt(' + (yearFromSelectedIndex-1) + ')').clone().appendTo(yearToMenu);
	}
	
	numOfOptions = yearToMenu.children().length;
	
	if (numOfOptions > 1)
	{
		if (numOfOptions == 2)
		{
			yearToMenu.children(":gt(0)").attr("selected", "selected");
		}
			
		yearToMenu.removeAttr("disabled");
	}
	
}

function initializeMenus()
{
	//setMenu(field_type);
	setMenu(field_make);
	setMenu(field_model);
	setMenu(field_year_from);
	setMenuYearTo();
	//setMenu(field_price_range);
}

$(document).ready( function() {

	if ($("#vehicle-search-form"))
	{		
		// Stock number
		$("#" + field_stock_number).change(function() {
			stock_number = $(this).val();
		});
	
		// New/used
		$("#" + field_new_used).change(function() {
			if (jQuery.trim($(this).val()) == "")
			{
				new_used = "";
			}
			else
			{
				new_used = $(this).val();
			}
		
			type = "";
			make = "";
			model = "";
			year_from = 0;
			year_to = 0;
			
			$("#loading-spinner").fadeIn();
			
			if ($(".VehicleSearch").length == 0)
			{				
				$.get("/vehicle-search-results", function(data) {					
					$("#vehicle-search-results").html(data);
					initializeMenus();
					$("#loading-spinner").fadeOut();
				});
			}
			else 
			{
				$("#loading-spinner").fadeOut();
				initializeMenus();				
			}
		});
	
		// Type
		$("#" + field_type).change(function() {
			if (jQuery.trim($(this).val()) == "")
			{
				type = "";
			}
			else
			{
				type = $(this).val();
			}
			
			make = "";
			model = "";
			year_from = 0;
			year_to = 0;
			
			setMenu(field_make);
			setMenu(field_model);
			setMenu(field_year_from);
			setMenuYearTo();
		});
		
		// Make
		$("#" + field_make).change(function() {
			if (jQuery.trim($(this).val()) == "")
			{
				make = "";
			}
			else
			{
				make = $(this).val();
			}
			
			model = "";
			year_from = 0;
			year_to = 0;
			
			setMenu(field_model);
			setMenu(field_year_from);
			setMenuYearTo();
		});
	
		// Model
		$("#" + field_model).change(function() {
			if (jQuery.trim($(this).val()) == "")
			{
				model = "";
			}
			else
			{
				model = $(this).val();
			}
			
			year_from = 0;
			year_to = 0;			
			
			setMenu(field_year_from);
			setMenuYearTo();
		});
		
		// Year From
		$("#" + field_year_from).change(function() {
			if (jQuery.trim($(this).val()) != "")
				year_from = parseInt($(this).val());
			else
				year_from = 0;
				
			setMenuYearTo();
		});
		
		// Year To
		$("#" + field_year_to).change(function() {
			if (jQuery.trim($(this).val()) != "")
				year_to = parseInt($(this).val());
			else
				year_to = 0;
		});
		
		// Price Range
		$("#" + field_price_range).change(function() {
			if (jQuery.trim($(this).val()) != "")
			{
				var priceArray = $(this).val().split(',');
				price_from = parseInt(priceArray[0]);
				price_to = parseInt(priceArray[1]);
				
				$("#" + field_price_range + "_Min").val(price_from);
				$("#" + field_price_range + "_Max").val(price_to);
			}
			else
			{
				price_from = 0;
				price_to = 0;
				
				$("#" + field_price_range + "_Min").val("");
				$("#" + field_price_range + "_Max").val("");
			}
		});
		
		// Set menus
		if (new_used != "")
		{
			$("#" + field_new_used).change();	
		}
		else
		{
			initializeMenus();
		}
	}
});

