// Loop through all vehicles and enable/disable them depending on the filters current value
function setBodyVisibility(iscorp)
{
	// Hide all rollover layers
	toggleVisibility('qmsinfobox','hidden','hidden','hidden');

	// Set the visibility of the thumbnails based on the filters
	for (var x = 0; x < bodyArrayQms.length; x++)
	{
		if (checkIfVisible(bodyArrayQms[x]))
		{
			if (bodyArrayQms[x][2] == 'false')
			{
				enableBodyShape(bodyArrayQms[x][0], bodyArrayQms[x][1],iscorp);
				bodyArrayQms[x][2] = 'true';
			}
		}
		else
		{
			if (bodyArrayQms[x][2] == 'true')
			{
				disableBodyShape(bodyArrayQms[x][0], bodyArrayQms[x][1],iscorp);
				bodyArrayQms[x][2] = 'false';
			}
		}
	}
}

// Check if the given vehicle can be enabled
function checkIfVisible(bodyDetails)
{
	return (checkIfPriceOK(bodyDetails) && checkIfBodyOK(bodyDetails) &&
				checkIfCo2OK(bodyDetails) && checkIfFuelOK(bodyDetails) && checkIfMaxCo2OK(bodyDetails));
}

// Check if the given vehicle meet the price filter
function checkIfPriceOK(bodyDetails)
{
	var ret = false;
	var minPrice = bodyDetails[3] == '' ? '0' : bodyDetails[3];
	var maxPrice = bodyDetails[4] == '' ? '0' : bodyDetails[4];

	var myForm = document.filters;
	var elemArray = myForm.elements['price_filter'];
	var elem;
	var priceArray;
	var numMinPrice;
	var numMaxPrice;

	for (var x = 0; x < elemArray.length; x++)
	{
		elem = elemArray[x];
		if (elem.checked)
		{
			if (elem.value == '')
			{
				ret = true;
				break;
			}

			priceArray = elem.value.split('-');
			numMinPrice = Number(minPrice.replace(',', ''));
			numMaxPrice = Number(maxPrice.replace(',', ''));
			if (((numMinPrice >= Number(priceArray[0])) && (numMinPrice <= Number(priceArray[1]))) ||
						((numMaxPrice >= Number(priceArray[0])) && (numMaxPrice <= Number(priceArray[1]))) ||
						((numMinPrice <= Number(priceArray[0])) && (numMaxPrice >= Number(priceArray[1]))))
			{
				ret = true;
				break;
			}
		}
	}
	return ret;
}

// Check if the given vehicle meet the body filter
function checkIfBodyOK(bodyDetails)
{
	var ret = false;
	var seriesID = bodyDetails[0];
	var bodyID = bodyDetails[1];

	var myForm = document.filters;
	var elemArray = myForm.elements['body_filter'];
	var elem;
	var bodyArray;
	var idArray;

	for (var x = 0; x < elemArray.length; x++)
	{
		elem = elemArray[x];
		if (elem.checked)
		{
			if (elem.value == '')
			{
				ret = true;
				break;
			}

			bodyArray = elem.value.split('-');
			for (var i = 0; i < bodyArray.length; i++)
			{
				idArray = bodyArray[i].split(':');
				if ((seriesID == idArray[0]) && (bodyID == idArray[1]))
				{
					ret = true;
					break;
				}
			}
			if (ret)
			{
				break;
			}
		}
	}
	return ret;
}

