if (typeof MakinHey === 'undefined' || !MakinHey) {
	var MakinHey = {};
}
if (!MakinHey.array) {
	MakinHey.array = (function() {
		function remove(a, v) {
			var i, l;
			for (i = 0, l = a.length; i < l; i++) {
				if (v === a[i]) {
					a.splice(i, 1);
					return true;
				}
			}
			return false;
		}
		function shuffle(a) {
			var i, n = a.length, t;
			while (n > 1) {
				i = Math.floor(Math.random() * n--);
				t = a[i];
				a[i] = a[n];
				a[n] = t;
			}
		}
		return {
			remove: remove,
			shuffle: shuffle
		};
	} ());
}
if (!MakinHey.event) {
	MakinHey.event = (function() {
		var deferred = [], listeners = [], loaded = false,
		add = (function() {
			if (window.addEventListener) { return function(o, t, f) { o.addEventListener(t, f, false); }; }
			else if (window.attachEvent) { return function(o, t, f) { o.attachEvent('on' + t, f); }; }
			else { return function() { }; }
		} ()),
		remove = (function() {
			if (window.removeEventListener) { return function(o, t, f) { o.removeEventListener(t, f, false); }; }
			else if (window.detachEvent) { return function(o, t, f) { o.detachEvent('on' + t, f); }; }
			else { return function() { }; }
		} ());
		function removeListenerImpl(i) {
			var li = listeners[i];
			if (!li) { return false; }
			try {
				remove(li.o, li.t, li.w);
			}
			catch (ex) {
				return false;
			}
			delete listeners[i].o;
			delete listeners[i].t;
			delete listeners[i].f;
			delete listeners[i].w;
			listeners.splice(i, 1);
			return true;
		}
		function addListener(obj, eventType, fn) {
			if (!obj || !eventType || !fn || !fn.call) { return false; }
			var w = function(e) { return fn.call(obj, e || window.event); };
			var i = listeners.length;
			listeners[i] = { o: obj, t: eventType, f: fn, w: w };
			try {
				add(obj, eventType, w);
			}
			catch (ex) {
				removeListenerImpl(i);
				return false;
			}
			return true;
		}
		function apply(fn, args) {
			try {
				if (args) {
					fn.apply(null, args);
				}
				else {
					fn.apply(null);
				}
			}
			catch (ex) {
			}
		}
		function defer(fn, args) {
			if (loaded) {
				apply(fn, args);
			}
			else {
				deferred.push(fn);
				deferred.push(args);
			}
		}
		function preventDefault(e) {
			if (e.preventDefault) { e.preventDefault(); }
			else { e.returnValue = false; }
		}
		function removeListener(obj, eventType, fn) {
			if (!obj || !eventType || !fn) { return false; }
			var i, l, li;
			for (i = 0, l = listeners.length; i < l; i++) {
				li = listeners[i];
				if (li && (li.o === obj) && (li.t === eventType) && (li.f === fn)) {
					return removeListenerImpl(i);
				}
			}
			return false;
		}
		function load() {
			remove(window, 'load', load);
			loaded = true;
			var i, l;
			for (i = 0, l = deferred.length; i < l; i += 2) {
				apply(deferred[i], deferred[i + 1]);
			}
		}
		function unload() {
			var i;
			for (i = listeners.length; i > 0; ) {
				removeListenerImpl(--i);
			}
			remove(window, 'unload', unload);
		}
		add(window, 'load', load);
		add(window, 'unload', unload);
		return {
			addListener: addListener,
			defer: defer,
			preventDefault: preventDefault,
			removeListener: removeListener
		};
	} ());
}
if (!MakinHey.image) {
	MakinHey.image = (function() {
		function setSrc(o, src) { return function() { o.src = src; }; }
		function rotateImage(id, images, delay, index) {
			var next, preload = new Image();
			index = (index + 1) % images.length;
			next = images[index];
			preload.onload = function() {
				preload.onload = null;
				var img = document.getElementById(id);
				img.src = next.src;
				img.alt = next.alt || '';
				setTimeout(function() { rotateImage(id, images, delay, index); }, delay);
			};
			preload.src = next.src;
		}
		function startImageRotation(id, images, delay) {
			setTimeout(function() { rotateImage(id, images, delay, 0); }, delay);
		}
		function setupImageRollover(id) {
			var img, imgSrc, overSrc;
			img = document.getElementById(id);
			if (img && (imgSrc = img.src)) {
				overSrc = imgSrc.replace('Out.', 'Over.');
				(new Image()).src = overSrc;
				MakinHey.event.addListener(img, 'mouseout', setSrc(img, imgSrc));
				MakinHey.event.addListener(img, 'mouseover', setSrc(img, overSrc));
			}
		}
		function setupImageMapRollover(imgID, mapID) {
			var i, l, img, map, imgSrc, overSrc, prefix, suffix, nodes;
			img = document.getElementById(imgID);
			map = document.getElementById(mapID);
			if (img && map && (imgSrc = img.src) && (i = imgSrc.lastIndexOf('.')) > 0) {
				prefix = imgSrc.substring(0, i);
				suffix = imgSrc.substring(i);
				nodes = document.getElementById(mapID).getElementsByTagName('area');
				for (i = 0, l = nodes.length; i < l; i++) {
					overSrc = prefix + i + suffix;
					(new Image()).src = overSrc;
					MakinHey.event.addListener(nodes[i], 'mouseout', setSrc(img, imgSrc));
					MakinHey.event.addListener(nodes[i], 'mouseover', setSrc(img, overSrc));
				}
			}
		}
		function renderImage(id, width, height, images, delay, usemap) {
			var builder = [];
			MakinHey.array.shuffle(images);
			builder.push('<img id="');
			builder.push(id);
			builder.push('" src="');
			builder.push(images[0].src);
			builder.push('" width="');
			builder.push(width);
			builder.push('" height="');
			builder.push(height);
			builder.push('" alt="');
			builder.push(images[0].alt || '');
			if (usemap) {
				builder.push('" usemap="');
				builder.push(usemap);
			}
			builder.push('" />');
			document.write(builder.join(''));
			if (delay) {
				MakinHey.event.defer(startImageRotation, [id, images, delay]);
			}
		}
		return {
			registerImageRollover: function(id) { MakinHey.event.defer(setupImageRollover, arguments); },
			registerImageMapRollover: function(imgID, mapID) { MakinHey.event.defer(setupImageMapRollover, arguments); },
			renderImage: renderImage
		};
	} ());
}
if (!MakinHey.path) {
	MakinHey.path = (function() {
		function getFileName(path) {
			if (path) {
				var i = path.lastIndexOf('/');
				if (i >= 0) {
					path = path.substring(i + 1);
				}
			}
			return path;
		}
		return {
			getFileName: getFileName
		};
	} ());
}
if (!MakinHey.util) {
	MakinHey.util = (function() {
		function setValueIf(o, newValue, conditionValue) {
			return function() {
				if (o.value === conditionValue) {
					o.value = newValue;
				}
			};
		}
		function manageDefaultValue(id) {
			var obj = document.getElementById(id), v;
			if (obj && (v = obj.value)) {
				MakinHey.event.addListener(obj, 'focus', setValueIf(obj, '', v));
				MakinHey.event.addListener(obj, 'blur', setValueIf(obj, v, ''));
			}
		}
		MakinHey.event.defer(manageDefaultValue, ['q']);
		return {
			manageDefaultValue: manageDefaultValue
		};
	} ());
}