(function($){
	$.fn.extend({
		initLoginBox: function(opt){
			var options = $.extend({
				loginIcon:			"#gus_login_link",
				loginBoxWrapper: 	"#loginBoxWrapper",
				logoutButton: 		"#logoutButton",
				closeButton: 		".closeButton",
				navButton: 			".top-nav-button"
			}, opt || {});
			
			var loginBoxPos = $(options.loginIcon).position() || {left:0,top: 0};
			loginBoxPos.left -= 200;
			loginBoxPos.top += 22;
			
			var hasError = $( options.loginBoxWrapper ).find(':has(.error)').length > 0;
			if(hasError) $(options.loginBoxWrapper).css(loginBoxPos).toggle();
			
			$(options.loginBoxWrapper).click(function(evt) {
				evt.stopPropagation();
			});
			
			$(options.loginIcon).click(function(evt) {
				if($(options.loginBoxWrapper).css("display") == "block") {
					$(options.loginBoxWrapper).hide();
				} else {
					$(options.loginBoxWrapper).css(loginBoxPos).fadeIn('fast');
					$(".login-box-input #email").focus();
				}
				return false;
			});

			$(options.closeButton).click(function() {
				$(options.loginBoxWrapper).hide();
			});
			
			$(document).click(function() {
				$(options.loginBoxWrapper).hide();
			});
			
			$( options.logoutButton ).replaceWith(
				$( options.navButton ).click(function() {
					var href = $(this).attr("href");
					FB.Connect.ifUserConnected(function() {
						FB.Connect.logoutAndRedirect(href);
					}, function() {
						location.href = href;
					});
					return false;
				})
			);
		},
		initGameMenu: function() {
			$(this).click(function(evt) {
				var gameBoxID = "#gamesBox";
				var gameBoxPos = $(this).position() || {left:0,top: 0};
				gameBoxPos.top += 25;
				gameBoxPos.left -= 10;
				if($(gameBoxID).css("display") == "block") {
					$(gameBoxID).hide();
				} else {
					$(gameBoxID).css(gameBoxPos).fadeIn('fast');
				}
				return false;
			});
			$(document).click(function() { $("#gamesBox").hide(); });
			
			$(".logo").css("cursor", "pointer").bind("click", function() {
				window.location.href="/web/world";
			});
		},
		initButtons: function(opt) {
			var options = $.extend({
				wobuttonleft:	".wo-button-left,.wo-white-button-left",
				wobuttonmiddle:	".wo-button-middle,.wo-white-button-middle",
				wobuttonright:	".wo-button-right,.wo-white-button-right",
				clsSelected: 	"selected"
			}, opt || {});
			$(this).mouseover(function() {
				$(this)
					.find(options.wobuttonleft).addClass(options.clsSelected).end()
					.find(options.wobuttonmiddle).addClass(options.clsSelected).end()
					.find(options.wobuttonright).addClass(options.clsSelected);
			}).mouseout(function() {
				$(this)
					.find(options.wobuttonleft).removeClass(options.clsSelected).end()
					.find(options.wobuttonmiddle).removeClass(options.clsSelected).end()
					.find(options.wobuttonright).removeClass(options.clsSelected);
			});
		},
		initSubmit: function(selector){
			var s = selector || '.submit-button';
			this.find(s).click(function(){
				$(this).parents('form').submit();
				return false;
			});
			return this;
		},
		registerOmniLinkCall: function(opt){
			var settings = $.extend({
				defaultLinkName: 'generic_link_click',
				delimiter: '=',
				handle: 'omniValue'
			}, opt || {});
			
			return this.bind('click submit', function(e){
				if (window.omniLinkCall) {
					var linkName = settings.defaultLinkName;
					var classes = this.className.split(' ');
					$.each(classes, function(){
						var arr = this.split(settings.delimiter);
						if (arr[0] == settings.handle) {
							if (arr[1]) linkName = arr[1];
						}
					});
					
					var fire = !(this.tagName.toLowerCase() == 'form' && e.type == 'click');
					if (fire) omniLinkCall(this, linkName);
				}
			});
		}
	});
})(jQuery);
