/*
 * Copyright 2006-2008 BiZright Technology Inc.
 *
 * Licensed under the Apache License, Version 2.0 (the "License"); you may not
 * use this file except in compliance with the License. You may obtain a copy of
 * the License at
 *
 * http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
 * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
 * License for the specific language governing permissions and limitations under
 * the License.
 */
var onKonamiCommand = onKonamiCommand || (function(){
	var command = [38, 38, 40, 40, 37, 39, 37, 39, 66, 65];
	var handlers = [];
	var target = document.documentElement;
	var active = true;
	var index = 0;

	var downHandler = function(e){
		if(active){
			active = false;
			var keyCode = (e || event).keyCode;
			if(command[index] != keyCode){
				index = 0;
				return;
			}

			if(command.length == ++index){
				index = 0;
				for(var i = 0; i < handlers.length; i++){
					handlers[i]();
				}
			}
		}
	};
	var upHandler = function(){
		active = true;
	};

	if(target.attachEvent){
		target.attachEvent("onkeydown", downHandler);
		target.attachEvent("onkeyup", upHandler);
	}else{
		target.addEventListener("keydown", downHandler, false);
		target.addEventListener("keyup", upHandler, false);
	}

	var result = function(fn){
		handlers.push(fn);
	};

	return result;
})();
