// JavaScript Document
(function($) { // start sixteenibar's anonymous function

	$.extend({
		
		// sixteenibar plugin method
		sixteenibar: new function(options) {
			var constants = { // constant variables, magic variables that'll make the bar stick on the bottom or the top portion of any browser
					constOverflow: "hidden",
					constBottom: "0px"
				};
			var defaults = { // default options
					showOnTop: false, // show bar on top, instead of default bottom
					transparent: false, // enable/disable bar's transparent effect
					opacity: 0.9, // default bar opacity
					opaqueSpeed: "fast", // default opacity speed effect
					slideSpeed: "fast", // default slide effect
					roundedCorners: true, // rounded corners only works on FF, Chrome, Latest Opera and Safari
					roundedButtons: true, // only works on FF, Chrome, Latest Opera and Safari
					menuFadeSpeed: 250, // menu fade effect
					tooltipFadeSpeed: "slow", // tooltip fade effect
					tooltipFadeOpacity: 0.8 // tooltip fade opacity effect
				};
			var options = $.extend(defaults, options); // merge defaults and options object
			/* IE6 detection method */
			var ie6 = (navigator.appName == "Microsoft Internet Explorer" && parseInt(navigator.appVersion) == 4 && navigator.appVersion.indexOf("MSIE 6.0") != -1);
			/* var ie7 = window.XMLHttpRequest; // simple way to detect IE7 (see variable below) */
			var ie7 = (document.all && !window.opera && window.XMLHttpRequest); // ...but I guess this is a much more accurate method
			var button_active = false; // active button flag
			var active_button_name = ""; // name of current active button
			var element_obj; // reference to bar's element
		
			/**
			 * public methods
			 */
			
			// sixteenibar constructor
			this.construct = function() {
				
				return this.each(function() {
					var obj = $(this); // reference to selected element
					var screen = jQuery(this); // reference to client screen size
					var fullScreen = screen.width(); // get screen width
					var centerScreen = (fullScreen/2) * (1); // get screen center
					var hideBar = false; // default bar hide/show status

					element_obj = obj; // set bar's element object for public method use					
					
					if ($(this).checkCookie("JXID")) { // check if cookie already exists
						if ($(this).readCookie("JXHID") == "true") {
							this.hideBar = true; // hide bar
						}
					} else { // else drop cookie
						$(this).createCookie("sixteeniID", $(this).genRandID()); // set random ID and create cookie
						$(this).createCookie("sixteeniHID", false); // set bar hide to false then create cookie
					}
					
					// set html and body style for sixteenibar to work
					if (($.browser.msie && ie6) || ($.browser.msie && ie7)) { // check if we have an IE client browser
		                $("html").css({"overflow" : "hidden", "height" : "100%"});
		                $("body").css({"margin": "0px", "overflow": "auto", "height": "100%"});
					} else { // else for FF, Chrome, Opera, Safari and other browser
						$("html").css({"height" : "100%"});
						$("body").css({"margin": "0px", "height": "100%"});
					}

					/* check what position method to use */
					if (($.browser.msie && ie6) || ($.browser.msie && ie7)) { // for IE browsers
						pos = "absolute";
					} else { // else for other browsers
						pos = "fixed";
					}
					
					// create hide container and button
					if ($(".sixteeni-bar-button-left", this).exists()) { // check if there are currently an item on the right side portion of the bar
						$("<ul />").attr("id", "sixteeni-hid-con-id").insertBefore($(this).find(".sixteeni-bar-button-left:first")); // insert hide/show button "before" the existing item and let the "float right" do its magic
					} else { // else just append it and it'll automatically set to the right side of the bar
						$("<ul />").attr("id", "sixteeni-hid-con-id").appendTo(this);
					}
					
						if ($.browser.msie && ie6) {
							$("#sixteeni-hid-con-id").css({"width": "1px", "float": "left"}); // fix hide container width to prevent float drop issue on IE6 (any width other than "auto" or none specified)
						} else /*if ($.browser.msie && ie7)*/ {
							$("#sixteeni-hid-con-id").css({"width": "20px", "float": "left"}); // fix hide container width to prevent float drop issue on IE7
						}
						
					/* check what position should be the arrow indicator will be */
					if (defaults.showOnTop) {
						hideIndicator = "sixteeni-hide-top"; // on the top
					} else {
						hideIndicator = "sixteeni-hide"; // on the bottom
					}
					
					// insert the hide button indicator and add appropriate CSS class
					$("#sixteeni-hid-con-id").html('<li alt="Hide toolbar"><a id="sixteeni-hid-btn-id" class="' + hideIndicator + '"></a></li>');
					$("#sixteeni-hid-con-id").addClass("sixteeni-bar-button-left");
					
					// insert hide button separator and CSS class
					$("<span />").attr("id", "sixteeni-hid-sep-id").insertAfter("#sixteeni-hid-con-id");
					$("#sixteeni-hid-sep-id").addClass("sixteeni-hide-separator");
		
					// add click event on hide button
					$("#sixteeni-hid-btn-id").parent().click(function() {
						$("#sixteeni-menu-con-id").fadeOut();
						$(obj).slideToggle(defaults.slideSpeed, function() {
							$(this).createCookie("sixteeniHID", true); // set bar hide to true
							if (!$(this).checkCookie("sixteeniID")) { // check if cookie sixteeniID exists, if not create one
								$(this).createCookie("sixteeniID", $(this).genRandID()); // set random ID and drop cookie
							}
							$("#sixteeni-uhid-con-id").slideToggle(defaults.slideSpeed);
						});
						return false;
					});
					
					// initialize bar
					$(this).css({
						"overflow": constants["constOverflow"],
						"position": pos
					});
					
					// set location: top or bottom
					if (defaults.showOnTop) {
						$(this).css({
							"top": constants["constBottom"]
						});				
					} else {
						$(this).css({
							"bottom": constants["constBottom"]
						});
					}
					
					// add bar style (theme)
					$(this).addClass("sixteeni-bar");
					
					// rounded corner style (theme)
					if (defaults.roundedCorners) {
						if (defaults.showOnTop) {
							$(this).addClass("sixteeni-bar-rounded-bl sixteeni-bar-rounded-br");
						} else {
							$(this).addClass("sixteeni-bar-rounded-tl sixteeni-bar-rounded-tr");
						}
					}

					// button style (theme)
					$(this).addClass("sixteeni-bar-button");
					
					// rounded button corner style (theme)
					if (defaults.roundedButtons) {
						$(this).addClass("sixteeni-bar-button-rounded");
					}

					// calculate and adjust bar to the center
					marginLeft = centerScreen-($(this).width()/2);
					$(this).css({"margin-left": marginLeft});

					// fix image vertical alignment and border
					$("img", obj).css({
						"vertical-align": "bottom",
						"border": "#fff solid 0px" // no border
					});
					
					// check for alt attribute and set it as button text
					$(this).find("img").each(function() {
						if ($(this).attr("alt") != "") { // if image's ALT attribute is not empty then do the code below
							altName = "&nbsp;" + $(this).attr("alt"); // set button text using the image's ALT attribute
							$(this).parent().append(altName); // append it
						}
					});

					// check of transparency is enabled
					if (defaults.transparent) {
						$(this).fadeTo(defaults.opaqueSpeed, defaults.opacity); // do transparent effect
					}

					// create menu container first before creating the tooltip container, so tooltip will be on foreground
					$("<div />").attr("id", "sixteeni-menu-con-id").appendTo("body");

					// add transparency effect on menu container if "transparent" is true
					if (defaults.transparent) {
						$("#sixteeni-menu-con-id").fadeTo(defaults.opaqueSpeed, defaults.opacity);
					}
					
					/*
					 * create show/unhide container and button
					 */
					$("<div />").attr("id", "sixteeni-uhid-con-id").appendTo("body"); // create div element and append in html body
					$("#sixteeni-uhid-con-id").addClass("sixteeni-show");
					$("#sixteeni-uhid-con-id").css({
						"overflow": constants["constOverflow"],
						"position": pos,
						"margin-left": $(this).offset().left // calculate the show/unhide left margin/position
					});
					
					// set show/unhide location: top or bottom
					if (defaults.showOnTop) {
						$("#sixteeni-uhid-con-id").css({
							"top": constants["constBottom"]
						});				
					} else {
						$("#sixteeni-uhid-con-id").css({
							"bottom": constants["constBottom"]
						});				
					}
					
					// check if we need to add transparency to menu container
					if (defaults.transparent) {
						$("#sixteeni-uhid-con-id").fadeTo(defaults.opaqueSpeed, defaults.opacity); 
					}

					// check if we need to hide the bar (based on cookie)
					if (this.hideBar) {
						$(this).css({
							"display": "none" // do not display the main bar
						});				
					}
					
					// check if we need to hide the show/unhide button (based on cookie)
					if (!this.hideBar) {
						$("#sixteeni-uhid-con-id").css({
							"display": "none" // do not display the show/unhide button
						});
					}
					
					// create/append the show/unhide button item
					$("<ul />").attr("id", "sixteeni-uhid-itm-id").appendTo($("#sixteeni-uhid-con-id"));
					if (defaults.showOnTop) { // do we need to show this on top
						unhideIndicator = "sixteeni-show-button-top";
					} else { // or on bottom (default)
						unhideIndicator = "sixteeni-show-button";
					}
					// add the show/unhide item ("Show toolbar" button)
					$("#sixteeni-uhid-itm-id").html('<li alt="Show toolbar"><a id="sixteeni-uhid-btn-id" class="' + unhideIndicator + '"></a></li><li style="float:left; padding:0px;" title="Home"><a href="/index.htm"><img src="images/footerLogo.gif" alt="" /></a></li>');

					// show/unhide container and button style
					if (defaults.roundedCorners) {
						if (defaults.showOnTop) { // rounded corner CSS for top positioned bar
							$("#sixteeni-uhid-con-id").addClass("sixteeni-bar-rounded-bl sixteeni-bar-rounded-br");
						} else { // rounded corner CSS for bottom positioned bar
							$("#sixteeni-uhid-con-id").addClass("sixteeni-bar-rounded-tl sixteeni-bar-rounded-tr");
						}
					}
					$("#sixteeni-uhid-con-id").addClass("sixteeni-bar-button"); // add CSS style on show/unhide button based on the current theme
					if (defaults.roundedButtons) { // additional CSS style for rounded buttons
						$("#sixteeni-uhid-con-id").addClass("sixteeni-bar-button-rounded");
					}
					
					// add click event on show/unhide button
					$("#sixteeni-uhid-con-id").click(function() {
						$(this).slideToggle(defaults.slideSpeed, function() {
							$(this).createCookie("sixteeniHID", false); // set bar hide to false
							if (!$(this).checkCookie("sixteeniID")) { // check if cookie sixteeniID exists, if not create one
								$(this).createCookie("sixteeniID", $(this).genRandID()); // set random ID and drop cookie
							}
							$(obj).slideToggle(defaults.slideSpeed); // slide toggle effect
							if (active_button_name != "") { // check if we have an active button (menu button)
								$("#sixteeni-menu-con-id").fadeIn(); // if we have then do fade in effect
							}

							// re-set unhide/show button position
							$("#sixteeni-uhid-con-id").css({
								"margin-left": $(obj).offset().left // calculate the show/unhide left margin/position
							});
							
							// re-set menu container position
							if (button_active) {
								$("#sixteeni-menu-con-id").css({
									"margin-left": $("#" + active_button_name).parent().offset().left // calculate menu container position by setting its left margin
								});
							}
							
						});
						
						return false; // return false to prevent any unnecessary click action
					});

					// create tooltip container
					$("<div />").attr("id", "sixteeni-ttip-con-id").appendTo("body"); // create div element and append in html body
					$("#sixteeni-ttip-con-id").css({ // CSS for tooltip container (invisible to viewer(s))
						"height": "auto",
						"margin-left": "0px",
						"width": "100%", // use entire width
						"overflow": constants["constOverflow"],
						"position": pos
					});
					
					// set tooltip container: top or bottom
					if (defaults.showOnTop) { // show on top?
						$("#sixteeni-ttip-con-id").css({
							"margin-top": $(this).height() + 6, // put spacing between tooltip container and fixed bar
							"top": constants["constBottom"]
						});
					} else { // else bottom
						$("#sixteeni-ttip-con-id").css({
							"margin-bottom": $(this).height() + 6, // put spacing between tooltip container and fixed bar
							"bottom": constants["constBottom"]
						});
					}
					
					// prevent browser from showing tooltip; replace title tag with alt tag; comply with w3c standard
					$("li", obj).each(function() { // iterate through LI element
						var _title = $(this).attr("title");
						if (_title != "") {
							$(this).removeAttr("title"); // remove TITLE attribute
							$(this).attr("alt", _title); // add (replace with) ALT attribute
						}
					});
					
					// bar container hover in and out event handler
					$("li", obj).hover(
						function () { // hover in method event
							var elemID = $(this).attr("id"); // get ID (w/ or w/o ID, get it anyway)					
							var barTooltipID = elemID + "sixteeni-ttip-id"; // set a tooltip ID
							var tooltipTitle = $(this).attr("title");
					
							if (tooltipTitle == "") { // if no 'title' attribute then try 'alt' attribute
								tooltipTitle = $(this).attr("alt"); // this prevents IE from showing its own tooltip
							}
							
							if (tooltipTitle != "") { // show a tooltip if it's not empty
								// create tooltip wrapper; fix IE6's float double-margin bug
								barTooltipWrapperID = barTooltipID + "_wrapper";
								$("<div />").attr("id", barTooltipWrapperID).appendTo("#sixteeni-ttip-con-id");
								// create tooltip div element and put it inside the wrapper
								$("<div />").attr("id", barTooltipID).appendTo("#" + barTooltipWrapperID);
								
								// tooltip default style
								$("#" + barTooltipID).css({
									"float": "left"
								});
								
								// theme for tooltip (theme)
								if ((defaults.showOnTop) && !($.browser.msie && ie6)) { // IE6 workaround; Don't add tooltip pointer if IE6
									$("<div />").addClass("sixteeni-tool-point-dir-up").appendTo("#" + barTooltipID);
								}
									$("<div />").html(tooltipTitle).addClass("sixteeni-bar-button-tooltip").appendTo("#" + barTooltipID);
									
								if ((!defaults.showOnTop) && !($.browser.msie && ie6)) { // IE6 workaround; Don't add tooltip pointer if IE6							
									$("<div />").addClass("sixteeni-tool-point-dir-down").appendTo("#" + barTooltipID);
								}
								
								// fix tooltip wrapper relative to the associated button
								lft_pad = parseInt($(this).css("padding-left"));
								$("#" + barTooltipWrapperID).css({
									"margin-left": ($(this).offset().left - ($("#" + barTooltipID).width() / 2)) + ($(this).width()/2) + lft_pad // calculate position (left margin)
								});
								
								/* check for active buttons; tooltip behavior */
								if ((($(this).find("a:first").attr("name") == "") || (button_active == false))) {
									$("#" + barTooltipID).fadeTo(defaults.tooltipFadeSpeed, defaults.tooltipFadeOpacity);
								} else if (active_button_name != $(this).find("a:first").attr("name")) {
									$("#" + barTooltipID).fadeTo(defaults.tooltipFadeSpeed, defaults.tooltipFadeOpacity);
								} else { // we got an active button here! (clicked state)
									$("#" + barTooltipID).css({ // prevent the tooltip from showing; if button if currently on-clicked state
										"display": "none"
									});
								}
								
							}
						}, 
						function () { // hover out method event
							var elemID = $(this).attr("id"); // get ID (whether there is an ID or none)					
							var barTooltipID = elemID + "sixteeni-ttip-id"; // set a tooltip ID
							var barTooltipWrapperID = barTooltipID + "_wrapper";
							$("#" + barTooltipID).remove(); // remove tooltip element
							$("#" + barTooltipWrapperID).remove(); // remove tooltip's element DIV wrapper
						}
					);
					
					// show/unhide container hover in and out event handler
					$("li", $("#sixteeni-uhid-con-id")).hover(
						function () { // in/over event
							var elemID = $(this).attr("id"); // get ID (w/ or w/o ID, get it anyway)					
							var barTooltipID = elemID + "sixteeni-ttip-id"; // set a tooltip ID
							var tooltipTitle = $(this).attr("title");
							
							if (tooltipTitle == "") { // if no 'title' attribute then try 'alt' attribute
								tooltipTitle = $(this).attr("alt"); // this prevents IE from showing its own tooltip
							}
							
							if (tooltipTitle != "") { // show a tooltip if it is not empty
								// create tooltip wrapper; fix IE6's float double-margin bug
								barTooltipWrapperID = barTooltipID + "_wrapper";
								$("<div />").attr("id", barTooltipWrapperID).appendTo("#sixteeni-ttip-con-id");
								// create tooltip div element and put it inside the wrapper
								$("<div />").attr("id", barTooltipID).appendTo("#" + barTooltipWrapperID);
								
								// tooltip default style
								$("#" + barTooltipID).css({
									"float": "left"
								});
								
								// theme for show/unhide tooltip
								if ((defaults.showOnTop) && !($.browser.msie && ie6)) {
									$("<div />").addClass("sixteeni-tool-point-dir-up").appendTo("#" + barTooltipID);
								}

									$("<div />").html(tooltipTitle).addClass("sixteeni-bar-button-tooltip").appendTo("#" + barTooltipID);
								
								if ((!defaults.showOnTop) && !($.browser.msie && ie6)) { 
									$("<div />").addClass("sixteeni-tool-point-dir-down").appendTo("#" + barTooltipID);
								}
								
								// fix tooltip wrapper relative to the associated button
								ulft_pad = parseInt($(this).css("padding-left"));
								$("#" + barTooltipWrapperID).css({
									"margin-left": ($(this).offset().left - ($("#" + barTooltipID).width() / 2)) + ($(this).width()/2) + ulft_pad // calculate tooltip position
								});
								
								/* check for active buttons; tooltip behavior */
								if ((($(this).find("a:first").attr("name") == "") || (button_active == false))) {
									$("#" + barTooltipID).fadeTo(defaults.tooltipFadeSpeed, defaults.tooltipFadeOpacity);
								} else if (active_button_name != $(this).find("a:first").attr("name")) {
									$("#" + barTooltipID).fadeTo(defaults.tooltipFadeSpeed, defaults.tooltipFadeOpacity);
								} else {
									$("#" + barTooltipID).css({ // prevent the tooltip from showing; if button if currently on-clicked state
										"display": "none"
									});
								}
								
							}
						}, 
						function () { // out event
							var elemID = $(this).attr("id"); // get ID (whether there is an ID or none)
							var barTooltipID = elemID + "sixteeni-ttip-id"; // set a tooltip ID
							var barTooltipWrapperID = barTooltipID + "_wrapper";
							$("#" + barTooltipID).remove(); // remove tooltip element
							$("#" + barTooltipWrapperID).remove(); // remove tooltip's element DIV wrapper
						}
					);

					// fix PNG transparency problem on IE6
					if ($.browser.msie && ie6) {
						$(this).find("li").each(function() {
							$(this).find("img").each(function() {
								imgPath = $(this).attr("src");
								altName = $(this).attr("alt");
								if (altName == "") { // workaround for IE6 bug: Menu item text does not show up on the popup menu
									altName = "&nbsp;&nbsp;" + $(this).attr("title");
								}
								srcText = $(this).parent().html();
								$(this).parent().html( // wrap with span element
									'<span style="cursor:pointer;display:inline-block;filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src=\'' + imgPath + '\');">' + srcText + '</span>&nbsp;' + altName
								);
							});
							$(this).find("img").each(function() {
								$(this).attr("style", "filter:progid:DXImageTransform.Microsoft.Alpha(opacity=0);"); // show image
							});
						});
					}
					
					// adjust bar on window resize event
					$(window).resize(
						function(){
							var screen = jQuery(this); // reference to client/viewers screen
							var screenWidth = screen.width(); // get current screen width
							var centerScreen = (screenWidth / 2) * (1); // get current screen center
							var marginLeft = centerScreen - ($(obj).width() / 2); // re-calculate and adjust bar's position
							$(obj).css({"margin-left": marginLeft}); // do it!
							
							// set unhide/show button
							$("#sixteeni-uhid-con-id").css({
								"margin-left": ($(obj).offset().left + $(obj).width()) - $("#sixteeni-uhid-con-id").width()
							});
							
							if (button_active) { // check if we have an active button
								$("#sixteeni-menu-con-id").css({
									"margin-left": $("#" + active_button_name).parent().offset().left // fix menu position on resize
								});
							}

						}
					);
					
					/**
					 * Element click events
					 */
				
					// hide first level menu
					$("li", obj).find("ul").each(function() {
						$(this).css({"display": "none"}); // hide it! but we're listening to any click event
					});

					// create menu ID
					i = 1;
					$("li", obj).find("ul").each(function() {
						$(this).attr("id", "nav" + i);
						$(this).parent().find("a:first").attr("href", "#"); // replace href attribute
						$(this).parent().find("a:first").attr("name", "nav" + i); // replace href attribute				

						if (defaults.showOnTop) { // check what position to use
							buttonIndicator = "sixteeni-arrow-down"; // top
						} else {
							buttonIndicator = "sixteeni-arrow-up"; // bottom
						}

						/* IE6/IE7 arrow indicator float drop fix: user replaced insertAfter with insertBefore */
						if (($.browser.msie && ie6) || ($.browser.msie && ie7)) {
							$("<div />").attr("class", buttonIndicator).insertBefore($(this).parent().find("a")).css({"background-position": "top"}); // IE6 and IE7 fix background position
						} else { // else any other browser
							$("<div />").attr("class", buttonIndicator).insertAfter($(this).parent().find("a")); // prevent Chrome from wrapping button text
						}
						
						// add click event (button)
						$(this).parent().find("a:first").click(function() {
							var elemID = $(this).attr("id"); // get ID (whether there is an ID or none)					
							var barTooltipID = elemID + "sixteeni-ttip-id"; // set a tooltip ID
							var barTooltipWrapperID = barTooltipID + "_wrapper";
							
							$("#" + barTooltipID).remove(); // remove tooltip element
							$("#" + barTooltipWrapperID).remove(); // remove tooltip's element DIV wrapper

							if ((button_active) && (active_button_name == $(this).attr("name"))) { // is this an active button?
								if (defaults.showOnTop) { // check bar position
									buttonIndicator = "sixteeni-arrow-down"; // top
								} else {
									buttonIndicator = "sixteeni-arrow-up"; // bottom
								}
								$(this).parent().find("div").attr("class", buttonIndicator); // change button indicator
								
								$("#sixteeni-menu-con-id").fadeOut(defaults.menuFadeSpeed); // remove/hide menu using fade effect
								$(this).parent().removeClass("sixteeni-nav-menu-active"); // remove active state for this button (style)

								if (defaults.roundedButtons) { // remove additional CSS style if rounded corner button
									$(this).parent().removeClass("sixteeni-nav-menu-active-rounded");
								}
								
								button_active = false; // remove button's active state
								active_button_name = "";
								
								$(this).blur(); // unfocus link/href
								
							} else {
								if (defaults.showOnTop) { // is bar's on the top position?
									buttonIndicator = "sixteeni-arrow-up";
								} else {
									buttonIndicator = "sixteeni-arrow-down";
								}
								$(this).parent().find("div").attr("class", buttonIndicator); // change button indicator
								
								$("#sixteeni-menu-con-id").css({"display": "none"}); // hide menu container
								$("#sixteeni-menu-con-id").html("<ul>" + $(this).parent().find("ul").html() + "</ul>");
								$("#sixteeni-menu-con-id").css({
														"overflow": constants["constOverflow"],
														"position": pos,
														"margin-left": $(this).parent().offset().left // calculate menu container position by setting its left margin
													});

								// set menu container location: top or bottom
								if (defaults.showOnTop) { // top
									$("#sixteeni-menu-con-id").css({
										"top": constants["constBottom"],
										"margin-top": $(obj).height() + 6
									});
								} else { // bottom
									$("#sixteeni-menu-con-id").css({
										"bottom": constants["constBottom"],
										"margin-bottom": $(obj).height() + 6
									});
								}
								
								$("#sixteeni-menu-con-id").addClass("sixteeni-nav-menu");

									if ($.browser.msie && ie6) {	
										$("#sixteeni-menu-con-id ul li a").css({"width": "100%"}); // IE6 and IE7 right padding/margin fix
									}

								if (defaults.roundedButtons) { // additional CSS style for rounded corner button
									$("#sixteeni-menu-con-id").addClass("sixteeni-nav-menu-rounded");
								}
								
								$(this).parent().addClass("sixteeni-nav-menu-active"); // add active state CSS style
								
								if (defaults.roundedButtons) {
									$(this).parent().addClass("sixteeni-nav-menu-active-rounded");
								}
								
								if (active_button_name != "") { // remove/hide any active button (on-clicked state)
									$("a[name='" + active_button_name + "']").parent().removeClass("sixteeni-nav-menu-active");
									$("a[name='" + active_button_name + "']").parent().removeClass("sixteeni-nav-menu-active-rounded");
									
									if (defaults.showOnTop) { // change button indicator (depends on the current bar's position)
										buttonIndicator = "sixteeni-arrow-down";
									} else {
										buttonIndicator = "sixteeni-arrow-up";
									}
									$("a[name='" + active_button_name + "']").parent().find("div").attr("class", buttonIndicator);
								}
								
								button_active = true; // change button's active state
								active_button_name = $(this).attr("name"); // save button name for future reference (e.g. remove active state)
								
								$(this).blur(); // unfocus link/href
								
								$("#sixteeni-menu-con-id").fadeIn(defaults.menuFadeSpeed); // show menu container and its item(s)
							}
							return false; // prevent normal click action
						});
						
						i = i + 1;
					});
					
					// nav items click event
					$("li", obj).click(function () {
						if ($("ul", this).exists()) {
							$(this).find("a:first").click();
							return false;
						} else if ($(this).parent().attr("id") == "sixteeni-hid-con-id") {
							return false; // do nothing
						}
						
						if ($("a", this).exists()) { // check if there are A tag (href) to follow
							window.location = $(this).find("a:first").attr("href"); // emulate normal click event action (e.g. follow link)
						}
						return false;
					});
					
				});
				
			}; // end method construct
			
			/**
			 * additional public methods
			 */
			
			// get sixteenibar's options (variables)
			this.getOptions = function() {
				return options;
			};
			
			// check if IE6
			this.isIE6 = function() {
				return ie6;  
			};

			// check if IE7
			this.isIE7 = function() {
				return ie7;
			};
			
			// check if there are active button
			this.hasActiveButton = function() {
				return button_active;
			};
			
			// return active button name
			this.getActiveButtonName = function() {
				return active_button_name;
			};
			
			// get tooltip container object
			this.getTooltipObject = function() {
				return $("#sixteeni-ttip-con-id");
			};
			
			// create object container
			this.createObjectContainer = function(name) {
				name = typeof(name) != 'undefined' ? name : "sixteeni-obj-con-id"; // default object container name
				// create custom object container
				$("<div />").attr("id", name).appendTo("body"); // create div element and append in html body
				$("#" + name).css({ // CSS for tooltip container (invisible to viewer(s))
					"height": "auto",
					"margin-left": "0px",
					"width": "100%", // use entire width
					"overflow": constants["constOverflow"],
					"position": pos
				});
				
				// set custom object container: top or bottom
				if (defaults.showOnTop) { // show on top?
					$("#" + name).css({
						"margin-top": $(element_obj).height() + 6, // put spacing between tooltip container and fixed bar
						"top": constants["constBottom"]
					});
				} else { // else bottom
					$("#" + name).css({
						"margin-bottom": $(element_obj).height() + 6, // put spacing between tooltip container and fixed bar
						"bottom": constants["constBottom"]
					});
				}
				return $("#" + name); // return object reference
			};
			
			
		} // end sixteenibar plugin method

	}); // end jquery extend method
	
$.fn.extend({ // extend jQuery.fn object
    sixteenibar: $.sixteenibar.construct
});
	
})(jQuery); // end of anonymous function

