var bespokeEcoCarOptions = {}

function getBespokeEcoCarOptions() {
	var carBasePriceElements = document.getElementsByName('car-base-price');
	
	if (carBasePriceElements.length === 0) {
		return bespokeEcoCarOptions;
	}
	
	var basePriceOption = '';
	var pack360ReviewOptions = [];
	var quadrigaOptions = [];
	var otherOptions    = [];
	
	// get base price option
	var basePriceElements = document.getElementsByName('car-base-price');
	var basePriceTextElements = document.getElementsByName('car-base-price-text');
	for (var i = 0; i < basePriceElements.length; i++) {
		if (basePriceElements[i].checked) {
			basePriceOption = basePriceTextElements[i].value;
			break;
		}
	}
	
	// get 360 pack options
	var pack360ReviewElements = document.getElementsByName('pack-360-choice-review');
	
	for(var i = 0; i < pack360ReviewElements.length; i++) {
		pack360ReviewOptions[pack360ReviewOptions.length] = pack360ReviewElements[i].checked;
	}
	
	// get quadriga pack options
	var quadrigaOptionsElements = getElementsByClass('input', 'quadriga-option-choice');
	
	for(var i = 0; i < quadrigaOptionsElements.length; i++) {
		quadrigaOptions[quadrigaOptions.length] = quadrigaOptionsElements[i].checked;
	}
	
	// get other options
	var otherOptionsElements = getElementsByClass('input', 'other-option-choice');
	
	for(var i = 0; i < otherOptionsElements.length; i++) {
		otherOptions[otherOptions.length] = otherOptionsElements[i].checked;
	}
	
	bespokeEcoCarOptions = {
		'basePriceOption': basePriceOption,
		'pack360ReviewOptions': pack360ReviewOptions,
		'quadrigaOptions': quadrigaOptions,
		'otherOptions': otherOptions
	};
	
	return bespokeEcoCarOptions;
}

function saveBespokeEcoCarOptions() {
	// test: showed configurator with options
	var carBasePriceElements = document.getElementsByName('car-base-price');
	
	if (carBasePriceElements.length === 0) {
		return;
	}
	
	var pack360Options        = [];
	var pack360ReviewOptions  = [];
	var quadrigaOptions       = [];
	var otherOptions          = [];
	
	// save 360 pack options
	var pack360Elements = document.getElementsByName('pack-360-choice');
	
	for(var i = 0; i < pack360Elements.length; i++) {
		pack360Options[pack360Options.length] = pack360Elements[i].checked;
	}
	
	var pack360ReviewElements = document.getElementsByName('pack-360-choice-review');
	
	for(var i = 0; i < pack360ReviewElements.length; i++) {
		pack360ReviewOptions[pack360ReviewOptions.length] = pack360ReviewElements[i].checked;
	}
	
	// save quadriga pack options
	var quadrigaOptionsElements = getElementsByClass('input', 'quadriga-option-choice');
	
	for(var i = 0; i < quadrigaOptionsElements.length; i++) {
		quadrigaOptions[quadrigaOptions.length] = quadrigaOptionsElements[i].checked;
	}
	
	var quadrigaOptionsPack = document.getElementById('quadriga-options-pack-choice').checked;
	
	// save other options
	var otherOptionsElements = getElementsByClass('input', 'other-option-choice');
	
	for(var i = 0; i < otherOptionsElements.length; i++) {
		otherOptions[otherOptions.length] = otherOptionsElements[i].checked;
	}
	
	// restore base option, when it not set
	if (QuadrigaCars.bespokeEcoCarConfigurator.baseOptionId === 0) {
		QuadrigaCars.bespokeEcoCarConfigurator.baseOptionId = parseInt($('#base-option-id')[0].innerHTML);
	}
	
	// saving
	var id = 'id' + QuadrigaCars.bespokeEcoCarConfigurator.articleId;
	         //QuadrigaCars.bespokeEcoCarConfigurator.term + '-' +
	         //QuadrigaCars.bespokeEcoCarConfigurator.baseOptionId;
	
	QuadrigaCars.bespokeEcoCarConfigurator.saveOptions[id] = {
		'pack360Options':  pack360Options,
		'pack360ReviewOptions':  pack360ReviewOptions,
		'quadrigaOptionsPack': quadrigaOptionsPack,
		'quadrigaOptions': quadrigaOptions,
		'otherOptions':    otherOptions 
	};
}

