var adv_search_args = new Array();
function adv_search_change(arg) {
	var is_in_array = 0;
	var temp = new Array();

	for (var i = 0; i < adv_search_args.length; i ++) {
		if (arg == adv_search_args[i]) {
			is_in_array ++;
		} else {
		    temp.push(adv_search_args[i]);
		}
	}

	adv_search_args = temp;

	if (!is_in_array) {
		adv_search_args.push(arg);
	}
    document.adv_search.ad_type.value = adv_search_args.join(',');
}

var adv_search_types    = new Array(
                            "new",
                            "used",
                            "certified"
                        );
function adv_search_all() {
    var is_all  = document.adv_search.inventory_type_all.checked;
    var saved_state = adv_search_args;
    for (var i = 0; i < adv_search_types.length; i ++) {
        var checkbox        = eval("document.adv_search.inventory_type_" + adv_search_types[i]);

        checkbox.checked    = (is_all) ? "checked"  : "";
        checkbox.disabled   = (is_all) ? "disabled" : "";
    }
//    if (!is_all) {
//        for (var i = 0; i < saved_state.length; i ++) {
//            var checkbox        = eval("document.adv_search.inventory_type_" + saved_state[i]);
//            checkbox.checked    = "checked";
//        }
//    }
//    document.adv_search.ad_type.value = (is_all) ? adv_search_types.join(',') : saved_state.join(',');
    document.adv_search.ad_type.value = "";
}


/* Magic */

function request() {
	var http_request = false;
	if (window.XMLHttpRequest) {
		try {
			http_request = new XMLHttpRequest();
		} catch (e) {
			 http_request = false;
		}
		if (http_request.overrideMimeType) {
			http_request.overrideMimeType('text/xml');
		}
	} else if (window.ActiveXObject) {
		// For Internet Explorer on Windows
		try {
			http_request = new ActiveXObject("Msxml2.XMLHTTP");
		} catch (e) {
			 try {
				http_request = new ActiveXObject("Microsoft.XMLHTTP");
			} catch (e) {
				http_request = false;
			}
		}
		if (http_request.overrideMimeType) {
			http_request.overrideMimeType('text/javascript');
		}
	}
	if (!http_request) {
		alert('Cannot create XMLHTTP instance');
		return false;
	} else {
		return http_request;
	}
}

var gmdt_model_all_bool = false;

function get_models(arg) {

    document.adv_search.csid.options.length = 0;
    document.adv_search.csid.options[0] = new Option("Retrieving Data...", "");
    document.adv_search.csid.options[0].disabled = "disabled";

	for (var i=0; i < selected_model_names.length; i++)
	{
		if (selected_model_names[i] == "- All Models -")
		{
			gmdt_model_all_bool = true;
		}
	}

	    var req         = request();
	// TESTING ...
	    var url         = "/forge/data_entry?category=code%20snippets&tp=mdTransit%20v2.1.2%20core&temp_type=include&tl=3&make=";
	//    var url         = "/test.php?make=";
	        url        += arg;

	    if (req) {
	        req.open('GET', url, false);
	        req.send(null);

			var model_list = new Array();

	        eval(req.responseText);

	        var things = new Array();
	        for (var thing in model_list) {
	            things.push(thing);
	        }
	        make_select_from_array(model_list);
	    }
}

function make_select_from_array(arr) {
    var i       = 1;
    var item    = document.adv_search.csid;

    item.options.length = 0;
    item.options[0] = new Option("Retrieving Data...", "");
    item.options[0].disabled = "disabled";

    var i = 2;
    item.options[0] = new Option("- No Teams Defined -", "");
    item.options.length = 0;
    if (arr.length) {
        item.options[0] = new Option("- Select a Model -", "");
        item.options[0].disabled = "disabled";
		// add -All Models- here
        item.options[1] = new Option("- All Models -", "0");
        item.options[1].disabled = 1;
		item.options[1].value = "";
        item.options[1].style.color="gray";

        for (var value in arr) {
            item.options[i] = new Option(arr[value], value);
            i ++;
        }

        // Now check for all models
		if (selected_model_names.length == 0 || gmdt_model_all_bool == true)
        {
	        item.options[1].disabled = 0;
            item.options[1].value = "0";
            item.options[1].style.color = "black";
            if (selected_model_names.length > 0)
            {
				// We already have all models selected so disable all others.
                i = 2;
                for (var value in arr) {
                    item.options[i].disabled = 1;
                    item.options[i].value = "";
		            item.options[i].style.color="gray";
                    i ++;
                }
            }
        }
    } else {
        item.options[0] = new Option("- No Models -", "");
        item.options[0].disabled = "disabled";
    }
}

var selected_makes          = new Array();
var selected_model_ids      = new Array();
var selected_model_names    = new Array();

function add_model_to_list() {
    if (document.adv_search.csid.value != "") {
        var arbitrary_limit = 10;
        var make            = document.adv_search.m_select.value;
        var model_id        = document.adv_search.csid.value;
        var model_name      = document.adv_search.csid.options[document.adv_search.csid.selectedIndex].text;
        var next_model      = selected_model_ids.length;

        if (next_model < arbitrary_limit) {
            selected_makes.push(make);
            selected_model_ids.push(model_id);
            selected_model_names.push(model_name);

            document.adv_search.make_model.options.length = 0;
            for (var i = 0; i < arbitrary_limit; i ++) {
                if (selected_model_ids[i]) {
                    document.adv_search.make_model.options[i] = new Option(selected_makes[i] + " " + selected_model_names[i], selected_model_ids[i]);
                } else {
                    document.adv_search.make_model.options[i] = null;
                }
            }
        } else {
            alert("You can only search for " + arbitrary_limit + " models at a time.\nPlease remove one from the list in order to add another.");
        }

        if (selected_makes.length >= 0)
        {
			enable_location();
        }
		document.adv_search.clear_button.disabled  = 0;
		document.adv_search.add_button.disabled  = 1;
    }
}

