var makeNameOld = "";
var modelNameOld = "";

window.addEvent("domready", InitFilterAuto);

function InitFilterAuto()
{
	var makeControl = $("marque");
	var modelControl = $("modele");

	if (makeControl != null && makeControl.get("tag") == "select" && modelControl.get("modele") == "select")
	{
		if (makeControl.value == "" && modelControl.value != "")
		{
			modelControl.options.length = 1;
			modelControl.removeClass("selected");
		}
	}
}

/*******************************************************************************************************************************************************************************
 * 
 *******************************************************************************************************************************************************************************
 *
 *
 *******************************************************************************************************************************************************************************/
function DisplayAllMakes(aLink)
{
	var makeContainers = $$("ul[class^=mxdFilterMarque]");

	if (makeContainers.length == 2)
	{
		// les marques principales
		makeContainers[0].toggleClass("mxdHidden");

		// toutes les marques
		makeContainers[1].toggleClass("mxdHidden");

		// on adapte le libelle de "toggle"
		if (makeContainers[0].hasClass("mxdHidden"))
		{
			$(aLink).set("html", "Plus de marques &raquo;");
		}
		else
		{
			$(aLink).set("html", "&laquo; Les principales");
		}
	}
	else
	{
		var otherMakes = makeContainers[0].getElements("li[class^=more]");

		if (otherMakes.length > 0)
		{
			otherMakes.toggleClass("visible");

			// on adapte le libelle de "toggle"
			if (otherMakes[0].hasClass("visible"))
			{
				$(aLink).set("html", "&laquo; Les principales");
			}
			else
			{
				$(aLink).set("html", "Plus de marques &raquo;");
			}
		}
	}
}
/*******************************************************************************************************************************************************************************
 * 
 *******************************************************************************************************************************************************************************
 *
 *
 *******************************************************************************************************************************************************************************/
function RemoveOtherSearchFilter(aField)
{
	// si on supprime la marque le filtre sur le modele
	// n'a plus lieu d'etre
	if (aField == "marque")
	{
		cookieData.erase("modele");
	}
}
/*******************************************************************************************************************************************************************************
 * 
 *******************************************************************************************************************************************************************************
 *
 *
 *******************************************************************************************************************************************************************************/
function OnChangeLibelle_categorie()
{
	var catValue = catMapping[this.value];
	var makeControl = $("marque");
	var modelControl = $("modele");

	makeNameOld = "";
	if (makeControl.selectedIndex > 0)
	{
		makeNameOld = makeControl.value;
	}
	modelNameOld = "";
	if (modelControl.selectedIndex > 0)
	{
		modelNameOld = modelControl.value;
	}

	if (!$defined(catValue)) { catValue = 412; }

	AjaxRequest("GetCarMakeList", { "c" : catValue });
}
/*******************************************************************************************************************************************************************************
 * 
 *******************************************************************************************************************************************************************************
 *
 *
 *******************************************************************************************************************************************************************************/
function InitListMarque()
{
	if (filterList["num_usager"] == null && filterList["taille"] == null)
	{
		var makeControl = $("marque");

		// suppression des optiongroups existants
		if ($("makeOptionGroup0")) { $("makeOptionGroup0").destroy(); }
		if ($("makeOptionGroup1")) { $("makeOptionGroup1").destroy(); }

		// creation de nos 2 optiongroups
		new Element("optgroup", { "id" : "makeOptionGroup0", "label" : "Les plus courantes" }).inject(makeControl);
		new Element("optgroup", { "id" : "makeOptionGroup1", "label" : "Liste complète" }).inject(makeControl);
	}
}
/*******************************************************************************************************************************************************************************
 * 
 *******************************************************************************************************************************************************************************
 *
 *
 *******************************************************************************************************************************************************************************/
function NewItemMarque(value, text, parentClass)
{
	var makeControl = $("marque");
	
	var code = value.charCodeAt(0);
	var lastCode = 0;
	if (makeControl.length > 3)
	{
		lastCode = makeControl.options[makeControl.length-1].value.charCodeAt(0);
	}
	
	if (filterList["num_usager"] == null && filterList["taille"] == null)
	{
		var currentGroup = $("makeOptionGroup0");
		if (!USE_SPHINX && (code < lastCode || $("makeOptionGroup1").getChildren().length > 0))
		{
			currentGroup = $("makeOptionGroup1");
		}

		if (USE_SPHINX && parentClass.indexOf("more") != -1)
		{
			currentGroup = $("makeOptionGroup1");
		}

		value = value.replace(/\+/g, " ");
		new Element("option", { "value": value }).set("html", text).inject(currentGroup);
	}
	else
	{
		new Element("option", { "value": value }).set("html", text).inject(makeControl);
	}
}
/*******************************************************************************************************************************************************************************
 * 
 *******************************************************************************************************************************************************************************
 *
 *
 *******************************************************************************************************************************************************************************/
