var slider = ['', '', '', '', ''];
var forholdHus = 60;
var decimaler = 1;
var tabfortimeout ='';

// calculationProxy definerer hvad der sker, når man har hevet i en slider.
var calculationProxy = function() {

//Tjek hvor mange procent der er tilbage til VE-kilder = kul.produktion() + biomasse.produktion() og sæt maximumgrænsen for VE
	beregn.tjekOverflow();
	
//	Update værdier på skærmen
	showValues();
	
	rememberValues();
};


var rememberValues = function() {
  solvarme.rememberedValue =  Math.round(solvarme.produktion());
  geotermi.rememberedValue =  Math.round(geotermi.produktion());
  varmepumpe.rememberedValue =  Math.round(varmepumpe.produktion());
};

var beregn = {

	hvorMegetTilbageTilVe: function() {return (100 - Math.round(kul.totalProduktion()));},

	setMaxForVE: function() {
  	solvarme.max = beregn.hvorMegetTilbageTilVe();
  	geotermi.max = beregn.hvorMegetTilbageTilVe();
  	varmepumpe.max = beregn.hvorMegetTilbageTilVe();
	},

	tjekOverflow: function() {
  	if ((solvarme.ratio > solvarme.rememberedValue) && (solvarme.ratio > solvarme.max()))
      solvarme.ratio = solvarme.max()
  
  	if ((geotermi.ratio > geotermi.rememberedValue) && (geotermi.ratio > geotermi.max()))
  		geotermi.ratio = geotermi.max()
  
  	if ((varmepumpe.ratio > varmepumpe.rememberedValue) && (varmepumpe.ratio > varmepumpe.max()))
  	 varmepumpe.ratio = varmepumpe.max()
  
  	return;
	}

};


var totalProduktion = function() {
  // Reference - skal altid være 100 procent
  return kul.totalProduktion() + organisk.totalProduktion + solvarme.produktion() + geotermi.produktion() + varmepumpe.produktion()
};

var kulBiomasseSlider = {
	ratio: 90
};

var affaldSlider = {
	ratio: 59
};

var spids = {
	ratio: function() {return (7.78);},
	produktion: function() {return spids.ratio();},
	restandel: function() {return 100 - spids.ratio();}
};

var kul = {
	ratio: function() {return (100 - kulBiomasseSlider.ratio)},
	totalProduktion: function() {return (100 - organisk.totalProduktion - solvarme.produktion() - geotermi.produktion() - varmepumpe.produktion());}, 
	produktion: function() {return (kul.totalProduktion() * kul.ratio() / 100);}
};

var biomasse = {
	ratio: function() {return (100 - kul.ratio());},
	produktion: function() {return (kul.totalProduktion() * biomasse.ratio() / 100);}
};

var organisk = {
	ratio: function() {return affaldSlider.ratio;},
	totalProduktion: 43,
	produktion: function() {return (organisk.totalProduktion * organisk.ratio() / 100);}
};

var plast = {
	ratio: function() {return (100 - affaldSlider.ratio);},
	produktion: function() {return (organisk.totalProduktion * plast.ratio() / 100);}
};

var solvarme = {
	ratio: 0,  // procent -  default stepValue fra slider
	produktion: function() {return solvarme.ratio;},
	max: function() {return (kul.totalProduktion() + solvarme.ratio);},
	rememberedValue: 100
};

var geotermi = {
	ratio: 1,  // procent -  default stepValue fra slider
	produktion: function() {return geotermi.ratio;},
	max: function() {return (kul.totalProduktion() + geotermi.ratio);},
	rememberedValue: 100
};

var varmepumpe = {
	ratio: 0,  // procent -  default stepValue fra slider
	produktion: function() {return varmepumpe.ratio;},
	max: function() {return (kul.totalProduktion() + varmepumpe.ratio);},
	rememberedValue: 100
};

var samletCo2Udledning = function() {
  return (
          (spids.produktion()/100 * co2UdledningSpids) +
          (
           kul.produktion()/100 * co2UdledningKul +
        	 biomasse.produktion()/100 * co2UdledningBiomasse +
        	 organisk.produktion()/100 * co2UdledningOrganisk +
        	 plast.produktion()/100 * co2UdledningPlast +
        	 solvarme.produktion()/100 * co2UdledningSolvarme +
        	 geotermi.produktion()/100 * co2UdledningGeotermi +
        	 varmepumpe.produktion()/100 * co2UdledningVarmepumpe
          ) *
          spids.restandel()/100
  );
};

//Emissionsfaktorer kg/GJ varme
var co2UdledningKul = 43;       //AVV og AMV kul (CO2 kg/GJ)
var co2UdledningBiomasse = 0;		//AVV AMV bio (CO2 kg/GJ)
var co2UdledningOrganisk = 0;		//Affald organisk (CO2 kg/GJ)
var co2UdledningPlast = 47.4;		//Affald fossil (CO2 kg/GJ)
var co2UdledningSolvarme = 0;		//(CO2 kg/GJ)
var co2UdledningGeotermi = 18.9;		//(CO2 kg/GJ)
var co2UdledningVarmepumpe = 58.1;	//(CO2 kg/GJ)
var co2UdledningSpids = 51.3;		//Spidslast HCØ og SMV(CO2 kg/GJ)