/**
 * Element/selector checker - check if element/selector exists
 */
jQuery.fn.exists = function(){return jQuery(this).length>0;};

/**
 * Create a cookie
 */
jQuery.fn.createCookie = function(cookie_name, value) {
	var expiry_date = new Date(2037, 01, 01); // virtually, never expire!
	document.cookie = cookie_name + "=" + escape(value) + ";expires=" + expiry_date.toUTCString();
};

/**
 * Check cookie
 */
jQuery.fn.checkCookie = function(cookie_name) {
	if (document.cookie.length > 0) {
  		cookie_start = document.cookie.indexOf(cookie_name + "=");
  			if (cookie_start != -1) {
    			cookie_start = cookie_start + cookie_name.length + 1;
    			cookie_end = document.cookie.indexOf(";", cookie_start);
    			if (cookie_end == -1) {
    				cookie_end = document.cookie.length;
    				return true;
    			}
			}
  	}
	return false;
};

/**
 * Extract cookie value
 */
jQuery.fn.extractCookieValue = function(value) {
	  if ((endOfCookie = document.cookie.indexOf(";", value)) == -1) {
	     endOfCookie = document.cookie.length;
	  }
	  return unescape(document.cookie.substring(value, endOfCookie));
};

/**
 * Read cookie
 */
