$(document).ready(function() {
    load_ymm_dropdown();
});

// $.get("/partfinder/year/0", function(data_year) {
    // load_ymm_dropdown(data_year);
// });


function disableElement(element, options) {

	element.disabled = true;
	if (options) {
		element.options.length = 1;
	}

}


function load_ymm_dropdown() {
// function load_ymm_dropdown(data_year) {

	var el_ymm	 				= document.getElementById("ymm");
	var el_ymm_year 			= document.getElementById("ymm_year");
	var el_ymm_make 			= document.getElementById("ymm_make");
	var el_ymm_model 			= document.getElementById("ymm_model");
	var el_ymm_submodel 		= document.getElementById("ymm_submodel");
	var el_ymm_engine 			= document.getElementById("ymm_engine");
	var el_ymm_submit 		    = document.getElementById("ymm_submit");

	// $('#year').addClass('selected');


	if (el_ymm != null) {
		$(el_ymm_year).change( function() {
			yearChange(this.value);
			// $("#submodel-filter").hide();
			// $("#engine-filter").hide();
			make_selected = '';
			model_selected = '';
			submodel_selected = '';
			engine_selected = '';
			disableElement(el_ymm_make, true);
			disableElement(el_ymm_model, true);
			disableElement(el_ymm_submodel, true);
			disableElement(el_ymm_engine, true);
		});

		$(el_ymm_make).change( function() {
			makeChange(el_ymm_year.value, this.value);
			// $("#submodel-filter").hide();
			// $("#engine-filter").hide();
			model_selected = '';
			submodel_selected = '';
			engine_selected = '';
			disableElement(el_ymm_model, true);
			disableElement(el_ymm_submodel, true);
			disableElement(el_ymm_engine, true);
		});

		$(el_ymm_model).change( function() {
			modelChange(el_ymm_year.value, el_ymm_make.value, this.value);
			// $("#submodel-filter").hide();
			// $("#engine-filter").hide();
			submodel_selected = '';
			engine_selected = '';
			disableElement(el_ymm_submodel, true);
			disableElement(el_ymm_engine, true);
		});

		$(el_ymm_submodel).change( function() {
			submodelChange(el_ymm_year.value, el_ymm_make.value, el_ymm_model.value, this.value);
			engine_selected = '';
			disableElement(el_ymm_engine, true);
		});

		$(el_ymm_engine).change( function() {
			engineChange(el_ymm_year.value, el_ymm_make.value, el_ymm_model.value, el_ymm_submodel.value, this.value);
		});


		if (!el_ymm_make.disabled) {
			disableElement(el_ymm_make);
		}

		if (!el_ymm_model.disabled) {
			disableElement(el_ymm_model);
		}


		// if (!el_ymm_submodel.disabled) {
			// disableElement(el_ymm_submodel);
		// }

		// if (!el_ymm_engine.disabled) {
			// disableElement(el_ymm_engine);
		// }

		el_ymm_year.options.length=1;


        $.get("/partfinder/year/0", function(data_year){
    		data_year = $.trim(data_year);
    		data_year = data_year.split("|");
    		for (i=0; i<data_year.length; i++) {
                years = data_year[i].split("*");
    			el_ymm_year.options[i+1] = new Option(years[0], years[1]);
                el_ymm_year.options[i+1].selected = false;
    		}
        });

        // if (data_year != null) {
            // data_year = $.trim(data_year);
            // data_year = data_year.split("|");
            // for (i=0; i<data_year.length; i++) {
                // years = data_year[i].split("*");
                // el_ymm_year.options[i+1] = new Option(years[0], years[1]);
                // el_ymm_year.options[i+1].selected = false;
            // }
        // }
        
		$(el_ymm).submit( function() {
			return ymm_submit();
		});
        

		el_ymm_year.disabled = false;
		el_ymm_submit.disabled = false;
		// $(el_ymm).attr("action", "/store/parts.php");

	}

}


