/***
  ADD AND REMOVE EVENT LISTENERS
                ***/
function addListener(elm,event,func){
  if(document.attachEvent){
    elm.attachEvent("on"+event, func);
  }else if(document.addEventListener){
    elm.addEventListener(event, func, true);
  }else{
      eval(elm+".on"+event+"="+func);
  }
}

function removeListener(elm,event,func){
  if(document.detachEvent){
    elm.detachEvent("on"+event, func);
  }else if(document.removeEventListener){
    elm.removeEventListener(event, func, true);
  }else{
      eval(elm+".on"+event+"= function(){return false;}");
  }
}

Array.prototype.inArray = function (value) {
	var i;
	for (i=0; i < this.length; i++) {
		if (this[i] === value) {
			return true;
		}
	}
	return false;
};

function getElementsByClass(clsName, tagName, contextElement){
	var outArray = new Array();
	var context = null;
	
	if(contextElement=="" || contextElement==null || getElementsByClass.arguments.length<3){
		context = document;	
	}else{
		context = contextElement;
	}
	if(tagName=="" || tagName==null || getElementsByClass.arguments.length==1){
		elsArray = context.elements;
	}else{
		elsArray = context.getElementsByTagName(tagName);
	}
	for(x=0;x<elsArray.length;x++){
		if(elsArray[x].className == clsName){
			outArray[outArray.length] = elsArray[x];
		}
	}
	return outArray;
}
