var activeLine = false;
var activeProduct = false;
var activeElement = false;
var limit = 10;
var elements = 0;

function showElement(l,j,i)
{
var shw, opt, sel;

if(activeLine == l && activeProduct==j && activeElement == i)
{
  hideElement();
  return;
}
hideElement();

shw = document.getElementById('g_ln'+l+'_p'+j+'_shw'+i);
opt = document.getElementById('g_ln'+l+'_p'+j+'_opt'+i);
sel = document.getElementById('g_ln'+l+'_p'+j+'_sel'+i);

activeLine = l;
activeProduct = j;
activeElement = i;
shw.style.display='block';
opt.style.borderBottom='none';
opt.style.backgroundColor='#d1d0cc';
}

function hideElement()
{
var shw, opt;

if(!activeElement || !activeProduct || !activeLine) return;

shw = document.getElementById('g_ln'+activeLine+'_p'+activeProduct+'_shw'+activeElement);
opt = document.getElementById('g_ln'+activeLine+'_p'+activeProduct+'_opt'+activeElement);

shw.style.display='none';
opt.style.borderBottom='1px solid black';
opt.style.backgroundColor='#ffffff';

activeLine = false;
activeProduct = false;
activeElement = false;
}

function setSelection(l,j,i,v,p,n)
{
var sel;

hideElement();

sel = document.getElementById('g_ln'+l+'_p'+j+'_sel'+i);
document.getElementById('g_ln'+l+'_p'+j+'_drp'+i+'-'+sel.value+'-a').style.color='#000000';
document.getElementById('g_ln'+l+'_p'+j+'_drp'+i+'-'+sel.value+'-b').style.color='#000000';
if(document.getElementById('g_ln'+l+'_p'+j+'_drp'+i+'-'+sel.value+'-c'))
  document.getElementById('g_ln'+l+'_p'+j+'_drp'+i+'-'+sel.value+'-c').style.color='#000000';
sel.value=v;

updateOption(l,j,i);
if(n)
  updatePrices(l,j,p);
}

function setProductSelection(l,j,a)
{
var sel;

hideElement();

if(j != a)
{
  if(j) document.getElementById('g_ln'+l+'_p'+j).style.display = 'none';
  document.getElementById('g_ln'+l+'_p'+a).style.display = 'block';
  if(j) document.getElementById('g_ln'+l+'_p'+a+'_quantity').value = document.getElementById('g_ln'+l+'_p'+j+'_quantity').value;
  if(j) document.getElementById('g_ln'+l+'_p'+j+'_quantity').value = 0;
  if(j) document.getElementById('g_ln'+l+'_p'+j+'_floatTotal').value = 0;
  resetAll(l,a);
}
}

function formatAsMoney(mnt)
{
mnt -= 0;
mnt = (Math.round(mnt*100))/100;
return (mnt == Math.floor(mnt)) ? mnt + '.00' 
          : ( (mnt*10 == Math.floor(mnt*10)) ? 
                   mnt + '0' : mnt);
}

function setElementText(obj, t)
{
var text = document.createTextNode(t);
while(obj.firstChild) obj.removeChild(obj.firstChild);
obj.appendChild(text);
}

function clearElement(obj) {
while(obj.firstChild) obj.removeChild(obj.firstChild);
}

function updateOption(l,j,i)
{
var t, sel, opt;

sel = document.getElementById('g_ln'+l+'_p'+j+'_sel'+i);
opt = document.getElementById('g_ln'+l+'_p'+j+'_opt'+i)

t = document.createTextNode(optionsLetters[sel.value]);

clearElement(opt);
opt.appendChild(t);

document.getElementById('g_ln'+l+'_p'+j+'_drp'+i+'-'+sel.value+'-a').style.color='#f00000';
document.getElementById('g_ln'+l+'_p'+j+'_drp'+i+'-'+sel.value+'-b').style.color='#f00000';
if(document.getElementById('g_ln'+l+'_p'+j+'_drp'+i+'-'+sel.value+'-c'))
  document.getElementById('g_ln'+l+'_p'+j+'_drp'+i+'-'+sel.value+'-c').style.color='#f00000';
}

function updatePrices(l,j,b)
{
var o,i,s;
o = 0.00;

i = 2;

while(true)
{
  s = document.getElementById('g_ln'+l+'_p'+j+'_sel'+i);
  if(!s) break;
  o += optionsValues[s.value];
  i++;
}

if(o)
{
  setElementText(document.getElementById('g_ln'+l+'_p'+j+'_optionPrice'),' + $'+formatAsMoney(o));
  setElementText(document.getElementById('g_ln'+l+'_p'+j+'_totalPrice'), ' = $'+formatAsMoney(o+b));
}
else
{
  setElementText(document.getElementById('g_ln'+l+'_p'+j+'_optionPrice'),' ');
  setElementText(document.getElementById('g_ln'+l+'_p'+j+'_totalPrice'), ' ');
}

document.getElementById('g_ln'+l+'_p'+j+'_floatPrice').value=o+b;
updateExtTotal(l,j);
}

function updateExtTotal(l,j)
{
var p,i;

i = parseInt(document.getElementById('g_ln'+l+'_p'+j+'_quantity').value, 10);
if(isNaN(i))
  i = 0;

p = parseFloat(document.getElementById('g_ln'+l+'_p'+j+'_floatPrice').value) * i;

document.getElementById('g_ln'+l+'_p'+j+'_floatTotal').value=p;

setElementText(document.getElementById('g_ln'+l+'_p'+j+'_extPrice'), '$'+formatAsMoney(p));
}

function removeEntry(l,j)
{
document.getElementById('g_ln'+l+'_p'+j+'_quantity').value = 0;
updateExtTotal(l,j);
removeElement(l);
}

function addElement()
{
elements++;
resetAll(elements,1);
document.getElementById('g_item'+elements).style.display='block';
}