function yearChange(year) {

	var el_ymm_year 			= document.getElementById("ymm_year");
	var el_ymm_make 			= document.getElementById("ymm_make");
	var el_ymm_model 			= document.getElementById("ymm_model");
	var el_ymm_submodel 		= document.getElementById("ymm_submodel");
	var el_ymm_engine			= document.getElementById("ymm_engine");

	if (!el_ymm_make.disabled) {
		disableElement(el_ymm_make, true);
	}
	if (!el_ymm_model.disabled) {
		disableElement(el_ymm_model, true);
	}
	if (!el_ymm_submodel.disabled) {
		disableElement(el_ymm_submodel, true);
	}
	if (!el_ymm_engine.disabled) {
		disableElement(el_ymm_engine, true);
	}
	if (el_ymm_year.value != year) {
		el_ymm_year.value = year;
	}
	$("#make-filter").show();
	$("#model-filter").show();

	if (year!="") {

		getMakesByYear(year);

		if (!el_ymm_model.disabled) {
			el_ymm_model.disabled = true;
			el_ymm_model.options.length=1;
		}
		if (!el_ymm_submodel.disabled) {
			el_ymm_submodel.disabled = true;
			el_ymm_submodel.options.length=1;
		}
		if (!el_ymm_engine.disabled) {
			el_ymm_engine.disabled = true;
			el_ymm_engine.options.length=1;
		}

			$('#year').removeClass('selected');
			$('#make').addClass('selected');
			$('#model').removeClass('selected');
			$('#submodel').removeClass('selected');
			$('#engine').removeClass('selected');


	} else {

		disableElement(el_ymm_make, true);
		disableElement(el_ymm_model, true);
		disableElement(el_ymm_submodel, true);
		disableElement(el_ymm_engine, true);
		$('#year').addClass('selected');
		$('#make').removeClass('selected');
		$('#model').removeClass('selected');
		$('#submodel').removeClass('selected');
		$('#engine').removeClass('selected');


	}

}

function makeChange(year, make) {

	var el_ymm_year 			= document.getElementById("ymm_year");
	var el_ymm_make 			= document.getElementById("ymm_make");
	var el_ymm_model 			= document.getElementById("ymm_model");
	var el_ymm_submodel 		= document.getElementById("ymm_submodel");
	var el_ymm_engine			= document.getElementById("ymm_engine");


	if(el_ymm_make.value != make) {
		el_ymm_make.value = make;
	}
	if (!el_ymm_model.disabled) {
		disableElement(el_ymm_model, true);
	}
	if (!el_ymm_submodel.disabled) {
		disableElement(el_ymm_submodel, true);
	}
	if (!el_ymm_engine.disabled) {
		disableElement(el_ymm_engine, true);
	}

	$("#model-filter").show();

	if (make!="") {

		getModelsByMakeYear(year,make);

		if (!el_ymm_submodel.disabled) {
			el_ymm_submodel.disabled = true;
			el_ymm_submodel.options.length=1;
		}
		if (!el_ymm_engine.disabled) {
			el_ymm_engine.disabled = true;
			el_ymm_engine.options.length=1;
		}

		$('#make').removeClass('selected');
		$('#model').addClass('selected');
		$('#submodel').removeClass('selected');
		$('#engine').removeClass('selected');


	} else {

		disableElement(el_ymm_model, true);
		disableElement(el_ymm_submodel, true);
		disableElement(el_ymm_engine, true);
		$('#make').addClass('selected');
		$('#model').removeClass('selected');
		$('#submodel').removeClass('selected');
		$('#engine').removeClass('selected');


	}
}

function modelChange(year,make,model) {

	var el_ymm_year 			= document.getElementById("ymm_year");
	var el_ymm_make 			= document.getElementById("ymm_make");
	var el_ymm_model 			= document.getElementById("ymm_model");
	var el_ymm_submodel 		= document.getElementById("ymm_submodel");
	var el_ymm_engine			= document.getElementById("ymm_engine");

	if(el_ymm_model.value != model) {
		el_ymm_model.value = model;
	}

	if (!el_ymm_engine.disabled) {
		disableElement(el_ymm_engine, true);
	}

	if (!el_ymm_submodel.disabled) {
		disableElement(el_ymm_submodel, true);
	}

	if(model!="") {

		getSubModelsByYearMakeModel(year,make,model);

		if (!el_ymm_engine.disabled) {
			el_ymm_engine.disabled = true;
			el_ymm_engine.options.length=1;
		}

		$('#make').removeClass('selected');
		$('#model').removeClass('selected');
		$('#submodel').addClass('selected');
		$('#engine').removeClass('selected');

	} else {
		disableElement(el_ymm_submodel, true);
		disableElement(el_ymm_engine, true);
		$('#make').removeClass('selected');
		$('#model').addClass('selected');
		$('#submodel').removeClass('selected');
		$('#engine').removeClass('selected');
	}

}



