var maxRows=6+1;
var i = 0;
var cells = new Array(maxRows);

initialise();

function initialise()

{
for (var i=0; i<maxRows; i++)
{
cells[i] = new row();
}
}

function row()
{
this.SS = 0;
this.HP = 0;
this.SM = 0;
this.RV = 0;
this.PC = 0;
this.SV = 0;
this.RC = 0;
this.SC = 0;
}

function calcRV(hp)
{
if (0 < hp && hp < 50)
{
return 1.5;
}
else if (50 <= hp && hp < 100)
{
return 1.4;
}
else if (hp >= 100)
{
return 1.3;
}
return 1.5;
}

function calcPC(hp)
{
return (hp * calcRV(hp));
}

function calcSV(hp, sm)
{
var sv;

if (0<hp && hp<=30)
{
sv = 7;
}
else if (30<hp && hp<100)
{
sv = 6;
}
else if (100<=hp)
{
sv = 5;
}
//  Star Delta or DOL
if (sm==false)
{
return sv/2;
}
else
{
return sv;
}
}

function calcRC(hp, prev)
{
return (prev + calcPC(hp));
}

function calcSC(hp, prev, sm)
{
return ((calcPC(hp) * calcSV(hp, sm)) + prev);
}

//  Counts the number of rows used (or motors)
function countMotors()
{
var i = 1;
var count=0;

while (i<maxRows && cells[i].HP!="" && cells[i].HP!=0)
{
count++;
i++;
}
return count;
}

//  Prints an error message
function error(emsg)
{
//window.status = "## ERROR: " + emsg + " ##";
alert("ERROR: " + emsg)
setTimeout('clearError()', 9000);
}

//  Clears the status bar
function clearError()
{
window.status = "";
}

function resetAllMotors(form)
{
for (i=1; i<maxRows; i++)
{
cells[i].HP = 0;
cells[i].RC = 0;
cells[i].SC = 0;
}
form.HP6.value = "";
form.HP5.value = "";
form.HP4.value = "";
form.HP3.value = "";
form.HP2.value = "";
form.HP1.value = "";
}

function getValues(form)
{
var i;
for (i=1; i<maxRows; i++)
{
cells[i].HP = eval("form.HP" + i + ".value");
cells[i].SM = eval("form.SM" + i + "[0].checked");
}
}

function evalGenSize(form)
{
var hp;
var phasemult=1.39;
var count=0;

getValues(form);
count = countMotors();
if (count==0)
{
error("Please enter a number in the Motor HP field.");
}
else
{
var rcprev = 0;
var rcmax = 0;
var scmax = 0;
var kvaStart = 0;
var kvaRunning = 0;
var sm = 1;

if (form.phase[1].checked)
{
phasemult = 4.20;
}
else
{
phasemult = 1.39;
}

for (i=1; i<=count; i++)
{
hp = cells[i].HP;
sm = cells[i].SM;
if (hp<0)
{
error("Some HP values are negative.");
}
cells[i].RV = calcRV(hp);
cells[i].PC = calcPC(hp);
cells[i].SV = calcSV(hp, sm);
cells[i].RC = calcRC(hp, rcprev);
cells[i].SC = calcSC(hp, rcprev, sm);
rcprev = cells[i].RC;
if (rcprev > rcmax)
{
rcmax = rcprev;
}
if (cells[i].SC > scmax)
{
scmax = cells[i].SC;
}
}
returnValues(form);
kvaStart = scmax/phasemult/2;
kvaRunning = rcmax/phasemult;
recommended = 1.16*Math.max(kvaStart, kvaRunning);


form.startwith.value = Math.round(kvaStart);
form.runwith.value = Math.round(kvaRunning);
form.recommend.value = Math.round(recommended);
}
}

function returnValues(form)
{
var i = 1;

if (cells[i].SC!=0)
{
form.RV1.value = cells[i].RV;
form.PC1.value = Math.round(cells[i].PC);
form.SV1.value = cells[i].SV;
form.RC1.value = Math.round(cells[i].RC);
form.SC1.value = Math.round(cells[i].SC);
}
i++;
if (cells[i].SC!=0)

{
form.RV2.value = cells[i].RV;
form.PC2.value = Math.round(cells[i].PC);
form.SV2.value = cells[i].SV;
form.RC2.value = Math.round(cells[i].RC);
form.SC2.value = Math.round(cells[i].SC);
}
i++;
if (cells[i].SC!=0)
{
form.RV3.value = cells[i].RV;
form.PC3.value = Math.round(cells[i].PC);
form.SV3.value = cells[i].SV;
form.RC3.value = Math.round(cells[i].RC);
form.SC3.value = Math.round(cells[i].SC);
}
i++;
if (cells[i].SC!=0)
{
form.RV4.value = cells[i].RV;
form.PC4.value = Math.round(cells[i].PC);
form.SV4.value = cells[i].SV;
form.RC4.value = Math.round(cells[i].RC);
form.SC4.value = Math.round(cells[i].SC);
}

i++;
if (cells[i].SC!=0)
{
form.RV5.value = cells[i].RV;
form.PC5.value = Math.round(cells[i].PC);
form.SV5.value = cells[i].SV;
form.RC5.value = Math.round(cells[i].RC);
form.SC5.value = Math.round(cells[i].SC);
}
i++;
if (cells[i].SC!=0)
{
form.RV6.value = cells[i].RV;
form.PC6.value = Math.round(cells[i].PC);
form.SV6.value = cells[i].SV;
form.RC6.value = Math.round(cells[i].RC);
form.SC6.value = Math.round(cells[i].SC);
}
i++;
}

