var isInit = false;
var brVersion = "";
var brLanguage="";
var brName = navigator.appName + ' ' + navigator.appVersion;
var brCookies = (navigator.cookieEnabled==true?'Enabled':'Disabled');

if(navigator.appVersion.indexOf('MSIE')!=-1) {
	brVersion = "msie";
	brLanguage = navigator.userLanguage;
	var sVer=navigator.appVersion.split('MSIE');
	brName='Microsoft Internet Explorer ' + parseFloat(sVer[1]);
}

if(navigator.userAgent.indexOf('Firefox')!=-1) {
	brVersion = "firefox";
	var nLoc=navigator.userAgent.indexOf('Firefox')+8;
	brName='Firefox ' + parseInt(navigator.userAgent.charAt(nLoc)) + '.x';
	brLanguage = navigator.language;
}

if(navigator.userAgent.indexOf('Netscape/')!=-1) {
	brLanguage = navigator.language;
	var sVer=navigator.userAgent.split('Netscape/');
	brName = navigator.appName + ' ' + parseFloat(sVer[1]);
}

if(navigator.userAgent.indexOf('Opera')!=-1) {
	brVersion = "opera";
	var nLoc=navigator.userAgent.indexOf('Opera')+6;
	if (parseInt(navigator.userAgent.charAt(nLoc))==1) {
		brName='Opera ' + parseInt(navigator.userAgent.charAt(nLoc)) + '0.x';
	} else {
		brName='Opera ' + parseInt(navigator.userAgent.charAt(nLoc)) + '.x';
	}
}

var aI = {
  init: function() {
    if (!document.getElementById ||
        !document.createElement ||
        !document.getElementsByTagName ||
	isInit == true)
        return;
    isInit=true;
    var anni = document.getElementsByTagName('img');
    for (var i=0;i<anni.length;i++) {
      if ((anni[i].className.search(/\bannotated\b/) != -1) &&
          (anni[i].getAttribute('usemap') != null)) {
          aI.prepImage(anni[i]);
      }
    }
  },

  prepImage: function(img) {
    var mapName = img.getAttribute('usemap');
    if (mapName.substr(0,1) == '#') mapName = mapName.substr(1);
    var mapObjs = document.getElementsByName(mapName);
    if (mapObjs.length != 1) return;
    var mapObj = mapObjs[0];
    var areas = mapObj.getElementsByTagName('area');
    img.areas = [];
    for (var j=areas.length-1;j>=0;j--) {
      if (areas[j].getAttribute('shape').toLowerCase() == 'rect') {
        var coo = areas[j].getAttribute('coords').split(',');
        if (coo.length != 4) break;
        var a = document.createElement('a');
        a.associatedCoords = coo;
        a.style.fontSize = '5.0pt';
        a.style.width = ((parseInt(coo[2]) - parseInt(coo[0]))+1) + 'px';
        a.style.height = ((parseInt(coo[3]) - parseInt(coo[1]))+1) + 'px';
        var thisAreaPosition = aI.__getAreaPosition(img,coo);
        a.style.left = thisAreaPosition[0] + 'px';
        a.style.top = thisAreaPosition[1] + 'px';
        a.className = 'annotation';
        var href = areas[j].getAttribute('href');
        if (href) {
          a.href = href;
        } else {
          a.href = "#";
        }
        a.title = areas[j].getAttribute('title');
        var s = document.createElement('span');
        s.appendChild(document.createTextNode(''));
        a.appendChild(s);

        img.areas[img.areas.length] = a;
        document.getElementsByTagName('body')[0].appendChild(a);

        aI.addEvent(a,"mouseover",
          function() {
            clearTimeout(aI.hiderTimeout);
          }
          );

      }
    }
//    aI.addEvent(img,"mouseover",aI.showAreas);
//    aI.addEvent(img,"mouseout",aI.hideAreas);
  },

  __getAreaPosition: function(img,coo) {
    var aleft = (img.offsetLeft + parseInt(coo[0]));
    var atop = (img.offsetTop + parseInt(coo[1]));
    var oo = img;
    while (oo.offsetParent) {
      oo = oo.offsetParent;
      aleft += oo.offsetLeft;
      atop += oo.offsetTop;
    }
    return [aleft,atop];
  },

  __setAreas: function(t,disp) {
    if (!t || !t.areas) return;
    for (var i=0;i<t.areas.length;i++) {
      t.areas[i].style.display = disp;
    }
  },


  hideAreas: function(mapName) {
    var t = null;
    t = document.images[mapName];
    clearTimeout(aI.hiderTimeout);
    aI.hiderTimeout = setTimeout(
      function() { aI.__setAreas(t,'none') }, 10);
  },



  showArea: function(k,mapName) {
    if(k < 0) {return; }
    var t = null;
    t = document.images[mapName];
    if(t.parentNode.className == "hide") { return; }
    var thisAreaPosition = aI.__getAreaPosition(t,t.areas[k].associatedCoords);
    t.areas[k].style.left = thisAreaPosition[0] + 'px';
    t.areas[k].style.top = thisAreaPosition[1] + 'px';
    aI.__setArea(t,k,'block');
  },

  __setArea: function(t,j,disp) {
    if (!t || !t.areas) return;
    t.areas[j].style.display = disp;
  },


    addEvent: function(elm, evType, fn, useCapture) {
    if (elm.addEventListener){
      elm.addEventListener(evType, fn, useCapture);
      return true;
    } else if (elm.attachEvent){
      var r = elm.attachEvent("on"+evType, fn);
      return r;
    } else {
      elm['on'+evType] = fn;
    }
  }
}

aI.addEvent(window,"load",aI.init);
