/////////////////////////////////////////////////////////
//						       //
//  This functions rotats the menu and open new pages  //
//  reloadOrder()				       //
//  move_start(mouseon)				       //
//  next(goto, times)				       //
//  move(neworder_str, pass, goto, times)	       //
//						       //
/////////////////////////////////////////////////////////


// This function recreates the latest order of the pages, so the user 
// doesn't need to start all over on the page when he or she reloads
function reloadOrder()
{
  var positionT = new Array(141, 56, 0, 56, 141);
  var positionL = new Array(-229, -178, 0, 406, 507);
  var size = new Array(104, 154, 383, 154, 104);
  var zindex = new Array(5, 10, 15, 10, 5);
  
  // Here we get the latest pageOrder
  var positions = document.getElementById("positions").value.split(",");
  for(var j_page = 0; j_page < positions.length; j_page++)
  {
    // And now we give the the latest values for the different pages
    document.getElementById(positions[j_page]+"_link").style.zindex = zindex[j_page];
    document.getElementById(positions[j_page]+"_link").style.top = positionT[j_page]+"px";
    document.getElementById(positions[j_page]+"_link").style.left = positionL[j_page]+"px";
    document.getElementById(positions[j_page]+"_img").style.height = size[j_page]+"px";
    document.getElementById(positions[j_page]+"_img").style.width = size[j_page]+"px";

    if(j_page == 2)
    {
      document.getElementById(positions[j_page]).style.visibility = "visible";
      document.getElementById(positions[j_page]).style.position = "relative";
      document.getElementById(positions[j_page]+"_link").style.visibility = "hidden";
    }
    else
    {
      document.getElementById(positions[j_page]).style.visibility = "hidden";
      document.getElementById(positions[j_page]).style.position = "absolute";
      document.getElementById(positions[j_page]+"_link").style.visibility = "visible";
    }
  }
}

// When you send a page-name to this function it will find out how many pages to rotate
// And in which  diraction. Then it starts the function next which start to rotate the pages.
function move_start(mouseon)
{
  var positions = document.getElementById("positions").value.split(",");

  for(var j_move = 0; j_move < positions.length; j_move++)
  {
    if(positions[j_move] == mouseon)
    {
      if(j_move < 1)
      {
        next("previous", 2);
      }
      else if(j_move < 2)
      {
        next("previous", 1);
      }
      else if(j_move > 3)
      {
        next("next", 2);
      }
      else if(j_move > 2)
      {
        next("next", 1);
      }
      break;
    }
  }
}

var menuIsMoving = "no";
var nrOfMoves = 11;

// This function starts the rotation animation
function next(goto, times)
{
  // menuIsMoving is a control variable so the user cant call up on this function if the menu all ready is in motion
  if(menuIsMoving == "no")
  {
    menuIsMoving = "yes";
    
    var positions = document.getElementById("positions").value.split(",");
    if(positions[2] == "myprchecker")
    {
      gerPageRankBars();
    }
    
    // We finde out the new page-order
    if(goto == "next")
    {
      var neworder = new Array(positions[1],positions[2],positions[3],positions[4],positions[0]);
    }
    else
    {
      var neworder = new Array(positions[4],positions[0],positions[1],positions[2],positions[3]);
    }
    var positionT = new Array(141, 56, 0, 56, 141);
    var positionL = new Array(-229, -178, 0, 406, 507);
    var size = new Array(104, 154, 383, 154, 104);
    
    document.getElementById(positions[2]).style.visibility = "hidden";
    document.getElementById(positions[2]).style.position = "absolute";
    document.getElementById(positions[2]+"_link").style.visibility = "visible";
    
    // here is the first move
    for(var j_move = 0; j_move < neworder.length; j_move++)
    {
      if(goto == "next")
      {
        var j_org = j_move + 1;
        if(j_org > neworder.length-1)
        {
          j_org = 0;
        }
      }
      else
      {
        var j_org = j_move - 1;
        if(j_org < 0)
        {
          j_org = neworder.length-1;
        }
      }
  
      document.getElementById(neworder[j_move]+"_link").style.top = positionT[j_org] - ((positionT[j_org] - positionT[j_move]) / nrOfMoves)+"px";
      document.getElementById(neworder[j_move]+"_link").style.left = positionL[j_org] - ((positionL[j_org] - positionL[j_move]) / nrOfMoves)+"px";
      document.getElementById(neworder[j_move]+"_img").style.height = size[j_org] - ((size[j_org] - size[j_move]) / nrOfMoves)+"px";
      document.getElementById(neworder[j_move]+"_img").style.width = size[j_org] - ((size[j_org] - size[j_move]) / nrOfMoves)+"px";
    }
    
    // We us setTimeout to go to the next() step in the animation
    var neworder_str = neworder.join(",");
    setTimeout ("move('"+neworder_str+"', 1, '"+goto+"', "+times+");", 20);
    
    document.getElementById("positions").value = neworder_str;
  }
}

// This is the animation motor. if the function next() starts the animation, then this compleat it
function move(neworder_str, pass, goto, times)
{
  var neworder = neworder_str.split(",");
  var positionT = new Array(141, 56, 0, 56, 141);
  var positionL = new Array(-229, -178, 0, 406, 507);
  var size = new Array(104, 154, 383, 154, 104);
  var zindex = new Array(5, 10, 15, 10, 5);
  
  // Here we move all the layers one more step
  for(var j_move = 0; j_move < neworder.length; j_move++)
  {
    var y = document.getElementById(neworder[j_move]+"_link").style.top.replace(/px/i, "");
    var x = document.getElementById(neworder[j_move]+"_link").style.left.replace(/px/i, "");
    var sizeXY = document.getElementById(neworder[j_move]+"_img").style.height.replace(/px/i, "");
    
    document.getElementById(neworder[j_move]+"_link").style.top = y - ((y - positionT[j_move]) / (nrOfMoves - pass))+"px";
    document.getElementById(neworder[j_move]+"_link").style.left = x - ((x - positionL[j_move]) / (nrOfMoves - pass))+"px";
    document.getElementById(neworder[j_move]+"_img").style.height = sizeXY - ((sizeXY - size[j_move]) / (nrOfMoves - pass))+"px";
    document.getElementById(neworder[j_move]+"_img").style.width = sizeXY - ((sizeXY - size[j_move]) / (nrOfMoves - pass))+"px";
    
    document.getElementById(neworder[j_move]+"_link").style.zIndex = zindex[j_move];
  }
  pass++;
  
  if(pass < nrOfMoves)
  {
    var neworder_str = neworder.join(",");
    setTimeout ("move('"+neworder_str+"', "+pass+", '"+goto+"', "+times+");", 20);
  }
  else
  {
    // If we are suppose to run the animation one more time we will call next() again
    // In other case we will end the animation and show the new selected page.
    menuIsMoving = "no";
    if(times > 1)
    {
      times--;
      next(goto, times);
    }
    else
    {
      document.getElementById(neworder[2]).style.visibility = "visible";
      document.getElementById(neworder[2]).style.position = "relative";
      document.getElementById(neworder[2]+"_link").style.visibility = "hidden";
    }
  }
}