window.onload = function() {
  external_links();
  popups();
  nav_left();
  tooltip();
  map_dots();
} 

var nav_array = new Array;
var posx = 0;
var posy = 0;

function tooltip(T,t){
  if (T) {
    el = T.parentNode.lastChild;
    if (el.nodeType == 3) el = T.parentNode.lastChild.previousSibling;
    
    if (!t) {
      el.style.left = '-9999px';
    }
    if (t){
      var xx = 325;    
      var yy = 165;
      if (xx > posx) xx = posx;
      if (yy > posy) yy = posy;
      var y_offset_height = el.offsetHeight;
      if (yy < y_offset_height && yy < posy) yy = y_offset_height;
      if (y_offset_height) {
        el.style.top = -yy + 'px';
        el.style.left = -xx + 'px';
      }
    }
  }
}

function map(){
  var e = document.getElementById('map');
  if(e){
    e.onmousemove = map_dot_over;  
  }
}
function map_dots(){
  if (!document.body.getElementsByTagName) return false;
  var as = document.body.getElementsByTagName('a');
  for(var i=0; i<as.length; i++)
    if ((as[i].className+'').match(/\bdot\b/)) {
      as[i].onmouseover = map_dot_over;
      as[i].onmouseout = map_dot_out;
    }
  return true;
}
function map_dot_over(e){
  if (!e) var e = window.event;
  if (e.pageX || e.pageY)   {
    posx = e.pageX;
    posy = e.pageY;
  }
  else if (e.clientX || e.clientY)   {
    posx = e.clientX + document.body.scrollLeft + document.documentElement.scrollLeft;
    posy = e.clientY + document.body.scrollTop + document.documentElement.scrollTop;
  }

  var main = document.getElementById('main');
  var map_div = document.getElementById('map_div');
  var off_left = main.offsetLeft + map_div.offsetLeft;
  var off_top = main.offsetTop + map_div.offsetTop;

  posx = posx - off_left;
  posy = posy - off_top;

  tooltip(this,1);
} 

function map_dot_out(e){
  tooltip(this,0);
} 


/** 
 * external links
 * sets \target="_blank"\ for all the links with \rel="external"\
*/
function external_links() {
  if (!document.body.getElementsByTagName) return false;
  var as = document.body.getElementsByTagName('a');
  for(var i=0; i<as.length; i++)
    if (as[i].getAttribute('rel') == 'external')
      as[i].target = '_blank';
  return true;
}

/** 
 * popup windows
 * open a new window with an image or a page
*/
function popups()
{
  if (!document.body.getElementsByTagName) return false;
  var as = document.body.getElementsByTagName('a');
  for(var i=0; i<as.length; i++)
    if ((as[i].className+'').match(/\bpopup\b/))
      as[i].onclick = popup;
  return true;
}
function popup()
{
  var url = this.getAttribute('href');
  var title = this.getAttribute('title');
  if (title) var size = title.match(/\(([0-9]+)x([0-9]+)\)/);
  if (size) title = title.replace(size[0],'');
  if (url.match(/png|gif|jpg|jpe|jpeg/)) var img = true;
  
  /* when size is larger then screen */
  var scrollbars = 0;
  if (size && img) {
    if (size[1] > window.screen.width) {
      size[1] = window.screen.width - 16;
      scrollbars = 1;
    }
    if (size[2] > window.screen.height - 200) {
      size[2] = window.screen.height - 200;
      size[1] = parseInt(size[1]) + 16;
      if (size[1] == window.screen.width) size[1] = window.screen.width - 16;
      scrollbars = 1;
    }
  }  
  if (!size) var size = new Array('', 640, 480);

  /* window options */
  var win_options = 'left=0,top=0,menubar=0,toolbar=0,location=0,status=0,scrollbars='+scrollbars+',resizable=1,dependent=1,width='+size[1]+',height='+size[2];

  /* creates new window */
  if (win = window.open(url,'',win_options)) {
    if (img) {
      win.document.open();
      win.document.write('<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">');
      win.document.write('<html xmlns="http://www.w3.org/1999/xhtml">');
      win.document.write('<head><title>'+title+'</title>');
      win.document.write('<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />');
      win.document.write('<style type="text/css">body {margin:0; padding:0; background:#fff;}</style>');
      win.document.write('</head><body>');
      win.document.write('<img src="../'+url+'" alt="'+title+'" onclick="window.close()" />');
      win.document.write('</body></html>');
      win.document.close();
    }
    return false;
  }
  
  /* follows link on failure */
  return true; 
}

function nav_left() {
  c = readCookie('nav_array');
  if (c) nav_array = c.split(',');
  if (!document.body.getElementsByTagName) {return false;}
  var tags = document.body.getElementsByTagName('li');
  var j = 0;
  for(i=0;i<tags.length;i++)
    if (tags[i].className == 'onclick') {
      tags[i].childNodes[0].onclick = nav_left_show_hide;
      if (tags[i].childNodes[1].className == 'hidden' && nav_array[j] != 1) {
        tags[i].childNodes[1].style.display = 'none';
        nav_array[j] = 0;
      } else {
        if (nav_array[j] == 0) {
          tags[i].childNodes[1].style.display = 'none';
          nav_array[j] = 0;
        } else {
          tags[i].childNodes[1].style.display = 'block';
          nav_array[j] = 1;
        }
      }
      j = j + 1;
    }
  return true;
}
function nav_left_show_hide() {  
  var j = parseInt(this.className);
  var uls = this.parentNode.getElementsByTagName('ul');
  if (uls[0].style.display == 'block') {
    uls[0].style.display = 'none';
    nav_array[j] = 0;
    this.className = j;
  }
  else {
    uls[0].style.display = 'block';
    nav_array[j] = 1;
    this.className = this.className + ' active';
  }
  createCookie('nav_array',nav_array,0);
}

function createCookie(name,value,days) {
  if (days) {
    var date = new Date();
    date.setTime(date.getTime()+(days*24*60*60*1000));
    var expires = '; expires='+date.toGMTString();
  }
  else expires = '';
  document.cookie = name+'='+value+expires+'; path=/';
}

function readCookie(name) {
  var nameEQ = name + '=';
  var ca = document.cookie.split(';');
  for(var i=0;i < ca.length;i++) {
    var c = ca[i];
    while (c.charAt(0)==' ') c = c.substring(1,c.length);
    if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
  }
  return null;
}

