    // this holds the running mainboard onbject
    runningBoard = null;
    savedMode = "Idle";    
    // prototype to add rails for an object
    addRailsValue = function(rail3V, rail5V, rail5VSB, rail12V, rail12VCPU)
    {
	this.rail3V = rail3V;
	this.rail5V = rail5V;
	this.rail5VSB = rail5VSB;
	this.rail12V = rail12V;
	this.rail12VCPU = rail12VCPU;
    };

    //prototype add new current values for a given operation
    OperationValues =  function(name, object)
    {
	this.name = name;
	this.current = object;
	this.running = 0;
    }
    
    //prototype add new current values for a given mainboard mode
    ModeValues =  function(name, object)
    {
	this.name = name;
	this.current = object;
    }

    // main object (motherboard)
    Board = function(name)
    {
	// name of the board
	this.name = name;
	
	// the image of the board if exists
	this.image = ""
	
	// init voltagem, current, modes and operations.
	this.actualVoltage = new addRailsValue(0,0,0,0,0);;
	this.power = new addRailsValue(0,0,0,0,0);
	this.current = new addRailsValue(0,0,0,0,0);
	this.OperationsCount = 0;
	this.Operations = [];
	this.ModesCount = 0;
	this.Modes = [];
	this.ActualMode = "none";
	
    };
    
    //add a operation for the main object
    Board.prototype.addOperation = function(name, object)
    {
	this.Operations[this.OperationsCount] = new OperationValues(name, object);
	this.OperationsCount++;
    };
    //add a functional base mode for the main object 
    Board.prototype.addMode = function(name, object)
    {
	this.Modes[this.ModesCount] = new ModeValues(name, object);
	this.ModesCount++;
    };
    
    //computer the power needs for a given operation
    Board.prototype.computeOperationPower = function(index)
    {
	var power = new addRailsValue(0,0,0,0,0);
	
	power.rail3V += this.Operations[index].current.rail3V * this.actualVoltage.rail3V;
	power.rail5V += this.Operations[index].current.rail5V * this.actualVoltage.rail5V;
	power.rail5VSB += this.Operations[index].current.rail5VSB * this.actualVoltage.rail5VSB;
	power.rail12V += this.Operations[index].current.rail12V * this.actualVoltage.rail12V;
	power.rail12VCPU += this.Operations[index].current.rail12VCPU * this.actualVoltage.rail12VCPU;
	
	return power;
    };
    
    //computer the current needs for a given operation
    Board.prototype.computeOperationCurrent = function(index)
    {
	var current = new addRailsValue(0,0,0,0,0);
	
	current.rail3V += this.Operations[index].current.rail3V;
	current.rail5V += this.Operations[index].current.rail5V;
	current.rail5VSB += this.Operations[index].current.rail5VSB;
	current.rail12V += this.Operations[index].current.rail12V;
	current.rail12VCPU += this.Operations[index].current.rail12VCPU;
	
	return current;
    };

    //computer the power needs for a given mode
    Board.prototype.computeModePower = function(index)
    {
	var power = new addRailsValue(0,0,0,0,0);
	
	power.rail3V += this.Modes[index].current.rail3V * this.actualVoltage.rail3V;
	power.rail5V += this.Modes[index].current.rail5V * this.actualVoltage.rail5V;
	power.rail5VSB += this.Modes[index].current.rail5VSB * this.actualVoltage.rail5VSB;
	power.rail12V += this.Modes[index].current.rail12V * this.actualVoltage.rail12V;
	power.rail12VCPU += this.Modes[index].current.rail12VCPU * this.actualVoltage.rail12VCPU;
	
	return power;
    };
    
    //computer the current needs for a given mode
    Board.prototype.computeModeCurrent = function(index)
    {
	var current = new addRailsValue(0,0,0,0,0);
	
	current.rail3V += this.Modes[index].current.rail3V;
	current.rail5V += this.Modes[index].current.rail5V;
	current.rail5VSB += this.Modes[index].current.rail5VSB;
	current.rail12V += this.Modes[index].current.rail12V;
	current.rail12VCPU += this.Modes[index].current.rail12VCPU;
	
	return current;
    };
    
    

    //changes the basic mode of operation for the main object
    Board.prototype.changeMode = function(mode) 
    {
	var p = this.power;
	var c = this.current;
	var opower, ocurrent;
	var index = this.findMode(mode);
	var oldindex = this.findMode(this.ActualMode);
	if (index < 0) {
	    alert ("Mode not found or no mainboard selected");
	    return;
	}
	
	//remove the old mode and add the new one
	if ( oldindex >= 0) {
	    var oldpower = this.computeModePower(oldindex);
	    var oldcurrent = this.computeModeCurrent(oldindex);
	    
	    opower = this.computeModePower(index);
	    ocurrent = this.computeModeCurrent(index);
	    
	    opower.rail3V -= oldpower.rail3V;
	    opower.rail5V -= oldpower.rail5V;
	    opower.rail5VSB -= oldpower.rail5VSB;
	    opower.rail12V -= oldpower.rail12V;
	    opower.rail12VCPU -= oldpower.rail12VCPU;
	
	    ocurrent.rail3V -= oldcurrent.rail3V;
	    ocurrent.rail5V -= oldcurrent.rail5V;
	    ocurrent.rail5VSB -= oldcurrent.rail5VSB;
	    ocurrent.rail12V -= oldcurrent.rail12V;
	    ocurrent.rail12VCPU -= oldcurrent.rail12VCPU;
	    
	} else {
	    opower = this.computeModePower(index);
	    ocurrent = this.computeModeCurrent(index);
	}
	
	p.rail3V += opower.rail3V;
	p.rail5V += opower.rail5V;
	p.rail5VSB += opower.rail5VSB;
	p.rail12V += opower.rail12V;
	p.rail12VCPU += opower.rail12VCPU;
	
	c.rail3V += ocurrent.rail3V;
	c.rail5V += ocurrent.rail5V;
	c.rail5VSB += ocurrent.rail5VSB;
	c.rail12V += ocurrent.rail12V;
	c.rail12VCPU += ocurrent.rail12VCPU;
	
	//change the actual mode
	this.ActualMode = mode;
	savedMode = mode;
    }
    
    //finds a operation in a operations list
    Board.prototype.findOperation = function(operation)
    {
	var index = this.OperationsCount - 1;
	while (index >= 0)
	{
	    if (operation == this.Operations[index].name) 
		return index;
	    index--;
	}
	return -1;
    };
    
    //finds a specified mode in a modes list
    Board.prototype.findMode = function(mode)
    {
	var index = this.ModesCount - 1;
	while (index >= 0)
	{
	    if (mode == this.Modes[index].name) 
		return index;
	    index--;
	}
	return -1;
    };
    
    Board.prototype.startOperation = function(operation)
    {
	var p = this.power;
	var c = this.current;
	var opower, ocurrent;
	var index = this.findOperation(operation);
	
	if (index < 0) {
	    alert ("Operation not found or no mainboard selected");
	    return;
	}
	this.Operations[index].running++;
	opower = this.computeOperationPower(index);
	ocurrent = this.computeOperationCurrent(index);
	
	p.rail3V += opower.rail3V;
	p.rail5V += opower.rail5V;
	p.rail5VSB += opower.rail5VSB;
	p.rail12V += opower.rail12V;
	p.rail12VCPU += opower.rail12VCPU;
	
	c.rail3V += ocurrent.rail3V;
	c.rail5V += ocurrent.rail5V;
	c.rail5VSB += ocurrent.rail5VSB;
	c.rail12V += ocurrent.rail12V;
	c.rail12VCPU += ocurrent.rail12VCPU;
	
    };
    
    Board.prototype.stopOperation = function(operation)
    {
	var p = this.power;
	var c = this.current;
	var opower, ocurrent;
	var index;
	
	index = this.findOperation(operation);
	
	if (index < 0) {
	    alert ("Operation not found or no mainboard selected");
	    return;
	}
	
	if (this.Operations[index].running == 0) return;
	
	this.Operations[index].running--;
	opower = this.computeOperationPower(index);
	ocurrent = this.computeOperationCurrent(index);
	
	p.rail3V -= opower.rail3V;
	p.rail5V -= opower.rail5V;
	p.rail5VSB -= opower.rail5VSB;
	p.rail12V -= opower.rail12V;
	p.rail12VCPU -= opower.rail12VCPU;
	
	c.rail3V -= ocurrent.rail3V;
	c.rail5V -= ocurrent.rail5V;
	c.rail5VSB -= ocurrent.rail5VSB;
	c.rail12V -= ocurrent.rail12V;
	c.rail12VCPU -= ocurrent.rail12VCPU;
    };
    
    Board.prototype.displayPower = function()
    {
    
	var p = this.power;
	var totalPower = p.rail3V + p.rail5V + p.rail5VSB + p.rail12V + p.rail12VCPU;
	
	document.write("3V Rail: " + p.rail3V);
	document.write("<br>5V Rail: " + p.rail5V);
	document.write("<br>5V SB Rail: " + p.rail5VSB);
	document.write("<br>12V Rail: " + p.rail12V);
	document.write("<br>12VCPU Rail: " + p.rail12VCPU);
	document.write("<br>Total: " + totalPower);
    };
    
    Board.prototype.formdisplayPower = function(form)
    {
	var p, c, index, totalPower, totalCurrent, toperations;
	
	p = this.power;
	c = this.current;
	index = this.OperationsCount - 1 ;
	totalPower = p.rail3V + p.rail5V + p.rail5VSB + p.rail12V + p.rail12VCPU;
	totalCurrent = c.rail3V + c.rail5V + c.rail5VSB + c.rail12V + c.rail12VCPU;
	toperations = "";
	
	form.prail3V.value = p.rail3V.toFixed(2);
	form.prail5V.value = p.rail5V.toFixed(2);
	form.prail5VSB.value = p.rail5VSB.toFixed(2);
	form.prail12V.value = p.rail12V.toFixed(2);
	//form.prail12VCPU.value = p.rail12VCPU.toFixed(2);
	form.ptotal.value = totalPower.toFixed(2);
	
	form.crail3V.value = c.rail3V.toFixed(2);
	form.crail5V.value = c.rail5V.toFixed(2);
	form.crail5VSB.value = c.rail5VSB.toFixed(2);
	form.crail12V.value = c.rail12V.toFixed(2);
	var tot=form.ptotal.value/12
	form.atotal.value=tot.toFixed(2)
	//form.crail12VCPU.value = c.rail12VCPU.toFixed(2);
	//form.ctotal.value = totalCurrent.toFixed(2);
	
	note.innerHTML="";
	adapter.innerHTML="";
	
	if (c.rail3V > 5) {
	    label1.innerHTML = "Current on 3V rail exceed 5 A.";
	}
	
	//Another sample test.
	
					
	var tipMB=document.forms[0].select.value;
	if(tipMB=="none")
	{
		label1.innerHTML="<center><b>Select MotherBoard Type<b></center><br>";
		label10.innerHTML="&nbsp;";
		adapter.innerHTML="";
	}
	else	
	{
	
 		if (tipMB=="e5000"||tipMB=="e800"||tipMB=="v"||tipMB=="cl"||tipMB=="pd10000"||tipMB=="pd6000"){
			if (totalPower<60){
				label1.innerHTML =  "<ul style='list-style-image:url(Power_MB_files/arow.gif)'><li> <a href='http://www.mini-box.com/s.nl/sc.8/category.13/it.A/id.185/.f' target=_blank>PW-60</a>  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; - Efficiency 80%</li><li> <a href='http://www.mini-box.com/s.nl/sc.8/category.13/it.A/id.301/.f' target=_blank>PW-200-V</a> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; - Efficiency 95%</li><li><a href='http://www.mini-box.com/s.nl/sc.8/category.13/it.A/id.417/.f' target=_blank>PicoPSU-120</a> &nbsp;&nbsp; - Efficiency 95%</li></ul>"
							
			}
			else if (totalPower>=60 && totalPower<100){
			label1.innerHTML = " <ul style='list-style-image:url(Power_MB_files/arow.gif)'><li> <a href='http://www.mini-box.com/s.nl/sc.8/category.13/it.A/id.301/.f' target=_blank>PW-200-V</a> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; - Efficiency95%<li><a href='http://www.mini-box.com/s.nl/sc.8/category.13/it.A/id.417/.f' target=_blank>PicoPSU-120</a> -&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  - Efficiency 95%</li></ul>"
							
			}
			else if (totalPower>=100 && totalPower<=120)
			{
			label1.HTML="<ul style='list-style-image:url(Power_MB_files/arow.gif)'><li><a href='http://www.mini-box.com/s.nl/sc.8/category.13/it.A/id.417/.f' target=_blank>PicoPSU-120</a> -     Efficiency 95%</li></ul>";	
			}
			else {
				label1.innerHTML =  "   <ul style='list-style-image:url(Power_MB_files/arow.gif)'><li> <a href='http://www.mini-box.com/s.nl/sc.8/category.13/it.A/id.301/.f'>PW-200-V</a> -     Efficiency 95%</ul>"
				
			}
		}
		
		
		
		else if (tipMB=="e9000"||tipMB=="m2_10000"||tipMB=="m2_12000"||tipMB=="ml8000"||tipMB=="sp13000")
		{
			if (totalPower<70){
				label1.innerHTML =  " <ul style='list-style-image:url(Power_MB_files/arow.gif)'><li><a href='http://www.mini-box.com/s.nl/sc.8/category.13/it.A/id.222/.f'>PW-70</a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-     Efficiency 80%   <li> <a href='http://www.mini-box.com/s.nl/sc.8/category.13/it.A/id.291/.f' target=_blank>PW-80</a> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; - Efficiency 80%<li> <a href='http://www.mini-box.com/s.nl/sc.8/category.13/it.A/id.300/.f' target=_blank>PW-200-M</a> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-  Efficiency 95%</li><li><a href='http://www.mini-box.com/s.nl/sc.8/category.13/it.A/id.417/.f' target=_blank>PicoPSU-120</a> &nbsp;&nbsp;&nbsp;-     Efficiency 95%</li></ul>";
				
			note.innerHTML ="NOTE: PW-60, PW-200-V works as well, but you would need an ATX extension cable";
			}
			else if (totalPower>70 && totalPower<80){
				label1.innerHTML = "   <ul style='list-style-image:url(Power_MB_files/arow.gif)'><li><a href='http://www.mini-box.com/s.nl/sc.8/category.13/it.A/id.291/.f' target=_blank>PW-80</a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-     Efficiency 80%<li> <a href='http://www.mini-box.com/s.nl/sc.8/category.13/it.A/id.300/.f' target=_blank>PW-200-M</a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-     Efficiency 95%<li><a href='http://www.mini-box.com/s.nl/sc.8/category.13/it.A/id.417/.f' target=_blank>PicoPSU-120</a> &nbsp;&nbsp;&nbsp;&nbsp;-     Efficiency 95%</li></ul>"
				note.innerHTML = "NOTE: PW-200-V works as well, but you would need an ATX extension cable";
			}
			else if (totalPower>80 && totalPower<100){
				label1.innerHTML = "    <ul style='list-style-image:url(Power_MB_files/arow.gif)'><li><a href='http://www.mini-box.com/s.nl/sc.8/category.13/it.A/id.300/.f' target=_blank>PW-200-M</a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-     Efficiency 95%<li><a href='http://www.mini-box.com/s.nl/sc.8/category.13/it.A/id.417/.f' target=_blank>PicoPSU-120</a> &nbsp;&nbsp;&nbsp;&nbsp;-     Efficiency 95%</li></ul>" 
				note.innerHTML = "NOTE: PW-60 PW-200-V works as well, but you would need an ATX extension cable";
			}
			else if (totalPower>=100 && totalPower<=120)
			{
			label1.HTML="<ul style='list-style-image:url(Power_MB_files/arow.gif)'><li><a href='http://www.mini-box.com/s.nl/sc.8/category.13/it.A/id.417/.f' target=_blank>PicoPSU-120</a> -     Efficiency 95%</li></ul>";	
			}
			
			else {
				label1.innerHTML = "      <ul style='list-style-image:url(Power_MB_files/arow.gif)'><li> <a href='http://www.mini-box.com/s.nl/sc.8/category.13/it.A/id.300/.f' target=_blank>PW-200-M</a> -     Efficiency 95%</ul>" 
				note.innerHTML = "NOTE: PW-200-V works as well, but you would need an ATX extension cable";
			}
			}
		
		else if (tipMB=="e6000")
		{

			if (totalPower<70){
				label1.innerHTML =  " <ul style='list-style-image:url(Power_MB_files/arow.gif)'><li> <a href='http://www.mini-box.com/s.nl/sc.8/category.13/it.A/id.222/.f' target=_blank>PW-70</a> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;- Efficiency 80%<li><a href='http://www.mini-box.com/s.nl/sc.8/category.13/it.A/id.300/.f' target=_blank>PW-200-M</a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-   Efficiency 95%<li><a href='http://www.mini-box.com/s.nl/sc.8/category.13/it.A/id.417/.f' target=_blank>PicoPSU-120</a>&nbsp;&nbsp;&nbsp; -   Efficiency 95%</li></ul>" ;
			}
			else if (totalPower>70 && totalPower<100){
				label1.innerHTML = "   <ul style='list-style-image:url(Power_MB_files/arow.gif)'><li><a href='http://www.mini-box.com/s.nl/sc.8/category.13/it.A/id.300/.f' target=_blank>PW-200-M</a>-     Efficiency 95%<li><a href='http://www.mini-box.com/s.nl/sc.8/category.13/it.A/id.417/.f' target=_blank>PicoPSU-120</a> -     Efficiency 95%</li></ul>" 
			}
			else if (totalPower>=100 && totalPower<=120)
			{
			label1.HTML="<ul style='list-style-image:url(Power_MB_files/arow.gif)'><li><a href='http://www.mini-box.com/s.nl/sc.8/category.13/it.A/id.417/.f' target=_blank>PicoPSU-120</a> -     Efficiency 95%</li></ul>";	
			}
			else {
				label1.innerHTML = "  <ul style='list-style-image:url(Power_MB_files/arow.gif)'><li> <a href='http://www.mini-box.com/s.nl/sc.8/category.13/it.A/id.300/.f' target=_blank>PW-200-M</a>-     Efficiency 95%</ul>" 
			}
			}
		
		else if (tipMB=="nano")
		{
			label1.innerHTML = "  <ul style='list-style-image:url(Power_MB_files/arow.gif)'><li> <a href='http://www.mini-box.com/s.nl/sc.8/category.13/.f' target=_blank>Nano-PSU</a> -     Efficiency 95%</ul>" 
		}
		else if (tipMB=="intelP4"||tipMB=="intel845")
		{
			label1.innerHTML = "  <ul style='list-style-image:url(Power_MB_files/arow.gif)'> <li><a href='http://www.mini-box.com/s.nl/sc.8/category.13/it.A/id.300/.f' target=_blank>PW-200-M</a> -     Efficiency 95%</ul>" 
		}
		else 
		{
			label1.innerHTML = "  <ul style='list-style-image:url(Power_MB_files/arow.gif)'> <li> <a href='http://www.mini-box.com/s.nl/sc.8/category.13/it.A/id.300/.f' target=_blank>PW-200-M</a> -     Efficiency 95%</ul>" 
		}
	
		
		if (totalPower>0 && totalPower<=90 && form.crail12V.value<2.5)
		{
			label10.innerHTML = "<ul><li><b> For Vehicle use: </b><ul style='list-style-image:url(Power_MB_files/arow.gif)'><li><a 	   href='http://www.mini-box.com/s.nl/sc.8/category.13/it.A/id.356/.f' target=_blank>M1-ATX</a></li><li><a href='http://www.mini-box.com/s.nl/sc.8/category.13/it.A/id.424/.f' target=_blank>M2-ATX</a></li></ul></li></ul>"
		}
		else 
		{
		label10.innerHTML = "<ul><li><b> For Vehicle use: </b><ul style='list-style-image:url(Power_MB_files/arow.gif)'><li><a href='http://www.mini-box.com/s.nl/sc.8/category.13/it.A/id.424/.f' target=_blank>M2-ATX</a></li></ul></ul>"	
		}
	
	
		if (totalPower>0 && totalPower<=60)
		{
			
			adapter.innerHTML = "Power Adapter :  <a href='http://www.mini-box.com/s.nl/sc.8/category.13/it.A/id.193/.f' target=_blank>AC-DC 12V-5A</a> / <a href='http://www.mini-box.com/s.nl/sc.8/category.13/it.A/id.419/.f' target=_blank>AC-DC 12V-6.6A</a> / <a href='http://www.mini-box.com/s.nl/sc.8/category.13/it.A/id.279/.f' target=_blank>AC-DC 12V-9.5A</a>"
		}
		else if (totalPower>60 && totalPower<=80 )
		{
			adapter.innerHTML = "Power Adapter :  <a href='http://www.mini-box.com/s.nl/sc.8/category.13/it.A/id.419/.f' target=_blank>AC-DC 12V-6.6A</a> / <a href='http://www.mini-box.com/s.nl/sc.8/category.13/it.A/id.279/.f' target=_blank>AC-DC 12V-9.5A</a>"
		}
		else
		{
			adapter.innerHTML = "Power Adapter :  <a href='http://www.mini-box.com/s.nl/sc.8/category.13/it.A/id.279/.f' target=_blank>AC-DC 12V-9.5A</a>"
		}
		
	}	
	
	while (index >= 0)
	{
	    //toperations += this.Operations[index].name + ": " + this.Operations[index].running + "\n";
	    index--;
	}
if(window.document.display.Select1.value=="none")
{
return;	
}
else
{
	
	flash.innerHTML=this.Operations[2].running;
	cddrive.innerHTML=this.Operations[4].running;
	drive25.innerHTML=this.Operations[0].running;
	drive35.innerHTML=this.Operations[1].running;
	usb.innerHTML=this.Operations[5].running;
	fan.innerHTML=this.Operations[6].running;
	highVideo.innerHTML=this.Operations[9].running;
	mediumVideo.innerHTML=this.Operations[8].running;
	slimCD.innerHTML=this.Operations[3].running;
	lcd.innerHTML=this.Operations[7].running;
}
};

