/* Project: Expertensuche
 * File: search.js
 * Author: Gerhard Schoen
 * Created: 24.10.2005
 * Last Changed: 21.11.2006
 */

window.onload = init;
window.onresize = resize;

done = 0;
stack = 0;
instance = 0;

function init() {
  if (dynamic == 1) {
    with (document.getElementById("screen1").style) {
      width = "100%";
      height = "100%";
    }
    with (document.getElementById("screen2").style) {
      width = "100%";
      height = "100%";
    }
    document.getElementById("header").style.width = "100%";
    document.getElementById("footer").style.width = "100%";
    document.getElementsByTagName("body")[0].style.backgroundRepeat = "repeat-x";
    resize();
    clone(defaultfield);
    clone("");
    clear_submit();
  }
  if (done == 0) {
    if (window['lemma']) {
      xajax_detail(lemma);
    } else {
      xajax_splash();
    }
  }
}

function load(object, name) {
  var entry = document.getElementById("active");
  if (entry) {
    entry.removeAttribute("id");
  }
  object.setAttribute("id", "active");
  if (name) {
    document.getElementById("N").style.display = "none";
    document.getElementById("F0").style.display = "none";
    document.getElementById("F1").style.display = "none";
    document.getElementById("F2").style.display = "none";
    document.getElementById("screen1").style.display = "none";
    document.getElementById("screen2").style.display = "block";
  } else {
    document.getElementById("screen2").style.display = "none";
    document.getElementById("screen1").style.display = "block";
    document.getElementById("F2").style.display = "block";
    document.getElementById("F1").style.display = "block";
    document.getElementById("F0").style.display = "block";
    document.getElementById("N").style.display = "block";
  }
  for (var i=2; i<=4; i++) document.getElementById("s"+i).style.display = "none";
  if (name) document.getElementById("s"+name).style.display = "block";
  for (var i=10; i<=12; i++) document.getElementById("d"+i).style.display = "none";
  if (name == "2") jump(null, '10');
  if (name == "3") jump(null, '11');
  if (name == "4") jump(null, '12');
}

function jump(object, name) {
  var entry = document.getElementById("selected");
  if (entry) {
    entry.removeAttribute("id");
  }
  for (var i=10; i<=12; i++) document.getElementById("d"+i).style.display = "none";
  document.getElementById("d"+name).style.display = "block";
  scroll("F4");
  if (object) object.setAttribute("id", "selected");
}

function choose(object) {
  document.getElementById("search"+instance).value = object.firstChild.nodeValue;
  document.getElementById("result"+instance).style.display = "none";
}

function clear_submit() {
  if (dynamic == 1) document.getElementById("submit").style.display = collect_query().length ? "block" : "none";
}

function insert_entry() {
  var entry = document.getElementById("highlight");
  if (entry) {
    entry.removeAttribute("id");
    document.getElementById("search"+instance).value = entry.firstChild.nodeValue;
    document.getElementById("result"+instance).style.display = "none";
  } else {
    hide_suggest(instance);
  }
  clear_submit();
}

function hide_suggest(instance) {
  var entry = document.getElementById("highlight");
  if (entry) entry.removeAttribute("id");
  var suggest = document.getElementById("result"+instance);
  if (suggest) suggest.style.display = "none";
}

function set_instance(object) {
  instance = object.id.substr(6);
}

function clear_entry(object) {
  hide_suggest(instance);
  instance = object.id.substr(5);
  if (document.getElementById("field"+instance).value) {
    with (document.getElementById("search"+instance)) {
      style.display = "inline";
      focus();
    }
  } else {
    document.getElementById("query").removeChild(document.getElementById("Q"+instance));
  }
  if (field_needed()) clone("");
  clear_submit();
}

