//Define Ektron.Personalization object only if it's not already defined
if (Ektron.Personalization === undefined) {
	Ektron.Personalization = {};
}

//Intialiaze Ektron Personalziation
$ektron(document).ready(function(){
	Ektron.Personalization.init();
});

//Ektron Personalization Object
Ektron.Personalization = {
	bindEvents: function() {
	    //show remove tab button
	    $ektron("div.EktronPersonalization div.tabWrapper ul.tabs li.tab").hover(
			function(){
			    $ektron(this).addClass("hover");
				$ektron(this).children("a.remove").fadeIn("normal");
			},
			function(){
			    $ektron(this).children("a.remove").fadeOut("fast", function(){
			        $ektron(this).parent().removeClass("hover");
			    });
			}
		);
		
		//highlight widget tokens on hover
	    $ektron("div.EktronPersonalization ul.widgetList li.widgetToken").hover(
			function(){
			    $ektron(this).addClass("hover");
			},
			function(){
			    $ektron(this).removeClass("hover");
			}
		);
		
		//show red remove column image on hover over remove link
	    $ektron("div.EktronPersonalization td.column a.removeColumn").hover(
			function(){
			    $ektron(this).children("img.normal").css("display", "none");
			    $ektron(this).children("img.hover").css("display", "block");
			    $ektron(this).addClass("hover");
			},
			function(){
			    $ektron(this).children("img.normal").css("display", "block");
			    $ektron(this).children("img.hover").css("display", "none");
			    $ektron(this).removeClass("hover");
			}
		);
	
	    //show menu when mouseover marker
        $ektron("div.EktronPersonalization ul.tabs li.tabOptions a.tabOptions").bind("click", function(e) {
            Ektron.Personalization.OptionsMenu.show(true);
        });
        $ektron("div.EktronPersonalization ul.tabs li.tabOptions a.tabOptions").bind("keypress", function(e) {
            if (e.keyCode === 13)  //show only if pressed key is 'enter'
                Ektron.Personalziation.OptionsMenu.show(false);
        });
        
        //hide menu on timeout when mouseout menu
        $ektron("div.EktronPersonalization ul.tabOptions").bind("mouseleave", function(e) {
            Ektron.Personalization.OptionsMenu.timeoutId = setTimeout(function() {
                    Ektron.Personalization.OptionsMenu.hide();
                }, Ektron.Personalization.OptionsMenu.timeoutDuration);
        });
        
        //clear timeout when mouseover menu item
        $ektron("div.EktronPersonalization ul.tabOptions").bind("mouseenter", function(e) {
            window.clearTimeout(Ektron.Personalization.OptionsMenu.timeoutId);
        }); 
        
        //hide menu on timeout when menu item link loses focus
        $ektron("div.EktronPersonalization ul.tabOptions li div a").bind("blur", function(e) {
            Ektron.Personalization.OptionsMenu.timeoutId = setTimeout(function() {
                Ektron.Personalziation.OptionsMenu.hide();
            }, Ektron.Personalziation.OptionsMenu.timeoutDuration);
        });
                    
        //clear timeout when menu item link gains focus
        $ektron("div.EktronPersonalization ul.tabOptions li div a").bind("focus", function(e) {
            window.clearTimeout(Ektron.Personalization.OptionsMenu.timeoutId);
        });
	},
	BlockUi: {
		init: function(){
			Ektron.Personalization.BlockUi.unblock();
		},
		unblock: function(){
			setTimeout(function(){
				$ektron("div.EktronPersonalizationWrapper").unblock();
			}, 500);
		},
		block: function(){
			$ektron("div.EktronPersonalizationWrapper").block();
		}
	},
	Browsers: {
		Common: {
			setWidgetContentWidth:function(){
				//In order to properly apply overflow:auto, a pixel width must be set
		        if ($ektron("div.EktronPersonalization div.widget").length > 0 ) {
                    var overflowWidth = $ektron("div.EktronPersonalization div.widget").width();
                    overflowWidth = overflowWidth - (2 * Ektron.Personalization.getEmSize());
                    $ektron("div.EktronPersonalization div.widget div.content").width(overflowWidth)
                }
			}
		},
	    Ie: {
			v6: {
				setWidgetContentWidth: function(){
					//IE6 does not apply overflow properly without a pixel width set on element
					Ektron.Personalization.Browsers.Common.setWidgetContentWidth();
				}
			}
	    },
	    Mozilla: {
			v3: {
				setWidgetContentWidth: function(){
					//Browser Test: if ($ektron.browser.mozilla && parseFloat($ektron browser.version) >= 1.9) {}
					//FF3 does not apply overflow properly without a pixel width set on element
					Ektron.Personalization.Browsers.Common.setWidgetContentWidth();
				}
			}
	    },
	    Safari: {
	    }
	},
	Columns: {
	    init: function() {
	        var numCols = $ektron("div.EktronPersonalization table.ektronWidgetPage td.column").length;
	        var numWidgets = $ektron("div.EktronPersonalization table.ektronWidgetPage div.widget").length;
	        var width = $ektron("div.EktronPersonalization p.widgetTrayHandle").width();
	        $ektron("div.EktronPersonalization table.ektronWidgetPage td.column").each(function(i) {
                $ektron(this).css("width", String(100 / numCols) + "%");
                
                //NU MOD
                if (i != ($ektron("div.EktronPersonalization table.ektronWidgetPage td.column").length - 1)) {
                    $ektron(this).css("padding-right", "15px");
                    nuFirst = false;
                } 
                
                //add height to the column if there are no widgets
                if (numWidgets === 0) {
	               $ektron(this).css("height", "100px");     
                }
	        });
	        $ektron("div.EktronPersonalization table.ektronWidgetPage td.column div.widgetWrapper").each(function(i) {
	            $ektron(this).css("width", "100%");
	        });
			
			//set widget container div width (to constrain for overflow)
			var widgetContainer = $ektron("td.widgetContainer");
			if(widgetContainer.length > 0)
			{
			    widgetContainer.css("width", $ektron("td.widgetContainer").eq(0).width());
			}
	    },
	    remove: function(obj){
	        var modalWindow = $ektron("#ektronPersonalizationTabModal");
	        modalWindow.find("th.tabHeader span.label").text("Remove Tab");
	        modalWindow.find("div.addTab").css("display", "none");
	        modalWindow.find("div.removeTab").css("display", "none");
	        modalWindow.find("div.removeColumn").css("display", "block");
	        modalWindow.find("div.resetWidgets").css("display", "none");
	        $ektron('#ektronPersonalizationTabModal').modalShow();
	        
	        var selectedTab = $ektron(obj);
	        modalWindow.find("div.removeColumn a.confirmRemove").attr("href", selectedTab.attr("href"));
	    },
	    removeConfirmation: function(obj){
	        var modal = $ektron('#ektronPersonalizationTabModal');
	        modal.modalHide();
	        Ektron.Personalization.update(obj);
	    },
	    stripe: function(num) {
	        if (num % 2 == 0) {
	            return true;
	        } else {
	            return false;
	        }
	    }
	},
	Editable: false,
	escapeAndEncode: function(string) {
		return string
			.replace(/&/g, "&amp;")
			.replace(/</g, "&lt;")
			.replace(/>/g, "&gt;")
			.replace(/'/g, "\'")
			.replace(/\"/g, "\"")
	},
	getEmSize: function() {	
		var emSize = $ektron("body").css("font-size");
        emSize = emSize.replace(/px/g, "");  //remove the "px" from the returned value
		return +emSize;
	},
	init: function(){
		//init WidgetTray
		Ektron.Personalization.WidgetTray.init();
		
		//init Columns
		Ektron.Personalization.Columns.init();
		
		//init Widget drag-and-drop/sorting
		Ektron.Personalization.Widgets.init();
		
		//init modal
		Ektron.Personalization.Modal.init();
		
		//bind events
	    Ektron.Personalization.bindEvents();
		
		//init block ui
		Ektron.Personalization.BlockUi.init();
	},
	Modal: {
		init: function() {
			var modal = $ektron('#ektronPersonalizationTabModal');
			modal.drag('.tabHeader');
		    modal.modal({ 
		        trigger: '',
		        toTop: true,
		        modal: true,
				overlay: 0,
		        onShow: function(hash) {
		            var originalWidth = hash.w.width();
					hash.w.find("h4").css("width",  originalWidth + "px");
					var width = "-" + String(originalWidth / 2) + "px";
					hash.w.css("margin-left", width);
					hash.o.fadeTo("fast", 0.5, function() {
						hash.w.fadeIn("fast");
					});
		        }, 
		        onHide: function(hash) {
		            hash.w.fadeOut("fast");
					hash.o.fadeOut("fast", function(){
						if (hash.o) 
							hash.o.remove();
					});
		        }  
		    });
		
		    //clear tab text field
			modal.find("input:text").attr("value", "");
		}
	},
	OptionsMenu: {
	    hide: function() {
	        $ektron("div.EktronPersonalization ul.tabOptions").slideUp(250);
	    },
	    timeoutDuration: 1250,
	    timeoutId: 0,
	    show: function(autoHide){
	        var menu = $ektron("div.EktronPersonalization ul.tabOptions");
            menu.slideDown(250, function(){
                if (autoHide === false) {
                    //trigger: keyboard - don't autohide & set focus on first menu item link
                    menu.find("li:first a:first").focus();
                }
            });
                   
            if (autoHide === true) {
                //trigger: mouseover - hide menu if no menu item mouseover
                Ektron.Personalization.OptionsMenu.timeoutId = setTimeout(function() {
                    Ektron.Personalization.OptionsMenu.hide();
                }, Ektron.Personalization.OptionsMenu.timeoutDuration);
            }
            
	    }
	},
	SetEditable : function(val) {
        Ektron.Personalization.Editable = val;
    },
	Tabs: {
	    activeIndex : -1, 
	    add: function(){
	        var modalWindow = $ektron("#ektronPersonalizationTabModal");
	        modalWindow.find("th.tabHeader span.label").text("Add Tab");
	        modalWindow.find("div.addTab").css("display", "block");
	        modalWindow.find("div.removeTab").css("display", "none");
	        modalWindow.find("div.removeColumn").css("display", "none");
	        modalWindow.find("div.resetWidgets").css("display", "none");
	        $ektron('#ektronPersonalizationTabModal').modalShow();
	    },
	    select:function (index)
	    {
	        activeIndex = index;
	        var elem = $ektron("div.EktronPersonalizationWrapper input.activePage");
	        elem.attr("value", index);
	    },
	    vaidateLabel: function(obj) {	        
	        var tabLabel = $ektron("#" + obj.id).parents(".ektronWindow").find("tbody input");
            
	        //ensure "tab label" field is not empty
	        if (tabLabel.val() === undefined || tabLabel.val().length === 0)
	        {
	            //field is empty
	            tabLabel.nextAll("span.requiredReminder").fadeOut("fast", function() {
	                tabLabel.nextAll("span.requiredReminder").fadeIn("fast");   
	            });
	        } else {
	            //field is not empty - escape and encode prior to submitting
	            var modal = $ektron('#ektronPersonalizationTabModal');
	            modal.modalHide();
	            tabLabel.attr("value", Ektron.Personalization.escapeAndEncode(tabLabel.val()));
	            Ektron.Personalization.update("#" + obj.id);
	            
	        }
	    },
	    remove: function(obj){
	        var modalWindow = $ektron("#ektronPersonalizationTabModal");
	        modalWindow.find("th.tabHeader span.label").text("Remove Tab");
	        modalWindow.find("div.addTab").css("display", "none");
	        modalWindow.find("div.removeTab").css("display", "block");
	        modalWindow.find("div.removeColumn").css("display", "none");
	        modalWindow.find("div.resetWidgets").css("display", "none");
	        $ektron('#ektronPersonalizationTabModal').modalShow();
	        
	        var selectedTab = $ektron(obj);
	        modalWindow.find("div.removeTab span.label").text(selectedTab.next().text());
	        modalWindow.find("div.removeTab a.confirmRemove").attr("href", selectedTab.attr("href"));
	    },
	    removeConfirmation: function(obj){
	        $ektron('#ektronPersonalizationTabModal').modalHide();
	        Ektron.Personalization.update(obj);
	    }
	},
	update:function(obj){
		Ektron.Personalization.BlockUi.block();
		eval($ektron(obj).attr("href"));
        return false;
	},
	Widgets: {
	    init: function(){
	        $ektron("ul.ektronPersonalizationWidgetList").sortable("destroy");
	        if(Ektron.Personalization.Editable)
	        {
	            //add move cursor if editable
	            $ektron(".widgetHeader").css("cursor","move");
	            //ektron's OOB code
                $ektron("ul.ektronPersonalizationWidgetList")
                    .sortable("destroy")
				    .sortable({
					    items:".widgetToken",
					    connectWith: ["table.ektronWidgetPage td.column"],
					    opacity: .8,
        			    revert:false,
					    zIndex:99999,
					    scroll: true,
					    cursor: "move",
					    containment: $ektron("html"), //NU MOD used to be "body"
                        placeholder:"placeholder",
		                helper: function(e, el) {
					        var helper = $ektron(el).clone();
					        helper.prependTo("body");
					        return helper;
				        },
					    start: function(e, ui){
                            Ektron.Personalization.Widgets.sortElement = e.target;
                        },
                        stop: function(e, ui)
                        {
                            if($ektron(Ektron.Personalization.Widgets.sortElement).parents("ul.ektronPersonalizationWidgetList").length == 0)
                            {
                                Ektron.Personalization.Widgets.sortHandler(e,ui);
                            }
                        }
			    });
			    $ektron("table.ektronWidgetPage td.column")
			        .sortable("destroy")
			        .sortable({
				        items: "div.widget",
				        connectWith:["table.ektronWidgetPage td.column"],
				        zIndex: 99999,
				        scroll: true,
				        sensitivity: 1,
				        handle: ".widgetHeader", //NU MOD used to be ".header"
				        containment: $ektron("html"), //NU MOD used to be "body"
				        cursor: "move",
				        helper: function(e, el) {
					        var helper = $ektron(el).clone();
					        helper.css("width", $ektron(el).width());
					        helper.prependTo("body");
					        return helper;
				        },
				        placeholder:"placeholder",
				        start: function(e, ui){
				            var sortElement = $ektron(e.target);
        				    
		                    var column = sortElement.parents(".column");
                            startColumnIndex = column.parents(".widgetList").find(".column").index(column.get(0));
                            var widget = sortElement.parents(".widget");
			                startWidgetIndex = column.find(".widget").index(widget.get(0));
        		            
                            sortElement.attr("data-ektron-startColumnIndex", startColumnIndex);
		                    sortElement.attr("data-ektron-startWidgetIndex", startWidgetIndex);
        		            
                            Ektron.Personalization.Widgets.sortElement = e.target;
                        },
                        stop: function(e, ui) {
                            Ektron.Personalization.Widgets.sortHandler(e, ui);
                        }
			    });
				
				//if a widget is in edit mode, scroll to it
		        $ektron("div.EktronPersonalization div.widget a.edit").each(function(i){
			        if ($ektron(this).attr("data-ektron-editMode") === "true") {
				        Ektron.Personalization.Widgets.scrollToMe(this);
			        }
		        });
			}
			//apply widths to div.widget div.content for FF3 and IE6
			if ($ektron.browser.mozilla && parseFloat($ektron.browser.version) >= 1.9)
				Ektron.Personalization.Browsers.Mozilla.v3.setWidgetContentWidth();
			if ($ektron.browser.msie && parseFloat($ektron.browser.version) >= 6)
					Ektron.Personalization.Browsers.Ie.v6.setWidgetContentWidth();
			
			//show widget content
			$ektron("div.EktronPersonalization div.widget div.content").fadeIn("fast");
	    },
	    reset: function(obj){
	        var modalWindow = $ektron("#ektronPersonalizationTabModal");
	        modalWindow.find("th.tabHeader span.label").text("Reset Widgets");
	        modalWindow.find("div.addTab").css("display", "none");
	        modalWindow.find("div.removeTab").css("display", "none");
	        modalWindow.find("div.removeColumn").css("display", "none");
	        modalWindow.find("div.resetWidgets").css("display", "block");
	        $ektron('#ektronPersonalizationTabModal').modalShow();
	    },
	    resetConfirmation: function(obj){
	        $ektron('#ektronPersonalizationTabModal').modalHide();
	        Ektron.Personalization.update(obj);
	    },
	    scrollToMe: function(obj) {
			var widget = $ektron(obj).parents("div.widget");
			$ektron.scrollTo(widget, 800, {onAfter: function(){
				widget.effect("highlight", {color:"#9a9a9a"}, 500);		
			}});
		},
	    sortElement: {},
	    sortHandler: function(e, ui){
	        var action;
		    var command;
		    var controller;
		    var endColumnIndex;
		    var endWidgetIndex;
		    var sortAction;
		    var startColumnIndex;
		    var startWidgetIndex;
		    var widgetTypeIndex;
		    
		    //determine sort action
		    if ($ektron(Ektron.Personalization.Widgets.sortElement).parents("li.widgetToken").length > 0
		        || $ektron(Ektron.Personalization.Widgets.sortElement).hasClass("widgetToken")) {
		        sortAction="add"; //widget is new - comes from widget tray
		    } else {
		        sortAction="move"; //widget already exists - comes from another column
		    }
		    
		    switch(sortAction) {    
		        case("add"):
		            controller = "personalization";
		            action="add_widget";
		            var widget = $ektron(Ektron.Personalization.Widgets.sortElement);
		            if(!widget.hasClass("widgetToken"))
		                widget = $ektron(Ektron.Personalization.Widgets.sortElement).parents(".widgetToken");
		            var column = widget.parents(".column");
                    endColumnIndex = column.parents(".widgetList").find(".column").index(column.get(0));
			        endWidgetIndex = column.find("li.widgetToken").prevAll("div.widget").length;
			        
			        widgetTypeIndex = parseInt(widget.find("input").attr("value"), 10);
			        
			        command = {
				        Controller: controller,
				        Action: action,
				        Arguments: [
					        widgetTypeIndex,
					        endColumnIndex,
					        endWidgetIndex
				        ]
			        }
		            break;
		        case("move"):
		            controller = "widget_list_container";
		            action="move_widget";
		            startColumnIndex = parseInt($ektron(Ektron.Personalization.Widgets.sortElement).attr("data-ektron-startColumnIndex"));
			        startWidgetIndex = parseInt($ektron(Ektron.Personalization.Widgets.sortElement).attr("data-ektron-startWidgetIndex"));
			        
			        var column = $ektron(Ektron.Personalization.Widgets.sortElement).parents(".column");
                    endColumnIndex = column.parents(".widgetList").find(".column").index(column.get(0));
                    var widget = $ektron(Ektron.Personalization.Widgets.sortElement).parents(".widget");
			        endWidgetIndex = column.find(".widget").index(widget.get(0));
			        command = {
				        Controller: controller,
				        Action: action,
				        Arguments: [
					        startColumnIndex,
					        startWidgetIndex,
					        endColumnIndex,
					        endWidgetIndex
				        ]
			        }
			        break;
                default:
                    command === null;
                    break;
		    }
		    if (command !== null) {
				//update personalization
				Ektron.Personalization.BlockUi.block();
				__doPostBack($ektron(Ektron.Personalization.Widgets.sortElement).parents("div.EktronPersonalization").parent().attr("id"),Ektron.JSON.stringify(command));
			} else {
			    alert("Command Not Recognized");
			}
	    }
	},
	WidgetTray: {
		slideDistance: 50, 
		hide: function(menu){
    		var columnsRemove = $ektron("div.EktronPersonalization div.columnRemove");
    		
    		if (columnsRemove.length > 0) {
		        //hide "remove column" widgets
			    columnsRemove.slideUp("fast", function(){
			        var slideOutWidth = menu.width() + (4 * Ektron.Personalization.getEmSize());
			        menu.find("ul.widgetList").animate({left: slideOutWidth});
			        var arrow = $ektron("a.widgetTrayToggle span");
			        arrow.fadeOut("fast", function(){
				        arrow.removeClass("directionUp");
				        arrow.fadeIn("fast");
			        });
			        menu.find("p.scrollWrapper a").fadeOut("fast", function(){
				        menu.slideUp("fast");
			        });
			    });
			} else {
			    var slideOutWidth = menu.width() + (4 * Ektron.Personalization.getEmSize());
		        menu.find("ul.widgetList").animate({left: slideOutWidth});
		        var arrow = $ektron("a.widgetTrayToggle span");
		        arrow.fadeOut("fast", function(){
			        arrow.removeClass("directionUp");
			        arrow.fadeIn("fast");
		        });
		        menu.find("p.scrollWrapper a").fadeOut("fast", function(){
			        menu.slideUp("fast");
		        });
			}
		},
		init: function(){
			//set width of widget bar
			var menuWidth;
			var menu;
			var widgetItems;
			var oneEm;
			var buffer;
			var widgetListWidth = 0;
			
			//get EM size and set buffer
			oneEm = Ektron.Personalization.getEmSize() + 1;
			buffer = oneEm;
			
			//get widget tokens
			$ektron("div.EktronPersonalization li.widgetToken:first").addClass("widgetTokenFirst");
			$ektron("div.EktronPersonalization li.widgetToken:last").addClass("widgetTokenLast");
			widgetItems = $ektron("div.EktronPersonalization li.widgetToken");
			if (widgetItems.length === 0) {
			    menuWidth = 52 + buffer;
			} else {
				widgetItemWidth = parseInt(widgetItems.eq(0).css("width").replace(/px/g, "")) + oneEm;
			    menuWidth = ((widgetItems.length + 1) * widgetItemWidth + (2 * oneEm));
			}
			menu = $ektron("div.EktronPersonalization div.widgetTray ul.widgetList");
			menu.css("width", menuWidth);
			menu.css("left", menuWidth + "px");
		},
		next: function(){
			var widgetList = $ektron(".widgetList");
			var widgetListWidth = parseInt(widgetList.width());
			var widgetListWrapperWidth = parseInt(widgetList.parent().width());
			var left = parseInt(widgetList.css("left").replace(/px/g, ""));  //remove the "px"
			var widgetListRight = widgetListWidth + left;
			
            var newLeft = left + "px";
            left = left - (widgetListRight > widgetListWrapperWidth + Ektron.Personalization.WidgetTray.slideDistance ? Ektron.Personalization.WidgetTray.slideDistance : (widgetListWidth - widgetListWrapperWidth) +left);
            var newLeft = left + "px";
		    widgetList.animate({left: newLeft});
			
			widgetListRight = widgetListWidth + left;
			Ektron.Personalization.WidgetTray.nextPreviousToggle(left, widgetListRight, widgetListWrapperWidth);
		},
		nextPreviousToggle: function(left, widgetListRight, widgetListWrapperWidth){			
			var	scrollLeft = $ektron("div.EktronPersonalization div.widgetTray p.scrollWrapper a.scrollLeft");
			var	scrollRight = $ektron("div.EktronPersonalization div.widgetTray p.scrollWrapper a.scrollRight");
			
			if (left === 0) {
				scrollLeft.addClass("hide"); //left OFF
				scrollRight.removeClass("hide"); //right ON
			} else if ((left < 0) && (widgetListRight >= widgetListWrapperWidth)) {
				scrollLeft.removeClass("hide"); //left ON
				scrollRight.removeClass("hide"); //right ON
			} else if ((left < 0) && (widgetListRight < widgetListWrapperWidth)) {
				scrollLeft.removeClass("hide"); //left ON
				scrollRight.addClass("hide"); //right OFF
			}
			
		},
		previous: function(){
			var widgetList = $ektron(".widgetList");
			var widgetListWidth = parseInt(widgetList.width());
			var widgetListWrapperWidth = parseInt(widgetList.parent().width());
			var left = parseInt(widgetList.css("left").replace(/px/g, ""));  //remove the "px"
			var widgetListRight = widgetListWidth + left;
			
            left = left + (left <= -Ektron.Personalization.WidgetTray.slideDistance ? Ektron.Personalization.WidgetTray.slideDistance : -left);
            var newLeft = left + "px";
		    $ektron(".widgetList").animate({left: newLeft});
			
			Ektron.Personalization.WidgetTray.nextPreviousToggle(left, widgetListRight, widgetListWrapperWidth);
		},
		show: function(menu){
			//intialize widget tray
			Ektron.Personalization.WidgetTray.init();
			
			//set width on overflow wrapper for ie6
			if (($ektron.browser.msie) && (parseInt($ektron.browser.version) < 7)) {
			    var width = $ektron("div.EktronPersonalization .widgetTrayHandle").width();
			    width = width + Ektron.Personalization.getEmSize();
			    $ektron("div.EktronPersonalization div.widgetTray div.overflowWrapper").css("width", width);
			}
			
			//point arrow down
			var arrow = $ektron("a.widgetTrayToggle span");
			arrow.fadeOut("fast", function(){
				arrow.addClass("directionUp");
				arrow.fadeIn("fast");
			});
			
			//open widget tray
			var menu = $ektron("div.EktronPersonalization div.widgetTray");
			menu.slideDown("fast", function(){
				menu.find("p.scrollWrapper a").fadeIn("fast");
			});
			
			//slide widgets in from left
			menu.find("ul.widgetList").animate({left: "0"}, function(){
			    //show "remove column" widgets
			    $ektron("div.EktronPersonalization div.columnRemove").slideDown("fast");
			});
			
			Ektron.Personalization.WidgetTray.slideDistance = parseInt($ektron(".widgetList").parent().width());
		},
		toggle: function() {
			var menu = $ektron("div.EktronPersonalization div.widgetTray");
			if (menu.css("display") === "block") {
				Ektron.Personalization.WidgetTray.hide(menu);
			} else {
				Ektron.Personalization.WidgetTray.show(menu);
			}
		}
	}
}
