// JScript source code

Flux.widgets['QuickMenu'] = {};
Flux.widgets['QuickMenu'].frameworkVersion = 3004;
Flux.widgets['QuickMenu'].constructor = function($, $this, $core, $context, $error) {

var $strings = {
	"comments": "-=Comments=-",
	"lnkFriendRequest": "You have a friend request!",
	"lnkHavePendingBulletins": "You have an unread bulletin!",
	"lnkJoinNow": "Join Now",
	"lnkLogIn": "Log In",
	"lnkLogOut": "Log Out",
	"lnkMore": "More",
	"lnkMyPages": "My Pages",
	"lnkProfile": "Profile",
	"lnkSignOut": "Sign Out",
	"lnkSignUp": "Join Now",
	"msgHi": "Hi",
	"msgNotLoggedIn": "You are not logged in ",
	"msgNotMember": "you are not yet a member of this community",
	"msgReadOnlyMode": "Maintenance",
	"or": "or"
};

var $markup = {
	"memberView": "<div class=\"container\">\u000d\u000a\u0009<span class=\"avatarElements userThumbnail\"><\/span>&nbsp;\u000d\u000a\u0009<span class=\"avatarElements greeting\">Hi <span class=\"userName link profileLink\"><\/span><\/span>\u000d\u000a\u0009<span class=\"avatarElements\">&nbsp;&nbsp;<\/span>\u000d\u000a\u0009<span class=\"profile\">\u000d\u000a\u0009\u0009<span class=\"link profileLink\">Profile<\/span>&nbsp;|&nbsp;\u000d\u000a\u0009<\/span>\u000d\u000a\u0009<span class=\"more link\">My Pages&nbsp;&#x25BC;<\/span>&nbsp;|&nbsp;\u000d\u000a\u0009<span class=\"signOut link\">\u000d\u000a\u0009\u0009Sign Out\u000d\u000a\u0009<\/span>\u000d\u000a\u0009<span class=\"customLinksContainer\"><\/span>\u000d\u000a\u0009<span class=\"pnlDelimiter\">&nbsp;||&nbsp;<\/span>\u000d\u000a\u0009<span class=\"btnViewPending link\">\u000d\u000a\u000d\u000a\u0009<\/span>\u000d\u000a<\/div>",
	"menuContainer": "<ul class=\"fluxDropDown menuDropDown\"><\/ul>",
	"menuItem": "<li>\u000d\u000a\u0009<a class=\"fluxDDItem\">\u000d\u000a\u0009\u0009<span class=\"title\"><\/span>\u000d\u000a\u0009\u0009<span class=\"pointer\">&#9658;<\/span>\u000d\u000a\u0009<\/a>\u000d\u000a\u0009<div class=\"subMenu\"><\/div>\u000d\u000a<\/li>",
	
	"customMenuItem": "<li>\u000d\u000a\u0009<a class=\"fluxDDItem\" href=\"http://www1.bet.com/webapplications/cookieconfig/ManageNewsLetters.aspx\">\u000d\u000a\u0009\u0009<span class=\"title\">News Letters<\/span>\u000d\u000a\u0009<\/a>\u000d\u000a\u0009<\/li>\u000d\u000a\u0009<li>\u000d\u000a\u0009<a class=\"fluxDDItem\" href=\"http://www1.bet.com/WebApplications/CookieConfig/UserRegistration.aspx?action=shine\">\u000d\u000a\u0009<span class=\"title\">Shine<\/span>\u000d\u000a\u0009<\/a>\u000d\u000a\u0009<\/li>",
	
	"notLoggedInView": "<div class=\"nonMemberView nonLoggedInView\">\u000d\u000a\u0009<p class=\"container\">\u000d\u000a\u0009\u0009You are not logged in \u000d\u000a\u0009\u0009<span class=\"signIn fluxBtn btnMedium\">Log In<\/span>\u000d\u000a\u0009\u0009 or \u000d\u000a\u0009\u0009<span class=\"signUp fluxBtn btnMedium\">Join Now<\/span>\u000d\u000a\u0009\u0009&nbsp;\u000d\u000a\u0009\u0009<span class=\"fbIcon\">&nbsp;<\/span>\u000d\u000a\u0009<\/p>\u000d\u000a<\/div>",
	"notMemberView": "<div class=\"nonMemberView\">\u000d\u000a\u0009<div class=\"container\">\u000d\u000a\u0009\u0009<span class=\"avatarElements userThumbnail\"><\/span>\u000d\u000a\u0009\u0009<span class=\"avatarElements\">&nbsp;<\/span>\u000d\u000a\u0009\u0009<span class=\"avatarElements greeting\">Hi <span class=\"userName link profileLink\"><\/span><\/span>, you are not yet a member of this community\u000d\u000a\u0009\u0009<span class=\"avatarElements\">&nbsp;&nbsp;&nbsp;&nbsp;<\/span>\u000d\u000a\u0009\u0009<span class=\"join fluxBtn btnMedium\">Join Now<\/span>\u000d\u000a\u0009\u0009&nbsp;or&nbsp;\u000d\u000a\u0009\u0009<span class=\"signOut fluxBtn btnMedium\">Sign Out<\/span>\u000d\u000a\u0009<\/div>\u000d\u000a<\/div>",
	"notMemberView_FacebookOnly": "<div class=\"nonMemberView\">\u000d\u000a\u0009<div class=\"container\">\u000d\u000a\u0009\u0009<span class=\"avatarElementsuserThumbnail\"><\/span>\u000d\u000a\u0009\u0009<span class=\"avatarElements\">&nbsp;<\/span>\u000d\u000a\u0009\u0009<span class=\"avatarElements greeting\">\u000d\u000a\u0009\u0009\u0009Hi <span class=\"userName link profileLink\"><\/span>!\u000d\u000a\u0009\u0009<\/span>\u000d\u000a\u0009\u0009<span class=\"avatarElements\">&nbsp;&nbsp;&nbsp;&nbsp;<\/span>\u000d\u000a\u0009\u0009<span class=\"join fluxBtn btnMedium\">Join Now<\/span>\u000d\u000a\u0009<\/div>\u000d\u000a<\/div>"
};

this.style = "\/*\u000d\u000aStyles specific to the Quick Menu widget\u000d\u000a*\/\u000d\u000a.fluxWidget .quickMenu .greeting { font-weight: bold; }\u000d\u000a.fluxWidget div.quickMenu { height: auto; }\u000d\u000a.fluxWidget .quickMenu .fluxBtn {\u000d\u000a\u0009display: inline-block;\u000d\u000a\u0009vertical-align: middle;\u000d\u000a}\u000d\u000a.fluxWidget .quickMenu li { margin: 0px; padding: 0px; }\u000d\u000a.fluxWidget .quickMenu .itemActive { position: relative; background-color: Red; }\u000d\u000a.fluxWidget .quickMenu li .fluxDropDown { display: none; }\u000d\u000a.fluxWidget .quickMenu li.itemActive .fluxDropDown { \u000d\u000a\u0009display: block;\u000d\u000a\u0009left: 100%;\u000d\u000a\u0009top: 0px;\u000d\u000a}\u000d\u000a.fluxWidget .quickMenu .fluxDropDown { text-align: left!important; }\u000d\u000a.fluxWidget .quickMenu .more.over { display: inline-block; vertical-align: middle; }\u000d\u000a.fluxWidget .quickMenu a.fluxDDItem.selected,\u000d\u000a.fluxWidget .quickMenu a.fluxDDItem.selected:hover {\u000d\u000a\u0009background-color: #333333;\u000d\u000a\u0009color: #ffffff;\u000d\u000a}\u000d\u000a.fluxWidget .quickMenu .fluxDDItem .title {\u000d\u000a\u0009white-space: nowrap;\u000d\u000a}\u000d\u000a.fluxWidget .quickMenu .withSubMenu .title {\u000d\u000a\u0009margin-right: 7px;\u000d\u000a}\u000d\u000a\u000d\u000a.fluxWidget .quickMenu .fluxDDItem .pointer { display: none; }\u000d\u000a.fluxWidget .quickMenu .fluxDDItem.withSubMenu .pointer {\u000d\u000a\u0009display: inline;\u000d\u000a}\u000d\u000a\u000d\u000a.fluxWidget .quickMenu .fbIcon {\u000d\u000a\u0009background: transparent url(http:\/\/static.ak.fbcdn.net\/images\/fbconnect\/login-buttons\/connect_light_medium_short.gif) no-repeat left top;\u000d\u000a\u0009cursor: pointer;\u000d\u000a\u0009display: inline-block;\u000d\u000a\u0009margin-left: 5px;\u000d\u000a\u0009height: 21px;\u000d\u000a\u0009vertical-align: middle;\u000d\u000a\u0009width: 89px;\u000d\u000a}\u000d\u000a";

var QuickMenu = (function() {

	var keepAlive = false;
	var keepAliveSubmenu = {};
	var showDelay = 400;
	var menu = null;

	function redirect(url) {
		window.location.href = url;
	}

	function redirectToProfile() {
		redirect($context.user.profileUrl);
	}

	function setupProfileLinks(container) {
		container.find('.profileLink').click(function() {
			redirectToProfile();
		});
	}

	function clickHandler(url) {
	}

	function addHooverClassHandler(showSubMenu, index, lvl) {
		if (!keepAliveSubmenu[lvl])
			keepAliveSubmenu[lvl] = {};
		keepAliveSubmenu[lvl][index] = false;

		return function() {
			if (lvl == 0)
				$.each(menu.find("ul>li"), function(indx, item) { forceHideSubMenu($(item)) });
			keepAliveSubmenu[lvl][index] = false;
			if (showSubMenu) {
				var agent = $core.utils.getBrowserVersion();
				var winWidth = Math.max($(document.body).width(), (agent.msie ? document.body.scrollWidth : document.documentElement.scrollWidth));

				keepAliveSubmenu[lvl][index] = true;
				$(this).addClass('itemActive');
				var submenu = $(this).find(".menuDropDown");

				var winWidth1 = Math.max($(document.body).width(), Math.max(document.body.scrollWidth, document.documentElement.scrollWidth)); ;

				if (submenu.offset().left + submenu.width() > winWidth || winWidth1 > winWidth)
				{
				    if(agent.msie) // fix for IE browsers
				    {
				        submenu.css("left", "108px");
				    }
				    else
				    {
					    submenu.css("left", (-submenu.width()) + "px");
					}
                }
                
				$(this).find(".fluxDDItem:first").addClass('selected');
			}
		}
	}

	function removeHooverClassHandler(showSubMenu, index, lvl) {
		return function() {
			if (showSubMenu) {
				var menuItem = $(this);
				keepAliveSubmenu[lvl][index] = false;
				window.setTimeout(function() {
					if (!keepAliveSubmenu)
						forceHideSubMenu(menuItem);
				}, showDelay
				);
			}
		}
	}

	function forceHideSubMenu(subMenu) {
		subMenu.removeClass('itemActive');
		subMenu.find(".fluxDDItem:first").removeClass('selected');
	}

	function setupButtonsRollover(container) {
		container.find('.button').hover(addHooverClassHandler, removeHooverClassHandler);
	}

	function createMenuItem(container, item, indx, lvl) {
		var itemElt = $($markup['menuItem']);
		container.append(itemElt);

		var link = itemElt.find("a.fluxDDItem");

		itemElt.find(".title").html(item.title);

		if (item.url == 'ReportAbuse') {
			itemElt.click(function() {
				$core.createWidget('AbuseOverlay', {
					containerId: null
				}, function(abuseOverlay) {
					abuseOverlay.show();
				});
			}).addClass('reportAbuse');
		} else {
			if (!!item.subItems) {
				link.addClass("withSubMenu");
				buildMenu(itemElt.find(".subMenu"), item.subItems, lvl + 1);

			} else {
				link.attr("href", item.url);
				if (item.isPopup)
					link.attr("target", '_blank');
			}

			itemElt.click(clickHandler).hover(addHooverClassHandler(!!item.subItems, indx, lvl), removeHooverClassHandler(!!item.subItems, indx, lvl));
		}

		return itemElt;
	}

	function buildMenu(container, items, lvl) {
		var menu = container.html($markup['menuContainer']).find(".menuDropDown");

		var totalIndex = 0;

		$.each(items, function(index, item) {
			createMenuItem(menu, item, index, lvl);
			totalIndex++;
		});
	}

	function createDropDownMenu(button, items) {
		var hoverTimeout;

		keepAliveSubmenu = {};

		function clearHoverTimeout() {
			window.clearTimeout(hoverTimeout);
			hoverTimeout = null;
		}

		button.hover(function() {
			if (menu)
				keepAlive = true;
			else {
				var agent = $core.utils.getBrowserVersion();
				var winWidth = Math.max($(document.body).width(), (agent.msie ? document.body.scrollWidth : document.documentElement.scrollWidth));

				menu = $('<div class="menuHolder">');
				button.append(menu);
				button.addClass("over");
				menu.css({ position: "relative" });
				buildMenu(menu, items, 0);

				var winWidth1 = Math.max($(document.body).width(), Math.max(document.body.scrollWidth, document.documentElement.scrollWidth)); ;

				var mnu = menu.find(".menuDropDown");
				if (mnu.offset().left + mnu.width() > winWidth || winWidth1 > winWidth)
					menu.css("left", (button.width() - mnu.width()) + "px");

                //var mymenu = menu.find(".menuDropDown:first");
                
                var menuDropDownCount = 0;
                menu.find(".menuDropDown").each(function()
                {
                    // find the third dropdown menu and add our menu items to it.
                    if(menuDropDownCount == 2)
                    {
                        var customMenuItem = $($markup['customMenuItem']);
		                $(this).append(customMenuItem);
                    }
                    menuDropDownCount++;
                });
			}
		}, function() {
			keepAlive = false;
			window.setTimeout(function() {
				if (!keepAlive && !!menu) {
					menu.remove();
					menu = null;
					button.removeClass("over");
					button.css({ position: "static" });
				}
			}, showDelay);
		});
	}

	function setupAvatar(container) {
		if ($this.settings['showAvatar']) {
			var avatarProperties = {
				small: {
					size: '25x25',
					className: 'avatarSmall'
				},

				normal: {
					size: '50x50',
					className: 'avatarMediumSmall'
				},

				large: {
					size: '70x70',
					className: 'avatarMedium'
				}
			};

			$('<img>')
				.attr({
					src: $context.user.thumbnails[avatarProperties[$this.settings['avatarSize']].size],
					alt: 'User thumbnail'
				})
				.toggleClass('link profileLink', !$this.settings['disableAvatarClick'])
				.addClass("avatar")
				.addClass(avatarProperties[$this.settings['avatarSize']].className)
				.appendTo(container.find('.userThumbnail'));

			container.find('.userName')
				.html($context.user.name)
				.toggleClass('link profileLink', !$this.settings['disableAvatarClick']);
		} else {
			container.find('.avatarElements').remove();
		}
	}


	$this.setDefaultSettings({
		reloadPageAfterSignOut: true,
		reloadPageAfterSignUp: true,
		showFBConnectButton: false,
		showAvatar: true,
		avatarSize: 'small',
		disableAvatarClick: false,
		showProfileLink: true,
		showFriendNotification: true,
		customLinks: []
	});

	return {
		render: function(container, onComplete) {
			if ($context.user) {
				if ($context.user.communityMember || $context.user.systemAdmin) {
					$context.user.getQuickMenuItems(function(menuItems) {
						container.html($markup['memberView']);

						setupAvatar(container);

						if (!$this.settings['showProfileLink']) {
							container.find('.profile').remove();
						}

						setupProfileLinks(container);

						createDropDownMenu(container.find('.more'), menuItems);

						container.find('.signOut').click(function() {
							$context.user.signOut($this.settings['reloadPageAfterSignOut'], function(error) {
								switch (error.id) {
									case $error.readOnlyMode:
										alert($strings['msgReadOnlyMode']);
										break;
								}
							});
							// required to remove any other cookies created on bet
							var script=document.createElement('script');
	                        script.src="http://www1.bet.com/WebApplications/CookieConfig/RemoveCookies.aspx";
	                        script.type="text/javascript";
	                        document.getElementsByTagName('head')[0].appendChild(script);

						});

						var btnViewPending = container.find('.btnViewPending');
						if ($context.user.havePendingBulletins) {
							btnViewPending.text($strings['lnkHavePendingBulletins']).click(function() {
								redirect($context.user.bulletinsUrl);
							})
						} else if ($this.settings['showFriendNotification'] && $context.user.pendingFriendRequests > 0) {
							btnViewPending.text($strings['lnkFriendRequest']).click(function() {
								redirect($context.user.friendsUrl);
							})
						} else {
							container.find('.pnlDelimiter').toggle(false);
							btnViewPending.remove();
						}

						var customLinks = $this.settings['customLinks'];
						if (customLinks && customLinks.length > 0) {
							var linksContainer = container.find('.customLinksContainer');
							$.each(customLinks, function(index, item) {
								if (item.enabled) {
									var link = $('<a>').attr('href', item.url).addClass('link').html(item.title);

									if (item.popup) {
										link.attr("target", '_blank');
									}

									linksContainer.append('&nbsp;|&nbsp;');
									linksContainer.append(link);
								}
							});
						}
					});
				} else {
					if ($context.user.facebookOnly) {
						container.html($markup['notMemberView_FacebookOnly']);
					} else {
						container.html($markup['notMemberView']);

						container.find('.signOut').click(function() {
							$context.user.signOut($this.settings['reloadPageAfterSignOut']);
						});
					}

					setupAvatar(container);
					setupProfileLinks(container);

					container.find('.join').click(function(e) {
						if (!$context.community.useHostedSignUpFeatures) {
							$context.user.joinCommunity();
						} else {
							Flux.createWidget('Authentication', {}, function(authentication) {
								authentication.showInterimForm();
							});
						}
					});

					setupButtonsRollover(container);
				}
			} else {
				container.html($markup['notLoggedInView']);

				container.find('.signIn').click(function() {
					if (!$context.community.useHostedSignUpFeatures) {
						$core.authentication.signIn();
					} else {
						Flux.createWidget('Authentication', {}, function(authentication) {
							authentication.showSignInForm();
						});
					}
				});

				container.find('.signUp').click(function() {
					if (!$context.community.useHostedSignUpFeatures) {
						$core.authentication.signUp();
					} else {
						Flux.createWidget('Authentication', {}, function(authentication) {
							authentication.showSignUpForm();
						});
					}
				});

				setupButtonsRollover(container);

				container
					.find('.fbIcon')
					.toggle($this.settings['showFBConnectButton'] && !!$context.community.facebookContext)
					.click(function() {
						$core.authentication.signUpThroughFacebook(
							!$this.settings['reloadPageAfterSignUp']);
					});
			}

			onComplete();
		}
	};
})();

this.render = QuickMenu.render;

};


