
  //Declare the constants used for browser checks in code.
  var FI_IS_NS4   = (document.layers) ? true : false;
  var FI_IS_IE    = (document.all) ? true : false;
  var FI_IS_NS6   = (!document.all && document.getElementById) ? true : false;

  //Global Constants.
  var FI_LAYER_PREFIX   = "FI_obj"
  var FI_IMAGE_SUFFIX   = "Image"
  var FI_MINIMIZE_SPEED = -305  // lower the number the faster. Must be negative.
  var FI_MAXIMIZE_SPEED = 305   // higher the number the faster. Must be positive.
  //Global Vars.
  var FI_intDivSpaceY = 0;
  //These get set in fcnSetNavPosition() depending on screensize, divcols.
  var FI_intDivStartX;
  var FI_intDivStartY;
  //Create Movable Content Div Array.
  var FI_arrDivArray = new Array();
  var FI_intDivIndex = 0;
  //Move Time out.
  var FI_intMoveTimeOut;

  //Increase the speed.
  if (FI_IS_NS6 == true)
  {
    FI_MINIMIZE_SPEED = -340
    FI_MAXIMIZE_SPEED = 340
  }

//Set up the layers.
function FI_fcnStartItUp()
{
  var intCount;
  var intDivTopX;
  var intDivTopY;
  var intXPrevious;

  FI_intDivStartX = FI_fcnFindX("StartingPlaceImage") + 10;
  FI_intDivStartY = FI_fcnFindY("StartingPlaceImage") + 10;

  for (intCount = 0; intCount < FI_arrDivArray.length; intCount++)
  {
    //Write out div positioning of movable content.
    //First Div.
    if (intCount == 0)
    {
      eval("FI_fcnMoveToHide('"+ FI_arrDivArray[intCount] +"', FI_intDivStartX, FI_intDivStartY);");
    }
    //Additional divs.
    else
    {
      eval("FI_fcnMoveToHide('"+ FI_arrDivArray[intCount] +"', FI_fcnFindX('"+ FI_arrDivArray[intCount-1] + FI_IMAGE_SUFFIX +"'), FI_fcnFindY('"+ FI_arrDivArray[intCount-1] + FI_IMAGE_SUFFIX +"'));");
    }
  }

  //Hide the rest of the layers.
  FI_fcnHideLayer(FI_fcnGetLayer('FI_ScoreResults'));
  FI_fcnHideLayer(FI_fcnGetLayer('FI_ResultsTop_740'));
  FI_fcnHideLayer(FI_fcnGetLayer('FI_ResultsBottom_740'));
  FI_fcnHideLayer(FI_fcnGetLayer('FI_ResultsTop_699'));
  FI_fcnHideLayer(FI_fcnGetLayer('FI_ResultsBottom_699'));
  FI_fcnHideLayer(FI_fcnGetLayer('FI_ResultsTop_679'));
  FI_fcnHideLayer(FI_fcnGetLayer('FI_ResultsBottom_679'));
  FI_fcnHideLayer(FI_fcnGetLayer('FI_ResultsTop_620'));
  FI_fcnHideLayer(FI_fcnGetLayer('FI_ResultsBottom_620'));
  FI_fcnHideLayer(FI_fcnGetLayer('FI_ResultsTop_560'));
  FI_fcnHideLayer(FI_fcnGetLayer('FI_ResultsBottom_560'));
  FI_fcnHideLayer(FI_fcnGetLayer('FI_ResultsTop_300'));
  FI_fcnHideLayer(FI_fcnGetLayer('FI_ResultsBottom_300'));
  FI_fcnHideLayer(FI_fcnGetLayer('FI_Results_Graph_Back'));
  FI_fcnHideLayer(FI_fcnGetLayer('FI_Results_Graph_Front'));
  FI_fcnHideLayer(FI_fcnGetLayer('FI_Results_Graph_Bead'));
  FI_fcnHideLayer(FI_fcnGetLayer('FI_Results_Graph_Range'));

  //Start up the questions.
  FI_fcnStartQuestionsUp();
}

