/*
	* Original Code: http://konami-js.googlecode.com/
	* Copyright (c) 2009 George Mandis (georgemandis.com, snaptortoise.com)
	* Version: 1.3 (5/06/2010)
	* Licensed under the GNU General Public License v3
	* http://www.gnu.org/copyleft/gpl.html
	* Modified by phill@outofstep.org
*/

var Konami = function() {
	var konami = {
		addEvent: function (obj, type, fn, ref_obj) {
			if (obj.addEventListener) {
				obj.addEventListener(type, fn, false);
			} else if (obj.attachEvent) {
				// IE
				obj["e"+type+fn] = fn;
				obj[type+fn] = function() { obj["e"+type+fn](window.event,ref_obj); }
				obj.attachEvent("on"+type, obj[type+fn]);
			}
		},
		input: "",
		pattern: "38384040373937396665",
		/* pattern: "3838404037393739666513", */
		load: function(link) {
			this.addEvent(document,"keydown", function(e,ref_obj) {							
				if (ref_obj) konami = ref_obj; // IE
				konami.input+= e ? e.keyCode : event.keyCode;
				if (konami.input.indexOf(konami.pattern) != -1) {
					konami.code(link);
					konami.input = "";
					return;
				}
	           	}, this);
			this.iphone.load(link);
		},
		code: function(link) { alert(link); },
		iphone: {
			start_x: 0,
			start_y: 0,
			stop_x: 0,
			stop_y: 0,
			tap: false,
			capture: false,
			input: "",
			pattern: "UUDDLRLRTTT",
			code: function(link) { konami.code(link); },
			load: function(link) {
				konami.addEvent(document, "touchmove", function(e) {
					if (e.touches.length == 1 && konami.iphone.capture == true) {
						var touch = e.touches[0];
						konami.iphone.stop_x = touch.pageX;
						konami.iphone.stop_y = touch.pageY;
						konami.iphone.tap = false;
						konami.iphone.capture = false;
						konami.iphone.check_direction();
					}
				});
				konami.addEvent(document, "touchend", function(evt) {
					if (konami.iphone.tap == true) konami.iphone.check_direction(link);
				}, false);
				konami.addEvent(document, "touchstart", function(evt) {
					konami.iphone.start_x = evt.changedTouches[0].pageX;
					konami.iphone.start_y = evt.changedTouches[0].pageY;
					konami.iphone.tap = true;
					konami.iphone.capture = true;
				});
			},
			check_direction: function(link) {
				x_magnitude = Math.abs(this.start_x-this.stop_x)
				y_magnitude = Math.abs(this.start_y-this.stop_y)
				x = ((this.start_x-this.stop_x) < 0) ? "R" : "L";
				y = ((this.start_y-this.stop_y) < 0) ? "D" : "U";
				result = (x_magnitude > y_magnitude) ? x : y;
				result = (this.tap == true) ? "T" : result;
				this.input+= result;
				if (this.input.indexOf(this.pattern) != -1) {
					this.code(link);
					this.input = "";
					return;
				}
			}
		}
	}
	return konami;
}
var konami = new Konami();
konami.load("Just a minor threat.");