// showValues
var showValues = function() {

  // denne del viser procent på sliders							
	$('kulProduktion').innerHTML =  Math.round(kul.produktion());
	$('biomasseProduktion').innerHTML =  Math.round(biomasse.produktion());
	$('organiskProduktion').innerHTML =  Math.round(organisk.produktion());
	$('plastProduktion').innerHTML =  Math.round(plast.produktion());
	$('solvarmeProduktion').innerHTML =  solvarme.produktion();
	$('geotermiProduktion').innerHTML =  geotermi.produktion();
	$('varmepumpeProduktion').innerHTML =  varmepumpe.produktion();

  // max-grænser på sliders
  $('max-solvarme').set('tween', {
		duration: 400,
		transition: Fx.Transitions.Expo.easeOut
	}).tween('width', (100 - solvarme.max()) * 2.4 + 2 + 'px');
  
  $('max-geotermi').set('tween', {
		duration: 400,
		transition: Fx.Transitions.Expo.easeOut
	}).tween('width', (100 - geotermi.max()) * 2.4 + 2 + 'px');
  
  $('max-varmepumpe').set('tween', {
		duration: 400,
		transition: Fx.Transitions.Expo.easeOut
	}).tween('width', (100 - varmepumpe.max()) * 2.4 + 2 + 'px');

  // opdaterer søjler
	$('output-bar-1').set('tween', {
		duration: 800,
		transition: Fx.Transitions.Expo.easeOut
	}).tween('height', samletCo2Udledning() * 5 + 'px');							

	$('output-bar-2').set('tween', {
		duration: 800,
		transition: Fx.Transitions.Expo.easeOut
	}).tween('height', ((54.2)) * 5 + 'px');

  // ændring af tal-output
	$('output-digit-1').innerHTML = Math.round(samletCo2Udledning() * forholdHus * decimaler) / decimaler;
	$('output-digit-2').innerHTML = Math.round(54.2 * forholdHus * decimaler) / decimaler;
							
};

// tabs
function tabPress(tab) {
  if (tab == 'tabs-kggj') {
    forholdHus = 1;
    decimaler = 10;
  }
  else { 
    forholdHus = 60;
    decimaler = 1;
  }
  
  $('output-bar-1').set('tween', {
  	duration: 350,
  	transition: Fx.Transitions.Expo.easeOut // This could have been also 'bounce:out'
  }).tween('height', 0 + 'px');							
  
  $('output-bar-2').set('tween', {
  	duration: 350,
  	transition: Fx.Transitions.Expo.easeOut // This could have been also 'bounce:out'
  }).tween('height', 0 + 'px');
  setTimeout('showValues()', 370);
  $('output-container').set('class', tab);
  //  tabfortimeout = tab;
  //  setTimeout("$('output-container').set('class', " + 'tabfortimeout' +")", 370);
};

window.addEvent('domready', function() {
	var	valueString = [kulBiomasseSlider, affaldSlider, geotermi, varmepumpe, solvarme];
	
	var updateValues = function() {
		// Sets the values of the output text
		calculationProxy();
	};
	
	// We call function to initially set output
	updateValues();
	
	$$('div.slider').each(function(slider_values, i) {
  		slider[i] = new Slider(slider_values, slider_values.getElement('.knob'), {
    			steps: 100,  // Steps from 0 to 100
    			wheel: false, // Using the mousewheel is possible too
    			snap: false,
    			
          // onTick - to slide or not to slide			
    			onTick: function(pos) {
    				var lastPos = this.knob.offsetLeft;
    				if (pos < lastPos-20 || pos > lastPos+20 )
    					this.knob.tween(this.property, pos);
    				else 
    					this.knob.setStyle(this.property, pos);
    			},
    
          // onChange	- indlæs sliderpositioner		
    			onChange: function() {
    				// Based on the Slider values set a value in the array
    				valueString[i].ratio = this.step;
    				// and update the output to the new value
    				updateValues();
    			},
    
          // onComplete			
    			onComplete: function(step) {
    			}
    		}
      ).set(valueString[i].ratio);
  	}
  );
		
});

document.onmouseup = function() {
// skal tjekke et flag, om solvarme.ratio har overskredet max
	if (geotermi.ratio == geotermi.max()) {setTimeout("flippet(2,geotermi.ratio)",500);};
	if (varmepumpe.ratio == varmepumpe.max()) {setTimeout("flippet(3,varmepumpe.ratio)",500);};
	if (solvarme.ratio == solvarme.max()) {setTimeout("flippet(4,solvarme.ratio)",500);};
};

// the set function, sæt slider til en værdi
function flippet(num,val) {
 slider[num].set(val);
}