function GetCarMakeListCallBack(data)
{
	var makeControl = $("marque");
	var modelControl = $("modele");
	var makeList = JSON.decode(data);

	InitListMarque();

	// on vide la liste des marques des elements existants
	makeControl.length = 1;
	// on vide la liste des modeles des elements existants
	modelControl.length = 1;

	var alreadySelected = false;
	for (var i = 0; i < makeList.length; i++)
	{
		var makeName = makeList[i].name;
		var makeGroupId = makeList[i].groupId;
		var currentGroup = $("makeOptionGroup" + makeGroupId);

		var makeItem = new Element("option", { "value" : makeName }).set("html", makeName).inject(currentGroup);

		// si la marque precedemment selectionnee existe dans notre nouvelle liste
		// => on sauvegarde l'item de la liste afin de declencher la recuperation de
		//    la liste des modeles en fin de traitement
		if (!alreadySelected && makeNameOld != "" && makeName.toLowerCase() == makeNameOld.toLowerCase())
		{
			alreadySelected = true;

			makeItem.selected = true;
			OnChangeMarque(makeNameOld);
		}
	}	
}
/*******************************************************************************************************************************************************************************
 * 
 *******************************************************************************************************************************************************************************
 *
 *
 *******************************************************************************************************************************************************************************/
function OnChangeMarque(aMake)
{
	var categoryControl = $("libelle_categorie");
	var value = (typeof(aMake) != "object") ? aMake : this.value;

	if (value != "")
	{
		value = value.replace(/\+/g, " ");
		var catValue = 412;
		
		if (categoryControl != null)
		{
			if (categoryControl.value != "")
			{
				catValue = catMapping[categoryControl.value];
			}
		}

		AjaxRequest("GetCarModelList", { "c" : catValue, "m" :  value });
	}
	else
	{
		var modelControl = document.getElement("select[name=modele]");
		modelControl.length = 1;
		modelControl.removeClass("selected");
	}
}
/*******************************************************************************************************************************************************************************
 * 
 *******************************************************************************************************************************************************************************
 *
 *
 *******************************************************************************************************************************************************************************/
function GetCarModelListCallBack(data)
{
	var modelControl = document.getElement("select[name=modele]");
	// on vide la liste de modeles existante
	modelControl.length = 1;
	modelControl.removeClass("selected");

	// on remplit la liste avec les donnees reçues
	var makeName = $("marque").value.toLowerCase();
	var serieName = "";
	var serieNameOld = "";
	var serieValue = "";
	var modelList = JSON.decode(data);
	for (var i = 0; i < modelList.length; i++)
	{
		var modelName = modelList[i].value;

		// cas specifique de gestion des series pour bmw
		if (makeName == "bmw" && modelName.length == 3)
		{
			if (modelName.isNumeric())
			{
				var serieId = modelName.substring(0, 1);
				serieName = "Série " + serieId;
				serieValue = "serie " + serieId;
			}
			if (serieName != serieNameOld)
			{
				serieNameOld = serieName;

				new Element("option", { "value" : serieValue }).set("html", serieName).inject(modelControl);
			}
		}

		var modelItem = new Element("option", { "value" : modelList[i].value }).set("html", modelName).inject(modelControl);

		if (modelNameOld != "" && modelName == modelNameOld)
		{
			modelItem.selected = true;
			modelControl.addClass("selected");
		}
	}
}
/*******************************************************************************************************************************************************************************
 * 
 *******************************************************************************************************************************************************************************
 *
 *
 *******************************************************************************************************************************************************************************/
function OnChangeRegion()
{
	var regionName = this.value;

	AjaxRequest("GetDepartmentList", { "n" : regionName });
}
/*******************************************************************************************************************************************************************************
 * 
 *******************************************************************************************************************************************************************************
 *
 *
 *******************************************************************************************************************************************************************************/
function GetDepartmentListCallBack(data)
{
	var deptControl = document.getElement("select[name=departement]");
	// on vide la liste de modeles existante
	deptControl.length = 1;
	deptControl.removeClass("selected");

	var deptList = JSON.decode(data);
	for (var i = 0; i < deptList.length; i++)
	{
		var deptName = deptList[i].name;
		var deptValue = deptList[i].value;

		new Element("option", { "value" : deptValue }).set("html", deptName).inject(deptControl);
	}
}
