dojo.addOnLoad(function() {
	var loginPlaceHolder = dojo.byId("mod-login-placeholder"),
		loginContainer   = dojo.byId("layout-userinfo"),
		loginContent     = dojo.query(".container > .content", loginContainer)[0];
	
	var initLogin = function(htmlForm) {
		loginContent.innerHTML = htmlForm;
		
		var wdgLogin    = new UI.Widgets.User.Login(),
			userdata    = (UI.Util.Cookie.get("persistauth") || "/").split("/"),
			lblPassword = dojo.query("#wdg-login-field-password label")[0],
			usePassword = !userdata[1].length;
		
		if ( usePassword ) {
			wdgLogin.usePassword();
			dojo.addClass(wdgLogin.container, "require-password");
		} else {
			wdgLogin.useToken().enableSubmit();
			lblPassword._originalInnerHTML = lblPassword.innerHTML;
			lblPassword.innerHTML          = "********";
		}
		
		dojo.query("#wdg-login-inp-username, #wdg-login-inp-password")
			.forEach(function(node) {
				node._label = dojo.query("label", node.parentNode)[0];
				
				if ( node.type == "text" ) {
					if ( node.value ) {
						dojo.addClass(node._label, "hidden");
					} else {
						dojo.removeClass(node._label, "hidden");
					}
				}
			})
			.connect("focus", function() {
				if ( this.type == "password" && !usePassword ) {
					return;
				}
				dojo.addClass(this._label, "hidden");
			})
			.connect("blur", function() {
				if ( !this.value ) { 
					dojo.removeClass(this._label, "hidden");
				}
			})
			.connect("keyup", function() {
				if ( this.type == "password" && !usePassword ) {
					lblPassword.innerHTML = lblPassword._originalInnerHTML;
					dojo.addClass(wdgLogin.container, "require-password");
					dojo.addClass(this._label, "hidden");
					usePassword = true;
					wdgLogin.usePassword();
					
					if ( this.value ) {
						wdgLogin.enableSubmit();
					} else {
						wdgLogin.disableSubmit();
					}
				}
			});

		wdgLogin
			.setAuxiliaryLinkTarget("_self")
			.addEventListener("success", function(response) {
				if ( response.isLegacy ) {
					window.location = "/register" + (PPP.isFramed ? "?framed" : "") + (response.pet ? "" : "#account-info");
					return;
				} else if ( !response.starterPack ) {
					window.location = "/register" + (PPP.isFramed ? "?framed" : "") + "#starterpack-selection";
					return;
				} else {
					UI.Widgets.Game.Client.launch();
				}
			}).addEventListener("error", function(response) {
				if ( !usePassword ) {
					lblPassword.innerHTML = lblPassword._originalInnerHTML;
					dojo.addClass(wdgLogin.container, "require-password");
					usePassword = true;
					wdgLogin.usePassword();
				}
			});
	};
	
	/*
	 * Login state presentation (form or welcome message)
	 */
	try {
		if ( !PPP.data.user.isLoggedIn ) {
			dojo.xhrGet({
				url: "/login/embed",
				preventCache: true,
				handleAs: "text",
				load: initLogin,
				error: function() {
					loginContent.innerHTML = "<a href='/login'>Click here to login</a>";
				}
			});
			loginContent.innerHTML = "<div class='field pending' style='width:100%; height:16px; background-position: center center;'></div>";
		}
	} catch (e) {
		loginContent.innerHTML = "<a href='/login'>Click here to login</a>";
	}
	
	loginPlaceHolder.parentNode.replaceChild(loginContainer, loginPlaceHolder);
	loginContainer.style.display = "block";
	
	/*
	 *  Blocked registration and login
	 */
	if ( PPP.config.global.is_registration_closed || PPP.config.global.is_hub_closed ) {
		dojo.connect(dojo.byId("btn-new-user"), "click", function(event) {
			dojo.stopEvent(event);
			
			UI.Widgets.Hud.getMaintenanceDialog(PPP.config.global.is_hub_closed 
				? PPP.config.global.msg_hub_closed 
				: PPP.config.global.msg_registration_closed
			).open();
		});
	} else {
		dojo.byId("btn-new-user").href = "/register";
	}
	
	/*
	 * FB confirmation dialog
	 */
	var dlgFbConfirmation = new UI.Dialog.Generic(dojo.byId("dlg-offsite-bumper"))
		.useModal()
		.addOpenTriggers(dojo.query("#btn-like"));
	
	dojo.query(".btn-close", dlgFbConfirmation.container).connect("click", function(event) {
		dojo.stopEvent(event);
		dlgFbConfirmation.close();
	});
	
	dojo.query(".btn-accept", dlgFbConfirmation.container).connect("click", function(event) {
		dojo.stopEvent(event);
		dojo.removeClass(dojo.byId("mod-social"), "locked");
		dlgFbConfirmation.close();
	});
	
	// WWDOP
	var now = new Date();
	if ( !UI.Util.Cookie.get("wwdop") && (now >= new Date("2011/09/24 9:00") && now <= new Date("2011/09/24 12:00")) ) {
		var dlgWwdop = UI.Dialog.Generic.create(
				{template:{template:"wwdop"}},
				function(dlgWwdop) {
					dojo.query("a", dlgWwdop.getContainer()).connect("click", function() {
						/*ie hack*/window.open(this.href, "_blank");
						dlgWwdop.close();
					});
				}
			)
			.useModal()
			.addEventListener("close", function() {
				UI.Util.Cookie.set("wwdop", 1);
			})
			.open();
	}
});
