/*
** initialize
*/
$(document).observe("dom:loaded", function(event) {
  setStage();
  analogButtons();
  standardButtons();
  homeButtons();
});

function setStage() 
{
  setAlignments($('touchscreen'));
  
  $('screen').insert("<div id='standard_information'></div>");
  $('screen').insert('<div id="home_screen"></div>');
  setStandardInformation();
  speedCheck();
  rpmCheck();
  depthCheck();
}

/*
** setup speed, rpm, and depth of standard top and bottom menu areas
*/
function setStandardInformation() 
{
  $('standard_information').insert("<div id='speed' class='WaukeganLDOExtendedBlack'></div>");
  $('standard_information').insert("<div id='rpm' class='WaukeganLDOExtendedBlack'></div>");
  $('standard_information').insert("<div id='depth' class='WaukeganLDOExtendedBlack'></div>");
  
  $('speed').setStyle({
    margin: '24px 0 0 88px',
    fontSize: '34px',
    color: '#ffffff',
    position: 'absolute'
  });
  $('rpm').setStyle({
    margin: '24px 0 0 230px',
    fontSize: '34px',
    color: '#ffffff',
    position: 'absolute'
  });
  $('depth').setStyle({
    margin: '242px 0 0 275px',
    fontSize: '34px',
    color: '#ffffff',
    position: 'absolute'
  });
  
  standard_speed.type_object = $('speed');
  standard_speed.speed_initial();
  rpm.type_object = $('rpm');
  rpm.rpm_initial();
  depth.type_object = $('depth');
  depth.depth_initial();
  
  try {runStandardSpeed();} catch(err) {}
  try {runRpm();} catch(err) {}
  try {runDepth();} catch(err) {}
}

/*
** align veiw on stage
*/
function setAlignments(element) 
{
  var viewport = document.viewport.getDimensions();
  var viewportWidth = viewport.width;
  var viewportHeight = viewport.height;
  var elementWidth = element.getWidth();
  var elementHeight = element.getHeight();
  
  positionStyle();
  
  window.onresize = function(event) {
    viewport = document.viewport.getDimensions();
    viewportWidth = viewport.width;
    viewportHeight = viewport.height;
    
    positionStyle();
  };
  
  function positionStyle()
  {
    element.setStyle({
      left: ""+ (viewportWidth/2 - elementWidth/2) +"px",
      top: ""+ (viewportHeight/2 - elementHeight/2) +"px"
    });
  }
}

/*
** setup current screen
*/
function setScreen(the_screen) 
{
  current_screen = the_screen;
  switch(current_screen) 
  {
    case 'home':
      resetScreenClass();
      $('screen').insert("<div id='standard_information'></div>");
      $('screen').insert("<div id='home_screen'></div>");
      standardButtons();
      homeButtons();
      setStandardInformation();
      break;
    case 'audio':
      resetScreenClass();
      $('screen').addClassName('audio_screen');
      break;
    case 'speedset':
      resetScreenClass();
      setupSpeedsetScreen();
      break;
    case 'gauges':
      resetScreenClass();
      //$('screen').insert("<div id='standard_information'></div>");
      //gauge_canvas();
      $('screen').addClassName('gauges_screen');
      setupGaugeData();
      //setStandardInformation();
      break;
    case 'depth':
      resetScreenClass();
      $('screen').insert("<div id='standard_information'></div>");
      $('screen').addClassName('depth_screen');
      standardButtons();
      setStandardInformation();
      break;
    case 'profiles':
      resetScreenClass();
      profileButtons();
      break;
    case 'lights':
      resetScreenClass();
      $('screen').insert("<div id='standard_information'></div>");
      standardButtons();
      lightsButtons();
      setStandardInformation();
      break;
    case 'switches':
      resetScreenClass();
      $('screen').insert("<div id='standard_information'></div>");
      standardButtons();
      switchesButtons();
      setStandardInformation();
      break;
    case 'ballast':
      resetScreenClass();
      $('screen').insert("<div id='standard_information'></div>");
      standardButtons();
      ballastButtons();
      setStandardInformation();
      break;
    case 'setup':
      resetScreenClass();
      setupButtons();
      break;
    default:
      resetScreenClass();
      $('screen').insert("<div id='standard_information'></div>");
      $('screen').insert("<div id='home_screen'></div>");
      standardButtons();
      homeButtons();
      setStandardInformation();
  }
}

function setupSpeedsetScreen()
{
  $('screen').addClassName('speedset_screen');
  
  $('screen').insert("<div class='status speedset WaukeganLDOExtendedBlack'></div>");
  
  $('screen').insert("<div class='speed set WaukeganLDOExtendedBlack'></div>");
  set_speed.type_object = $('screen').select('.speed.set')[0];
  set_speed.speed_initial();
  
  $('screen').insert("<div class='speed actual WaukeganLDOExtendedBlack'></div>");
  actual_speed.type_object = $('screen').select('.speed.actual')[0];
  actual_speed.speed = standard_speed.speed;
  actual_speed.speed_initial();
  
  $('buttons').insert("<div class='button speedset set'></div>");
  $('buttons').insert("<div class='button speedset save_as_profile'></div>");
  
  speedsetButtons();
  
  if(speedset_status == "on") 
  {
    $('screen').select('.status.speedset')[0].update("Speed On");
  } 
  else
  {
    $('screen').select('.status.speedset')[0].update("Speed Off");
  }
  
  if(speedset_activated)
  {
    speedsetActivation('on');
  }
}

function setupGaugeData()
{
  $('screen').insert("<div class='gauge speed WaukeganLDOExtendedBlack'></div>");
  $('screen').insert("<div class='gauge depth WaukeganLDOExtendedBlack'></div>");
  gauge_speed.type_object = $('screen').select('.gauge.speed')[0];
  gauge_speed.speed = standard_speed.speed;
  gauge_speed.speed_initial();
  gauge_depth.type_object = $('screen').select('.gauge.depth')[0];
  gauge_depth.depth_initial();
}

/*
** clear view so it can be replaced with new one
*/
function resetScreenClass()
{
  if($('standard_buttons_top'))
  {
    $('standard_buttons_top').childElements().each(function(element) {
      element.remove();
    });
  }
  if($('standard_buttons_bottom'))
  {
    $('standard_buttons_bottom').childElements().each(function(element) {
      element.remove();
    });
  }
  $('buttons').childElements().each(function(element) {
    element.remove();
  });
  $('screen').childElements().each(function(element) {
    element.remove();
  });
  
  if($('standard_information'))
  {
    $('standard_information').remove();
  }
  if($('standard_info'))
  {
    $('standard_info').remove();
  }
  
  if($('home_screen'))
  {
    $('home_screen').remove();
  }
  else if($('screen').hasClassName('audio_screen'))
  {
    $('screen').removeClassName('audio_screen');
  }
  else if($('screen').hasClassName('speedset_screen')) 
  {
    $('screen').removeClassName('speedset_screen');
  }
  else if($('screen').hasClassName('gauges_screen'))
  {
    $('screen').removeClassName('gauges_screen');
  }
  else if($('screen').hasClassName('depth_screen')) 
  {
    $('screen').removeClassName('depth_screen');
  }
  
  //if($('screen').select('canvas'))
  //{
  //  $('screen').select('canvas').each(function(element) {
  //    element.remove();
  //  });
  //}
}
