function hilight_row(el)
{
	if(el.getAttribute('highlighted')*1) return;
	el.setAttribute('highlighted','1');
	el.className += ' highlight';
}
function dehilight_row(el)
{
	if(!el.getAttribute('highlighted')*1) return;
	el.setAttribute('highlighted','0');
	el.className = el.className.replace(/(?: |^)highlight( |$)/g, '$1');
}

function closePageUri()
{
	togglePage(true);
	var d = document.getElementById('popupDiv');
	d.style.display = 'none';
}

function updatePageUri(newUri)
{
	togglePage(false, 'closePageUri');
	var d = document.getElementById('popupDiv');
	document.body.appendChild(d);
	var i = document.getElementById('pageuri');
	i.value = newUri;
	var wSize = windowSize();
	d.style.left = '-1000px';
	d.style.top = '-1000px';
	d.style.display = 'block';
	var s = getScrollXY();
	d.style.left = (Math.floor((wSize.width - d.offsetWidth)/2)+s[0])+'px';
	d.style.top = (Math.floor((wSize.height - d.offsetHeight - 100)/2)+s[1])+'px';
	i.focus();
	i.select();
}
function getPageUri()
{
	var el = document.getElementById('form_id');
	if(el) pageuri_array['id'] = el.value;
	pageuri_array['accessories'] = new Array();
	var f = document.getElementById('accessories_form');
	for(var i=0; i<f.elements.length; i++)
	{
		var el = f.elements[i];
		var type = el.name.replace(/.*\[([^\[]+)\]$/, '$1');
		var acc = all_accessories['key'+el.value];
		if(!acc) continue;
		if(el.checked)
		{
			if(type=='colour') pageuri_array['colour'] = acc['id'];
			else if(type=='trim') pageuri_array['trim'] = acc['id'];
			else pageuri_array['accessories'].push(acc['id']);
		}
	}
	rpc_async('updatePageUri', 'carpriceuri', pageuri_array);
}

function updatePriceCalculatorTotal(a)
{
	var re = /_text$/;
	for(var i in a)
	{
		if(i.match(re))
		{
			var el = document.getElementById(i.replace(re, ''));
			if(el) el.innerHTML = a[i];
		}
	}
}

function updatePriceCalculator()
{
	var f = document.getElementById('accessories_form');
	var tbody = document.getElementById('accessories_tbody');
	var el = document.getElementById('car_price');
	var total_accessories_price = 0;
	var total_accessories_price_notax = 0;
	for(var i=0; i<f.elements.length; i++)
	{
		var el = f.elements[i];
		var tr = el.parentNode;
		while(tr && tr.nodeName != 'TR') tr = tr.parentNode;
		var acc = all_accessories['key'+el.value];
		if(!acc) continue;
		if(el.checked)
		{
			if(acc['taxation']) total_accessories_price += acc['price_notax']*1;
			else total_accessories_price_notax += acc['price_notax']*1;
		}
		if(el.type=='radio')
		{
			if(el.checked)
			{
				var type = el.name.replace(/.*\[([^\[]+)\]$/, '$1');
				var e = document.getElementById(type+'_image');
				if(e)
				{
					if(acc['image']) e.src = acc['image'];
					else e.src = '/css/site/tmp/'+type+'_'+acc['code']+'.gif';
				}
				var e = document.getElementById(type+'_name');
				if(e) e.innerHTML = acc['name'];
				var e = document.getElementById(type+'_price');
				if(e) e.innerHTML = acc['price_text'];
				var e = document.getElementById(type+'_price_notax');
				if(e) e.innerHTML = acc['price_notax_text'];
			}
		}
		else
		{
			var row_id = 'accessory_key'+el.value;
			var atr = document.getElementById(row_id);
			if(atr)
			{
				if(!el.checked) atr.parentNode.deleteRow(atr.sectionRowIndex);
			}
			else if(el.checked)
			{
				atr = tbody.rows[0].cloneNode(true);
				atr.id = row_id;
				tbody.appendChild(atr);
				for(var j=0; j<atr.cells.length; j++)
				{
					var key = atr.cells[j].getAttribute('_valuekey');
					if(acc[key] != undefined) atr.cells[j].innerHTML = acc[key];
				}
				//atr.cells[0].innerHTML = acc['name'];
				//atr.cells[1].innerHTML = acc['price_text'];
				atr.style.display = '';
			}
		}
		if(el.type=='radio' || el.type=='checkbox')
		{
			var is_on = tr.className.match(/(?: |^)on(?: |$)/);
			if(tr && is_on && !el.checked) tr.className = tr.className.replace(/(?: |^)on( |$)/, '$1');
			else if(tr && !is_on && el.checked) tr.className += ' on';
		}
	}
	var tmp = new Array('co2_combined','technically_permissible_maximum_laden_mass','mass_of_the_vehicle_with_bodywork_in_running_order');
	for(var i=0; i<tmp.length; i++)
	{
		var el = document.getElementById(tmp[i]);
		if(el && el.value!='' && cartax_array[tmp[i]]!=undefined) cartax_array[tmp[i]] = el.value;
	}

	cartax_array['accessories_price'] = total_accessories_price;
	cartax_array['accessories_price_notax'] = total_accessories_price_notax;

	var el = document.getElementById('taxation_release');
	if(el) cartax_array['taxation_release'] = el.options[el.selectedIndex].value;
	rpc_async('updatePriceCalculatorTotal', 'carpricecalculator', cartax_array);

	scrollCalculator();
}
function toggleRowSelected(ev, tr)
{
	var clickedEl = ev.srcElement ? ev.srcElement : ev.target;
	if(clickedEl && clickedEl.nodeName=='INPUT')
	{
		var key = 'key'+clickedEl.value;
		if(all_accessories[key] && all_accessories[key]['co2_combined']) updateCO2(clickedEl.checked ? all_accessories[key]['co2_combined'] : '');
	}
	else
	{
		var el = tr.getElementsByTagName('INPUT');
		for(var i=0; i<el.length; i++)
		{
			if(el[i].type=='radio') el[i].checked = true;
			else if(el[i].type=='checkbox') el[i].checked = !el[i].checked;
			else continue;
			var key = 'key'+el[i].value;
			if(all_accessories[key] && all_accessories[key]['co2_combined'])
			{
				updateCO2(el[i].checked ? all_accessories[key]['co2_combined'] : '');
				return;
			}
			if(el[i].onclick) el[i].onclick();
		}
	}
}
function updateCO2(co2)
{
	var el = document.getElementById('co2_combined');
	if(!el)
	{
		var f = document.getElementById('accessories_form');
		if(!f) return;
		var el = document.createElement('input');
		el.type = 'hidden';
		el.id = 'co2_combined';
		el.name = 'car['+el.id+']';
		f.appendChild(el);
	}
	el.value = co2;
	el.form.submit();
}

function scrollCalculator()
{
	var marginTop = 6; // tyhjää laskurin ja selaimen ylälaitojen välissä
	var disc = document.getElementById('disclaimers');
	var wSize = windowSize();
	var calculator = document.getElementById('calculator-container');
	var dContainer = calculator.parentNode;
	var paddingTop = parseInt(calculator.style.paddingTop);

	var calculatorHeight = calculator.offsetHeight - paddingTop;

	var calculatorOffsetTop = paddingTop;
	var t = calculator; while(t) { calculatorOffsetTop += t.offsetTop; t = t.offsetParent; }

	cBottom = calculatorOffsetTop + calculatorHeight;

	if(calculatorHeight + marginTop < wSize.height)
	{
		var newPaddingTop = paddingTop + document.body.scrollTop - calculatorOffsetTop + marginTop;
	}
	else
	{
		var newPaddingTop = paddingTop - calculatorOffsetTop + (document.body.scrollTop + wSize.height - calculatorHeight) - marginTop;
	}
	if(newPaddingTop != paddingTop)
	{
		if(dContainer.offsetHeight - disc.offsetHeight < calculator.offsetHeight + newPaddingTop - paddingTop)
		{
			newPaddingTop = dContainer.offsetHeight - calculator.offsetHeight + paddingTop - disc.offsetHeight;
		}
		if(newPaddingTop<0) newPaddingTop = 0;
		calculator.style.paddingTop = newPaddingTop+'px';
	}
}

function printPrice(form)
{
	while(form && form.nodeName!='FORM') form = form.parentNode;
	if(!form) return;
	if(!form.oTarget) form.oTarget = form.target;
	if(!form.oAction) form.oAction = form.action;
	form.target = "hintalaskuri";
	form.action = "/php/tulosta_hintalaskuri.php";
	form.submit();
	form.target = form.oTarget;
	form.action = form.oAction;
}