// Check if the given vehicle meet the CO2 filter
function checkIfCo2OK(bodyDetails)
{
	var ret = false;
	var minCo2 = bodyDetails[5] == '' ? '0' : bodyDetails[5];
	var maxCo2 = bodyDetails[6] == '' ? '0' : bodyDetails[6];

	var myForm = document.filters;
	var elemArray = myForm.elements['co2_filter'];
	var elem;
	var co2Array;

	for (var x = 0; x < elemArray.length; x++)
	{
		elem = elemArray[x];
		if (elem.checked)
		{
			if (elem.value == '')
			{
				ret = true;
				break;
			}

			co2Array = elem.value.split('-');
			if (((Number(minCo2) >= Number(co2Array[0])) && (Number(minCo2) <= Number(co2Array[1]))) ||
							((Number(maxCo2) >= Number(co2Array[0])) && (Number(maxCo2) <= Number(co2Array[1]))) ||
							((Number(minCo2) <= Number(co2Array[0])) && (Number(maxCo2) >= Number(co2Array[1]))))
			{
				ret = true;
				break;
			}
		}
	}
	return ret;
}

// Check if the given vehicle meet the CO2 filter
function checkIfMaxCo2OK(bodyDetails)
{
	var ret = false;
	var minCo2 = bodyDetails[15] == '' ? '0' : bodyDetails[15];
	var maxCo2 = bodyDetails[16] == '' ? '0' : bodyDetails[16];

	var myForm = document.filters;
	var elemArray = myForm.elements['max_co2_filter'];
	var elem;
	var co2Array;

	for (var x = 0; x < elemArray.length; x++)
	{
		elem = elemArray[x];
		if (elem.checked)
		{
			if (elem.value == '')
			{
				ret = true;
				break;
			}

			co2Array = elem.value.split('-');
			if (((Number(minCo2) >= Number(co2Array[0])) && (Number(minCo2) <= Number(co2Array[1]))) ||
							((Number(maxCo2) >= Number(co2Array[0])) && (Number(maxCo2) <= Number(co2Array[1]))) ||
							((Number(minCo2) <= Number(co2Array[0])) && (Number(maxCo2) >= Number(co2Array[1]))))
			{
				ret = true;
				break;
			}
		}
	}
	return ret;
}



// Check if the given vehicle meet the fuel filter
function checkIfFuelOK(bodyDetails)
{
	var ret = false;
	var isPetrol = bodyDetails[7] == '1' ? true : false;
	var isDiesel = bodyDetails[8] == '1' ? true : false;

	var myForm = document.filters;
	var elemArray = myForm.elements['fuel_filter'];
	var elem;

	for (var x = 0; x < elemArray.length; x++)
	{
		elem = elemArray[x];
		if (elem.checked)
		{
			if ((elem.value == '') || ((elem.value == 'P') && isPetrol) || ((elem.value == 'D') && isDiesel))
			{
				ret = true;
				break;
			}
		}
	}
	return ret;
}

// Enable the body shape (restore the image and make it available for selection)
function enableBodyShape(series, body, iscorp)
{
	if(!iscorp){
		
	var imgFolder = '/images/bmwuk/modelselector/choose/';
	}else{
		
		var imgFolder = '/apm/new_bmw/images/choose/';
	}
    var imgObject = document.getElementById("_img_" + series + "_" + body)
	imgObject.src = imgFolder + series + "_" + body + "_car.jpg";
}

// Disable the body shape (fade the image and unable to select it)
function disableBodyShape(series, body,iscorp)
{
	if(!iscorp){
		
		var imgFolder = '/images/bmwuk/modelselector/choose/';
		}else{
		
			var imgFolder = '/apm/new_bmw/images/choose/';
		}
	
    var imgObject = document.getElementById("_img_" + series + "_" + body)
	imgObject.src = imgFolder + series + "_" + body + "_car_dis.jpg";

	//eval("document.all('_img_" + series + "_" + body + "').src = '" + imgFolder + series + "_" + body + "_car_dis.jpg'");
}

// Check if the given body shape is visible, and show/hide the details layer if is
function showHideBodyLayers(bodyCount, id, NNtype, IEtype, WC3type)
{
	if ((bodyArrayQms[bodyCount] != null) && (bodyArrayQms[bodyCount][2] == 'true'))
	{
		toggleVisibility(id, NNtype, IEtype, WC3type);
	}
}