function delete_from_selected_models() {
    var model               = document.adv_search.make_model.selectedIndex;
    var temp_model_names    = new Array();
    var temp_model_ids      = new Array();
    var temp_makes          = new Array();

	if (  selected_model_names.length == 0)
	{
		return;
	}

    for (var i = 0; i < selected_model_names.length; i ++) {
        if (document.adv_search.make_model.options[model].text != selected_makes[i] + ' ' + selected_model_names[i]) {
            temp_model_names.push(selected_model_names[i]);
            temp_model_ids.push(selected_model_ids[i]);
            temp_makes.push(selected_makes[i]);
        }
    }

    selected_makes          = temp_makes
    selected_model_ids      = temp_model_ids
    selected_model_names    = temp_model_names

    document.adv_search.make_model.options[model] = null;

	if (document.adv_search.make_model.length == 0)
	{
		gmdt_model_all_bool = false;
		document.adv_search.clear_button.disabled  = 1;
		document.adv_search.delete_button.disabled  = 1;
		if (document.getElementById('feature_includes_body_style_id'))
		{
			body_style_change();
		}
		else
		{
			disable_location();
		}
	}
}

function enable_button(arg)
{
	arg.disabled = 0;
}

function disable_button(arg)
{
	arg.disabled = 1;
}

function clear_selected_models() {
    selected_makes          = new Array();
    selected_model_ids      = new Array();
    selected_model_names    = new Array();

	gmdt_model_all_bool = false;
    document.adv_search.make_model.options.length = 0;
	document.adv_search.delete_button.disabled = 1;
	document.adv_search.clear_button.disabled  = 1;
	if (document.getElementById('feature_includes_body_style_id'))
	{
		body_style_change();
	}
	else
	{
		disable_location();
	}
}


function select_make_model()
{
	var MakesModels = "";
	var Makes = "";
	for (var i = 0; i < document.adv_search.make_model.length; i ++)
	{
//	   document.adv_search.make_model[i].selected="1";
	   if (i > 0)
	   {
			MakesModels = MakesModels + "," + document.adv_search.make_model[i].value;
	   }
	   else
	   {
			MakesModels = document.adv_search.make_model[i].value;
	   }

	}
	for (var i = 0; i < selected_makes.length; i ++)
	{
	   if (i > 0)
	   {
			Makes = Makes + "," + selected_makes[i];
	   }
	   else
	   {
			Makes = selected_makes[i];
	   }

	}
	document.adv_search.mmcsid.value = MakesModels;
	document.adv_search.m.value = Makes;

}

function preselect_make(make) {
    var makes           = document.adv_search.m_select;
    var selectedIndex   = 0;

    for (var i = 0; i < makes.length; i ++) {
        if (makes[i].value.toLowerCase() == make.toLowerCase()) {
            selectedIndex = i;
        }
    }

    makes.selectedIndex = selectedIndex;

    get_models(make);
}

function enable_location() {
	if (document.getElementById('data_prop_id'))
	{
		document.adv_search.data_prop.disabled = "";
		if (document.adv_search.data_prop.value != 'choose')
		{
			document.adv_search.submit_button.disabled = "";
		}
		else
		{
			document.adv_search.submit_button.disabled = 1;
		}
	}
	else
	{
		document.adv_search.submit_button.disabled = "";
	}
	return
 }

function reset_form()
{
	document.adv_search.reset();
	document.adv_search.csid.value = '';
	document.adv_search.csid.options.length = 0;
	document.adv_search.m_select.value = '';
	document.adv_search.make_model.value='';
	clear_selected_models(); //this is necessary in Firefox
	document.adv_search.inventory_type_new.checked = 0;
	document.adv_search.inventory_type_used.checked = 0;
	document.adv_search.inventory_type_certified.checked = 0;
	document.adv_search.inventory_type_all.checked = 0;
	document.adv_search.delete_button.disabled = 1;
	document.adv_search.clear_button.disabled = 1;
	document.adv_search.feature_start_year.value='';
	document.adv_search.feature_end_year.value='';
	document.adv_search.max_price.value='';
	document.adv_search.feature_max_mileage.value='';
	document.adv_search.submit_button.disabled = 1;
	
	if (document.getElementById('data_prop_id'))
	{
		document.adv_search.data_prop.value='choose';
	}
	
	if (document.getElementById('body_style_id'))
	{
		document.adv_search.body_style.value='choose';
	}
	 
}

function disable_location() {
	if (document.getElementById('data_prop_id'))
	{
		document.adv_search.data_prop.disabled = 1;
	}
	document.adv_search.submit_button.disabled = 1;
	return
 }

function body_style_change()
{
	if (document.adv_search.body_style.value != 'choose')
	{
		enable_location();
	}
	else	
	{

		if (document.adv_search.make_model.options.length > 0)
		{
			enable_location();
		}
		else
		{
			disable_location();
		}
	}
}


