function getElementsByClassName(strClass, strTag, objContElm) {
  strTag = strTag || "*";
  objContElm = objContElm || document;    
  var objColl = objContElm.getElementsByTagName(strTag);
  if (!objColl.length &&  strTag == "*" &&  objContElm.all) objColl = objContElm.all;
  var arr = new Array();                              
  var delim = strClass.indexOf('|') != -1  ? '|' : ' ';   
  var arrClass = strClass.split(delim);    
  for (var i = 0, j = objColl.length; i < j; i++) {                         
    var arrObjClass = objColl[i].className.split(' ');   
    if (delim == ' ' && arrClass.length > arrObjClass.length) continue;
    var c = 0;
    comparisonLoop:
    for (var k = 0, l = arrObjClass.length; k < l; k++) {
      for (var m = 0, n = arrClass.length; m < n; m++) {
        if (arrClass[m] == arrObjClass[k]) c++;
        if ((delim == '|' && c == 1) || (delim == ' ' && c == arrClass.length)) {
          arr.push(objColl[i]); 
          break comparisonLoop;
        }
      }
    }
  }
  return arr; 
}

// To cover IE 5 Mac lack of the push method
//Array.prototype.push = function(value) {
//  this[this.length] = value;                                                              
//};       

function addClassName(obj,strClass) {
  obj.className = obj.ClassName != '' ? obj.className+' '+strClass : strClass;
}

function removeClassName(obj,strClass){
  var regex = new RegExp(" "+strClass+"|"+strClass+" |"+strClass);
  obj.className = obj.className.replace(regex, "");
} 

function init() {
  cont = document.getElementById('container1');
  cont2 = document.getElementById('container2');
  lks = document.getElementById('links');
  document.getElementById('show_nw_washington').onclick = function() { showing(this, 'nw_washington', '*', cont); return false; };
  document.getElementById('show_ct_washington').onclick = function() { showing(this, 'ct_washington', '*', cont); return false; };
  document.getElementById('show_e_washington').onclick = function() { showing(this, 'e_washington', '*', cont); return false; };
  document.getElementById('show_oregon').onclick = function() { showing(this, 'oregon', '*', cont); return false; };
  document.getElementById('show_all').onclick = function() { showing(this, 'all_regions|region', '*', cont); return false; };
}
 
function showing(objLinkId, strClass, strTag, objContElm)
{
  resetlinks();
  objLinkId.className = 'urhere';
  var myObjColl = getElementsByClassName(strClass, strTag, objContElm);
  for (var i = 0, j = myObjColl.length; i < j; i++) {
      myObjColl[i].className = myObjColl[i].className + ' show';
  }
}

function resetlinks() {
  var myObjColl = getElementsByClassName('nw_washington|ct_washington|oregon|all_regions|e_washington', '*', cont);
  for (var i = 0, j = myObjColl.length; i < j; i++) {
    removeClassName(myObjColl[i],'show');
  }
  var myObjColl2 = getElementsByClassName('urhere', 'li', lks);
  for (var i = 0, j = myObjColl2.length; i < j; i++) {
    removeClassName(myObjColl2[i],'urhere');
  }
}

// Note: You would usually use an addevent function here
window.onload = init;