var Noct = function() {
	return {
		effects : [],
		createDefaultText : function() {
			$$('input', 'textarea').each(function(input) {
				if (input.hasClassName("cleardefault")) {
					input.defaultText = input.value ? input.value : "";
					Event.observe(input, "focus", function() {
						if (input.hasClassName('cleardefault')) {
							input.value = "";
							input.removeClassName('cleardefault');
						}
					});
					Event.observe(input, "blur", function() {
						Noct.resetDefaultText(input);
					});
				}
			});
			$$('form').each(function(form) {
				Event.observe(form, "submit", function() {
					$$('.cleardefault').each(function(e) {
						e.value = "";
					});
				});
			});
		},
		
		resetDefaultText : function(input) {
			input = $(input);
			if (input.value == "") {
				input.addClassName('cleardefault');
				input.value = input.defaultText;
			}
		},
		
		initializeLoginForm : function() {
			if ($('sign_in_button')) {
				Event.observe('sign_in_button', 'click', function(e) {
					Event.stop(e);
					if ($('sign_in_button').innerHTML == "Sign In") {
						$('sign_in_button').innerHTML = "Cancel";
						$('sign_in_button').addClassName("active");
					} else {
						$('sign_in_button').removeClassName('active').show().innerHTML = "Sign In";
					}
					Effect.toggle('login_form', 'appear', {duration: 0.25});
					Effect.toggle('navigation_tabs', 'appear', {duration: 0.25});
					Effect.toggle('navigation_effects', 'appear', {duration: 0.25});
					return false;
				});
			}
		},
		
		initNavEffects : function() {
			var navEffect = new Image();
			navEffect.src = "/images/layout/nav_highlight.jpg";
			$$('#navigation li').each(function(e) {
				var link = e.down();
				var left = e.positionedOffset()[0];
				var width = e.getWidth();
				var position = left + (width / 2) - 30;
				var html = "<div id='" + link.id + "_effect' class='nav_effect' style='display:none;left:" + position + "px;'><!-- --></div>";
				$('navigation_effects').insert({bottom: html});
				if(!e.down('a').hasClassName('active')) {
					$(link.id + '_effect').setOpacity(0).show();
					Event.observe(link, 'mouseover', function() {
						if(Noct.effects[link.id]) {
							Noct.effects[link.id].cancel();
							//effects.each(function(effect) {effect.cancel()});
						}
						// Noct.effects[link.id] = new Effect.Parallel([
						// 	new Effect.Opacity(link.id + '_effect', {to: 1.0}),
						// 	new Effect.Morph(link.id, {style: 'padding-top:10px'})
						// ], {duration: 0.5});
						Noct.effects[link.id] = new Effect.Opacity(link.id + '_effect', {to: 1.0, duration: 0.25});
					});
					Event.observe(link, 'mouseout', function() {
						if(Noct.effects[link.id]) {
							Noct.effects[link.id].cancel();
							//effects.each(function(effect) {effect.cancel()});
						}
						// Noct.effects[link.id] = new Effect.Parallel([
						// 	new Effect.Opacity(link.id + '_effect', {to: 0.0}),
						// 	new Effect.Morph(link.id, {style: 'padding-top:0px'})
						// ], {duration: 0.5});
						Noct.effects[link.id] = new Effect.Opacity(link.id + '_effect', {to: 0.0});
					});
				} else {
					$(link.id + '_effect').show();
				}
			});
		},
		
		resizeImages : function() {
			$$('div#content div.body img').each(function(e) {
				var j = new Image();
				Event.observe(j, 'load', function(event) {
					var t = Event.element(event);
					if (t.width && parseInt(t.width) > 880) {
						var h = parseInt(t.height);
						var w = parseInt(t.width);
						var ratio = h / w;
						e.style.width = "880px";
						e.style.height = (880 * ratio) + "px"; 
					}
				});
				j.src = e.src;
			});
		},
		
		focusFirst : function() {
			$$('input.first_focus').each(function(e) {
				e.activate();
			});
		},
		
		fadeFlashNotice : function() {
			if ($('flash_notice')) {
				$('flash_notice').fade({delay: 5.0});
			}
		},
		
		initNocturnalism : function() {
			Noct.initNavEffects();
			Noct.createDefaultText();
			Noct.initializeLoginForm();
			Noct.focusFirst();
			Noct.resizeImages();
			Noct.fadeFlashNotice();
		}
	}
}();