// 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;

}}}