/**
 * @param arg {name: [], id: []}
 * @param timer int msec to enable submit button.  10sec if omitted.
 * @see http://www.drk7.jp/MT/archives/001345.html
 */
function DisableSubmit(arg, timer){
	if (typeof(arg) != "object") arg = {};
	if (!timer) timer = 10 * 1000; // 1000 = 1sec

	var names = arg.name || [];
	var ids = arg.id || [];
	
	addOnLoad(function(){
		var elems = getElements(names, ids);
		for (var i = 0, l = elems.length; i < l; ++i)
			setDisableOnClick(elems[i], timer);
	});
	addOnUnload(function(){
		var elems = getElements(names, ids);
		for (var i = 0, l = elems.length; i < l; ++i)
			elems[i].disabled = false;
	});
	return;
	
	
	function addOnLoad(fn){
		if (typeof dojo != 'undefined')
			dojo.addOnLoad(fn);
		else
			addEvent(window, 'load', fn);
	}
	function addOnUnload(fn){
		if (typeof dojo != 'undefined')
			dojo.addOnUnload(fn);
		else
			addEvent(window, 'unload', fn);
	}
	function setDisableOnClick(elem, timer){
		if (typeof dojo != 'undefined')
		{
			dojo.connect(elem, 'onclick', function(event){
				setDisableTimeouts(elem, timer);
			});
		}
		else
		{
			addEvent(elem, 'click', setDisable(elem));
		}
		return;

		// 二度押し防止対策でボタンを 1msec 後にdisable化しておく。これで hidden データ作成しなくても get/post が正常処理される
		function setDisable(elem){
			var func = elem.onclick;
			elem.onclick = "";
			return function(evt){
				var elem = evt.srcElement || evt.target;
				setDisableTimeouts(elem, timer);
				if (func) window.setTimeout(function(){ func(); }, 2);
			};
		}
		function setDisableTimeouts(elem, timer){
			window.setTimeout(function(){ elem.disabled = true; }, 1);
			window.setTimeout(function(){ elem.disabled = false; }, timer);
		}
	} // setDisableOnClick
	// no capture events only
	function addEvent(elem, eventType, fn){
		if (elem.addEventListener)
			elem.addEventListener(eventType, fn, false);
		else if (elem.attachEvent)
			elem.attachEvent('on' + eventType, fn);
		else
			elem['on' + eventType] = fn;
	}
	function getElements(names, ids){
		var elems = [];
		for (var i = 0, l = names.length; i < l; ++i) {
			var nElems = document.getElementsByName(names[i]);
			for (var j = 0, m = nElems.length; j < m; ++j)
			{
				var elem = nElems[j];
				if (elem) elems.push(elem);
			}
		}
		for (var i = 0, l = ids.length; i < l; ++i) {
			var elem = document.getElementById(ids[i]);
			if (elem) elems.push(elem);
		}
		return elems;
	}
} // DisableSubmit
