function addEvent(obj, evType, fn, useCapture){
  if (obj.addEventListener){
    obj.addEventListener(evType, fn, useCapture);
    return true;
  } else if (obj.attachEvent){
    var r = obj.attachEvent("on"+evType, fn);
    return r;
  } else {
    //alert("Handler could not be attached");
  }
}

function removeEvent(obj, evType, fn, useCapture){
  if (obj.removeEventListener){
    obj.removeEventListener(evType, fn, useCapture);
    return true;
  } else if (obj.detachEvent){
    var r = obj.detachEvent("on"+evType, fn);
    return r;
  } else {
    //alert("Handler could not be removed");
  }
}

function getTarget(e) {
	var t;
	if (!e) { e = window.event; }
	if (e.target) { t = e.target; }
	else if (e.srcElement) { t = e.srcElement; }
	if (t.nodeType == 3) { t = t.parentNode; }
	return t;
}

function toArray(obj) {
	var res = new Array();
	for(var i = 0; i < obj.length; i++) {
		res.push(obj[i]);
	}
	return res;
}

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

function inArray(needle, haystack) {
	return haystack.find(needle);
}


function getElement(id) {
	if (document.getElementById) {
		return document.getElementById(id);
	} else if (document.all) {
		return document.all[id];
	} else if (document.layers) {
		return document.layers[id];
	}
	return null;
}


function isArray(a) {
    return isObject(a) && a.constructor == Array;
}
function isBoolean(a) {
    return typeof a == 'boolean';
}
function isEmpty(o) {
    var i, v;
    if (isObject(o)) {
        for (i in o) {
            v = o[i];
            if (isUndefined(v) && isFunction(v)) {
                return false;
            }
        }
    }
    return true;
}
function isFunction(a) {
    return typeof a == 'function';
}
function isNull(a) {
    return typeof a == 'object' && !a;
}
function isNumber(a) {
    return typeof a == 'number' && isFinite(a);
}
function isObject(a) {
    return (a && typeof a == 'object') || isFunction(a);
}
function isString(a) {
    if (typeof a == 'string') {
		return true;
	} else if (typeof a == 'object' && a.constructor) {
		var stringObjCheck = a.constructor.toString().match(/string/i); 
		return (stringObjCheck != null);  
	}
	return false;
}
function isUndefined(a) {
    return typeof a == 'undefined';
}



