var timer;

var isIE7 = navigator.userAgent.indexOf("MSIE 7.0") == '-1' ? false : true;
var isIE8 = navigator.userAgent.indexOf("MSIE 8.0") == '-1' ? false : true;

var isIE = (isIE8 || isIE7);

var loadToolTip = function(words) {
if(!isIE) { // deactivated for IE

  //var content = $('main-column');
  var content = document.getElementById('content');
  var tempText = content.innerHTML;
  var links = tempText.match(/<a[^>]*>(.*?)<\/a>/g) || {}; // this returns null in IE for some reason
  tempText = tempText.replace(/<a[^>]*>(.*?)<\/a>/g, "temporaryLink");
  var triggerWords = words;
  for (i=0;triggerWords.length>i;i++) {
    var word = triggerWords[i][0];
    var wordId = triggerWords[i][1];
    var re = new RegExp('(\\b('+word+')|<[^>]*>)\\b','gi');
    var abbr = new Element('abbr', {'id': wordId, 'class': 'abbr'}).update(word);

    tempText = tempText.replace(re, function(a,b,c) { return a.charAt(0) == '<' ? a : '<abbr id="d' + wordId + '" class="abbr" title="Sl\u00E5 opp i ordlista">'+c+'</abbr>'});
  }
//  console.log(links);
  for (i=0;links.length>i;i++) {
    tempText = tempText.replace(/(temporaryLink)/, links[i]);
  }
  content.innerHTML = tempText;
  $$("abbr").each(function(e) {
    Event.observe(e, 'click', function(node) {
      makeToolTip(e.id.substring(1), e);
      placeToolTip(e.id.substring(1), e);
    })
/* quick fix to remove words function in input fields */
if(document.forms[1].elements[2].value=='<abbr id=') {
  document.forms[1].elements[2].value='';
}
/* eof quick fix */
  });
}
} // eof IE deactivation

var makeToolTip = function(id, obj) {
  removeToolTip()

  var tooltip = new Element('div', {
    'style': {
      'visibility': 'hidden'
    },
    'class': 'modal popup-mini',
    'id': 'tooltip'
  });

  $(document.body).insert(tooltip, {position: top} );
  url = '?module=Articles;action=Article.publicShow;ID=' + id + ';template=getArticle'
  new Ajax.Updater(tooltip, url, {
    method: 'get',
    onComplete: function() {
      makeCloseButton(tooltip);
      $(document.body).descendants().invoke('observe', 'click', clickOutside);
      $$("body").invoke('observe', 'click', clickOutside);
    }
  });
}

var clickOutside = function(e) {
//alert(e);1
  if(e.target) {
    if (e.target.hasClassName('abbr') == true) {
      var aID = e.target.id.substring(1)
      removeToolTip();
      $(document.body).descendants().invoke('stopObserving', 'click', clickOutside);
      $$("body").invoke('stopObserving', 'click', clickOutside);
      makeToolTip(aID, e.target);
      placeToolTip(aID, e.target);
    } else if (e.target.descendantOf($("tooltip")) == false) {
      removeToolTip();
      $(document.body).descendants().invoke('stopObserving', 'click', clickOutside);
      $$("body").invoke('stopObserving', 'click', clickOutside);
    }
  }
}

var makeCloseButton = function(tooltip) {
  var tooltipCloseContainer = new Element('div', {
    'class': 'closeWordList'
  })
  var tooltipClose = new Element('a', {
    'href': 'javascript:void(0)'
  }).update('Lukk vindu')
  Event.observe(tooltipClose, 'click', function(close) {
    tooltipCloseContainer.parentNode.setStyle({'visibility': 'hidden'})
  });
  tooltipCloseContainer.insert({'top': tooltipClose});
  tooltip.insert({'bottom': tooltipCloseContainer});
}

var placeToolTip = function(id, obj) {
  var tt = $('tooltip');
  var obj = $(obj);
  tt.setStyle(
    {
      'left': obj.positionedOffset().left - 25 + 'px',
      'top': obj.positionedOffset().top + 35 + 'px',
      'left': obj.positionedOffset().left - 25 + 'px',
      'visibility': 'visible'
    }
  )
  return false;
}

var removeToolTip = function(id) {
  if(document.getElementById('tooltip')) {
    document.getElementById('tooltip').remove();
  }
}
