function updateJumlah(namaFieldJumlah) {
	
	// validate value
	var maxDigit = 4;
	
	var namaFieldJumlahObj = document.getElementById(namaFieldJumlah);
	//var jumlahInt = parseFromFormattedDigit(namaFieldJumlahObj.value);	
	var jumlahInt = hilangkanTitikDariNilai(namaFieldJumlahObj.value);	
	var jumlahStr = jumlahInt + "";
		
	if(jumlahStr.length >= maxDigit) {
		jumlahInt = parseInt(jumlahStr.substring(0, maxDigit));
	}
	/* re-display to :
		1. prevent ZERO in front, eg: 03123
		2. prevent any character other than 0 - 9
		3. properly adjust the coma (group digit)
	*/
	if(jumlahInt > 0) {
		
		jumlahStr = convertToFormattedDigit(jumlahInt);
			
		namaFieldJumlahObj.value = jumlahStr;
	} else
		namaFieldJumlahObj.value = 1; // minimum 1 ... if do not want to buy then user must delete it
		
	// ================
	
	calculateTotal();
}

function calculateTotal() {
	
	// dapatkan jumlah produk
	var totalItemObj = document.getElementById('total_item');
	var totalItem = totalItemObj.innerHTML;
	
	// reset total price
	var totalPrice = 0;
		
	// calculate semuanya
	var hargaObj = null;
	var hargaStr = "";
	var harga = 0;
	var tt = 0;
	var hurufSekarang = "";
	var subtotal = 0;
	
	for(i = 1; i <= totalItem; i++) {
		
		// get harga_1, harga_2, dll
		hargaObj = document.getElementById('harga_' + i);
		hargaStr = hargaObj.innerHTML + "";

		// KONVERT from eg: 1.800.000 to 1800000				
		harga = parseFromFormattedDigit(hargaObj.innerHTML);
		
		// ======== these code to get the value of the ComboBox is WORKING in IE only .. firefox has problem
		var namaField = 'jumlah_' + i;
		var jumlahObj = document.getElementById(namaField);
		//var selected3 = document.getElementById(namaField).getAttribute("selectedIndex");
		//var jumlahObj = document.getElementById(namaField).options[selected3].value;
		//var jumlahObj = document.getElementById ? document.getElementById(namaField) : document.all[namaField];
		//var jumlah = jumlahObj.options[jumlahObj.selectedIndex].value;
		//var jumlah = document.getElementById(namaField).options[jumlahObj.selectedIndex].value;
		
		// 30 June 2007 ... use text (manual input) instead of combobox (automatic)
		var jumlah = parseFromFormattedDigit(jumlahObj.value);
		// ============== do not DELETE the code above .. kasih komen saja jika tak terpakai

		// update subtotal
		subtotal = harga * jumlah;
		var namaField = 'subtotal_' + i;
		var subtotalObj = document.getElementById(namaField);
		subtotalObj.innerHTML = rubahNilaiPakaiTitik(subtotal);
				
		// update total
		totalPrice += subtotal;
	}
	
	// format total harga menggunakan titik	
	var hargaFormatted = ""; // init empty string
	var hargaStr = totalPrice + "";	// convert to string
	
	while(hargaStr.length > 3)	{
		hargaFormatted = "." + hargaStr.substr(hargaStr.length - 3, 3) + hargaFormatted;
		hargaStr = hargaStr.substr(0, hargaStr.length - 3);
	}
	
	hargaFormatted = hargaStr + hargaFormatted;

	// update price
	var counterObj = document.getElementById('total_price');
	counterObj.innerHTML = hargaFormatted;
}

function hilangkanTitikDariNilai(stringNilai) {
	// KONVERSI dari : 1.800.000 ke 1800000
	var nilaiAsli = 0;
	var hurufSekarang = '';
	for(y = 0; y < stringNilai.length; y++) {
		
		//hurufSekarang = substr(hargaObj.innerHTML, y, 1);	// get one character at a time
		hurufSekarang = stringNilai.substr(y, 1);
		
		if(hurufSekarang != ".") {
			// huruf selain TITIK berarti angka 0-9
			nilaiAsli *= 10; // shift one character 
			nilaiAsli += (+hurufSekarang);	// convert from one character string to numeric value
		}
	}
		
	return(nilaiAsli);
}

function rubahNilaiPakaiTitik(nilaiAsli) {
	// KONVERSI dari 1800000 ke 1.800.000
	var nilaiFormatted = '';

	var nilaiStr = nilaiAsli + "";	// convert to string
	
	while(nilaiStr.length > 3)	{
	
		// tambahkan sebuah titik dan 3 digit di depan nilaiFormatted
		nilaiFormatted = "." + nilaiStr.substr(nilaiStr.length - 3, 3) + nilaiFormatted;
		
		// hilangkan 3 digit dari belakang

		nilaiStr = nilaiStr.substr(0, nilaiStr.length - 3);
	}
	
	nilaiFormatted = nilaiStr + nilaiFormatted;
		
	return(nilaiFormatted);
}

function parseFromFormattedDigit(valueStr) {
	// conversion from eg: 1.800.000 to 1800000
	
	var hurufSekarang = "";
	var nilaiInt = 0;
	
	for(y = 0; y < valueStr.length; y++) {
		
		hurufSekarang = valueStr.substr(y, 1);
		
		if(hurufSekarang != ".") {
			
			if(hurufSekarang >= "0" && hurufSekarang <= "9") {			
				// huruf selain TITIK dan merupakan angka 0-9
				nilaiInt *= 10; // shift one character 
				nilaiInt += (+hurufSekarang);	// convert from one character string to numeric value
			}
		}
	}	
	
	return(nilaiInt);
}

function convertToFormattedDigit(valueInt) {
	// convert from 1800000 to 1.800.000
	
	// format nilai menggunakan titik	
	var nilaiFormatted = ""; // init empty string
	var nilaiStr = valueInt + "";	// convert to string
	
	while(nilaiStr.length > 3)	{
		nilaiFormatted = "." + nilaiStr.substr(nilaiStr.length - 3, 3) + nilaiFormatted;
		nilaiStr = nilaiStr.substr(0, nilaiStr.length - 3);
	}
	
	// penambahan angka digit terakhir
	nilaiFormatted = nilaiStr + nilaiFormatted;
	
	return(nilaiFormatted);
}


