var scost = 0;
var ncost = 0;
var height_id = 0;
var amount = 1;
var inst = 0;

/**
*	@param val String	New text on name plate
*	@param def String	If nothing is on plate show some text as default
*/
function chPlateName(val, def)
{
	if (!document.getElementById('has_name').checked)
	{
		document.getElementById('type_2').value="";
		val = '';
	}
	if (document.getElementById('sel_col_name').value == 0 && val.length > 0 && document.getElementById('sel_city').value == 2)
	{
		document.getElementById('type_2').value="";
		val = '';
		alert(noNameColor);
	}
	def = '';
	this.amount = parseFloat(document.getElementById('quantity').value);
	var text = val.length > 0 ? val : def;
	document.getElementById('street_name').innerHTML = text;
	this.scost = val.length > 0  && (document.getElementById('sel_col_name').value > 0 || document.getElementById('sel_city').value == 1) ?
		parseFloat(BPRICES[2][this.height_id]) + val.length*CPRICES[2][this.height_id] :
		0;
	document.getElementById('cost').innerHTML = round_decimals((this.ncost+this.scost)*this.amount+this.inst*this.amount, 2)
}

/**
*	@param val String	New text on name plate
*	@param def String	If nothing is on plate show some text as default
*/
function chPlateNr(val, def)
{
	if (!document.getElementById('has_number').checked)
	{
		document.getElementById('type_1').value="";
		val = '';
	}
	if (document.getElementById('sel_col_nr').value == 0 && val.length > 0 && document.getElementById('sel_city').value == 2)
	{
		document.getElementById('type_1').value="";
		val = '';
		alert(noNrColor);
	}
	def = '';
	this.amount = parseFloat(document.getElementById('quantity').value);
	var text = val.length > 0 ? val : def;
	document.getElementById('house_nr').innerHTML = text;
	this.ncost = val.length > 0 && (document.getElementById('sel_col_nr').value > 0 || document.getElementById('sel_city').value ==1) ?
		parseFloat(BPRICES[1][this.height_id]) + val.length*CPRICES[1][this.height_id] :
		0;
	document.getElementById('cost').innerHTML = round_decimals((this.ncost+this.scost)*this.amount+this.inst*this.amount, 2)
}

/**
*	@param val
*	@param sother_id
*	@param nother_id
*/
function cityChanged(val, sother_id, nother_id)
{
	document.getElementById('inst').style.display = 'none';
	if (val == 1)		// Tallinn
	{
		document.getElementById('inst_inst').parentNode.parentNode.style.visibility = 'visible';
		setInstallation();
		document.getElementById('table_tallinn').style.display = 'block';
		document.getElementById('nplate').style.display = IS_MOZ ? 'table' : 'inline-block';
		document.getElementById('splate').style.display = IS_MOZ ? 'table' : 'inline-block';
		document.getElementById('inst').style.display = 'block';
		
		if (document.getElementById('sel_prov').value == 0)
		{
			if (document.getElementById('sel_col_nr').value == 0)
				document.getElementById('nplate').style.display = 'none';
			else
				document.getElementById('nplate').style.display = IS_MOZ ? 'table' : 'inline-block';
			
			if (document.getElementById('sel_col_name').value == 0)
				document.getElementById('splate').style.display = 'none';
			else
				document.getElementById('splate').style.display = IS_MOZ ? 'table' : 'inline-block';
		}
		else
		{
			chColorByProvince(document.getElementById('sel_prov').value)
		}
	}
	else if (val == 2)	// Other
	{
		var inst_inst = document.getElementById('inst_inst');
		if (inst_inst.checked)
		{
			inst_inst.checked = false;
			this.inst = 0;
		}

		recalc();
		setInstallation();
		
		chPlateName('', '');
		document.getElementById('type_1').value="";
		chPlateNr('', '');
		document.getElementById('type_2').value="";
		
		document.getElementById('inst').style.display = 'block';
		document.getElementById('inst_inst').parentNode.parentNode.style.visibility = 'hidden';
		
		document.getElementById('table_other').style.display = 'block';
		if (document.getElementById('sel_col_nr').value == 0)
			document.getElementById('nplate').style.display = 'none';
		else
		{
			document.getElementById('nplate').style.display = IS_MOZ ? 'table' : 'inline-block';
			chColor(document.getElementById('sel_col_nr').value, 'nplate', nother_id)
		}
		
		if (document.getElementById('sel_col_name').value == 0)
			document.getElementById('splate').style.display = 'none';
		else
		{
			document.getElementById('splate').style.display = IS_MOZ ? 'table' : 'inline-block';
			chColor(document.getElementById('sel_col_name').value, 'splate', sother_id)
		}
	}
	if (val != 1)
		document.getElementById('table_tallinn').style.display = 'none';
	if (val != 2)
		document.getElementById('table_other').style.display = 'none';
	
	if (val == 0)
	{
		document.getElementById('table_plates').style.display = 'none';
		document.getElementById('nplate').style.display = 'none';
		document.getElementById('splate').style.display = 'none';
	}
}

