// Globale Variablen
var def_price;
var change_array = new Array();

//Ließt den Preis aus der Seite aus
function read_price() {
	if(def_price == undefined && document.getElementById('products_price')) {
		var price = document.getElementById('products_price').innerHTML;
		def_price = parseFloat(strip_to_price(price));
	}
}

//Schreibt den preis wieder in die Seite
function write_price(nprice) {
	nprice = kommastellen(nprice);
	nprice = String(nprice).replace(".", ",");
	nprice = nprice.split(",");
	nprice = format(nprice[0])+","+nprice[1];
	if(document.getElementById('products_price')) {
		document.getElementById('products_price').innerHTML = nprice+" EUR";
	}
}

// Setzt nen TausenderTrennzeichen in nen Integer
function format(zahl, TZ) {
    if(!TZ) TZ = '.';
    var new_string = [];
    var tmp = parseInt(zahl) + '';
    while( tmp.length > 3)
    {
        new_string[new_string.length] = tmp.substr(tmp.length - 3 ) ;
        tmp = tmp.substr(0, tmp.length -3 )
    }
    if(tmp)  new_string[new_string.length] = tmp;
    return new_string.reverse().join(TZ);
}


//Sorgt dafür das die Nachkommastellen immer passen
function kommastellen(x) {
  var k = (Math.round(x * 100) / 100).toString();
  k += (k.indexOf('.') == -1)? '.00' : '00';
  return k.substring(0, k.indexOf('.') + 3);
}

//Löscht die Formatierung rund um den preis
function strip_to_price(tostrip) {
	tostrip = tostrip.replace("ab", "");
	tostrip = tostrip.replace("EUR", "");
	tostrip = tostrip.replace(" ", "");
	tostrip = tostrip.replace(".", "");
	tostrip = tostrip.replace(",", ".");
	return tostrip;
}

//Löscht die Formatierung rund um die IDs
function strip_to_id(tostrip) {
	tostrip = tostrip.replace("id[", "");
	tostrip = tostrip.replace("]", "");
	tostrip = tostrip.replace(" ", "");
	return tostrip;
}

//Diese Methode muss aufgerufen werden um den Preis zu aktualisieren
function update_price(obj) {
	var price = def_price;
	if(obj) {
		var tmp = obj[obj.selectedIndex].title.split('|');
		var prefix = tmp[0];
		var nvalue = parseFloat(strip_to_price(tmp[1]));
		var objID = strip_to_id(obj.name);
		change_array[objID]['prefix'] = prefix;
		change_array[objID]['nvalue'] = nvalue;
	}
	for(var i = 0; i < change_array.length; i++) {
		if(change_array[i] != undefined && change_array[i]['nvalue'] != "") {
			price = do_calc(price,change_array[i]['prefix'],change_array[i]['nvalue']);
		}
	}
	write_price(price);
}

//Führt anhand des Prefixes, der basis und der neuen Value die berechnung durch
function do_calc(base,prefix, nvalue) {
	var returnValue = base;
	if(prefix == "+") {
		returnValue = base + nvalue;
	} else if(prefix == "-") {
		returnValue = base - nvalue;
	}
	return returnValue;
}

//Holt die Daten der registrierten Selectboxen
function get_values() {
	for(var i = 0; i < change_array.length; i++) {
		if(change_array[i] != undefined) {
			var obj = document.getElementsByName('id['+i+']').item(0);
			if(obj[0].title != "") {
				var tmp = obj[0].title.split('|');
				var prefix = tmp[0];
				var nvalue = parseFloat(strip_to_price(tmp[1]));
				change_array[i] = new Array();
				change_array[i]['prefix'] = prefix;
				change_array[i]['nvalue'] = nvalue;
			}
		}
	}
}

//Registriert die Selectboxen
function reg_select(objID) {
	change_array[objID] = new Array();
}

//Führt nach dem Laden des Fensters die Initialisisrung aus
window.onload=function()
{
	read_price();
	get_values();
	update_price();
}