function FI_fcnTimedMoveTo(a_strStartDiv, a_strMoveDir)
{
  var objDivNext;

  var strDivNext;
  var strStartDivRefImage;
  var strMoveCommands;

  var blnIsLastDiv = false;
  var blnMyFlag;

  var intCount;
  var intCount2;
  var intDivPosition;
  var intMoveAmount;
  var intStartDivRefImageY;
  var intFinalPos;
  var intNextPos;

  //Find div position within the div array.
  for (intCount = 0; intCount < FI_arrDivArray.length; intCount++)
  {
    if (a_strStartDiv == FI_arrDivArray[intCount])
    {
      //Check if a_strStartDiv is last div in array.
      if ((intCount + 1) == FI_arrDivArray.length)
      {
        blnIsLastDiv = true;
      }
      intDivPosition = intCount + 1;
      strDivNext = FI_arrDivArray[intCount + 1];
      break;
    }
  }
  //Repositioning code.
  //If last div, repositioning code does not need to execute.
  if (!blnIsLastDiv)
  {
    objDivNext = FI_fcnGetLayer(strDivNext);

    if (a_strMoveDir == "up")
    {
      intMoveAmount = FI_MINIMIZE_SPEED;
      strStartDivRefImage = FI_arrDivArray[intCount-1] + FI_IMAGE_SUFFIX;
    }
    else
    {
      intMoveAmount = FI_MAXIMIZE_SPEED;
      strStartDivRefImage = FI_arrDivArray[intCount] + FI_IMAGE_SUFFIX;
    }

    intStartDivRefImageY = FI_fcnFindY(strStartDivRefImage);
    intFinalPos          = intStartDivRefImageY + FI_intDivSpaceY;
    intNextPos           = FI_fcnGetTop(objDivNext) + intMoveAmount;

    strMoveCommands = "";

    if (((a_strMoveDir == "up") && (intNextPos < intFinalPos)) || ((a_strMoveDir == "down") && (intNextPos > intFinalPos)))
    {
      strMoveCommands = strMoveCommands + "FI_fcnMoveLayerTo(" + FI_LAYER_PREFIX + strDivNext +", FI_intDivStartX, FI_fcnFindY('"+ strStartDivRefImage +"') + FI_intDivSpaceY);";
    }
    else
    {
      strMoveCommands = strMoveCommands + "FI_fcnMoveLayerBy(" + FI_LAYER_PREFIX + strDivNext +", 0, intMoveAmount);";
    }

    //Check each div after the altered one, and move appropriately.
    for (intCount = (intDivPosition + 1); intCount < FI_arrDivArray.length; intCount++)
    {
      // check for first previous visible div, and set that as the reference div
      for (intCount2 = 1; intCount2 < FI_arrDivArray.length; intCount2++)
      {
        blnMyFlag = eval(FI_arrDivArray[intCount-intCount2] + "vis");
        if (blnMyFlag)
        {
          var divref = FI_arrDivArray[intCount-intCount2];
          break
        }
      }

      //Now move div under reference div.
      strMoveCommands = strMoveCommands + "FI_fcnMoveLayerTo(" + FI_LAYER_PREFIX + 
                        FI_arrDivArray[intCount] +", FI_intDivStartX, FI_fcnFindY('"+ divref + 
                        FI_IMAGE_SUFFIX +"'));";
    }

    eval(strMoveCommands);
    FI_intMoveTimeOut = eval("setTimeout('FI_fcnTimedMoveTo("+"\""+ a_strStartDiv + "\",\"" + 
                             a_strMoveDir +"\"" +");', 1)");

    if (a_strMoveDir == "up")
    {
      if ((FI_fcnGetTop(objDivNext)) <= (FI_fcnFindY(strStartDivRefImage)) + FI_intDivSpaceY)
      {
        clearTimeout(FI_intMoveTimeOut);
      }
    }
    else
    {
      if ((FI_fcnGetTop(objDivNext)) >= (FI_fcnFindY(strStartDivRefImage)) + FI_intDivSpaceY)
      {
        clearTimeout(FI_intMoveTimeOut);
      }
    }
  }

  //Position the Content at the end of the questions.
  if (a_strStartDiv == 'FI_Question_1a')
    FI_fcnMoveToShow('FI_Content', FI_intDivStartX, 
                     FI_fcnFindY(FI_arrDivArray[2] + FI_IMAGE_SUFFIX));
  else if ((a_strStartDiv == 'FI_Question_7a') || (a_strStartDiv == 'FI_Question_6Mid'))
    FI_fcnMoveToShow('FI_Content', FI_intDivStartX, 
                     FI_fcnFindY(FI_arrDivArray[11] + FI_IMAGE_SUFFIX));
  else if ((a_strStartDiv == 'FI_Question_8a') || (a_strStartDiv == 'FI_Question_9Mid') ||
           (a_strStartDiv == 'FI_Question_10a'))
    FI_fcnMoveToShow('FI_Content', FI_intDivStartX, 
                     FI_fcnFindY(FI_arrDivArray[19] + FI_IMAGE_SUFFIX));
}

// Switch div visibility and reposition following divs
function FI_fcnMinMaxDiv(a_strLayerName)
{
  var blnFlag
  // Get div visiblity
  blnFlag = eval(a_strLayerName + "vis");

  // div is visible
  if (blnFlag)
  {
    eval("FI_fcnHideLayer(" + FI_LAYER_PREFIX + a_strLayerName + ")");
    eval(a_strLayerName + "vis = 0");
    FI_fcnTimedMoveTo(a_strLayerName, 'up');
  }
  // div is hidden
  else
  {
    eval("FI_fcnShowLayer(" + FI_LAYER_PREFIX + a_strLayerName + ")");
    eval(a_strLayerName + "vis = 1");
    FI_fcnTimedMoveTo(a_strLayerName, 'down');
  }
}

//Loads div names into array.
function FI_fcnLoadDiv(a_strDivName)
{
  FI_arrDivArray[FI_intDivIndex] = a_strDivName;
  FI_intDivIndex++;
}

//Lists all values in array.
function FI_fcnListDivs()
{
  var strDivList;
  var intCount;

  strDivList = "There are " + FI_arrDivArray.length + " divs in the array...\n";
  for (intCount = 0; intCount < FI_arrDivArray.length; intCount++)
  {
    strDivList = strDivList + "\n"+ FI_arrDivArray[intCount] +"\n";
  }
  alert(strDivList);
}

