/**
 * Design for Neformat 2.0 project.
 *
 *  This file is the part of Neformat 2.0 project.
 *
 * @license http://www.gnu.org/copyleft/gpl.html GNU GPL
 * @copyright 2007 (C), We Make Sites
 */

function getElementsByClassName(className, node, tag) {
    var classElements = new Array();

    if (node == null) node = document;
    if (tag == null) tag = '*';

    var elems = node.getElementsByTagName(tag);
    var len = elems.length;

    var pattern = new RegExp("(^|\\s)" + className + "(\\s|$)");
    for (i = 0, j = 0; i < len; i++) {
        if (pattern.test(elems[i].className) ) {
            classElements[j] = elems[i];
            j++;
        }
    }

    return (classElements);
}

function fixLinksTarget() {
    try { var links = document.getElementsByTagName('a'); }
    catch (e) { return false; }

    for (var i = 0; i < links.length; i++) {
        var link = links[i];
        var rel = null;

        if (!link.href) continue;

        try { rel = link.rel; }
        catch (e) { rel = link.getAttribute('rel'); }

        if (typeof rel == 'undefined' || !rel) continue;

        if (rel.toLowerCase().indexOf('external') != -1) {
            link.target = '_blank';
        }
    }
}

function setConcertsHovered(parent, className) {
    if (typeof parent == 'undefined' || !parent || !className) return;

    try { var concerts = getElementsByClassName('Concert', parent, 'div'); }
    catch (e) { return; }

    for (var i = 0; i < concerts.length; i++) {
        setHovered(concerts[i], className);
    }
}

function setEntriesHovered(parent, className) {
    if (typeof parent == 'undefined' || !parent || !className) return;

    try { var entries = getElementsByClassName('Entry', parent, 'div'); }
    catch (e) { return; }

    for (var i = 0; i < entries.length; i++) {
        setHovered(entries[i], className);
    }
}

function setHovered(element, className) {
    if (typeof element == 'undefined' || !element || !className) return;

    element.onmouseover = function() {
        this.className += ' ' + className;
    }

    element.onmouseout = function() {
        this.className = this.className.replace(' ' + className, '');
    }
}

function setRollover(image) {
    if (typeof image == 'undefined' || !image) return;

    image.onmouseover = function() {
        this.src = this.src.replace('_off', '_on');
    }

    image.onmouseout = function() {
        this.src = this.src.replace('_on', '_off');
    }
}

function setRollovers() {
    try { var images = getElementsByClassName('Rollover', document, 'img'); }
    catch (e) { return false; }

    for (var i = 0; i < images.length; i++) {
        setRollover(images[i]);
    }
}