
var img_path = "/images/"; // путь к картинкам от корня сайта
var img_menu_dir = "menu"; // папка с картинками, которые должны меняться (никаких слэшей в названии!)
var img_ext = ".gif"; // расширение у меняемых картинок (должно быть у всех одинаково)
var active_img_suffix = "_"; // суффикс у активных картинок (т. е. в моём случае путь к первой активной картинке такой: "/menu/1_.jpg")

function preloadImg(file){
  var image = new Image();
  image.src = img_path + img_menu_dir + "/" + file + img_ext;
}

function show(e){
  var el = window.event ? window.event.srcElement : e.currentTarget;
  var str = img_menu_dir + "\\/(\\d+)" + img_ext;
  var re = new RegExp(str, "i");
  el_src = el.src;
  r = el_src.match(re);
  if (r) el.src = img_path + img_menu_dir + "/" + r[1] + active_img_suffix + img_ext;
}

function hide(e){
  var el = window.event ? window.event.srcElement : e.currentTarget;
  var str = img_menu_dir + "\\/(\\d+)" + active_img_suffix + img_ext;
  var re = new RegExp(str, "i");
  el_src = el.src;
  r = el_src.match(re);
  if (r) el.src = img_path + img_menu_dir + "/" + r[1] + img_ext;
}

function init(){
  if (document.images){
    var img_item = img_item_src = r = null;
    var str = img_menu_dir + "\\/(\\d+)" + img_ext;
    var re = new RegExp(str, "i");
    for (var i = 0; (img_item = document.getElementsByTagName("img").item(i)); i++){
      img_item_src = img_item.src;
      r = img_item_src.match(re);
      if (!r) continue; // !!! 
      preloadImg(r[1] + active_img_suffix);
      if (img_item.addEventListener){
        img_item.addEventListener("mouseover", show, false);
        img_item.addEventListener("mouseout", hide, false);
      }else if (img_item.attachEvent){
        img_item.attachEvent("onmouseover", show);
        img_item.attachEvent("onmouseout", hide);
      }
    }
  }
}

var root = window.addEventListener || window.attachEvent ? window : document.addEventListener ? document : null;
if (root){
  if (root.addEventListener) root.addEventListener("load", init, false);
  else if (root.attachEvent) root.attachEvent("onload", init);
}