function Kw() { };
Kw.addEventListener = function(obj,event,listener) {
	if (typeof(obj.addEventListener) != 'undefined') {
		obj.addEventListener(event, listener, false);
	}
	else if (typeof obj.attachEvent != 'undefined') {
		obj.attachEvent('on'+event, listener);
	}
};
Kw.removeEventListener = function(obj,event,listener) {
	if (typeof(obj.removeEventListener) != 'undefined') {
		obj.removeEventListener(event, listener, false);
	}
	else if (typeof(obj.detachEvent) != 'undefined') {
		obj.detachEvent('on'+event, listener);
	}
};
Kw.changeDisplayObj = function(obj, type) {
	if (type == null) type = 'block';
	if (obj.style.display == 'none') {
		obj.style.display = type;
		return true;
	}
	else {
		obj.style.display = 'none';
		return false;
	}
};
Kw.changeDisplayId = function(id) {
//	alert(id);
	return Kw.changeDisplayObj(Kw.getObj(id));
};

Kw.getObj = function(id) {
	return document.getElementById(id);
};

Kw.dump = function(arr,tab) {
    var ans = '';
	if (tab == null)
		tab = '';
    if ((typeof(arr) == 'array') || (typeof(arr) == 'object')) {
       for (var k in arr) {
            if ((typeof(arr[k]) == 'array') || (typeof(arr[k]) == 'object')) {
                ans += tab+typeof(arr[k])+'('+k+") {\n";
                if (rec)
                    ans += ggDumpArr(arr[k],tab + '  ');
                ans += tab + "}\n";
            }
            else
                ans += tab+'['+k+'] => '+arr[k]+"\n";
        }
    }
    else {
        ans = tab+arr;
    }
	alert(ans);
    return ans;
};
Kw.trim = function trim(string) {
	return string.replace(/(^\s+)|(\s+$)/g, '');
};

Kw.getX = function(elem) {
	var ret = 0;
	while(elem != null) {
		ret += elem.offsetLeft;
		elem = elem.offsetParent;
	}
	return ret;
};

Kw.getY = function(elem) {
	var ret = 0;
	while(elem != null) {
		ret += elem.offsetTop;
		elem = elem.offsetParent;
	}
	return ret;
};

