// changeImage()
var preloaded = false;
function changeImage(img, state){
  if(document.images && preloaded){
    if(img.tagName){
      var id = img.id;
      for(var i=0; i<rollovers.length; i++){
        if(rollovers[i].image == id){
          if(state && typeof rollovers[i].over == "string"){ document.images[rollovers[i].image].src = rollovers[i].over; }
          else if(state && typeof rollovers[i].over == "object"){
            if(typeof rollovers[i].over[0] == "object"){
							// handle arrays
              for(var j=0;j<rollovers[i].over.length;j++){
                var img2 = getElement(rollovers[i].over[j][0]);
                if(img2){ img2.src = rollovers[i].over[j][1]; }
              }
            }
            else {
              var img2 = document.getElementById(rollovers[i].over[0]);
              if(img2){ img2.src = rollovers[i].over[1]; }
            }
          }
          else if(!state && typeof rollovers[i].normal == "string") { document.images[rollovers[i].image].src = rollovers[i].normal; }
          else if(!state && typeof rollovers[i].normal == "object"){
            if(typeof rollovers[i].normal[0] == "object"){
              for(var j=0;j<rollovers[i].normal.length;j++){
                var img2 = getElement(rollovers[i].normal[j][0]);
                if(img2){ img2.src = rollovers[i].normal[j][1]; }
              }
            }
            else {
              var img2 = getElement(rollovers[i].normal[0]);
              if(img2){ img2.src = rollovers[i].normal[1]; }
            }
          }
          break;
        }
      }
    }
    else {
      if(document.getElementById){
        var id = img.id;
        for(var i=0; i<rollovers.length; i++){
          if(rollovers[i].link == id){
            if(state){ document.images[rollovers[i].image].src = rollovers[i].over.src; }
            else { document.images[rollovers[i].image].src = rollovers[i].normal.src; }
            break;
          }
        }
      }
    }
  }
  return true;
}

// RollOver()
function RollOver(image, normal, over){
  if(typeof image != "object"){
    this.image = image;
    this.link  = false;
  }
  else {
    this.image = image[1];
    this.link  = image[0];
  }
  this.normal = normal;
  this.over = over;
}

// RollOver Init
RollOver.init = function(){
  if(document.getElementById){
    if(rollovers){
      for(var i=0; i<rollovers.length; i++){
        if(!rollovers[i].link){ img = getElement(rollovers[i].image); }
        else { img = getElement(rollovers[i].link); }
        if(img){
          temp1 = function(){ changeImage(this, 1); };
          temp2 = function(){ changeImage(this, 0); };
          addEventToElement(img,temp1,"onmouseover");
          addEventToElement(img,temp2,"onmouseout");
        }
      }
    }
  }
  preloaded = true;
}

function addEventToElement(elem,func,event){
  if(typeof elem != "object"){ return false; }
  if(typeof func != "function"){ return false; }
  
  if(typeof event == "object"){
    for(var i=0;i<event.length;i++){ addEventToElem(elem,func,event[i]); }
  }
  else if(typeof event == "string") {
    var elemEvent = eval("elem."+ event);
    var old = elemEvent;
    if (typeof elemEvent != 'function') { elemEvent = func; } 
    else {
      elemEvent = function() {
        old();
        func();
      }
    }

    switch(event){
    case "onload":
      elem.onload=elemEvent;
      break;
    case "onchange":
      elem.onchange=elemEvent;
      break;
    case "onfocus":
      elem.onfocus=elemEvent;
      break;
    case "onblur":
      elem.onblur=elemEvent;
      break;
    case "onclick":
      elem.onclick=elemEvent;
      break;
    case "onmouseover":
      elem.onmouseover=elemEvent;
      break;
    case "onmouseout":
      elem.onmouseout=elemEvent;
      break;
    }
  }
}