/**
*	Plates not in tallinn
*	@param val Int	Color
*	@param id String	Id of table where plate is in (name/nr)
*	@param other_id String	Id of other color. Needed to toggle it visible or not
*/
function chColor(val, id, other_id)
{
	var font_color = "#FFFFFF";
	switch (parseInt(val))
	{
		case 2: var color = "#009933"; break;
		case 3: var color = "#003399"; break;
		case 4: var color = "#604A4A"; break;
		default:
			var color = "#FFFFFF";
			font_color = "#000000";
	}
	if (val == 5)
		document.getElementById(other_id).style.display = 'block';
	else
		document.getElementById(other_id).style.display = 'none';
		
	document.getElementById(id).style.backgroundColor = color;
	document.getElementById(id+'_bg').style.color = font_color;
	document.getElementById(id).style.border = "";
	
	document.getElementById('table_plates').style.display = 'block';
	document.getElementById('invert_'+id).checked = false;
	
	if (document.getElementById('sel_col_nr').value == 0)
	{
		document.getElementById('nplate').style.display = 'none';
		this.ncost = 0;
		document.getElementById('type_1').value = '';
		recalc();
	}
	else
	{
		this.ncost = document.getElementById('type_1').value.length > 0 ? parseFloat(BPRICES[1][this.height_id]) + document.getElementById('type_1').value.length*CPRICES[1][this.height_id] : 0;
		recalc();
		document.getElementById('nplate').style.display = IS_MOZ ? 'table' : 'inline-block';
	}
	
	if (document.getElementById('sel_col_name').value == 0)
	{
		document.getElementById('splate').style.display = 'none';
		document.getElementById('type_2').value = '';
		this.ncost = 0;
		recalc();
	}
	else
	{
		this.scost = document.getElementById('type_2').value.length > 0 ? parseFloat(BPRICES[2][this.height_id]) + document.getElementById('type_2').value.length*CPRICES[2][this.height_id] : 0;
		recalc();
		document.getElementById('splate').style.display = IS_MOZ ? 'table' : 'inline-block';
	}
		
	var borderColor = (color == "#FFFFFF") ? "black" : "white";
	var img_left   = IMG_URL+"hplate_l_"+borderColor+".gif";
	var img_right  = IMG_URL+"hplate_r_"+borderColor+".gif";
	var img_center = IMG_URL+"hplate_c_"+borderColor+".gif";
	document.getElementById(id+'_l').src = img_left;
	document.getElementById(id+'_r').src = img_right;
	document.getElementById(id+'_bg').style.backgroundImage = "url('"+img_center+"')";
}

