//use browser sniffing to determine if IE or Opera (ugly, but required)
var isOpera, isIE = false;
if(typeof(window.opera) != 'undefined')
{
  isOpera = true;
}
if(!isOpera && navigator.userAgent.indexOf('Internet Explorer'))
{
  isIE = true;
}

//fix both IE and Opera (adjust when they implement this method properly)
if(isOpera || isIE)
{
  document.nativeGetElementById = document.getElementById;
  
//redefine it!
  document.getElementById = function(id){
    var elem = document.nativeGetElementById(id);
    if(elem){
      
//verify it is a valid match!      
if(elem.attributes['id'] && elem.attributes['id'].value == id){
        
//valid match!       
return elem;
      }
 else {
        
//not a valid match!        
//the non-standard, document.all array has keys for all name'd, and id'd elements        
//start at one, because we know the first match, is wrong!
for(var i=1;i<document.all[id].length;i++){
          if(document.all[id][i].attributes['id'] && document.all[id][i].attributes['id'].value == id){
            return document.all[id][i];
          }
        }
      }
    }
    return null;
  };
}


function $(element)
{
  return document.getElementById(element);
}