function submodelChange(year,make,model,submodel) {

	var el_ymm_year 			= document.getElementById("ymm_year");
	var el_ymm_make 			= document.getElementById("ymm_make");
	var el_ymm_model 			= document.getElementById("ymm_model");
	var el_ymm_submodel 		= document.getElementById("ymm_submodel");
	var el_ymm_engine			= document.getElementById("ymm_engine");

	if(el_ymm_submodel.value != submodel) {
		el_ymm_submodel.value = submodel;
	}

	if (!el_ymm_engine.disabled) {
		el_ymm_engine.disabled = true;
		el_ymm_engine.options.length=1;
	}

	if(submodel!="") {

		getEngineByYearMakeModelSubModel(year,make,model,submodel);
		$('#make').removeClass('selected');
		$('#model').removeClass('selected');
		$('#submodel').removeClass('selected');
		$('#engine').addClass('selected');

	} else {
		disableElement(el_ymm_engine, true);
		$('#make').removeClass('selected');
		$('#model').removeClass('selected');
		$('#submodel').addClass('selected');
		$('#engine').removeClass('selected');
	}

}

function engineChange(year, make, model, submodel, engine) {

	var el_ymm					= document.getElementById("ymm");
	var el_ymm_year 			= document.getElementById("ymm_year");
	var el_ymm_make 			= document.getElementById("ymm_make");
	var el_ymm_model 			= document.getElementById("ymm_model");
	var el_ymm_submodel 		= document.getElementById("ymm_submodel");
	var el_ymm_engine			= document.getElementById("ymm_engine");

	if(el_ymm_engine.value != engine) {
		el_ymm_engine.value = engine;
	}

	$('#engine').removeClass('selected');
	if (engine != "") {
		$(el_ymm)[0].submit();
	}
}


/** ************************************************************************** **/


function getMakesByYear(year) {

	var el_ymm					= document.getElementById("ymm");
	var el_ymm_year 			= document.getElementById("ymm_year");
	var el_ymm_make 			= document.getElementById("ymm_make");
	var el_ymm_model 			= document.getElementById("ymm_model");
	var el_ymm_submodel 		= document.getElementById("ymm_submodel");
	var el_ymm_engine			= document.getElementById("ymm_engine");

	var select_make_text = "";
	select_make_text = el_ymm_make.options[0].text;
	el_ymm_make.options[0].text = "Loading Makes...";


    $.get("/partfinder/make/year/"+year, function(makes){

	  if(makes!=""){
	  	makes = $.trim(makes);
	  	makes = makes.split("|");

  		el_ymm_make.options.length=1;

			for (i=0; i<makes.length; i++) {
				makes[i] = makes[i].split("*");
				el_ymm_make.options[i+1] = new Option(makes[i][0], makes[i][1]);
					el_ymm_make.options[i+1].selected = false;
			}

			el_ymm_make.disabled = false;

		}else{
			$("#make-filter").hide();
			$("#model-filter").hide();
			$(el_ymm)[0].submit();
		}
		el_ymm_make.options[0].text = select_make_text;
		}
	);
}


function getModelsByMakeYear(year,make) {

	var el_ymm		 			= document.getElementById("ymm");
	var el_ymm_year 			= document.getElementById("ymm_year");
	var el_ymm_make 			= document.getElementById("ymm_make");
	var el_ymm_model 			= document.getElementById("ymm_model");
	var el_ymm_submodel 		= document.getElementById("ymm_submodel");
	var el_ymm_engine			= document.getElementById("ymm_engine");

	var select_model_text = "";
	select_model_text = el_ymm_model.options[0].text;
	el_ymm_model.options[0].text = "Loading Models...";

    $.get("/partfinder/model/year/"+year+"/make/"+make, function(models){

		if(models != ""){
	  		models = $.trim(models);
	  		models = models.split("|");

	  		el_ymm_model.options.length=1;

			for (i=0; i<models.length; i++) {
				models[i] = models[i].split("*");
				el_ymm_model.options[i+1] = new Option(models[i][0], models[i][1]);
					el_ymm_model.options[i+1].selected = false;
			}

			el_ymm_model.disabled = false;

		}else{
			$("#model-filter").hide();
			$(el_ymm)[0].submit();
		}
		el_ymm_model.options[0].text = select_model_text;

		}
	);

}



