/* ---------------------------------------------------------------------  
    John Resig's addEvent()
    http://ejohn.org/projects/flexible-javascript-events/
 --------------------------------------------------------------------- */

function addEvent( obj, type, fn ) {
  if ( obj.attachEvent ) {
    obj['e'+type+fn] = fn;
    obj[type+fn] = function(){obj['e'+type+fn]( window.event );}
    obj.attachEvent( 'on'+type, obj[type+fn] );
  } else
    obj.addEventListener( type, fn, false );
}

function removeEvent( obj, type, fn ) {
 if ( obj.detachEvent ) {
   obj.detachEvent( 'on'+type, obj[type+fn] );
   obj[type+fn] = null;
 } else
   obj.removeEventListener( type, fn, false );
}

/* --------------------------------------------------------------------- 
   Some extracts from mootools.js
   If this file gets bigger than 11kb may as well include the full thing
   but would mean changes to submitRollovers.js and map.js
 --------------------------------------------------------------------- */
function $(el) {
    if(!el) return false;
    if(typeof el == 'string') return document.getElementById(el);
    if(el.nodeName && el.nodeType == 1) return el;
    return false;
}

function hasClassName(el,className){
    var el = $(el);
    if(!el || !el.className) return false;
    return el.className.match('(^|\\s)' + className + '($|\\s)');
}

function addClassName(el,className){
    var el = $(el);
    if(!el) return false;
    if (!hasClassName(el,className)) 
        el.className = (el.className+' '+className.trim()).clean();
    
    return true;
}

function removeClassName(el,className){
    var el = $(el);
    if(!el) return false;
    if (hasClassName(el,className)) 
        el.className = el.className.replace(className.trim(), '').clean();
    
    return true;
}

String.prototype.trim = function(){
    return this.replace(/^\s*|\s*$/g, '');
}

String.prototype.clean = function(){
    return this.replace(/\s\s/g, ' ').trim();
}