function restoreBespokeEcoCarOptions() {
	var id = 'id' + QuadrigaCars.bespokeEcoCarConfigurator.articleId;
	         //QuadrigaCars.bespokeEcoCarConfigurator.term + '-' +
	         //QuadrigaCars.bespokeEcoCarConfigurator.baseOptionId;
	
	if (QuadrigaCars.bespokeEcoCarConfigurator.saveOptions[id]) {
		// restore 360 pack options
		var pack360Elements = document.getElementsByName('pack-360-choice');
		
		for(var i = 0; i < pack360Elements.length; i++) {
			 pack360Elements[i].checked = QuadrigaCars.bespokeEcoCarConfigurator.saveOptions[id].pack360Options[i];
		}
		
		ToggleCarManagement(QuadrigaCars.bespokeEcoCarConfigurator.saveOptions[id].pack360Options[0]);
		
		var pack360ReviewElements = document.getElementsByName('pack-360-choice-review');
		
		for(var i = 0; i < pack360ReviewElements.length; i++) {
			 pack360ReviewElements[i].checked = QuadrigaCars.bespokeEcoCarConfigurator.saveOptions[id].pack360ReviewOptions[i];
		}
		
		// restore quadriga options
		
		ToggleQuadrigaOptions(QuadrigaCars.bespokeEcoCarConfigurator.saveOptions[id].quadrigaOptionsPack);
		
		var quadrigaOptionsElements = getElementsByClass('input', 'quadriga-option-choice');
		
		for(var i = 0; i < quadrigaOptionsElements.length; i++) {
			quadrigaOptionsElements[i].checked = QuadrigaCars.bespokeEcoCarConfigurator.saveOptions[id].quadrigaOptions[i];
		}
		
		// restore other options
		var otherOptionsElements = getElementsByClass('input', 'other-option-choice');
		
		for(var i = 0; i < otherOptionsElements.length; i++) {
			otherOptionsElements[i].checked = QuadrigaCars.bespokeEcoCarConfigurator.saveOptions[id].otherOptions[i];
		}
	}
}

function RecalcMonthlyTotalInStock() {
	// Base Price calculating Price
	var basePrice = 0;
	var carBasePriceElements = document.getElementsByName('car-base-price');
	
	for(var i = 0; i < carBasePriceElements.length; i++) {
		if (carBasePriceElements[i].checked) {
			basePrice += parseInt(carBasePriceElements[i].value);
		}
	}
	
	//document.getElementById("ecocarprice").innerHTML = "&pound;" + basePrice;
	document.getElementById("eco-cars-total-price").innerHTML = "&pound;" + basePrice + ' p.m.';
	
	QuadrigaCars.bespokeEcoCarConfigurator.priceTotal = basePrice;
	QuadrigaCars.bespokeEcoCarConfigurator.basePrice  = basePrice;
}

function RecalcMonthlyTotal() {
	// test: showed configurator with options
	var carBasePriceElements = document.getElementsByName('car-base-price');
	
	if (carBasePriceElements.length === 0) {
		return;
	}
	
	var priceTotal = 0;
	
	// Base Price calculating Price
	var basePrice = 0;
	var carBasePriceElements = document.getElementsByName('car-base-price');
	
	for(var i = 0; i < carBasePriceElements.length; i++) {
		if (carBasePriceElements[i].checked) {
			basePrice += parseInt(carBasePriceElements[i].value);
		}
	}
	
	// 360 Pack calculating Price
	var pack360Price = 0;
	var pack360Elements = document.getElementsByName('pack-360-choice');
	
	for(var i = 0; i < pack360Elements.length; i++) {
		if (pack360Elements[i].checked) {
			pack360Price += parseInt(pack360Elements[i].value);
		}
	}
	
	// Options calculating Price
	
	var optionsPrice = 0;
	
	//  - Quadriga Options
	
	var quadrigaOptionsPrice = 0;
	var quadrigaOptionsElements = getElementsByClass('input', 'quadriga-option-choice');
	
	var price = 0;
	
	for(var i = 0; i < quadrigaOptionsElements.length; i++) {
		if (quadrigaOptionsElements[i].checked) {
			price = quadrigaOptionsElements[i].value;
			price = price.substr(price.indexOf("=") + 1);
			quadrigaOptionsPrice += parseInt(price);
		}
	}
	
	// check and uncheck "quadriga options pack" checkbox
	if (quadrigaOptionsPrice > 0) {
		document.getElementById('quadriga-options-pack-choice').checked = true;
	} else {
		document.getElementById('quadriga-options-pack-choice').checked = false;
	}
	
	//  - Other Options
	var otherOptionsPrice = 0;
	var otherOptionsElements = getElementsByClass('input', 'other-option-choice');
	
	var price = 0;
	for(var i = 0; i < otherOptionsElements.length; i++) {
		if (otherOptionsElements[i].checked) {
			price = otherOptionsElements[i].value;
			price = price.substr(price.indexOf("=") + 1);
			otherOptionsPrice += parseInt(price);
		}
	}
	
	// check and uncheck "other options pack" checkbox
	if (otherOptionsPrice > 0) {
		document.getElementById('other-options-pack-choice').checked = true;
	} else {
		document.getElementById('other-options-pack-choice').checked = false;
	}
	
	// Options
	
	optionsPrice = quadrigaOptionsPrice + otherOptionsPrice;
	
	// Price Total:
	
	priceTotal = basePrice + pack360Price + optionsPrice;
	
	document.getElementById('base-price-selected').innerHTML = '&pound;' + basePrice;
	//document.getElementById("ManagementTotal").innerHTML = "&pound;" + pack360Price; // Always show &pound;50 on Car Management!
	document.getElementById("OptionsTotal").innerHTML = "&pound;" + optionsPrice;	
	document.getElementById("QuadrigaOptionsTotal").innerHTML = "&pound;" + quadrigaOptionsPrice;	
	document.getElementById("OtherOptionsTotal").innerHTML = "&pound;" + otherOptionsPrice;	
	//document.getElementById("ecocarprice").innerHTML = "&pound;" + priceTotal;	
	document.getElementById("eco-cars-total-price").innerHTML = "&pound;" + priceTotal + ' p.m.';
	
	QuadrigaCars.bespokeEcoCarConfigurator.priceTotal           = priceTotal;
	QuadrigaCars.bespokeEcoCarConfigurator.basePrice            = basePrice;
	QuadrigaCars.bespokeEcoCarConfigurator.pack360Price         = pack360Price;
	QuadrigaCars.bespokeEcoCarConfigurator.optionsPrice         = optionsPrice;
	QuadrigaCars.bespokeEcoCarConfigurator.quadrigaOptionsPrice = quadrigaOptionsPrice;
	QuadrigaCars.bespokeEcoCarConfigurator.otherOptionsPrice    = otherOptionsPrice;
	
	//UpdateTotalPrice();
}

