
// menu.js (www.claudiagraef.de)
// Copyright © 2007 Sergej Proskudin, Eugen Rubin
// e-mail: sergej.proskudin[#64]web.de
// Updated on 2007-06-05

function Menu(marked_item,selected_item,marker,items)
{
  this.marked_item = marked_item;
  this.selected_item = selected_item;
  this.marker = marker;
  this.items = items;
}

function Item(position,normal_src,selected_src,link)
{
  this.ref = null;
  this.link = link;
  this.position = position;
  this.image_normal = new Image();
  this.image_normal.src = normal_src;
  this.image_selected = new Image();
  this.image_selected.src = selected_src;
}

function Marker(left,top,width,height,blank_src,transparent_src)
{
  this.ref = null;
  this.left = left;
  this.position = top;
  this.width = width;
  this.height = height;
  this.showed = false;
  this.moving = null;
  this.moving_delay = 5;
  this.hide_timer = null;
  this.hide_timer_delay = 800;
  this.image_blank = new Image();
  this.image_blank.src = blank_src;
  this.image_transparent = new Image();
  this.image_transparent.src = transparent_src;
}

var menu = new Menu(0,0,new Marker(0,0,232,31,"../images/blank.gif","../images/menu_marker.png"),new Array(

  new Item(0,"../images/menu_zur_person.gif","../images/menu_zur_person_selected.gif","zur_person.html"),
  new Item(32,"../images/menu_hoerproben.gif","../images/menu_hoerproben_selected.gif","hoerproben.html"),
  new Item(64,"../images/menu_referenzen.gif","../images/menu_referenzen_selected.gif","referenzen.html"),
  new Item(96,"../images/menu_fotos.gif","../images/menu_fotos_selected.gif","fotos.html"),
  new Item(128,"../images/menu_termine.gif","../images/menu_termine_selected.gif","termine.php"),
  new Item(160,"../images/menu_kontakt.gif","../images/menu_kontakt_selected.gif","kontakt.html"),
  new Item(192,"../images/menu_impressum.gif","../images/menu_impressum_selected.gif","impressum.html")));

function create_marker()
{
  menu.marker.ref = document.createElement("img");
  menu.marker.ref.style.position = "absolute";
  menu.marker.ref.style.visibility = "hidden";
  menu.marker.ref.style.cursor = "pointer";
  menu.marker.ref.style.borderWidth = 0;
  menu.marker.ref.style.zIndex = 2;
  menu.marker.ref.style.left = menu.marker.left;
  menu.marker.ref.style.top = menu.marker.position;
  menu.marker.ref.style.width = menu.marker.width;
  menu.marker.ref.style.height = menu.marker.height;
  menu.marker.ref.onmouseover = clear_marker_hide_timer;
  menu.marker.ref.onmouseout = set_marker_hide_timer;
  menu.marker.ref.onclick = onclick_marker;
  if (is_internet_explorer)
  {
    var filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='";
    filter += menu.marker.image_transparent.src;
    filter += "',sizingMethod='scale')";
    menu.marker.ref.src = menu.marker.image_blank.src;
    menu.marker.ref.style.filter = filter;
  }
  else menu.marker.ref.src = menu.marker.image_transparent.src;
  document.getElementById("menu").appendChild(menu.marker.ref);
}

function set_marker_position(position)
{
  menu.marker.ref.style.top = position;
  menu.marker.position = position;
}

function show_marker()
{
  menu.marker.ref.style.visibility = "visible";
  menu.marker.showed = true;
}

function hide_marker()
{
  menu.marker.ref.style.visibility = "hidden";
  menu.marker.showed = false;
}

function move_marker()
{
  if (menu.marker.position == menu.items[menu.marked_item].position)
  {
    window.clearInterval(menu.marker.moving);
    menu.marker.moving = null;
    return
  }
  var direction = (menu.items[menu.marked_item].position > menu.marker.position) ? 1 : -1;
  var difference = (menu.items[menu.marked_item].position - menu.marker.position)*direction;
  if (difference > 110) {set_marker_position(menu.marker.position + 20*direction);return}
  if (difference > 50) {set_marker_position(menu.marker.position + 15*direction);return}
  if (difference > 30) {set_marker_position(menu.marker.position + 10*direction);return}
  if (difference > 15) {set_marker_position(menu.marker.position + 5*direction);return}
  if (difference > 3) {set_marker_position(menu.marker.position + 3*direction);return}
  set_marker_position(menu.marker.position + direction);
}

function onclick_marker()
{
  if (menu.marker.moving) {return}
  set_selected_item(menu.marked_item);
  parent.Infoframe.location.href = menu.items[menu.marked_item].link;
}

function set_marker_hide_timer()
{
  menu.marker.hide_timer = window.setTimeout("hide_marker()",menu.marker.hide_timer_delay);
}

function clear_marker_hide_timer()
{
  if (menu.marker.hide_timer) window.clearTimeout(menu.marker.hide_timer);
}

function init_menu_items()
{
  for (var item = 0; item < menu.items.length; item++)
    menu.items[item].ref = document.getElementById("menu_item_" + item);
  set_selected_item(menu.selected_item);
}

function set_selected_item(item)
{
  menu.items[menu.selected_item].ref.src = menu.items[menu.selected_item].image_normal.src;
  menu.items[item].ref.src = menu.items[item].image_selected.src;
  menu.selected_item = item;
}

function set_marked_item(item)
{
  menu.marked_item = item;
  if (!menu.marker.showed)
  {
    set_marker_position(menu.items[menu.marked_item].position);
    show_marker();
    return
  }
  if (menu.marker.moving) {return}
  menu.marker.moving = window.setInterval("move_marker()",menu.marker.moving_delay);
}

function init()
{
  create_marker();
  init_menu_items();
}

// end of file