function check_specialkeys(event) {
  if (event.keyCode == 40) {
    var entry = document.getElementById("highlight");
    if (entry) {
      entry.removeAttribute("id");
      if (entry.nextSibling) entry = entry.nextSibling;
    } else {
      entry = document.getElementById("result"+instance).firstChild;
    }
    entry.setAttribute("id", "highlight");
  } else if (event.keyCode == 38) {
    var entry = document.getElementById("highlight");
    if (entry) {
      entry.removeAttribute("id");
      if (entry.previousSibling) entry = entry.previousSibling;
    } else {
      entry = document.getElementById("result"+instance).lastChild;
    }
    entry.setAttribute("id", "highlight");
  } else if (event.keyCode == 13) {
    insert_entry();
  } else if (event.keyCode == 36) {
    insert_entry();
  } else if (event.keyCode == 27) {
    hide_suggest();
  } else {
    xajax_suggest(instance, document.getElementById("field"+instance).value, document.getElementById("search"+instance).value);
  }
  clear_submit();
}

function clone(selected) {
  if (dynamic == 1) {
    hide_suggest(instance);
    stack++;
    var anchor = document.createElement("p");
    anchor.setAttribute("id", "Q"+stack);
    document.getElementById("query").insertBefore(anchor, document.getElementById("Q"));
    xajax_expand(stack, selected);
  }
}

function field_needed() {
  var i = 1;
  var blank = false;
  while (i <= stack && !blank) {
    if (document.getElementById("field"+i)) blank = (document.getElementById("field"+i).value == "");
    i++;
  }
  return !blank;
}

function collect_query() {
  var i = 1;
  var field = "";
  var query = new(Array);
  while (i <= stack) {
    if (document.getElementById("field"+i)) {
      field = document.getElementById("field"+i).value;
      mode = document.getElementById("mode"+i).value;
      search = document.getElementById("search"+i).value.replace(/^\s*|\s*$/g, "");
      if (field && search) {
        if (!query[field]) {
          query[field] = new(Array);
        }
        k = query[field].length;
        query[field][k] = new(Array);
        query[field][k]["m"] = mode;
        query[field][k]["s"] = search;
      }
    }
    i++;
  }
  return query;
}

function query() {
  hide_suggest(instance);
  xajax_search(collect_query());
}

function activate(object) {
  if (!object.id) object.setAttribute("id", "active");
}

function deactivate(object) {
  if (object.id == "active") object.removeAttribute("id");
}

function mark(object) {
  if (!object.id) object.setAttribute("id", "mark");
}

function unmark(object) {
  if (object.id == "mark") object.removeAttribute("id");
}

function feature(object) {
  var entry = document.getElementById("showing");
  if (entry) {
    entry.removeAttribute("id");
  }
  object.setAttribute("id", "showing");
  document.title = object.firstChild.nodeValue + " - " + project;
}

function resize() {
  var k, h;
  if (dynamic == 1) {
    if (self.innerHeight) {
      k = self.innerWidth;
      h = self.innerHeight;
    } else if (document.documentElement && document.documentElement.clientHeight) {
      k = document.documentElement.clientWidth-2;
      h = document.documentElement.clientHeight;
    } else if (document.body) {
      k = document.body.clientWidth-2;
      h = document.body.clientHeight;
    }
    if (h) {
      var ark = new Array(k*.6, k*.4+1, k, 210, k-210);
      var arh = new Array(h/2-112, h/2-112, h/2-70, h-182, h-182);
      var art = new Array(155, 155, h/2+43, 155, 155);
      var arl = new Array(0, k*.6, 0, 0, 200);
      if (document.styleSheets[0].rules) {
        r = document.styleSheets[0].rules;
      } else if (document.styleSheets[0].cssRules) {
        r = document.styleSheets[0].cssRules;
      }
      if (r) {
        for (var i=0; i<=4; i++) {
          with (r[i].style) {
            width = Math.floor(ark[i])+"px";
            height = Math.floor(arh[i])+"px";
            top = Math.floor(art[i])+"px";
            left = Math.floor(arl[i])+"px";
          }
        }
        r[2].style.width = "100%";
      }
    }
  }
}

function scroll(id) {
  with (document.getElementById(id)) while (scrollTop > 0) scrollTop -= 6;
}
/* end of file */

