// js/xib/javascript.js
var XIB = {
	spInputs:[],
	spDefaultValues:[],
	spMainProducts:[],
	
	init:function(){
		XIB.applySuperProductCalculator();
	},
	
	
	applySuperProductCalculator:function(){
		var table = $('super-product-table');
		var tabIndex;
		var o = this;
		if(table && Multipliers){
			o.spInputs = table.select('input[type=text]');
			if(o.spInputs.length <= 0){
				return;
			}
			//for(i in Multipliers){
				
			//}
			o.spInputs.each(function(e,n){
				e = $(e);
				tabIndex = e.readAttribute('tabindex');
				if(tabIndex < 10){
					Event.observe(e,'keyup',o.calculateRelatedProducts.bindAsEventListener(e));
					if(e.id in Multipliers){
						o.spMainProducts[o.spMainProducts.length] = [e,Multipliers[e.id]];
					}
					//o.spMainProducts[o.spMainProducts.length] = [e,tabIndex];
				}else{
					o.spDefaultValues[o.spDefaultValues.length] = [e,$F(e)];
				}
				
			});
		}
	},
	
	calculateRelatedProducts:function(ev){
		var queue = Effect.Queues.get('relatedProducts');
		queue.each(function(effect) { effect.cancel(); });

	
		var o = XIB, val = $F(this), totalFactor = 0, newValue;
		o.spMainProducts.each(function(e,n){
			totalFactor += ($F(e[0]) * e[1]);
		});
		
		o.spDefaultValues.each(function(e,n){
		
			if(e[0].id in Multipliers){
				// Indien het veld voorkomt in Multipliers is er sprake van een afwijking
				var newmp, mp = Multipliers[e[0].id];
				var aantalRails = 0;
				// Tel het totaal aantal rails op
				for(var i = 0, l = o.spMainProducts.length;i<l;i++){
					aantalRails += ($F(o.spMainProducts[i][0]) * 1);
				}
				
				// Vervang karakterset {aantalrails} indien aanwezig ( controle hieronder )
				newmp = (mp.replace('{aantalrails}',aantalRails));
				
				// Karakterset was daadwerkelijk vervangen, dus aantal omzetten naar integer en bereken nieuwe waarde
				if(newmp != mp){
					newValue = eval(newmp) * 1; // naar getal omzetten
					// Indien kleiner dan 0, omzetten naar 0
					if(newValue < 0){newValue = 0;}
				}
				
			}else{
				// Anders gewoon vermenigvuldigen met de totale vermenigvuldigingsfactor
				newValue =  totalFactor * e[1];
				if(newValue < 0){
					newValue = 0;
				}
			}
			// Indien de nieuwe waarde anders is, effect toepassen
			if(newValue != (1 * e[0].value)){
				new Effect.Highlight(e[0],{endcolor:'#ffffff',restorecolor:'#ffffff'});
			}
			// Plaats nieuwe waarde in het veld
			e[0].value =  newValue;
		});
	}
}



document.observe("dom:loaded", XIB.init);