function getSubModelsByYearMakeModel(year,make,model) {

	var el_ymm		 			= document.getElementById("ymm");
	var el_ymm_year 			= document.getElementById("ymm_year");
	var el_ymm_make 			= document.getElementById("ymm_make");
	var el_ymm_model 			= document.getElementById("ymm_model");
	var el_ymm_submodel 		= document.getElementById("ymm_submodel");
	var el_ymm_engine			= document.getElementById("ymm_engine");

	var select_submodel_text = "";
	select_submodel_text = el_ymm_submodel.options[0].text;
	el_ymm_submodel.options[0].text = "Loading Submodels...";

    $.get("/partfinder/submodel/year/"+year+"/make/"+make+"/model/"+model, function(submodels){

	  	if(submodels != "") {
	  		$("#submodel-filter").show();
		  	submodels = $.trim(submodels);
		  	submodels = submodels.split("|");

	  		el_ymm_submodel.options.length=1;

			for (i=0; i< submodels.length; i++) {
				submodels[i] = submodels[i].split("*");
				el_ymm_submodel.options[i+1] = new Option(submodels[i][0], submodels[i][1]);
				if(submodels.length == 1){
					el_ymm_submodel.options[i+1].selected = true;
					$('#submodel').addClass('selected');
					submodelChange(el_ymm_year.value, el_ymm_make.value, el_ymm_model.value, el_ymm_submodel.value);
				}else{
					el_ymm_submodel.options[i+1].selected = false;
				}
			}

			el_ymm_submodel.disabled = false;
			$("#submodel-filter").show();

		} else {
				$(el_ymm)[0].submit();
		}
		el_ymm_submodel.options[0].text = select_submodel_text;
	  }
	);

}


function getEngineByYearMakeModelSubModel(year,make,model,submodel) {

	var el_ymm		 			= document.getElementById("ymm");
	var el_ymm_year 			= document.getElementById("ymm_year");
	var el_ymm_make 			= document.getElementById("ymm_make");
	var el_ymm_model 			= document.getElementById("ymm_model");
	var el_ymm_submodel 		= document.getElementById("ymm_submodel");
	var el_ymm_engine			= document.getElementById("ymm_engine");

	var select_engine_text = "";
	select_engine_text = el_ymm_engine.options[0].text;
	el_ymm_engine.options[0].text = "Loading Engines...";

    $.get("/partfinder/engine/year/"+year+"/make/"+make+"/model/"+model+"/submodel/"+submodel, function(engines){

	  	if(engines != "") {
		  	engines = $.trim(engines);
		  	engines = engines.split("|");

	  		el_ymm_engine.options.length=1;

			for (i=0; i<engines.length; i++) {
				engines[i] = engines[i].split("*");
				el_ymm_engine.options[i+1] = new Option(engines[i][0], engines[i][1]);

				if(engines.length == 1){
					el_ymm_engine.options[i+1].selected = true;
					el_ymm_engine.disabled = false;
					engineChange(el_ymm_year.value, el_ymm_make.value, el_ymm_model.value, el_ymm_submodel.value, el_ymm_engine.value);
				}else{
					el_ymm_engine.options[i+1].selected = false;
				}
			}

			el_ymm_engine.disabled = false;
			if(engines.length == 1){
				$("#engine-filter").hide();
			}else{
				$("#engine-filter").show();
			}

		} else {
			$(el_ymm)[0].submit();
		}
		el_ymm_engine.options[0].text = select_engine_text;
	  }
	);
}


function ymm_submit() {

	var el_ymm_year 			= document.getElementById("ymm_year");
	var el_ymm_make 			= document.getElementById("ymm_make");
	var el_ymm_model 			= document.getElementById("ymm_model");
	var el_ymm_submodel 		= document.getElementById("ymm_submodel");
	var el_ymm_engine 			= document.getElementById("ymm_engine");

	var year_select = true;
	var make_select = true;
	var model_select = true;


		if (el_ymm_year.value=="" || el_ymm_year.value=="Select...") {
			year_select = false;
		}

		if (el_ymm_make.value=="" || el_ymm_make.value=="Select...") {
			make_select = false;
		}

		if (el_ymm_model.value=="" || el_ymm_model.value=="Select...") {
			model_select = false;
		}

		
	       /*Check if Submodel and Engine has a value*/
		
		if (el_ymm_submodel.value=="Select...") {
			selectedItem1 = el_ymm_submodel[el_ymm_submodel.selectedIndex];
			selectedItem1.value="";
		}

		if (el_ymm_engine.value=="Select...") {
			selectedItem2 = el_ymm_engine[el_ymm_engine.selectedIndex];
			selectedItem2.value="";
		}
		
		/*END -- Check if Submodel and Engine has a value*/


	if (!year_select && !make_select && !model_select) {
		alert("You must select a Year, Make, and Model to continue!");
		return false;
	}

	if (year_select && !make_select && !model_select) {
		alert("You must select a Make and Model to continue!");
		return false;
	}

	if (year_select && make_select && !model_select) {
		alert("You must select a Model to continue!");
		return false;
	}

	return true;


}
