function g(obj) {
  return document.getElementById(obj);
}


function basename(path) {
    return path.replace(/\\/g,'/').replace( /.*\//, '' );
}
 



function functionGroup() {
  var _functionGroup = this;
  _functionGroup.functions = [];
  _functionGroup.add = function(fun) {
    _functionGroup.functions[_functionGroup.functions.length] = fun;
  }
  _functionGroup.exec = function() {
	for (i = 0; i < _functionGroup.functions.length; i++) {
	  _functionGroup.functions[i]();
	}
  }
  _functionGroup.getLength = function() {
    return _functionGroup.functions.length;
  }
}




function events() {
  var _events = this;
  _events.arr = [];
  
  _events.add = function(addObject, addEvent, addFunction) {
    
	if (addObject.id) {
	  addObjectId = addObject.id;
	} else {
	  addObjectId = addObject;
	}
	
	if (typeof _events.arr[addObjectId] != 'object') {
	  _events.arr[addObjectId] = [];
	}
	
	if (typeof _events.arr[addObjectId][addEvent] != 'object') {
	  //alert('new functionGroup created : ' + addObject + '-' + addEvent + '-' + addFunction + '!');
	  _events.arr[addObjectId][addEvent] = new functionGroup();
	}

	
	_events.arr[addObjectId][addEvent].add(addFunction);
	
	if (_events.arr[addObjectId][addEvent].getLength() <= 1) {
	  switch(addEvent) {
	    case 'load':
		  addObject.onload = _events.arr[addObjectId][addEvent].exec;
		  break;
	    case 'click':
		  addObject.onclick = _events.arr[addObjectId][addEvent].exec;
		  break;
	    default:
	      break;
	  }
	}
  }
}


var ev = new events();
