addEvent(window, 'load', externalLinks);
addEvent(window, 'load', pdfLinks);
addEvent(window, 'load', smartQuote);

var et_Portal_Link = [];


/* Initialisation */
function et_init() {
    var i, link, id, target, first;
    first = false;
    for (i = 0; (link = document.links[i]); i++) {
        if (/\bhome\b/.exec(link.className)) {
            id = link.href.split('#')[1];
            target = document.getElementById(id);
            et_Portal_Link[et_Portal_Link.length] = target;
            link.onclick = et_Portal;
        }
    }
}

function et_toggle(e) {
    /* Adapted from http://www.quirksmode.org/js/events_properties.html */
    if (typeof e == 'undefined') {
        var e = window.event;
    }
    var source;
    if (typeof e.target != 'undefined') {
        source = e.target;
    } else if (typeof e.srcElement != 'undefined') {
        source = e.srcElement;
    } else {
        return true;
    }
    /* For most browsers, targ would now be a link element; Safari however
       returns a text node so we need to check the node type to make sure */
    if (source.nodeType == 3) {
        source = source.parentNode;
    }
    var id = this.href.split('#')[1];
    var elem;
    for (var i = 0; (elem = et_toggleElements[i]); i++) {
        if (elem.id != id) {
            elem.className = 'hide';
        } else {
            elem.className = 'show';
        }
    }
    return false;
}

function externalLinks() {
 if (!document.getElementsByTagName) return;
 var anchors = document.getElementsByTagName("a");
 for (var i=0; i<anchors.length; i++) {
   var anchor = anchors[i];
   if (anchor.getAttribute("href") &&
       anchor.getAttribute("rel") == "external")
     anchor.target = "_blank";
 }
}

function pdfLinks() {
 if (!document.getElementsByTagName) return;
 var anchors = document.getElementsByTagName("a");
 for (var i=0; i<anchors.length; i++) {
   var anchor = anchors[i];
   if (anchor.getAttribute("href") &&
       anchor.getAttribute("rel") == "pdf")
     anchor.target = "_blank";
 }
}

var qChars = new Array();
qChars['en'] = new Array('&#8220;', '&#8221;', '&#8216;', '&#8217;');

var defaultLang = 'en';


function smartQuote() {
  var q = document.getElementsByTagName('q');
  var qLang = new Array(); // The language of each quote
  var qParentLang = new Array(); // Parent quote language
  var qLvl = new Array(); // Alternates between 0 and 1, depending on nesting level
  var qParentLvl = new Array();
  for (var i = 0; i < q.length; i++) { // Iterate through all quotes
    // Assign language to attribute value if exists (and quotes supported), otherwise parent language, otherwise default
    var lang = q[i].lang;
    qLang[i] = (lang && qChars[lang]) ? lang
            : (qParentLang[i]) ? qParentLang[i]
            : defaultLang;
    qLvl[i] = ((qParentLvl[i] == 0) && (qParentLang[i] == qLang[i])) ? 1 : 0;
    var innerQs = q[i].getElementsByTagName('q');
    for (var j = 0; j < innerQs.length; j++) { // Iterate through nested quotes
      qParentLang[i + j + 1] = qLang[i]; // Set parent language
      qParentLvl[i + j + 1] = qLvl[i]; // Set parent level
    }
  }
  for (var i = 0; i < q.length; i++) { // Apply all quotes depending on language and level
    var chars = qChars[qLang[i]];
    q[i].innerHTML = (qLvl[i] == 0) ? chars[0] + q[i].innerHTML + chars[1] : chars[2] + q[i].innerHTML + chars[3];
  }
}
 function styleAbbr() {
  var oldBodyText, newBodyText, reg
    oldBodyText = document.body.innerHTML;
    reg = /<ABBR([^>]*)>([^<]*)<\/ABBR>/g;
    newBodyText = oldBodyText.replace(reg, '<ABBR $1><SPAN class=\"abbr\" $1>$2</SPAN></ABBR>');
    document.body.innerHTML = newBodyText;
}

function addEvent(obj, evType, fn){
    if (obj.addEventListener) {
        obj.addEventListener(evType, fn, true);
        return true;
    } else if (obj.attachEvent) {
        var r = obj.attachEvent("on"+evType, fn);
        return r;
    } else {
	    return false;
    }
}