document.getElementsByClassName = function(className) {
	var elementsAll = document.getElementsByTagName('*') || document.all;
	var elements = new Array();
	for(var i = 0; i < elementsAll.length; i++) {
		var classNames = elementsAll[i].className.split(' ');
		for(var j = 0; j < classNames.length; j++) {
			if (classNames[j] == className) {
				elements[elements.length] = elementsAll[i];
				break;
			}
		}
	}
	return elements;
}

function package(name) {
	var packages = name.split('\.');
	
	for (var i = 0; i < packages.length; i++) {
		var current = packages.slice(0, i + 1).join(".");
		var expression = 'if (typeof(' + current + ') == "undefined") {' + current + ' = {};}';
		eval(expression);
	}
}


package("jp.co.takarakujinet");

jp.co.takarakujinet.ArrayUtil = {
	contains : function(arr, obj) {
		for (var i = 0; i < arr.length; i++) {
			if (arr[i] == obj) return true;
		}
		
		return false;
	}
}

jp.co.takarakujinet.Event = {
	_eventMap : {},

	addEventListener : function (target, type, func) {
		if (typeof(target.addEventListener) != 'undefined') {
			target.addEventListener(type, func, true);
			return;
		}

		var listeners = this._getListeners(target, type);
		with (jp.co.takarakujinet) {
			if (!ArrayUtil.contains(listeners, func)) {
				listeners.push(func);
			}
		}

		var handler = function () {
			for (var i = 0; i < listeners.length; i++) {
				listeners[i].apply(this, arguments);
			}
		}

		if (target.attachEvent) {
			if (1 < listeners.length) return;
			target.attachEvent("on" + type, handler);
		} else {
			//イベントリスナが使えない場合は on○○ 属性を上書き
			target["on" + type] = handler;
		}
	},

	_getListeners : function (target, type) {
		var key = [target, type];
		if (this._eventMap[key] == null) {
			this._eventMap[key] = new Array();
		}

		return this._eventMap[key];
	}
};



var cancelActionMessage = "";
var cancelActionCenceled = false;
function setCancelActionMessage(message) {
	cancelActionMessage = message;
}
function cancelAction() {
	cancelActionCenceled = false;
	if (!confirm(cancelActionMessage)){
		return false;
	}
	cancelActionCenceled = true;
	return true;
}
