
  // 0 = Display
  // 1 = Edit
  iModus = 0;

   //map keys to links
  var keymap = new Array();
  //keymap[13] = 0; //Enter
  keymap[96] = 0; //0
  keymap[32] = 0; //Space
  keymap[77] = 0; //m

  //cursors
  keymap[38] = 2; //up
  keymap[37] = 4; //left
  keymap[39] = 6; //right
  keymap[40] = 8;  //down

  //awsd
  keymap[81] = 1; //q
  keymap[87] = 2; //w
  keymap[69] = 3; //e
  keymap[65] = 4; //a
  keymap[83] = 5; //s
  keymap[68] = 6; //d
  keymap[89] = 7; //y (german)
  keymap[90] = 7; //z (english)
  keymap[88] = 8; //x
  keymap[67] = 9; //c


  //extention for laptops
  keymap[55] = 1; //7
  keymap[56] = 2; //8
  keymap[57] = 3; //9
  keymap[85] = 4; //u
  keymap[73] = 5; //i
  keymap[79] = 6; //o
  keymap[74] = 7; //j
  keymap[75] = 8; //k
  keymap[76] = 9; //l


  //number pad
  keymap[97]  = 7; //7
  keymap[98]  = 8; //8
  keymap[99]  = 9; //9
  keymap[100] = 4; //4
  keymap[101] = 5; //5
  keymap[102] = 6; //6
  keymap[103] = 1; //1
  keymap[104] = 2; //2
  keymap[105] = 3; //3

  //extention for 1...9 default keys
  keymap[49] = -11; //1
  keymap[50] = -12; //2
  keymap[51] = -13; //3
  keymap[52] = -14; //4
  keymap[53] = -15; //5
  keymap[54] = -16; //6

  //fast nav keys
  keymap[111] = -1; // /
  keymap[106] = -2; // *
  keymap[109] = -3; // -

  //Internal Navigation Mapping
  var aIntNav = new Array();
  aIntNav[11] = "div_opt_options";
  aIntNav[12] = "div_opt_img";
  aIntNav[13] = "div_opt_synonym";
  aIntNav[14] = "div_opt_contact";
  aIntNav[15] = "div_opt_admin";

var a_links;


function initLink(a_link) {

//if (a_link = "undefined") {
//  alert("array is empty");
//}

 obj = document.getElementById("link_" + a_link[0].charAt(a_link[0].length - 1)); //take last character
 obj.target="_self";

 if (a_link[2] != "#") {
  obj.style.display = "block";
  //if link or drilldown
  if (a_link[2] !== "") {
    obj.href = a_link[2];
    obj.className  = "a_link";
    is_dd = "";
    //try set option for opn links in new tab
    try {
      if (opt_new_tab){
        obj.target="_blank";
      }
    } catch (e) {}
  }
  else {
    obj.href = "javascript:init(link" + a_link[0] + ");";
    obj.className  = "a_drilldown";
    is_dd = "&dd=y";
  }
  obj.innerHTML = a_link[1];
  try {
    obj.title = a_link[4];
  } catch (e) {}

  obj.style.backgroundImage = "url(none)";

  if (a_link[3] !== ""){
    //obj.style.backgroundImage = "url(html/img/" + a_link[3] + ")";
    obj.style.backgroundImage = "url(img?n=" + a_link[3] + is_dd + ")";
  }

 } else {
  //if # then not required.

  if ( a_link[0] == "5" ){
    initLink(new Array("5","Home","javascript:init(" + last_drilldown + ");","home.jpg"));
    obj.className  = "a_drilldown";
    obj.target="_self";
    obj.title = "";
  } else {
    obj.style.display = "none";
    obj.href = "#";
  }

 }
}


function clearLinks(){
 for (var j = 1; j<=9; j++){
  //alert("Empty: " + j);
  initLink(new Array(j+"","","#",""));
 }
}