/**
*	@param p Int	Province id
*/
function chColorByProvince(p)
{
	var color = "white"				// Color of Border that surrounds text
	var bgcolor;					// Background-color;
	var nbgcolor = "#FFFFFF";		// Background-color of number plate;
	var border = "0";				// Table border
	var font_color = "#FFFFFF";		// Font color
	
	document.getElementById('table_plates').style.display = "block";
	document.getElementById('nplate').style.display = IS_MOZ ? 'table' : 'inline-block';
	document.getElementById('splate').style.display = IS_MOZ ? 'table' : 'inline-block';
	
	switch (parseInt(p))
	{
		case 1:		// Nõmme
			nfont_color = bgcolor = "#009933";
			ncolor = "green";
			nborder = "1px solid #009933";
			nbgcolor = "#FFFFFF";
		break;
		case 2:		// Pirita
			nfont_color = bgcolor = "#FFFFFF";
			border = "1px solid #604A4A";
			nbgcolor = font_color = "#604A4A";
			color = "brown";
			ncolor = "white";
			nborder = "0";
		break;
		case 3:		// Haabersti
		case 4:		// Kristiine
		case 5:		// Mustamäe
		case 6:		// Lasnamäe
		case 7:		// Põhja-Tallinn
		case 8:		// Kesklinn
			nfont_color = bgcolor = "#003399";
			ncolor = "blue";
			nbgcolor = "#FFFFFF";
			nborder = "1px solid #003399";
		break;
		case 9:		// Vanalinn
		case 10:	// Kadrioru Majanühisuse piirkond
			nfont_color = bgcolor = "#604A4A";
			ncolor = "brown";
			nborder = "1px solid #604A4A";
		break;
	}
	
	var simg_left	= IMG_URL+"hplate_l_"+color+".gif";
	var simg_right	= IMG_URL+"hplate_r_"+color+".gif";
	var simg_center	= IMG_URL+"hplate_c_"+color+".gif";
	
	var nimg_left	= IMG_URL+"hplate_l_"+ncolor+".gif";
	var nimg_right	= IMG_URL+"hplate_r_"+ncolor+".gif";
	var nimg_center	= IMG_URL+"hplate_c_"+ncolor+".gif";
	
	document.getElementById('splate_l').src = simg_left;
	document.getElementById('splate_r').src = simg_right;
	document.getElementById('splate_bg').style.backgroundImage = "url('"+simg_center+"')";
	document.getElementById('splate').style.backgroundColor = bgcolor;
	document.getElementById('street_name').style.color = font_color;
	document.getElementById('splate').style.border = border;
	
	document.getElementById('nplate_l').src = nimg_left;
	document.getElementById('nplate_r').src = nimg_right;
	document.getElementById('nplate_bg').style.backgroundImage = "url('"+nimg_center+"')";
	document.getElementById('nplate').style.backgroundColor = nbgcolor;
	document.getElementById('house_nr').style.color = nfont_color;
	document.getElementById('nplate').style.border = nborder;
}

/**
*	Inverts colors of plate
*	@param id String	Plate id
*	@param checked Bool	Wether toggle to pos or neg
*/
function invert(id, checked)
{
	var bg = document.getElementById(id).style.backgroundColor;
	var textColor = document.getElementById(id+'_bg').style.color;
	var border = document.getElementById(id).style.border;
	
	if (border == "")
		border = "1px solid "+bg;
	else
		border = "";
	
	switch (bg)
	{
		case "#009933":
		case "rgb(0, 153, 51)"	  : var color = "green"; break;
		case "#003399":
		case "rgb(0, 51, 153)"	  : var color = "blue";  break;
		case "#ffffff":
		case "rgb(255, 255, 255)" : var color = "white"; break;
		case "#604a4a":
		case "rgb(96, 74, 74)"	  : var color = "brown"; break;
		case "#000000":
		case "rgb(0, 0, 0)"	 	  : var color = "black"; break;
	}
	
	var simg_left	= IMG_URL+"hplate_l_"+color+".gif";
	var simg_right	= IMG_URL+"hplate_r_"+color+".gif";
	var simg_center	= IMG_URL+"hplate_c_"+color+".gif";
	
	document.getElementById(id+'_l').src = simg_left;
	document.getElementById(id+'_r').src = simg_right;
	document.getElementById(id+'_bg').style.backgroundImage = "url('"+simg_center+"')";
	document.getElementById(id).style.backgroundColor = textColor;
	document.getElementById(id+'_bg').style.color = bg;
	document.getElementById(id).style.border = border;
}