function getOptionRadioNumber(optionEl) {
	var result = 0;
	var pos = optionEl.className.indexOf(' r');
	
	if (pos > 0) {
		return optionEl.className.substring(pos + 2);
	}
	
	return result;
}

function ToggleIntegralRadioGroupOptions(setting) {
	var radioGroupNumber = 1;
	var radioGroupElements = $('input.options.r' + radioGroupNumber);
	while (radioGroupElements.length > 0) {
		integralItems = $('input.quadriga-option-choice.integral.r' + radioGroupNumber);
		if (integralItems.length > 0) {
			radioGroupElements.each(function (index, element) {
				if (!setting) {
					element.disabled = true;
				} else {
					if (element.className.indexOf('integral') === -1) {
						element.disabled = false;
					}
				}
			})
		}

		
		radioGroupNumber++;
		radioGroupElements = $('input.options.r' + radioGroupNumber);
	}
	
	RecalcMonthlyTotal();
}

function ToggleFirstRadioOptions(setting) {
	var integralItems;
	$('input.options.first-group').each(function (index, element) {
		integralItems = $('input.quadriga-option-choice.integral.r' + getOptionRadioNumber(element));
		
		if (!setting) {
			if (integralItems.length > 0 && integralItems[0].checked) {
				element.checked = setting;
			}
		} else {
			element.checked = setting;
		}
	})
	
	RecalcMonthlyTotal();
}

function ToggleQuadrigaOptions(setting) {
	var quadrigaOptionsElements;
	quadrigaOptionsElements = $('input.quadriga-option-choice');
	
	for(var i = 0; i < quadrigaOptionsElements.length; i++) {
		quadrigaOptionsElements[i].checked = setting;
	}
	
	// Return checked first options for all radio groups 
	if (!setting) {
		ToggleFirstRadioOptions(true);
		ToggleIntegralRadioGroupOptions(true);
	} else {
		ToggleFirstRadioOptions(false);
		ToggleIntegralRadioGroupOptions(false);
	}
	
	RecalcMonthlyTotal();
}

function ToggleOtherOptions(setting) {
	var otherOptionsElements = getElementsByClass('input', 'other-option-choice');
	
	for(var i = 0; i < otherOptionsElements.length; i++) {
		otherOptionsElements[i].checked = setting;
	}
	
	RecalcMonthlyTotal();
}

function ToggleCarManagement(setting) {
	var pack360ChoiceReview = document.getElementsByName('pack-360-choice-review');
	
	for (var i = 0; i < pack360ChoiceReview.length; i++) {
		pack360ChoiceReview[i].disabled = !setting;
	}
	
	RecalcMonthlyTotal();
}

function SaveBespokeEcoCar() {
	QuadrigaCars.selectedEcoCarName = QuadrigaCars.selectedEcoCarTitle;
	
	QuadrigaCars.selectedEcoCarType = 'bespoke';
	
	if (QuadrigaCars.bespokeEcoCarConfigurator.inStock) {
		RecalcMonthlyTotalInStock();
	} else {
		RecalcMonthlyTotal();
	}
	
	document.getElementById("rightpanel").innerHTML = '';
	
	showContactForm();
	
	if (!QuadrigaCars.bespokeEcoCarConfigurator.inStock) {
		saveBespokeEcoCarOptions();
	}
	
	/*if (QuadrigaCars.userConfigMode) {
		isUpdate = true;
		
		saveQuadrigaOptionsForm(isUpdate);
	}*/
}