/*
This opens new tabs / windows nicely
*/
var JSTarget = {
    init: function (att, val, warning) {
        if (document.getElementById && document.createElement && document.appendChild) {
            var strAtt = ((typeof att == 'undefined') || (att == null)) ? 'class' : att;
            var strVal = ((typeof val == 'undefined') || (val == null)) ? 'non-html' : val;
            var strWarning = ((typeof warning == 'undefined') || (warning == null)) ? ' (opens in a new window)' : warning;
            var oWarning;
            var arrLinks = document.getElementsByTagName('a');
            var oLink;
            var oRegExp = new RegExp("(^|\\s)" + strVal + "(\\s|$)");
            for (var i = 0; i < arrLinks.length; i++) {
                oLink = arrLinks[i];
                if ((strAtt == 'class') && (oRegExp.test(oLink.className)) || (oRegExp.test(oLink.getAttribute(strAtt)))) {
                    oWarning = document.createElement("em");
                    oWarning.appendChild(document.createTextNode(strWarning));
                    oLink.appendChild(oWarning);
                    oLink.onclick = JSTarget.openWin;
                }
            }
            oWarning = null;
        }
    },
    openWin: function (e) {
        var event = (!e) ? window.event : e;
        if (event.shiftKey || event.altKey || event.ctrlKey || event.metaKey) return true;
        else {
            var oWin = window.open(this.getAttribute('href'), '_blank');
            if (oWin) {
                if (oWin.focus) oWin.focus();
                return false;
            }
            oWin = null;
            return true;
        }
    },
    /*
    addEvent function from http://www.quirksmode.org/blog/archives/2005/10/_and_the_winner_1.html
    */
    addEvent: function (obj, type, fn) {
        if (obj.addEventListener)
            obj.addEventListener(type, fn, false);
        else if (obj.attachEvent) {
            obj["e" + type + fn] = fn;
            obj[type + fn] = function () { obj["e" + type + fn](window.event); }
            obj.attachEvent("on" + type, obj[type + fn]);
        }
    }
};
JSTarget.addEvent(window, 'load', function () { JSTarget.init("rel", "external", ""); });


/* this is for the tabss */

var Loader = {
    initialized: 0,
    stack: [],

    push: function (funct) {
        Loader.stack.push(funct);
    },
    start: function () {
        if (Loader.initialized == 0) {
            for (var i = 0, length = Loader.stack.length; i < length; i++) {
                Loader.stack[i]();
                Loader.stack[i] = null;
            }
            Loader.stack.length = 0;
            Loader.stack = [];
        }
        Loader.initialized += 1;
    }
}

var $ = function (id) {
    return document.getElementById(id);
}

var Tabs = {
    nodes: {},
    init: function () {
        var ul = document.getElementsByTagName('ul');

        for (var i = 0, length = ul.length; i < length; i++) {
            if (ul[i].className.match('js_tabs')) {
                Tabs.attachLinks(ul[i], ul[i].id);
            }
        }
    },

    attachLinks: function (ul, parent) {
        var a = Tabs.getTabLinks(ul);
        Tabs.nodes[parent] = [];
        for (var i = 0, length = a.length; i < length; i++) {
            var id = a[i].id
            a[i].onclick = function () { Tabs.openTab(this); return false; };
            Tabs.nodes[parent].push(id);
        }
    },

    getTabLinks: function (ul) {
        return ul.getElementsByTagName('a');
    },

    openTab: function (element) {
        Tabs.closeAll(element);
        element.className += ' active';
        var data = $(element.id + '_data');
        if (data) data.style.display = '';
    },

    closeAll: function (element) {
        var parent = element;
        while (parent.nodeName != 'UL') {
            parent = parent.parentNode;
        }
        var nodes = Tabs.nodes;
        if (nodes && nodes[parent.id]) {
            var links = nodes[parent.id];
            for (var i = 0, length = links.length; i < length; i++) {
                var id = links[i];
                var e = $(id);
                if (e && e.className.match('active')) {
                    e.className = e.className.replace(/active/, '');
                    var tab_data = $(id + '_data');
                    if (tab_data) {
                        tab_data.style.display = 'none';
                        var ul = tab_data.getElementsByTagName('ul');
                        for (var i = 0, length = ul.length; i < length; i++) {
                            if (ul[i].className.match('js_tabs')) {
                                this.closeAll(ul[i]);
                            }
                        }
                    }
                }
            }
        }
    }

}
Loader.push(function () { Tabs.init(); });

var Message = {
    messages: [],

    closeOthers: function () {
        for (var i = 0, length = this.messages.length; i < length; i++) {
            this.messages[i].style.display = 'none';
        }
    }
}
window.onload = Loader.start;