function init(cur_link){
  clearLinks();
  if (document.title === ""){
    document.title = cur_link[1];
  }
  set_level(cur_link);
  if (cur_link[2] === ""){
   try {
     eval("a_links = link" + cur_link[0] + "0;");
   } catch (e) {
      //do nothing
     eval("a_links = Array();");
   }
  }

  for (var i = 0; i<a_links.length; i++){
    //alert(i);
    initLink(a_links[i]);
  }
  //alert(document.getElementById("link_5").href + " - " + link5[2]);
}

//simulate Click Event
function fireEvent(obj,evt){

	var fireOnThis = obj;
	if( document.createEvent ) {
	  var evObj = document.createEvent('MouseEvents');
	  evObj.initEvent( evt, true, false );
	  fireOnThis.dispatchEvent(evObj);
	} else if( document.createEventObject ) {
	  fireOnThis.fireEvent('on'+evt);
	}


}

last_drilldown = "link_init";

last_focus = ""; //stores in edit mode which element was focused last
last_key = 0; //remembers last pressed key to disable space in edit mode

editing = 0; //if editing, browse should be inactiv

try {
  if (link_set == "0"){
    link_set = link_set;
  }
} catch (e) {
  link_set = "";
}


function seted(pstatus){
 if (pstatus === 0){
   editing = 0;
 } else {
   editing = 1;
 }
}

function browse(id){
  //Display Mode
  if (document.getElementById("link_" + id)) {
    var uri_dest = document.getElementById("link_" + id).href;
    //alert ("IndexOf=" + uri_dest.indexOf("javascript:init"));
    if (uri_dest.indexOf("javascript:init") > -1) {
      //alert(uri_dest.length);
      if (uri_dest.length ==  24){
       last_drilldown  = uri_dest.slice(16,21);
       //alert("Test:"  + last_drilldown);
      } else {
       last_drilldown = "link_init";
      }
    }
    document.location.href = uri_dest;

  } else {

  if (editing === 0) {
    //alert('ID = '+id);
    if (id === 0){
      if (iModus === 0){
        init(link_init);
      } else {
        if (last_key != 32) {
          var uri = document.location.href;
          if (uri.indexOf("id2=0") > -1 || uri.indexOf("id2=") == -1) {
            document.location.href = "/edit?tmpl=grid&set=" + link_set;
          }
          if (uri.search(/id2=[1-9]/) > -1) {
          	 document.location.href = uri.replace(/id2=[1-9]/,"id2=0");
          }
          last_key = 0;
        }
        //last key not 32
      }
      //Else: go one level up
    }
    //Edit Mode
    //
    //keyboard shortcuts for internal navigation
    if (id < 0){
      if (document.getElementById("keyshortcut" + id)){
        document.location.href = document.getElementById("keyshortcut" + id).href;
      }
    }
    if (id < -10){
      objid = aIntNav[id*-1];
      if (document.getElementById(objid)){
        document.location.href = document.getElementById(objid).href;
      }
    }

    //Edit Mode - Focus Items Edit Button
    if (document.getElementById("focus-" + id)){
      //don't focus on other during displaying
      if (slast === ""){
        if (last_focus == id) {
          fireEvent(document.getElementById("focus-" + id + "-drill"),'click');
          last_focus = "";
        } else {
          document.getElementById("focus-" + id).focus();
          last_focus = id;
        }
      }
    }
    //Edit Mode - Focus New Slots
    if (document.getElementById("div_" + id + "_display")){
      if (slast === ""){

        fireEvent(document.getElementById("div_" + id + "_display"),'click');
        setTimeout ("document.getElementById('form_" + id + "').reset();",100);

        last_focus = "";
      }
    }

  } //editing
  } //edit mode
}





function showHints(hint){
 for (var j = 1; j<=9; j++){
 obj_td = document.getElementById("div_" + j);
 obj_link = document.getElementById("link_" + j);
   if (hint == 'on'){
     obj_td.style.backgroundColor = "#FFFFFF";
     obj_td.style.backgroundImage = "url(html/img/" + j + ".jpg)";
     obj_link.style.visibility = "hidden";

   } else {
     obj_td.style.backgroundImage = "";
     obj_td.style.backgroundColor = "";
     obj_link.style.visibility = "visible";
   }
 }
}