jQuery.fn.readCookie = function(cookie_name) {
	  var numOfCookies = document.cookie.length;
	  var nameOfCookie = cookie_name + "=";
	  var cookieLen = nameOfCookie.length;
	  var x = 0;
	  while (x <= numOfCookies) {
	        var y = (x + cookieLen);
	        if (document.cookie.substring(x, y) == nameOfCookie)
	           return (this.extractCookieValue(y));
	           x = document.cookie.indexOf(" ", x) + 1;
	           if (x == 0){
	              break;
	           }
	  }
	  return (null);
};

/**
 * Generate random ID
 */
jQuery.fn.genRandID = function() {
	var id = "";
	var str = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
	for(var i=0; i < 24; i++) {
		id += str.charAt(Math.floor(Math.random() * str.length));
	}
    return id;
};

// end sixteenibar jquery plugin

/***
 * Twitter JS v1.13.1
 * http://code.google.com/p/twitterjs/
 * Copyright (c) 2009 Remy Sharp / MIT License
 * $Date: 2009-08-25 09:45:35 +0100 (Tue, 25 Aug 2009) $
 */
if(typeof renderTwitters!='function')(function(){var j=(function(){var b=navigator.userAgent.toLowerCase();return{webkit:/(webkit|khtml)/.test(b),opera:/opera/.test(b),msie:/msie/.test(b)&&!(/opera/).test(b),mozilla:/mozilla/.test(b)&&!(/(compatible|webkit)/).test(b)}})();var k=0;var n=[];var o=false;var p=['Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec'];window.ify=function(){var c={'"':'&quot;','&':'&amp;','<':'&lt;','>':'&gt;'};return{"link":function(t){return t.replace(/[a-z]+:\/\/[a-z0-9-_]+\.[a-z0-9-_:~%&\?\/.=]+[^:\.,\)\s*$]/ig,function(m){return'<a href="'+m+'">'+((m.length>25)?m.substr(0,24)+'...':m)+'</a>'})},"at":function(t){return t.replace(/(^|[^\w]+)\@([a-zA-Z0-9_]{1,15})/g,function(m,a,b){return a+'@<a href="http://twitter.com/'+b+'">'+b+'</a>'})},"hash":function(t){return t.replace(/(^|[^\w'"]+)\#([a-zA-Z0-9_]+)/g,function(m,a,b){return a+'#<a href="http://search.twitter.com/search?q=%23'+b+'">'+b+'</a>'})},"clean":function(a){return this.hash(this.at(this.link(a)))}}}();window.renderTwitters=function(a,b){function node(e){return document.createElement(e)}function text(t){return document.createTextNode(t)}var c=document.getElementById(b.twitterTarget);var d=null;var f=node('ul'),li,statusSpan,timeSpan,i,max=a.length>b.count?b.count:a.length;for(i=0;i<max&&a[i];i++){d=getTwitterData(a[i]);if(b.ignoreReplies&&a[i].text.substr(0,1)=='@'){max++;continue}li=node('li');if(b.template){li.innerHTML=b.template.replace(/%([a-z_\-\.]*)%/ig,function(m,l){var r=d[l]+""||"";if(l=='text'&&b.enableLinks)r=ify.clean(r);return r})}else{statusSpan=node('span');statusSpan.className='twitterStatus';timeSpan=node('span');timeSpan.className='twitterTime';statusSpan.innerHTML=a[i].text;if(b.enableLinks==true){statusSpan.innerHTML=ify.clean(statusSpan.innerHTML)}timeSpan.innerHTML=relative_time(a[i].created_at);if(b.prefix){var s=node('span');s.className='twitterPrefix';s.innerHTML=b.prefix.replace(/%(.*?)%/g,function(m,l){return a[i].user[l]});li.appendChild(s);li.appendChild(text(' '))}li.appendChild(statusSpan);li.appendChild(text(' '));li.appendChild(timeSpan)}if(b.newwindow){li.innerHTML=li.innerHTML.replace(/<a href/gi,'<a target="_blank" href')}f.appendChild(li)}if(b.clearContents){while(c.firstChild){c.removeChild(c.firstChild)}}c.appendChild(f);if(typeof b.callback=='function'){b.callback()}};window.getTwitters=function(e,f,g,h){k++;if(typeof f=='object'){h=f;f=h.id;g=h.count}if(!g)g=1;if(h){h.count=g}else{h={}}if(!h.timeout&&typeof h.onTimeout=='function'){h.timeout=10}if(typeof h.clearContents=='undefined'){h.clearContents=true}if(h.withFriends)h.withFriends=false;h['twitterTarget']=e;if(typeof h.enableLinks=='undefined')h.enableLinks=true;window['twitterCallback'+k]=function(a){if(h.timeout){clearTimeout(window['twitterTimeout'+k])}renderTwitters(a,h)};ready((function(c,d){return function(){if(!document.getElementById(c.twitterTarget)){return}var a='http://www.twitter.com/statuses/'+(c.withFriends?'friends_timeline':'user_timeline')+'/'+f+'.json?callback=twitterCallback'+d+'&count=20&cb='+Math.random();if(c.timeout){window['twitterTimeout'+d]=setTimeout(function(){if(c.onTimeoutCancel)window['twitterCallback'+d]=function(){};c.onTimeout.call(document.getElementById(c.twitterTarget))},c.timeout*1000)}var b=document.createElement('script');b.setAttribute('src',a);document.getElementsByTagName('head')[0].appendChild(b)}})(h,k))};DOMReady();function getTwitterData(a){var b=a,i;for(i in a.user){b['user_'+i]=a.user[i]}b.time=relative_time(a.created_at);return b}function ready(a){if(!o){n.push(a)}else{a.call()}}function fireReady(){o=true;var a;while(a=n.shift()){a.call()}}function DOMReady(){if(document.addEventListener&&!j.webkit){document.addEventListener("DOMContentLoaded",fireReady,false)}else if(j.msie){document.write("<scr"+"ipt id=__ie_init defer=true src=//:><\/script>");var a=document.getElementById("__ie_init");if(a){a.onreadystatechange=function(){if(this.readyState!="complete")return;this.parentNode.removeChild(this);fireReady.call()}}a=null}else if(j.webkit){var b=setInterval(function(){if(document.readyState=="loaded"||document.readyState=="complete"){clearInterval(b);b=null;fireReady.call()}},10)}}function relative_time(c){var d=c.split(" "),parsed_date=Date.parse(d[1]+" "+d[2]+", "+d[5]+" "+d[3]),date=new Date(parsed_date),relative_to=(arguments.length>1)?arguments[1]:new Date(),delta=parseInt((relative_to.getTime()-parsed_date)/1000),r='';function formatTime(a){var b=a.getHours(),min=a.getMinutes()+"",ampm='AM';if(b==0){b=12}else if(b==12){ampm='PM'}else if(b>12){b-=12;ampm='PM'}if(min.length==1){min='0'+min}return b+':'+min+' '+ampm}function formatDate(a){var b=a.toDateString().split(/ /),mon=p[a.getMonth()],day=a.getDate()+'',dayi=parseInt(day),year=a.getFullYear(),thisyear=(new Date()).getFullYear(),th='th';if((dayi%10)==1&&day.substr(0,1)!='1'){th='st'}else if((dayi%10)==2&&day.substr(0,1)!='1'){th='nd'}else if((dayi%10)==3&&day.substr(0,1)!='1'){th='rd'}if(day.substr(0,1)=='0'){day=day.substr(1)}return mon+' '+day+th+(thisyear!=year?', '+year:'')}delta=delta+(relative_to.getTimezoneOffset()*60);if(delta<5){r='less than 5 seconds ago'}else if(delta<30){r='half a minute ago'}else if(delta<60){r='less than a minute ago'}else if(delta<120){r='1 minute ago'}else if(delta<(45*60)){r=(parseInt(delta/60)).toString()+' minutes ago'}else if(delta<(2*90*60)){r='about 1 hour ago'}else if(delta<(24*60*60)){r='about '+(parseInt(delta/3600)).toString()+' hours ago'}else{if(delta<(48*60*60)){r=formatTime(date)+' yesterday'}else{r=formatTime(date)+' '+formatDate(date)}}return r}})();

/**
 * Twitter - http://www.twitter.com
 * Copyright (C) 2010 Twitter
 * Author: Dustin Diaz (dustin@twitter.com)
 *
 * V 2.2.3 Twitter search/profile/faves/list widget
 * http://twitter.com/widgets
 */
if(!"console" in window){window.console={log:function(){}}}TWTR=window.TWTR||{};if(!Array.prototype.forEach){Array.prototype.forEach=function(D,E){var C=E||window;for(var B=0,A=this.length;B<A;++B){D.call(C,this[B],B,this)}};Array.prototype.filter=function(E,F){var D=F||window;var A=[];for(var C=0,B=this.length;C<B;++C){if(!E.call(D,this[C],C,this)){continue}A.push(this[C])}return A};Array.prototype.indexOf=function(B,C){var C=C||0;for(var A=0;A<this.length;++A){if(this[A]===B){return A}}return -1}}(function(){if(TWTR&&TWTR.Widget){return }function A(B,D,C){this.el=B;this.prop=D;this.from=C.from;this.to=C.to;this.time=C.time;this.callback=C.callback;this.animDiff=this.to-this.from}A.canTransition=function(){var B=document.createElement("twitter");B.style.cssText="-webkit-transition: all .5s linear;";return !!B.style.webkitTransitionProperty}();A.prototype._setStyle=function(B){switch(this.prop){case"opacity":this.el.style[this.prop]=B;this.el.style.filter="alpha(opacity="+B*100+")";break;default:this.el.style[this.prop]=B+"px";break}};A.prototype._animate=function(){var B=this;this.now=new Date();this.diff=this.now-this.startTime;if(this.diff>this.time){this._setStyle(this.to);if(this.callback){this.callback.call(this)}clearInterval(this.timer);return }this.percentage=(Math.floor((this.diff/this.time)*100)/100);this.val=(this.animDiff*this.percentage)+this.from;this._setStyle(this.val)};A.prototype.start=function(){var B=this;this.startTime=new Date();this.timer=setInterval(function(){B._animate.call(B)},15)};TWTR.Widget=function(B){this.init(B)};(function(){var Q={};var N=location.protocol.match(/https/);var P=/^.+\/profile_images/;var V="https://s3.amazonaws.com/twitter_production/profile_images";var e={};var c=function(g){var f=e[g];if(!f){f=new RegExp("(?:^|\\s+)"+g+"(?:\\s+|$)");e[g]=f}return f};var C=function(k,o,l,m){var o=o||"*";var l=l||document;var g=[],f=l.getElementsByTagName(o),n=c(k);for(var h=0,j=f.length;h<j;++h){if(n.test(f[h].className)){g[g.length]=f[h];if(m){m.call(f[h],f[h])}}}return g};var d=function(){var f=navigator.userAgent;return{ie:f.match(/MSIE\s([^;]*)/)}}();var G=function(f){if(typeof f=="string"){return document.getElementById(f)}return f};var W=function(f){return f.replace(/^\s+|\s+$/g,"")};var U=function(){var f=self.innerHeight;var g=document.compatMode;if((g||d.ie)){f=(g=="CSS1Compat")?document.documentElement.clientHeight:document.body.clientHeight}return f};var b=function(h,f){var g=h.target||h.srcElement;return f(g)};var S=function(g){try{if(g&&3==g.nodeType){return g.parentNode}else{return g}}catch(f){}};var T=function(g){var f=g.relatedTarget;if(!f){if(g.type=="mouseout"){f=g.toElement}else{if(g.type=="mouseover"){f=g.fromElement}}}return S(f)};var Y=function(g,f){f.parentNode.insertBefore(g,f.nextSibling)};var Z=function(g){try{g.parentNode.removeChild(g)}catch(f){}};var X=function(f){return f.firstChild};var B=function(h){var g=T(h);while(g&&g!=this){try{g=g.parentNode}catch(f){g=this}}if(g!=this){return true}return false};var F=function(){if(document.defaultView&&document.defaultView.getComputedStyle){return function(g,j){var i=null;var h=document.defaultView.getComputedStyle(g,"");if(h){i=h[j]}var f=g.style[j]||i;return f}}else{if(document.documentElement.currentStyle&&d.ie){return function(f,h){var g=f.currentStyle?f.currentStyle[h]:null;return(f.style[h]||g)}}}}();var a={has:function(f,g){return new RegExp("(^|\\s)"+g+"(\\s|$)").test(G(f).className)},add:function(f,g){if(!this.has(f,g)){G(f).className=W(G(f).className)+" "+g}},remove:function(f,g){if(this.has(f,g)){G(f).className=G(f).className.replace(new RegExp("(^|\\s)"+g+"(\\s|$)","g"),"")}}};var D={add:function(h,g,f){if(h.addEventListener){h.addEventListener(g,f,false)}else{h.attachEvent("on"+g,function(){f.call(h,window.event)})}},remove:function(h,g,f){if(h.removeEventListener){h.removeEventListener(g,f,false)}else{h.detachEvent("on"+g,f)}}};var M=function(){function g(i){return parseInt((i).substring(0,2),16)}function f(i){return parseInt((i).substring(2,4),16)}function h(i){return parseInt((i).substring(4,6),16)}return function(i){return[g(i),f(i),h(i)]}}();var H={bool:function(f){return typeof f==="boolean"},def:function(f){return !(typeof f==="undefined")},number:function(f){return typeof f==="number"&&isFinite(f)},string:function(f){return typeof f==="string"},fn:function(g){return typeof g==="function"},array:function(f){if(f){return H.number(f.length)&&H.fn(f.splice)}return false}};var L=["January","February","March","April","May","June","July","August","September","October","November","December"];var R=function(i){var l=new Date(i);if(d.ie){l=Date.parse(i.replace(/( \+)/," UTC$1"))}var g="";var f=function(){var m=l.getHours();if(m>0&&m<13){g="am";return m}else{if(m<1){g="am";return 12}else{g="pm";return m-12}}}();var h=l.getMinutes();var k=l.getSeconds();function j(){var m=new Date();if(m.getDate()!=l.getDate()||m.getYear()!=l.getYear()||m.getMonth()!=l.getMonth()){return" - "+L[l.getMonth()]+" "+l.getDate()+", "+l.getFullYear()}else{return""}}return f+":"+h+g+j()};var J=function(l){var n=new Date();var j=new Date(l);if(d.ie){j=Date.parse(l.replace(/( \+)/," UTC$1"))}var m=n-j;var g=1000,h=g*60,i=h*60,k=i*24,f=k*7;if(isNaN(m)||m<0){return""}if(m<g*7){return"right now"}if(m<h){return Math.floor(m/g)+" seconds ago"}if(m<h*2){return"about 1 minute ago"}if(m<i){return Math.floor(m/h)+" minutes ago"}if(m<i*2){return"about 1 hour ago"}if(m<k){return Math.floor(m/i)+" hours ago"}if(m>k&&m<k*2){return"yesterday"}if(m<k*365){return Math.floor(m/k)+" days ago"}else{return"over a year ago"}};var E={link:function(f){return f.replace(/\b(((https*\:\/\/)|www\.)[^\"\']+?)(([!?,.\)]+)?(\s|$))/g,function(l,k,i,h,g){var j=i.match(/w/)?"http://":"";return'<a class="twtr-hyperlink" target="_blank" href="'+j+k+'">'+((k.length>25)?k.substr(0,24)+"...":k)+"</a>"+g})},at:function(f){return f.replace(/\B\@([a-zA-Z0-9_]{1,20})/g,function(g,h){return'@<a target="_blank" class="twtr-atreply" href="http://twitter.com/'+h+'">'+h+"</a>"})},list:function(f){return f.replace(/\B\@([a-zA-Z0-9_]{1,20}\/\w+)/g,function(g,h){return'@<a target="_blank" class="twtr-atreply" href="http://twitter.com/'+h+'">'+h+"</a>"})},hash:function(f){return f.replace(/(\s+)\#(\w+)/gi,function(g,h,i){return h+'<a target="_blank" class="twtr-hashtag" href="http://twitter.com/search?q=%23'+i+'">#'+i+"</a>"})},clean:function(f){return this.hash(this.at(this.list(this.link(f))))}};function O(g,h,f){this.job=g;this.decayFn=h;this.interval=f;this.decayRate=1;this.decayMultiplier=1.25;this.maxDecayTime=3*60*1000}O.prototype={start:function(){this.stop().run();return this},stop:function(){if(this.worker){window.clearTimeout(this.worker)}return this},run:function(){var f=this;this.job(function(){f.decayRate=f.decayFn()?Math.max(1,f.decayRate/f.decayMultiplier):f.decayRate*f.decayMultiplier;var g=f.interval*f.decayRate;g=(g>=f.maxDecayTime)?f.maxDecayTime:g;g=Math.floor(g);f.worker=window.setTimeout(function(){f.run.call(f)},g)})},destroy:function(){this.stop();this.decayRate=1;return this}};function I(g,h,f,i){this.time=h||6000;this.loop=f||false;this.repeated=0;this.total=g.length;this.callback=i;this.haystack=g}I.prototype={start:function(f){var g=this;if(f){this.repeated=0}this.stop()._job();this.timer=window.setInterval(function(){g._job.call(g)},this.time);return this},stop:function(){if(this.timer){window.clearInterval(this.timer)}return this},_job:function(){if(this.repeated===this.total){if(this.loop){this.repeated=0}else{this.stop();return }}this.callback(this.haystack[this.repeated]);this.repeated++;return this}};function K(h){function f(){if(h.needle.metadata&&h.needle.metadata.result_type&&h.needle.metadata.result_type=="popular"){return'<span class="twtr-popular">'+h.needle.metadata.recent_retweets+"+ recent retweets</span>"}else{return""}}if(N){h.avatar=h.avatar.replace(P,V)}var g='<div class="twtr-tweet-wrap">         <div class="twtr-avatar">           <div class="twtr-img"><a target="_blank" href="http://twitter.com/'+h.user+'"><img alt="'+h.user+' profile" src="'+h.avatar+'"></a></div>         </div>         <div class="twtr-tweet-text">           <p>             <a target="_blank" href="http://twitter.com/'+h.user+'" class="twtr-user">'+h.user+"</a> "+h.tweet+'             <em>            <a target="_blank" class="twtr-timestamp" time="'+h.timestamp+'" href="http://twitter.com/'+h.user+"/status/"+h.id+'">'+h.created_at+'</a>             <a target="_blank" class="twtr-reply" href="http://twitter.com/?status=@'+h.user+"%20&in_reply_to_status_id="+h.id+"&in_reply_to="+h.user+'">reply</a>             </em> '+f()+"           </p>         </div>       </div>";var i=document.createElement("div");i.id="tweet-id-"+ ++K._tweetCount;i.className="twtr-tweet";i.innerHTML=g;this.element=i}K._tweetCount=0;Q.loadStyleSheet=function(h,g){if(!TWTR.Widget.loadingStyleSheet){TWTR.Widget.loadingStyleSheet=true;var f=document.createElement("link");f.href=h;f.rel="stylesheet";f.type="text/css";document.getElementsByTagName("head")[0].appendChild(f);var i=setInterval(function(){var j=F(g,"position");if(j=="relative"){clearInterval(i);TWTR.Widget.hasLoadedStyleSheet=true}},50)}};(function(){var f=false;Q.css=function(i){var h=document.createElement("style");h.type="text/css";if(d.ie){h.styleSheet.cssText=i}else{var j=document.createDocumentFragment();j.appendChild(document.createTextNode(i));h.appendChild(j)}function g(){document.getElementsByTagName("head")[0].appendChild(h)}if(!d.ie||f){g()}else{window.attachEvent("onload",function(){f=true;g()})}}})();TWTR.Widget.isLoaded=false;TWTR.Widget.loadingStyleSheet=false;TWTR.Widget.hasLoadedStyleSheet=false;TWTR.Widget.WIDGET_NUMBER=0;TWTR.Widget.matches={mentions:/^@[a-zA-Z0-9_]{1,20}\b/,any_mentions:/\b@[a-zA-Z0-9_]{1,20}\b/};TWTR.Widget.jsonP=function(g,h){var f=document.createElement("script");f.type="text/javascript";f.src=g;document.getElementsByTagName("head")[0].appendChild(f);h(f);return f};TWTR.Widget.prototype=function(){var i=N?"https://":"http://";var k=i+"search.twitter.com/search.";var l=i+"api.twitter.com/1/statuses/user_timeline.";var h=i+"twitter.com/favorites/";var j=i+"twitter.com/";var g=25000;var f=N?"https://twitter-widgets.s3.amazonaws.com/j/1/default.gif":"http://widgets.twimg.com/j/1/default.gif";return{init:function(n){var m=this;this._widgetNumber=++TWTR.Widget.WIDGET_NUMBER;TWTR.Widget["receiveCallback_"+this._widgetNumber]=function(o){m._prePlay.call(m,o)};this._cb="TWTR.Widget.receiveCallback_"+this._widgetNumber;this.opts=n;this._base=k;this._isRunning=false;this._hasOfficiallyStarted=false;this._rendered=false;this._profileImage=false;this._isCreator=!!n.creator;this._setWidgetType(n.type);this.timesRequested=0;this.runOnce=false;this.newResults=false;this.results=[];this.jsonMaxRequestTimeOut=19000;this.showedResults=[];this.sinceId=1;this.source="TWITTERINC_WIDGET";this.id=n.id||"twtr-widget-"+this._widgetNumber;this.tweets=0;this.setDimensions(n.width,n.height);this.interval=n.interval||6000;this.format="json";this.rpp=n.rpp||50;this.subject=n.subject||"";this.title=n.title||"";this.setFooterText(n.footer);this.setSearch(n.search);this._setUrl();this.theme=n.theme?n.theme:this._getDefaultTheme();if(!n.id){document.write('<div class="twtr-widget" id="'+this.id+'"></div>')}this.widgetEl=G(this.id);if(n.id){a.add(this.widgetEl,"twtr-widget")}if(n.version>=2&&!TWTR.Widget.hasLoadedStyleSheet){if(N){Q.loadStyleSheet("https://twitter-widgets.s3.amazonaws.com/j/2/widget.css",this.widgetEl)}else{Q.loadStyleSheet("http://widgets.twimg.com/j/2/widget.css",this.widgetEl)}}this.occasionalJob=new O(function(o){m.decay=o;m._getResults.call(m)},function(){return m._decayDecider.call(m)},g);this._ready=H.fn(n.ready)?n.ready:function(){};this._isRelativeTime=true;this._tweetFilter=false;this._avatars=true;this._isFullScreen=false;this._isLive=true;this._isScroll=false;this._loop=true;this._showTopTweets=(this._isSearchWidget)?true:false;this._behavior="default";this.setFeatures(this.opts.features);return this},setDimensions:function(m,n){this.wh=(m&&n)?[m,n]:[250,300];if(m=="auto"||m=="100%"){this.wh[0]="100%"}else{this.wh[0]=((this.wh[0]<150)?150:this.wh[0])+"px"}this.wh[1]=((this.wh[1]<100)?100:this.wh[1])+"px";return this},setRpp:function(m){var m=parseInt(m);this.rpp=(H.number(m)&&(m>0&&m<=100))?m:30;return this},_setWidgetType:function(m){this._isSearchWidget=false,this._isProfileWidget=false,this._isFavsWidget=false,this._isListWidget=false;switch(m){case"profile":this._isProfileWidget=true;break;case"search":this._isSearchWidget=true,this.search=this.opts.search;break;case"faves":case"favs":this._isFavsWidget=true;break;case"list":case"lists":this._isListWidget=true;break}return this},setFeatures:function(n){if(n){if(H.def(n.filters)){this._tweetFilter=n.filters}if(H.def(n.dateformat)){this._isRelativeTime=!!(n.dateformat!=="absolute")}if(H.def(n.fullscreen)&&H.bool(n.fullscreen)){if(n.fullscreen){this._isFullScreen=true;this.wh[0]="100%";this.wh[1]=(U()-90)+"px";var o=this;D.add(window,"resize",function(r){o.wh[1]=U();o._fullScreenResize()})}}if(H.def(n.loop)&&H.bool(n.loop)){this._loop=n.loop}if(H.def(n.behavior)&&H.string(n.behavior)){switch(n.behavior){case"all":this._behavior="all";break;case"preloaded":this._behavior="preloaded";break;default:this._behavior="default";break}}if(H.def(n.toptweets)&&H.bool(n.toptweets)){this._showTopTweets=n.toptweets;var m=(this._showTopTweets)?"inline-block":"none";Q.css("#"+this.id+" .twtr-popular { display: "+m+"; }")}if(!H.def(n.toptweets)){this._showTopTweets=true;var m=(this._showTopTweets)?"inline-block":"none";Q.css("#"+this.id+" .twtr-popular { display: "+m+"; }")}if(H.def(n.avatars)&&H.bool(n.avatars)){if(!n.avatars){Q.css("#"+this.id+" .twtr-avatar, #"+this.id+" .twtr-user { display: none; } #"+this.id+" .twtr-tweet-text { margin-left: 0; }");this._avatars=false}else{var p=(this._isFullScreen)?"90px":"40px";Q.css("#"+this.id+" .twtr-avatar { display: block; } #"+this.id+" .twtr-user { display: inline; } #"+this.id+" .twtr-tweet-text { margin-left: "+p+"; }");this._avatars=true}}else{if(this._isProfileWidget){this.setFeatures({avatars:false});this._avatars=false}else{this.setFeatures({avatars:true});this._avatars=true}}if(H.def(n.hashtags)&&H.bool(n.hashtags)){(!n.hashtags)?Q.css("#"+this.id+" a.twtr-hashtag { display: none; }"):""}if(H.def(n.timestamp)&&H.bool(n.timestamp)){var q=n.timestamp?"block":"none";Q.css("#"+this.id+" em { display: "+q+"; }")}if(H.def(n.live)&&H.bool(n.live)){this._isLive=n.live}if(H.def(n.scrollbar)&&H.bool(n.scrollbar)){this._isScroll=n.scrollbar}}else{if(this._isProfileWidget){this.setFeatures({avatars:false});this._avatars=false}if(this._isProfileWidget||this._isFavsWidget){this.setFeatures({behavior:"all"})}}return this},_fullScreenResize:function(){var m=C("twtr-timeline","div",document.body,function(n){n.style.height=(U()-90)+"px"})},setTweetInterval:function(m){this.interval=m;return this},setBase:function(m){this._base=m;return this},setUser:function(n,m){this.username=n;this.realname=m||" ";if(this._isFavsWidget){this.setBase(h+n+".")}else{if(this._isProfileWidget){this.setBase(l+this.format+"?screen_name="+n)}}this.setSearch(" ");return this},setList:function(n,m){this.listslug=m.replace(/ /g,"-").toLowerCase();this.username=n;this.setBase(j+n+"/lists/"+this.listslug+"/statuses.");this.setSearch(" ");return this},setProfileImage:function(m){this._profileImage=m;this.byClass("twtr-profile-img","img").src=N?m.replace(P,V):m;this.byClass("twtr-profile-img-anchor","a").href="http://twitter.com/"+this.username;return this},setTitle:function(m){this.title=m;this.widgetEl.getElementsByTagName("h3")[0].innerHTML=this.title;return this},setCaption:function(m){this.subject=m;this.widgetEl.getElementsByTagName("h4")[0].innerHTML=this.subject;return this},setFooterText:function(m){this.footerText=(H.def(m)&&H.string(m))?m:"Join the conversation";if(this._rendered){this.byClass("twtr-join-conv","a").innerHTML=this.footerText}return this},setSearch:function(n){this.searchString=n||"";this.search=encodeURIComponent(this.searchString);this._setUrl();if(this._rendered){var m=this.byClass("twtr-join-conv","a");m.href="http://twitter.com/"+this._getWidgetPath()}return this},_getWidgetPath:function(){if(this._isProfileWidget){return this.username}else{if(this._isFavsWidget){return this.username+"/favorites"}else{if(this._isListWidget){return this.username+"/lists/"+this.listslug}else{return"#search?q="+this.search}}}},_setUrl:function(){var m=this;function n(){return(m.sinceId==1)?"":"&since_id="+m.sinceId+"&refresh=true"}if(this._isProfileWidget){this.url=this._base+"&callback="+this._cb+"&include_rts=true&count="+this.rpp+n()+"&clientsource="+this.source}else{if(this._isFavsWidget||this._isListWidget){this.url=this._base+this.format+"?callback="+this._cb+n()+"&include_rts=true&clientsource="+this.source}else{this.url=this._base+this.format+"?q="+this.search+"&result_type=mixed&include_rts=true&callback="+this._cb+"&rpp="+this.rpp+n()+"&clientsource="+this.source}}return this},_getRGB:function(m){return M(m.substring(1,7))},setTheme:function(s,m){var q=this;var n=" !important";var r=((window.location.hostname.match(/twitter\.com/))&&(window.location.pathname.match(/goodies/)));if(m||r){n=""}this.theme={shell:{background:function(){return s.shell.background||q._getDefaultTheme().shell.background}(),color:function(){return s.shell.color||q._getDefaultTheme().shell.color}()},tweets:{background:function(){return s.tweets.background||q._getDefaultTheme().tweets.background}(),color:function(){return s.tweets.color||q._getDefaultTheme().tweets.color}(),links:function(){return s.tweets.links||q._getDefaultTheme().tweets.links}()}};var p="#"+this.id+" .twtr-doc,                      #"+this.id+" .twtr-hd a,                      #"+this.id+" h3,                      #"+this.id+" h4,                      #"+this.id+" .twtr-popular {            background-color: "+this.theme.shell.background+n+";            color: "+this.theme.shell.color+n+";          }          #"+this.id+" .twtr-popular {            color: "+this.theme.tweets.color+n+";            background-color: rgba("+this._getRGB(this.theme.shell.background)+", .3)"+n+";          }          #"+this.id+" .twtr-tweet a {            color: "+this.theme.tweets.links+n+";          }          #"+this.id+" .twtr-bd, #"+this.id+" .twtr-timeline i a,           #"+this.id+" .twtr-bd p {            color: "+this.theme.tweets.color+n+";          }          #"+this.id+" .twtr-new-results,           #"+this.id+" .twtr-results-inner,           #"+this.id+" .twtr-timeline {            background: "+this.theme.tweets.background+n+";          }";if(d.ie){p+="#"+this.id+" .twtr-tweet { background: "+this.theme.tweets.background+n+"; }"}Q.css(p);return this},byClass:function(p,m,n){var o=C(p,m,G(this.id));return(n)?o:o[0]},render:function(){var o=this;if(!TWTR.Widget.hasLoadedStyleSheet){window.setTimeout(function(){o.render.call(o)},50);return this}this.setTheme(this.theme,this._isCreator);if(this._isProfileWidget){a.add(this.widgetEl,"twtr-widget-profile")}if(this._isScroll){a.add(this.widgetEl,"twtr-scroll")}if(!this._isLive&&!this._isScroll){this.wh[1]="auto"}if(this._isSearchWidget&&this._isFullScreen){document.title="Twitter search: "+escape(this.searchString)}this.widgetEl.innerHTML=this._getWidgetHtml();this.spinner=this.byClass("twtr-spinner","div");var n=this.byClass("twtr-timeline","div");if(this._isLive&&!this._isFullScreen){var p=function(q){if(B.call(this,q)){o.pause.call(o)}};var m=function(q){if(B.call(this,q)){o.resume.call(o)}};this.removeEvents=function(){D.remove(n,"mouseover",p);D.remove(n,"mouseout",m)};D.add(n,"mouseover",p);D.add(n,"mouseout",m)}this._rendered=true;this._ready();return this},removeEvents:function(){},_getDefaultTheme:function(){return{shell:{background:"#8ec1da",color:"#ffffff"},tweets:{background:"#ffffff",color:"#444444",links:"#1985b5"}}},_getWidgetHtml:function(){var p=this;function r(){if(p._isProfileWidget){return'<a target="_blank" href="http://twitter.com/" class="twtr-profile-img-anchor"><img alt="profile" class="twtr-profile-img" src="'+f+'"></a>                      <h3></h3>                      <h4></h4>'}else{return"<h3>"+p.title+"</h3><h4>"+p.subject+"</h4>"}}function o(){if(!p._isFullScreen){return' height="15"'}return""}function n(){return p._isFullScreen?" twtr-fullscreen":""}var q=N?"https://twitter-widgets.s3.amazonaws.com/j/1/twitter_logo_s.":"http://widgets.twimg.com/j/1/twitter_logo_s.";var m='<div class="twtr-doc'+n()+'" style="width: '+this.wh[0]+';">            <div class="twtr-hd">'+r()+'               <div class="twtr-spinner twtr-inactive"></div>            </div>            <div class="twtr-bd">              <div class="twtr-timeline" style="height: '+this.wh[1]+';">                <div class="twtr-tweets">                  <div class="twtr-reference-tweet"></div>                  <!-- tweets show here -->                </div>              </div>            </div>            <div class="twtr-ft">              <div><a target="_blank" href="http://twitter.com"><img alt="" src="'+q+(d.ie?"gif":"png")+'"'+o()+'></a>                <span><a target="_blank" class="twtr-join-conv" style="color:'+this.theme.shell.color+'" href="http://twitter.com/'+this._getWidgetPath()+'">'+this.footerText+"</a></span>              </div>            </div>          </div>";return m},_appendTweet:function(m){Y(m,this.byClass("twtr-reference-tweet","div"));return this},_slide:function(n){var o=this;var m=X(n).offsetHeight;if(this.runOnce){new A(n,"height",{from:0,to:m,time:500,callback:function(){o._fade.call(o,n)}}).start()}return this},_fade:function(m){var n=this;if(A.canTransition){m.style.webkitTransition="opacity 0.5s ease-out";m.style.opacity=1;return this}new A(m,"opacity",{from:0,to:1,time:500}).start();return this},_chop:function(){if(this._isScroll){return this}var r=this.byClass("twtr-tweet","div",true);var s=this.byClass("twtr-new-results","div",true);if(r.length){for(var o=r.length-1;o>=0;o--){var q=r[o];var p=parseInt(q.offsetTop);if(p>parseInt(this.wh[1])){Z(q)}else{break}}if(s.length>0){var m=s[s.length-1];var n=parseInt(m.offsetTop);if(n>parseInt(this.wh[1])){Z(m)}}}return this},_appendSlideFade:function(n){var m=n||this.tweet.element;this._chop()._appendTweet(m)._slide(m);return this},_createTweet:function(m){m.timestamp=m.created_at;m.created_at=this._isRelativeTime?J(m.created_at):R(m.created_at);this.tweet=new K(m);if(this._isLive&&this.runOnce){this.tweet.element.style.opacity=0;this.tweet.element.style.filter="alpha(opacity:0)";this.tweet.element.style.height="0"}return this},_getResults:function(){var m=this;this.timesRequested++;this.jsonRequestRunning=true;this.jsonRequestTimer=window.setTimeout(function(){if(m.jsonRequestRunning){clearTimeout(m.jsonRequestTimer);a.add(m.spinner,"twtr-inactive")}m.jsonRequestRunning=false;Z(m.scriptElement);m.newResults=false;m.decay()},this.jsonMaxRequestTimeOut);a.remove(this.spinner,"twtr-inactive");TWTR.Widget.jsonP(m.url,function(n){m.scriptElement=n})},clear:function(){var n=this.byClass("twtr-tweet","div",true);var m=this.byClass("twtr-new-results","div",true);n=n.concat(m);n.forEach(function(o){Z(o)});return this},_sortByLatest:function(m){this.results=m;this.results=this.results.slice(0,this.rpp);this.results.reverse();return this},_sortByMagic:function(m){var m=m;var n=this;if(this._tweetFilter){if(this._tweetFilter.negatives){m=m.filter(function(o){if(!n._tweetFilter.negatives.test(o.text)){return o}})}if(this._tweetFilter.positives){m=m.filter(function(o){if(n._tweetFilter.positives.test(o.text)){return o}})}}switch(this._behavior){case"all":this._sortByLatest(m);break;case"preloaded":default:this._sortByDefault(m);break}return this},_loadTopTweetsAtTop:function(m){var n=[];m=m.filter(function(o){if(o.metadata&&o.metadata.result_type&&o.metadata.result_type=="popular"){return o}else{n.push(o)}}).concat(n);return m},_sortByDefault:function(n){var o=this;var m=function(){if(d.ie){return function(p){return Date.parse(p.replace(/( \+)/," UTC$1"))}}else{return function(p){return new Date(p)}}}();this.results.unshift.apply(this.results,n);this.results.forEach(function(p){if(!p.views){p.views=0}});this.results.sort(function(q,p){if(m(q.created_at)<m(p.created_at)){return 1}else{if(m(q.created_at)>m(p.created_at)){return -1}else{return 0}}});this.results=this.results.slice(0,this.rpp);this.results=this._loadTopTweetsAtTop(this.results);if(!this._isLive){this.results.reverse()}this.results.sort(function(q,p){if(q.views>p.views){return 1}else{if(q.views<p.views){return -1}}return 0})},_prePlay:function(n){if(this.jsonRequestTimer){clearTimeout(this.jsonRequestTimer)}if(!d.ie){Z(this.scriptElement)}if(n.error){this.newResults=false}else{if(n.results&&n.results.length>0){this.response=n;if(this.intervalJob){this.intervalJob.stop()}this.newResults=true;this.sinceId=n.max_id;this._sortByMagic(n.results);if(this.isRunning()){this._play()}}else{if((this._isProfileWidget||this._isFavsWidget||this._isListWidget)&&H.array(n)&&n.length>0){if(this.intervalJob){this.intervalJob.stop()}this.newResults=true;if(!this._profileImage&&this._isProfileWidget){var m=n[0].user.screen_name;this.setProfileImage(n[0].user.profile_image_url);this.setTitle(n[0].user.name);this.setCaption('<a target="_blank" href="http://twitter.com/'+m+'">'+m+"</a>")}this.sinceId=n[0].id;this._sortByMagic(n);if(this.isRunning()){this._play()}}else{this.newResults=false}}}this._setUrl();if(this._isLive){this.decay()}a.add(this.spinner,"twtr-inactive")},_play:function(){var m=this;if(this._avatars){this._preloadImages(this.results)}if(this._isRelativeTime&&(this._behavior=="all"||this._behavior=="preloaded")){this.byClass("twtr-timestamp","a",true).forEach(function(n){n.innerHTML=J(n.getAttribute("time"))})}if(!this._isLive||this._behavior=="all"||this._behavior=="preloaded"){this.results.forEach(function(o){if(o.retweeted_status){o=o.retweeted_status}if(m._isProfileWidget){o.from_user=o.user.screen_name;o.profile_image_url=o.user.profile_image_url}if(m._isFavsWidget||m._isListWidget){o.from_user=o.user.screen_name;o.profile_image_url=o.user.profile_image_url}m._createTweet({id:o.id,user:o.from_user,tweet:E.clean(o.text),avatar:o.profile_image_url,created_at:o.created_at,needle:o});var n=m.tweet.element;(m._behavior=="all")?m._appendSlideFade(n):m._appendTweet(n)});if(this._behavior!="preloaded"){return this}}this._insertNewResultsNumber();this.intervalJob=new I(this.results,this.interval,this._loop,function(n){n.views++;if(m._isProfileWidget){n.from_user=m.username;n.profile_image_url=n.user.profile_image_url}if(m._isFavsWidget||m._isListWidget){n.from_user=n.user.screen_name;n.profile_image_url=n.user.profile_image_url}if(m._isFullScreen){n.profile_image_url=n.profile_image_url.replace(/_normal\./,"_bigger.")}m._createTweet({id:n.id,user:n.from_user,tweet:E.clean(n.text),avatar:n.profile_image_url,created_at:n.created_at,needle:n})._appendSlideFade()}).start(true);return this},_insertNewResultsNumber:function(){if(this.runOnce&&this._isSearchWidget){var p=this.response.total>this.rpp?this.response.total:this.response.results.length;var m=p>1?"s":"";var o=(this.response.warning&&this.response.warning.match(/adjusted since_id/))?"more than":"";var n=document.createElement("div");a.add(n,"twtr-new-results");n.innerHTML='<div class="twtr-results-inner"> &nbsp; </div><div class="twtr-results-hr"> &nbsp; </div><span>'+o+" <strong>"+p+"</strong> new tweet"+m+"</span>";Y(n,this.byClass("twtr-reference-tweet","div"))}},_preloadImages:function(m){if(this._isProfileWidget||this._isFavsWidget||this._isListWidget){m.forEach(function(o){var n=new Image();n.src=o.user.profile_image_url})}else{m.forEach(function(n){(new Image()).src=n.profile_image_url})}},_decayDecider:function(){var m=false;if(!this.runOnce){this.runOnce=true;m=true}else{if(this.newResults){m=true}}return m},start:function(){var m=this;if(!this._rendered){setTimeout(function(){m.start.call(m)},50);return this}if(!this._isLive){this._getResults()}else{this.occasionalJob.start()}this._isRunning=true;this._hasOfficiallyStarted=true;return this},stop:function(){this.occasionalJob.stop();if(this.intervalJob){this.intervalJob.stop()}this._isRunning=false;return this},pause:function(){if(this.isRunning()&&this.intervalJob){this.intervalJob.stop();a.add(this.widgetEl,"twtr-paused");this._isRunning=false}if(this._resumeTimer){clearTimeout(this._resumeTimer)}return this},resume:function(){var m=this;if(!this.isRunning()&&this._hasOfficiallyStarted&&this.intervalJob){this._resumeTimer=window.setTimeout(function(){m.intervalJob.start();m._isRunning=true;a.remove(m.widgetEl,"twtr-paused")},2000)}return this},isRunning:function(){return this._isRunning},destroy:function(){this.stop();this.clear();this.runOnce=false;this._hasOfficiallyStarted=false;this.intervalJob=false;this._profileImage=false;this._isLive=true;this._tweetFilter=false;this._isScroll=false;this.newResults=false;this._isRunning=false;this.sinceId=1;this.results=[];this.showedResults=[];this.occasionalJob.destroy();if(this.jsonRequestRunning){clearTimeout(this.jsonRequestTimer);a.add(this.spinner,"twtr-inactive")}a.remove(this.widgetEl,"twtr-scroll");this.removeEvents();return this}}}()})()})();


