/****************************************************/
/*  Title      : JavaScript Calculator              */
/*  Course     : CPAN542 Client Server              */
/*  Date       : Oct 5, 2002                        */
/*                                                  */
/*  Programmer : In Chul Koo                        */
/*  E-mail     : ickoo@rogers.com                   */
/*  Web Address: members.rogers.com/ickoo           */
/*               sparcy.humber.org/~knch0013        */
/*                                                  */
/*  Purpose : to select a number base mode          */
/*          : to select an angle mode               */
/*          : to turn on/off butttons' sound        */
/****************************************************/
var currMode;
var drgValue;
var sound_mode;

/*****************************/
/*         powerOff          */
/*****************************/
function powerOff(cur)
{ cur.inputWindow.focus();
  if(window.name == 'popupWin')
    window.close()
  else
    history.back(-1);
}

/*****************************/
/*        selectDrg          */
/*****************************/
function selectDrg(cur)
{ drgValue++;
  if(drgValue > 3)
    drgValue = 1;
  switch(drgValue)
  { case 1: cur.bt_drg.value = "deg";
            break;
    case 2: cur.bt_drg.value = "rad";
            break;
    case 3: cur.bt_drg.value = "gra";
            break;
    default:
  }

  cur.inputWindow.value = "Num Base: " + currMode
                      + "\nAngle   : " + cur.bt_drg.value
                      + "\nSound   : " + sound_mode;
  formExecuted = true;
  playSound();
  cur.inputWindow.focus();
}

/*****************************/
/*     changeSoundMode       */
/*****************************/
function changeSoundMode(cur)
{ if(sound_mode == "on")
  { sound_mode = 'off';
    cur.bt_sound.style.color = "#666666"; 
  }
  else
  { sound_mode = "on"
    cur.bt_sound.style.color = "#EECCAA"; 
  }
  if(cur.inputWindow.value.match("Num Base:"))
  { cur.inputWindow.value = "Num Base: " + currMode
                        + "\nAngle   : " + cur.bt_drg.value
                        + "\nSound   : " + sound_mode;
  }
  playSound();
  cur.inputWindow.focus();
}

/*****************************/
/*       playSound           */
/*****************************/
function playSound()
{ if(sound_mode == 'on')
    self.document.bt_sound.play();
}

/*****************************/
/*       selectMode          */
/*****************************/
function selectMode(cur, mode)
{
  if(currMode != mode)
  { var i;
    for(i=1; i<5; i++)
    { cur[i].style.background = "#5082B3";cur[i].style.color = "#AAAAAA";}
    disableButton(cur, 5, true)
    for(i=7; i<13; i++)
    { disableButton(cur, i, true)}
    for(i=13; i<17; i++)
    { disableButton(cur, i, true) }
    for(i=18; i<26; i++)
    { disableButton(cur, i, true) }
    disableButton(cur, 28, true)
    disableButton(cur, 29, true)
    disableButton(cur, 30, true)
    disableButton(cur, 33, true)
    disableButton(cur, 34, true)
    disableButton(cur, 35, true)
    disableButton(cur, 39, true)
    disableButton(cur, 40, true)
    disableButton(cur, 44, true)
    disableButton(cur, 45, true)
    switch(mode)
    { case 'hex': cur[1].style.background = "#5082F3";cur[1].style.color = "#DDDDFF";
                  for(i=7; i<13; i++)
                  { cur[i].disabled=false;cur[i].style.background="#BB7700";cur[i].style.border="1 outset #555555";cur[i].style.fontWeight="bold";}
                  disableButton(cur, 28, false)
                  disableButton(cur, 29, false)
                  disableButton(cur, 30, false)
                  disableButton(cur, 33, false)
                  disableButton(cur, 34, false)
                  disableButton(cur, 35, false)
                  disableButton(cur, 39, false)
                  disableButton(cur, 40, false)
                  break;
    
      case 'dec': cur[2].style.background = "#5082F3";cur[2].style.color = "#DDDDFF";
                  i=5;
                  cur[i].disabled=false;cur[i].style.background="#509283";cur[i].style.border="1 outset #555555";cur[i].style.fontWeight="bold";
                  for(i=13; i<17; i++)
                  { cur[i].disabled=false;cur[i].style.background="#334455";cur[i].style.border="1 outset #7C7C7C";cur[i].style.fontWeight="bold"; }
                  for(i=18; i<26; i++)
                  { cur[i].disabled=false;cur[i].style.background="#334455";cur[i].style.border="1 outset #7C7C7C";cur[i].style.fontWeight="bold"; }
                  disableButton(cur, 28, false)
                  disableButton(cur, 29, false)
                  disableButton(cur, 30, false)
                  disableButton(cur, 33, false)
                  disableButton(cur, 34, false)
                  disableButton(cur, 35, false)
                  disableButton(cur, 39, false)
                  disableButton(cur, 40, false)
                  disableButton(cur, 44, false)
                  disableButton(cur, 45, false)
                  break;

      case 'oct': cur[3].style.background = "#5082F3";cur[3].style.color = "#DDDDFF";
                  disableButton(cur, 28, false)
                  disableButton(cur, 33, false)
                  disableButton(cur, 34, false)
                  disableButton(cur, 35, false)
                  disableButton(cur, 39, false)
                  disableButton(cur, 40, false)
                  break;

      case 'bin': cur[4].style.background = "#5082F3";cur[4].style.color = "#DDDDFF";
                  break;
      default :
    }
  }
  // convert a vlaue to selected number base mode
  if(currMode != mode && !formExecuted && cur.inputWindow.value != "")
  { var origin = getBaseNumber(currMode);
    var dest = getBaseNumber(mode);
    var resultsCurr = calculateFormula(cur);
    var inputVal;
    if(currMode == 'dec')
      inputVal = "" + Math.round(eval(resultsCurr));
    else
      inputVal = resultsCurr;
    var resultsConv = "" + convertNumber(inputVal, origin, dest);
    var strLen = resultsConv.length;
    for(i=strLen; i<24; i++)
    { var temp = " " + resultsConv;
      resultsConv = temp;
    }
    cur.inputWindow.value = currMode + ":" + resultsCurr + "\n" + resultsConv;
    lastResults = resultsConv;
  }
  else
  { lastResults = 0;
    cur.inputWindow.value = "Num Base: " + mode
                        + "\nAngle   : " + cur.bt_drg.value
                        + "\nSound   : " + sound_mode;
  }
  currMode = mode;
  formExecuted = true;
  playSound();
  cur.inputWindow.focus();
}

/*****************************/
/*      disableButton       */
/*****************************/
function disableButton(cur, num, disable)
{ var font_Weight;
  var font_color;
  if(disable)
  { font_Weight="normal";
    font_color="#C0C0C0"
  }
  else
  { font_Weight='bold';
    font_color="#767293"
  }
  cur[num].disabled=disable;cur[num].style.background=font_color;cur[num].style.border="1 outset #555555";cur[num].style.fontWeight=font_Weight;
}