rem_keypressed = "";

function cursor(event)
  {
    //alert(event.keyCode); //Debug only
    keypressed = event.keyCode;
    last_key = event.keyCode;
    if (keypressed == 37 || keypressed == 38 || keypressed == 39 || keypressed == 40) {
     kup = 38;
     kleft = 37;
     kright = 39;
     kdown = 40;
     if (rem_keypressed === "") {
       rem_keypressed = keypressed;
       window.setTimeout("check_cursor()", 300); //milliseconds
     } else {
       //a key was pressed before
       if (rem_keypressed == kleft && keypressed == kup) {target_key=1;}
       if (rem_keypressed == kleft && keypressed == kdown) {target_key=7;}
       if (rem_keypressed == kleft && keypressed == kright) {target_key=5;}
       if (rem_keypressed == kright && keypressed == kup) {target_key=3;}
       if (rem_keypressed == kright && keypressed == kdown) {target_key=9;}
       if (rem_keypressed == kright && keypressed == kleft) {target_key=5;}
       if (rem_keypressed == kup && keypressed == kright) {target_key=3;}
       if (rem_keypressed == kup && keypressed == kleft) {target_key=1;}
       if (rem_keypressed == kup && keypressed == kdown) {target_key=5;}
       if (rem_keypressed == kdown && keypressed == kup) {target_key=5;}
       if (rem_keypressed == kdown && keypressed == kright) {target_key=9;}
       if (rem_keypressed == kdown && keypressed == kleft) {target_key=7;}

       rem_keypressed = "";
       //alert("Before")
       browse(target_key);
     }
     //alert('arrow keys')
     //
    } else {
      browse(keymap[keypressed]);
    }
  }

function check_cursor(){
 if (rem_keypressed !== "") {
   browse(keymap[rem_keypressed]);
   rem_keypressed = "";
 }
}

var cur_level = 1;
var ref_level_2;
var level_1 = 0;
var level_2 = 0;

function set_level(link){
  div_bc1 = document.getElementById("div_bc1_tag");
  div_bc2 = document.getElementById("div_bc2_tag");
  div_bc2_a = document.getElementById("div_bc2_tag_a");
  div_bc_title = document.getElementById("div_title_tag");
  a_cust = document.getElementById("keyshortcut-1"); //formely a_customize
  a_customize_def = "edit?tmpl=grid&set=" + link_set;

  if (div_bc1 !== null) {
    if (link == link_init) {
      div_bc1.style.display = "none";
      div_bc2.style.display = "none";
      cur_level = 1;
      ref_level_2 = null;
      a_cust.href = a_customize_def;
    } else {
      cur_level = cur_level + 1;
    }

    if (link == ref_level_2){
      cur_level = 2;
    }

    if (cur_level == 2){
      div_bc1.style.display = "";
      div_bc2.style.display = "none";
      ref_level_2 = link;
      a_cust.href = a_customize_def + "&id=" + link[0];
      level_1 = link[0];
    }

    if (cur_level == 3){
      div_bc1.style.display = "";
      div_bc2.style.display = "";
      div_bc2_a.innerHTML = ref_level_2[1];
      div_bc2_a.href = "javascript:init(link" + ref_level_2[0] + ");";
      a_cust.href = a_customize_def + "&id=" + link[0].charAt(0) + "&id2=" + link[0].charAt(1);
      level_1 = link[0].charAt(0);
      level_2 = link[0].charAt(1);
    }

    //set current view title
    if (link == link_init) {
      div_bc_title.innerHTML =  "Home";
    } else {
      div_bc_title.innerHTML =  link[1];
    }
    div_bc_title.className = "div_bc div_bc_active div_bc" + cur_level;

  }
}

//make sure logout hint is not always displayed.
div_f_o = document.getElementById("div_footer_open");
if (div_f_o !== null) {
  if (document.referrer.indexOf('3x3links') > -1 || document.referrer.indexOf('localhost') > -1)
  {
    div_f_o.style.display = "";
  } else {
    div_f_o.style.display = "none";
  }
}