/**
*	@param val Int	Selected height index
*	@param defName String	Default text on name plate
*	@param defNr String	Default text on number plate
*/
function setMax(val, defName, defNr)
{
	defName = '';
	defNr = '';
	this.height_id = val;
	var str = document.getElementById('type_2').value;
	var substr = str.substring(0, SIZES[2][val]);
	document.getElementById('type_2').value = substr;
	chPlateName(substr, defName, BPRICES, CPRICES);
	document.getElementById('type_2').maxLength = SIZES[2][val];
	
	str = document.getElementById('type_1').value;
	substr = str.substring(0, SIZES[1][val]);
	document.getElementById('type_1').value = substr;
	chPlateNr(substr, defNr, BPRICES, CPRICES);
	document.getElementById('type_1').maxLength = SIZES[1][val];
}

/**
*
*/
function chAmount(val)
{
	this.amount = val;
	document.getElementById('cost').innerHTML = round_decimals((this.ncost+this.scost)*val+this.inst*val, 2)
}

/**
*
*/
function recalc()
{
	this.amount = parseFloat(document.getElementById('quantity').value);
	document.getElementById('cost').innerHTML = round_decimals((this.ncost+this.scost)*this.amount+this.inst*this.amount, 2)
}

/**
 * Sets transport price
 * @param id
 * @param trans_prices
 */
function setTrans(id)
{
	var trans_price = document.getElementById('trans_price');
	trans_price.innerHTML = TRANS_PRICES[id] + " kr.";
	
	this.inst = parseFloat(TRANS_PRICES[id]);
	recalc();
}

/**
 *
 */
function setInstallation(x)
{
	var sel_trans = document.getElementById('sel_trans');
	var trans_price = document.getElementById('trans_price');
	var inst_inst = document.getElementById('inst_inst');
	var inst_trans = document.getElementById('inst_trans');
	var inst_none = document.getElementById('inst_none');
	
	if (inst_inst.checked)
	{
		this.inst = RES['inst_price'];
		recalc();
	}
		
	if (inst_trans.checked)
	{
		sel_trans.style.display = "block";
		trans_price.style.display = "block";
		setTrans(sel_trans.value);
	}
	else
	{
		trans_price.style.display = "none";
		sel_trans.style.display = "none";
	}
		
	if (inst_none.checked)
	{
		this.inst = 0;
		recalc();
	}	
}

/**
 * Sets price and elements visibility based on saved data
 * @param street_name
 * @param house_nr
 * @param invertNplate
 * @param invertSplate
 */
function setProp(street_name, house_nr, invertNplate, invertSplate)
{
	
	setMax(document.getElementById('sel_height').value, street_name, house_nr);
	cityChanged(document.getElementById('sel_city').value, 'name_color_other', 'nr_color_other');
	document.getElementById('type_2').value = street_name;
	document.getElementById('type_1').value = house_nr;
	
	chPlateNr(document.getElementById('type_1').value, house_nr);
	chPlateName(document.getElementById('type_2').value, street_name);
	
	if (document.getElementById('sel_city').value != 1)
	{
		if (invertNplate > 0)
		{
			document.getElementById('invert_nplate').checked = true;
			invert('nplate', true)
		}
		if (invertSplate > 0)
		{
			document.getElementById('invert_splate').checked = true;
			invert('splate', true)
		}
	}
	
	show_plate('splate',document.getElementById('has_name').checked);
	show_plate('nplate',document.getElementById('has_number').checked);
}

/**
*	
*/
function show_plate(div_id,checked){
	ob=document.getElementById(div_id);
	if(checked)
		ob.style.display='block';
	else
	{
		if (div_id == "nplate")
		{
			document.getElementById('type_1').value="";
			chPlateNr('', '');
		}	
		else if (div_id == "splate")		
		{
			document.getElementById('type_2').value="";	
			chPlateName('', '');
		}
		recalc();
		ob.style.display='none';
		
	}
}

/**
 * 
 */
function add2cart(id, mode)
{
	if (!document.getElementById('type_1').value && !document.getElementById('type_2').value)
	{
		alert (alertText);
		return;
	}
	if (document.getElementById('sel_city').value == 0)
	{
		alert (alertText);
		return;
	}
	document.form_prod.price.value=document.getElementById('cost').innerHTML;
	document.form_prod.submit();
}
