﻿// Rollover/preload script by Matt Ditter (Nov. 2007)
// version 1.6 (August 2008)
var prePaths = [], preImages = [], rollImages = [];
function addEvent(evt, func, obj) {
    obj = obj ? obj : window;
    if (obj.addEventListener) { obj.addEventListener(evt, func, false); return true; }
    else if (obj.attachEvent) { var ev = obj.attachEvent('on' + evt, func, event); return ev; }
    else return false;
}
function preload() {
    for (var i = 0, path; path = prePaths[i]; i++) {
        var l = preImages.length;
        preImages[l] = new Image();
        preImages[l].src = path;
    } 
}
function preroll() {
    var imgs, flag, path, dot, d = document, links = d.getElementsByTagName('a'), inps = d.getElementsByTagName('input');
    for (var i = 0, a; a = links[i]; i++) {
        imgs = a.getElementsByTagName('img');
        flag = 0;
        if (a.onmouseover && imgs.length) a.onfocus = a.onmouseover;
        for (var j = 0, img; img = imgs[j]; j++) {
            if (img.className.match(/(?:^|\s)over(?:\s|$)/i)) {
                path = img.src;
                dot = path.lastIndexOf('.');
                prePaths[prePaths.length] = path.substring(0, dot) + '-o' + path.substring(dot, path.length);
                flag = 1;
            } 
        }
        if (flag) {
            addEvent('mouseover', imageRoll, a);
            addEvent('mouseout', imageRoll, a);
            addEvent('focus', imageRoll, a);
            addEvent('blur', imageRoll, a);
        } 
    }
    for (var i = 0, inp; inp = inps[i]; i++) {
        if (inp.type == 'image' && inp.className.match(/(?:^|\s)over(?:\s|$)/i)) {
            addEvent('mouseover', inputRoll, inp);
            addEvent('mouseout', inputRoll, inp);
            addEvent('focus', inputRoll, inp);
            addEvent('blur', inputRoll, inp);
        } 
    }
    for (var i = 0, arg; arg = arguments[i]; i++) prePaths[prePaths.length] = arg;
    addEvent('load', preload);
}
function imageRoll(e) {
    var imgs, path, dot, a = this.tagName ? this : e.srcElement;
    while (a.tagName != 'A' && a.parentNode) a = a.parentNode;
    if (a.tagName != 'A') return;
    imgs = a.getElementsByTagName('img');
    for (var i = 0, img; img = imgs[i]; i++) {
        if (img.className.match(/(?:^|\s)over(?:\s|$)/i)) {
            path = img.src;
            dot = path.lastIndexOf('.');
            if (img.className.indexOf('activeimg') == -1)
                img.src = path.indexOf('-o.') == -1 ? path.substring(0, dot) + '-o' + path.substring(dot, path.length) : path.replace('-o.', '.');
            else img.src = path.indexOf('-a.') == -1 ? path.replace('-o.', '-a.') : path.replace('-a.', '-o.');
        } 
    } 
}
function inputRoll(e) {
    var inp = this.type ? this : e.srcElement, path = inp.src, dot = path.lastIndexOf('.');
    inp.src = path.indexOf('-o.') == -1 ? path.substring(0, dot) + '-o' + path.substring(dot, path.length) : path.replace('-o.', '.');
}
function roll(e) {
    var args = arguments;
    if (args.length < 2) for (var i = 0, img; img = rollImages[i]; i++) img.src = img.old;
    else {
        var flag, path, ev, a;
        for (var i = 0, img; img = document.getElementById(args[i]); i = i + 2) {
            flag = 0;
            path = args[i + 1];
            if (!i) {
                ev = window.event ? window.event : e;
                a = ev.target ? ev.target : ev.srcElement;
                if (!path || !ev) return;
                addEvent('mouseout', roll, a);
                addEvent('blur', roll, a);
            }
            for (var j = 0, rollImg; rollImg = rollImages[j]; j++)
                if (img == rollImg) { flag = 1; break; }
            if (!flag) rollImages[rollImages.length] = img;
            if (!img.old) img.old = img.src;
            img.src = path;
        } 
    } 
}
