	/* 
	>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
		CLASS: SMART DOC
	>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
		REQUIRES:
			* framework
				- jquery-1.2.6.min.js
				- jquery-ui-personalized-1.6rc2.min.js
			* extensions
				- jScrollPane.js
				- jquery.mousewheel.js
			* custom
				- Overlay.js
				- tooltip.js
	>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
		TODO:
			---------------------------------
			- persist data (inc: premium content)
			--------------------------------
			- clean-up
			- check selectors
	>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
	*/
	$j.Avaya.SmartDock = function(options) {
	
		if (!document.getElementById('smartDock'))
			return;
		
		var self = this;
		var currentCollection = 0;
		
		var settings = $j.extend({
			defaults: {width: 280, height: 600},
			height: null,
			width: null,
			amtShowing: 22,
			unregMaxItems: 5,
			animationLength: 700,
			dontShowAgain: 1,
			cookieName: "smartdock",
			isOpen: 0,
			sortableSettings: {
				items: ".item",
				handle: ".titlebar",
				placeholder: "placeholder",
				update: function() {
					_reorderBookmarks();	
				}
			},
			scrollbar: {
				scrollbarWidth: 5	
			},
			isFixed : true
		}, options);

		// INITIALIZE
			var $wrap = $j("#sd-wrap");
			var $knob = $j("#sd-knob");
			var $smartDock = $j("#smartDock");
			var $sdItems = $j("#sd-items");
			var $content = $j("#sd-content");
			var $sdCollection = $j("#sd-collection");
			var $customSelect = $content.find('select.customSelect');			
			var itemManager; //Initialized in _loadUserCollections
			var $bigOpen = $j("#sd-bigOpen");
			var smartDockId = $j.Avaya.SmartDockId;
			var Collections = 0;
			var isOpening = false;
			
			// undo fixed dock positioning if too small for window
			if($j(window).height() < $smartDock.offset().top + $smartDock.height() - 15) {
				$smartDock.css({position: "absolute"});
				settings.isFixed = false;
			}
			
			if(!$j.Avaya.global.isRegistered) {
				$j("#sd-registerTout").show();
				$j("#sd-avayaRecommends").hide();
			}
			// default opened or closed based on settings
			if(!settings.isOpen) {			
				$smartDock.css({
					left: _getClosedPosition()
				});
			} else {
				$smartDock.data("isOpen", 1); 
			}	

			if($j.Avaya.global.isRegistered) {
				//Populate collection dropdown
				_getUserCollections(smartDockId);	
			} else {
				_disableFooter();
				$j(window).unload(function () { 
					saveUnregisteredData();
				});				
				string = '<option value="collection_0">'+$j.Avaya.Error.SmartDock.defaultCollectionName+'</option>'; 
				
				var dock = loadUnregisteredData();
				
				if($j.cookie("dontShowAgain") != null) {
					settings.dontShowAgain = $j.cookie("dontShowAgain");
				}
				
				if(dock) {
					dock.itms = dock.itms.reverse();
					
					for(var i=0; i<dock.itms.length; i++) {
						if(dock.itms[i] && (dock.itms[i] != "" || dock.itms[i] != null)) {
							var itmInfo = JSON.parse(dock.itms[i]);						
							var $itm = $j(_createItem(itmInfo));
							
							$sdItems.prepend($itm);
							$itm.data("itmInfo", dock.itms[i]);
							new $j.Avaya.ToolTipTrigger($itm,{staticContent:'<p>'+itmInfo.description+'</p>',location:'NE',width:214, yOffset: 15, xOffset: -70, fixed:settings.isFixed, canLock:true});
							
				
							$sdItems.jScrollPane(settings.scrollbar);
							$sdItems.sortable("destroy");
							$sdItems.sortable(settings.sortableSettings);
						}
					}

					
				}
					
				_buildDropDown(string);
			}
			
			// initialze events
			//Hide SmartDock on clicks outside
			$j(document).click(function(e){
				if (!$smartDock.data('isOpen') || $smartDock.data('isOpen') == 0) return;
				
				var $tar = $j(e.target);
				var parents = $tar.parents();
				//Add exceptions into here
				if (!parents.is('#smartDock, #item-manager, .smartdock-add, #tool-tip, #util-saveList') && !$tar.hasClass("smartdock-add")){
					self.hide();
				}
			});
			
			$knob.click(function(e){
				_toggle(e);
				self.statusIndicator.hide();
			});
			
			$j("#sd-help").click(_showHelp);
			$j("#sd-help").hover(function(){
				$j(this).find('img').attr('src','/_assets/img/btn_help_on.png');
			},function(){
				$j(this).find('img').attr('src','/_assets/img/btn_help.png');
			});
			
			$j("a.printCollection", $smartDock).live("click", _printCollection);
			$j("a.shareCollection", $smartDock).live("click", _shareCollection);
			
			$j("a.share-send").live("click", function(e) {
				e.preventDefault(e);
				
				$j.Avaya.global.Tracking.clickEvent("SD-SHARE_SEND");
				
				var $recipients = $j("#recipient");
				$recipients.focus(function() { 
					if($j(this).hasClass("invalid")) {
						$j(this).removeClass("invalid");
						self.statusIndicator.hide();
					}
				});
				
				$j("#shareCollection input").removeClass("invalid");
										
				var emails = $recipients.val();

				var comments = $j("#comments").val();
				
				var emailsValid = validateEmails(emails);
				
				if(validateEmails(emails))  {
					
					var oSmartDock = new SmartDock();
					oSmartDock.AddShareWithAFriend(currentCollection,emails,comments, function(params) {
						if(params.result > 0) {
							$j.get("/_assets/inc/shareComplete.html", function(response) {
								panels.share.show({val: $j(response)});
								$j.Avaya.global.Tracking.pageView("SD-SHARE_COMPLETE", "Open", "SmartDock");
							});		
						} else {
							self.statusIndicator
								.setValue($j.Avaya.Error.SmartDock.genericServerError)
								.setHorizontal(-200,265)
								.show({
									hide: 6000,
									top: 300
								});
						}
					});

				} else {
					if(emailsValid == false) {
						$recipients.addClass("invalid");
					}

					self.statusIndicator
						.setValue($j.Avaya.Error.SmartDock.genericFormError)
						.setHorizontal(-250,265)
						.show({
							hide: 6000,
							top: 300
						});
				}
				
			});
			
			$j("a.share-cancel").live("click", function(e) {
				e.preventDefault(e);		
				$j.Avaya.global.Tracking.clickEvent("SD-SHARE_CANCEL");
				$j.Avaya.global.Tracking.pageView("SD-COLLECTION_" + _getCollectionIndex(currentCollection) , "Return", "SmartDock");
				panels.share.hide();
				_enableFooter();
			});

			$j("a.share-continue").live("click", function(e) {
				e.preventDefault(e);										  
				$j.Avaya.global.Tracking.clickEvent("SD-SHARE_CONTINUE");
				$j.Avaya.global.Tracking.pageView("SD-COLLECTION_" + _getCollectionIndex(currentCollection) , "Return", "SmartDock");
				panels.share.hide();
				_enableFooter();
			});
			
			
			
			$j("a.delete", $wrap).live("click", function(e){
				e.preventDefault(e);
				
				if(confirm($j.Avaya.Error.SmartDock.areYouSureBookmark)) {
					
					$j.Avaya.global.Tracking.clickEvent("SD-BOOKMARK_DELETE");
					
					var $target = $j(e.target).parents("div.item");
					_deleteBookmark($target,currentCollection,$target.attr("id"));
				}
			});
			
			$j("#sd-avayaRecommends").css({top: 332});
			
			$j("#ar-expand").click(function(e) {
				e.preventDefault();
				
				
				
				var $target = $j(e.target);
				var $ar = $j("#sd-avayaRecommends");
				var $items = $j("#sd-avayaRecommends .items");
				var $sdCollection = $j("#sd-collection");
				if($target.hasClass("open")) {
					$j.Avaya.global.Tracking.pageView("SD-AVAYA_RECOMMENDS", "Open", "SmartDock");
					
					$target.removeClass("open").addClass("close");	

					$ar.stop();
					$sdItems.stop();
					$items.stop();
					$sdCollection.addClass("recommendsOpen");
					
					$sdItems.jScrollPaneRemove();
					
					
					$items.animate({height: 285}, {duration: 500, queue: false, 
						complete: function() {

							$items.jScrollPane(settings.scrollbar);																	  
						}
					});
					$ar.animate({top: 130}, {duration: 500, queue: false});
					$sdCollection.animate({height: 80}, {duration: 500, queue: false});
						
				} else if($target.hasClass("close")){
					$j.Avaya.global.Tracking.clickEvent('SD-AVAYA_RECOMMENDS_Close'); 
					$j.Avaya.global.Tracking.pageView("SD-COLLECTION_" + _getCollectionIndex(currentCollection), "Return", "SmartDock" );
					$items.jScrollPaneRemove();		
					$items.height(285);
					$target.removeClass("close").addClass("open");
					
					$ar.stop();
					$sdItems.stop();
					$items.stop();
					$ar.animate({top: 332}, {duration: 500, queue: false});
					$sdCollection.animate({height: 280}, {duration: 500, queue: false});
					$items.animate({height: 80}, {
							duration: 500, 
							queue: false, 
							complete: function() {
								$items.jScrollPaneRemove();
								$sdCollection.removeClass("recommendsOpen");
								$sdItems.jScrollPane(settings.scrollbar);
							}
					});

				}
			});
			
			// SIFR
			$j.Avaya.SifrConfig.masterReplace($j.Avaya.SifrConfig.gothamLight,{
			   selector: '#sd-header h2',
			   css: {
					'.sIFR-root': { 
						'color': '#cc0000', 
						'font-weight': 'bold',
						'font-size': 18
					}
			   },
			   selectable: false
			});
			
			
		/* METHODS >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> */
		/* PUBLIC ................................... */	
		
		this.initItems = function() {
			var $items = $j("div.item", $smartDock);

			//$items.each(function(index, itm) {
				// init tip
			//	new $j.Avaya.ToolTipTrigger($j(itm),{staticContent:'<p><strong>PRODUCT</strong><br />Product name</p><p><br />Lorem ipsum doler sit amet, sine qua non lorem sit doler ubi...</p>',location:'NE',width:214, yOffset: 45, xOffset: -30, fixed: true});
			//});
			
			$sdItems.jScrollPane(settings.scrollbar);
					
			$sdItems.sortable("destroy");
			$sdItems.sortable(settings.sortableSettings);
		}

		this.show = function() {
			isOpening=true;
			$bigOpen.css({display:'none'});
			if(!$j.Avaya.global.isRegistered && $j.cookie("wasOpened") != 1) {
				$j.cookie("wasOpened", 1);
				_showWelcome();
			}
			
			$wrap.css({visibility: "visible"});
			
			$knob.removeClass("open").addClass("open");
			
			$wrap.fadeIn(200);
			$smartDock.stop();
			$smartDock.animate({ 
				left: 0
			}, {duration:settings.animationLength, easing:"easeout",complete:function(){isOpening=false;}});

			$smartDock.data("isOpen", 1);

			$sdItems.jScrollPane(settings.scrollbar);
			$j.Avaya.global.Tracking.clickEvent("SD-OPEN");
		}
		
		this.hide = function() {
			
			
			$smartDock.stop();
			$smartDock.animate(
				{left: _getClosedPosition()}, 
				{duration:settings.animationLength, 
				easing:"easeout",complete:
				function() {
					$wrap.css({visibility: "hidden"});	
					// hide open panels
					for(var i in panels) {
						panels[i].hide();	
					}
					if($j.Avaya.global.isRegistered) {
						_enableFooter();
					}
					$bigOpen.css({display:'block'});
					$knob.removeClass("open");
				}}
			);
			$smartDock.data("isOpen", 0);	
		}
		
		
		/* PRIVATE */
		function _getCollectionIndex(id) {
			var i = 0;
			$customSelect.find("option").each(function(index, itm){
				if (itm.value == 'collection_'+id){
					i = index;
				}
			});
			return i;
		}
		
		function _getAvayaRecommends() {
			/*
				THIS IS WHAT IT WILL USE:
				var oSmartDock = new SmartDock();
				oSmartDock.GetRecommendedCollections(function(params){
				
				});	
			*/
			var $customSelect = $content.find('select.customSelect');
			// TEMP: GET FIRST COLLECTION FOR TEST DATA
			var cid = $customSelect.val().split("_")[1];

			var string = '';
			var bookmarks;
			$avayaRecommendsItems = $j("#sdItems-avayaRecommends");
						
			//var oSmartDock = new SmartDock();
			//oSmartDock.GetCollectionBookmarks(cid, function(params) {
				if(typeof contentlist != "undefined") {
				bookmarks = contentlist;

				for (var i=0;i<bookmarks.length;i++){
					var bm = bookmarks[i];
					if(bm.id) {
					var itm = $j(_createItem(bm, 1));
					$avayaRecommendsItems.append(itm)
					new $j.Avaya.ToolTipTrigger(itm,{staticContent:'<p>'+bm.description+'</p>',location:'NE',width:214, yOffset: 15, xOffset: -70, fixed:settings.isFixed, canLock: true});
					}
				}
				self.initItems();
				
				currentCollection = cid;
				}
			//});

		}
		
		function _createItem(params, isAvayaRecommends) {
			var settings = $j.extend({
				type: null,
				id: 0,
				img: ""
			}, params);
			
			if(typeof contentlist == "undefined") {
				contentlist = [];	
			}
			var canPush = true;
			for(var i=0; i<contentlist.length; i++) {
				if(contentlist[i].id == params.id) {
					canPush = false;
					break;
				}
			}
			if(canPush) { contentlist.push(params); } 
			
			//settings.description = _truncate(settings.description);
			settings.title = _truncate(settings.title);
			
			var deleteBtn = '<a href="javascript:void(0)" class="delete">x</a>';
			var avayaRecommendsClass = "";
			var addBtnClass = "";
			
			if(isAvayaRecommends) {
				deleteBtn = "";
				avayaRecommendsClass = " isAvayaRecommends";
			} else {
				addBtnClass = " inCollection";
			}
			
			var premiumIndicator = '<img src="/_assets/img/icon_premiumContent.png" alt="'+$j.Avaya.Error.SmartDock.premiumContent+'" title="'+$j.Avaya.Error.SmartDock.premiumContent+'" />';
			if(! settings.isPremiumContent) {
				premiumIndicator = "";	
			}
			
			return '<div class="item'+avayaRecommendsClass+'" id="'+settings.id+'"><div class="titlebar"><span>'+settings.contentTypeDescription+'</span><div class="item-utils"><a href="javascript:void(0)" class="smartdock-add'+addBtnClass+'" title="copy to collection" alt="copy to collection"></a>'+deleteBtn+'</div></div><div class="item-content"><img src="'+settings.smallImage+'" /><a href="'+settings.url+'">'+settings.title+ premiumIndicator + '</a></div></div>';

		}
				
		function _buildDropDown(string){		
			var str = string;
			str += '<option value="ignore new" id="beginSdActions">'+$j.Avaya.Error.SmartDock.newCollection+'</option><option value="ignore delete">'+$j.Avaya.Error.SmartDock.deleteCollection+'</option><option value="ignore rename">'+$j.Avaya.Error.SmartDock.renameCollection+'</option>'; 
			
			$customSelect.html(str);
			
			itemManager = new ItemManager();
			
			self.customSelect = new $j.Avaya.CustomSelect($customSelect, {
				submitFunction: function(){
					var collectionId = $customSelect.val().split('_')[1];
					if(collectionId != currentCollection) {
						_getCollection(collectionId);
					}
				},
				ignoredValue: "ignore",
				functions: {
					"new": function() {
						if($j.Avaya.global.isRegistered) {
							_addCollection();
						} else {
							self.statusIndicator.setValue($j.Avaya.Error.SmartDock.newCollectionRegister, 1).setHorizontal(15,265).show();
						}
					},
					"rename": function() {
						if($j.Avaya.global.isRegistered) {
							_makeRenamable();
							
						} else {
							self.statusIndicator.setValue($j.Avaya.Error.SmartDock.renameCollectionRegister, 1).setHorizontal(15,265).show();
						}	
					}, 
					"delete": function() {
						if($j.Avaya.global.isRegistered) {
						    var collectionId = $customSelect.val().split('_')[1];
							_deleteCollection(collectionId);
						} else {
							self.statusIndicator.setValue($j.Avaya.Error.SmartDock.deleteCollectionRegister, 1).setHorizontal(15,265).show();
						}
					}
				}
			});
			
			$content.find("ul.selectList li").each(function(){ 
				if($j(this).html() == $j.Avaya.Error.SmartDock.newCollection) {
					$j(this).addClass("divider");
				}
			});
		};
		
		function _makeRenamable(val) {
			var selectParent = $customSelect.parents(".selectParent");
			var $label = selectParent.find("div.selectDisplay span");
			var labelVal = val || $label.html();
			var $input = $j('<input maxlength="25" value="'+labelVal+'" />');
			this.currentCollectionName = $label.html();
			
			$input.blur(function() {
				//$j(this).parents("span").html(this.value);				 
				_renameCollection(currentCollection,this.value);
			}).click(function(e) {
				return false;
			}).keyup(function(e) {
				if(e.keyCode == 13) {
					//$j(this).parents("span").html(this.value);		
					_renameCollection(currentCollection,this.value);
				}
			});

			$label.html($input);
			
			setTimeout(function() {
				var $input = selectParent.find("div.selectDisplay input");
				$input.focus();	
				$input.select();						
			}, 100);	
		}
		
						
		function _showHelp(e) {
			if (e){
				e.preventDefault();
			}
			
			//$j.Avaya.global.Tracking.clickEvent("SD-HELP");
			
			$j.get("/_assets/inc/help.html", function(response) {
				self.statusIndicator.abruptHide();													  	
				panels.welcome.show({val: $j(response)});					
				$j.Avaya.global.Tracking.pageView("SD-HELP", "Open", "SmartDock");
				
				$j(".tryDock", $j("#sd-panel.welcome")).die().live("click", function(e) {
						e.preventDefault(e);
						$j.Avaya.global.Tracking.clickEvent("SD-TRYDOCK");
						$j.Avaya.global.Tracking.pageView("SD-COLLECTION_" + _getCollectionIndex(currentCollection) , "Return", "SmartDock");
						panels.welcome.hide();								  
				});
				
				$j("a.panel-close", $j("#sd-panel.welcome")).die().live("click", function(e) {
						e.preventDefault(e);			
						$j.Avaya.global.Tracking.clickEvent("SD-HELP_CLOSE");
						$j.Avaya.global.Tracking.pageView("SD-COLLECTION_" + _getCollectionIndex(currentCollection) , "Return", "SmartDock");
						panels.welcome.hide();
				});
				
				if($j.Avaya.global.isRegistered) {
					setTimeout(function() {
						$j("#welcomeScreen").addClass("isRegistered");	
					}, 500);
				}
			});		
			if($j.Avaya.global.isRegistered) {
				_enableFooter();
			}
		}
		

		
		function _showWelcome(e) {
			if (e){
				e.preventDefault();
			}
			if($j.cookie("dontShowAgain") != 1) {
				$j.get("/_assets/inc/welcome.html", function(response) {
					self.statusIndicator.abruptHide();	
					panels.welcome.show({val: $j(response)});	
					$j.Avaya.global.Tracking.pageView("SD-WELCOME" , "Open", "SmartDock");
					
					$j("#sd_dontShowAgain").die().live("click", function(e) {
						$j(this).attr("checked") ? settings.dontShowAgain = 1 : settings.dontShowAgain = 0;
					});
					
					$j(".tryDock", $j("#sd-panel.welcome")).die().live("click", function(e) {
							e.preventDefault(e);
							
							$j.Avaya.global.Tracking.clickEvent("SD-TRYDOCK");
							
							panels.welcome.hide();	
							setTimeout(function() {
								$sdItems.jScrollPane(settings.scrollbar);
							}, 100);
					});
					
					$j(".welcome-close", $j("#sd-panel.welcome")).die().live("click", function(e) {
							e.preventDefault(e);								  
							panels.welcome.hide();
					});
					
					if(settings.dontShowAgain == 0) {
						setTimeout(function() { 
							$j("#sd_dontShowAgain").click();
						}, 500);	
					}
				});		
				if($j.Avaya.global.isRegistered) {
					_enableFooter();
				}
			}
		}
		
		$bigOpen.click(function() {
			self.show();								
		}).hover(function(){
			if (!isOpening && !$smartDock.data("isOpen")) {
				$smartDock.stop(true)
				.animate({left:-255},20)
				.animate({left:-245},200)
				.animate({left:-250},200);
			}
		},function(){
			if (!isOpening && !$smartDock.data("isOpen")) {
				$smartDock.stop().animate({left:-258},100);
			}
		});
		
		// args [e:Event] : return null
		function _toggle(e) {		
			e.preventDefault(e);
			if(!$smartDock.data("isOpen") || $smartDock.data("isOpen") == 0) {
				self.show();
			} else {
				self.hide();
				$j.Avaya.global.Tracking.clickEvent("SD-CLOSE");
			}
		}
		
		// return NUMBER
		function _getClosedPosition() {
			return ((settings.width) ? -(settings.width) : -(settings.defaults.width)) + settings.amtShowing;
		}
		
		function _printCollection(e) {
			if(! $j(e.target).hasClass("disabled")) {
				$j.Avaya.global.Tracking.clickEvent("SD-PRINT"); 
			}
		}
		
		function _disableFooter() {
			$j("#sd-footer a").removeClass("disabled").addClass("disabled");
		}
		
		function _enableFooter() {
			$j("#sd-footer a").removeClass("disabled");
		}
		
		function _shareCollection(e) {
			e.preventDefault(e);
			if(! $j(e.target).hasClass("disabled")) {
				if($j.Avaya.global.isRegistered) { 
					$j.get("/_assets/inc/shareform.html", function(response) {
						panels.share.show({val: $j(response)});
						$j.Avaya.global.Tracking.pageView("SD-SHARE_FORM", "Open", "SmartDock");

						setTimeout(function() {
							$j("#SHAREFORM-collection").html($content.find("div.selectDisplay span").html());	
							
							$j("#comments").maxLength(1000);
							
							var checkboxes = $j("input:checkbox");
							checkboxes.each( function() {
								$j(this).css('position', 'absolute').css('left', '-9999px');
								(this.checked) ? $j("#fake"+this.id).addClass('fakecheckboxChecked') : $j("#fake"+this.id).removeClass('fakecheckboxChecked');
								var id = $j(this).attr('hook');
								var html = $j(this).val();
								var checked = this.checked;
							});
							
							$j("#privacyLink").click(function() {
								setTimeout(function() {
									document.location = $j("#privacyStatementLink").get(0).href.toString();
								}, 100);
							});
							$j(".fakecheckbox").click(function(){
								($j(this).hasClass('fakecheckboxChecked')) ? $j(this).removeClass('fakecheckboxChecked') : $j(this).addClass('fakecheckboxChecked');
								var checkBoxId = $j(this).attr('hook');
								var checkBox = $j('input:checkbox#' + checkBoxId);
								checkBox.trigger('click');
							});
							
						}, 500);
					});
					_disableFooter();
				}
			}
		}
		
		function validateEmail(address) {
			var email = /^([a-zA-Z0-9])+([\.a-zA-Z0-9_-])*@([a-zA-Z0-9_-])+(\.[a-zA-Z0-9_-]+)+$/;
			if(!email.test(address)) {
				return false;
			}
			return true;
		}
		
		function validateEmails(addresses) {
			var emails = addresses.split(",");
			var valid = false;
			
			for(var i=0; i<emails.length; i++) {
				valid = validateEmail($j.trim(emails[i]));
				if(!valid) { break; }
			}
			
			if(valid) {
				return true;
			} else {
				return false
			}
		}
		
	/****** AJAX Calls ******/		
		//Gets the collections related to a smartdockID
		function _getUserCollections(dockId){
		    var string = '';
	        var jsonCollection;

	        var oSmartDock = new SmartDock();
	        oSmartDock.GetUserCollections(dockId, function(params) {
		        jsonCollection = params.result;
				
		        for (var i=0;i<jsonCollection.length;i++){
			        string += '<option value="collection_'+jsonCollection[i].id+'">'+jsonCollection[i].name+'</option>';
					$sdCollection.removeClass("collections-" + Collections);
					Collections++;
					$sdCollection.addClass("collections-" + Collections);
		        }
		        _buildDropDown(string);
		        _getCollection(jsonCollection[0].id);		
				
				_getAvayaRecommends();
	        });
		}
		
		function _getCollection(collectionId,callback){	
			var string = '';
			var bookmarks;
			
			if ($j.Avaya.global.ToolTip){
				$j.Avaya.global.ToolTip.killToolTip();
			}
			
			$j.Avaya.global.Tracking.pageView("SD-COLLECTION_" + _getCollectionIndex(collectionId), "Open", "SmartDock" );
			
			var oSmartDock = new SmartDock();
			oSmartDock.GetCollectionBookmarks(collectionId, function(params) {
				$sdItems.html("");
				bookmarks = params.result;

				for (var i=0;i<bookmarks.length;i++){
					var bm = bookmarks[i].content;
					var itm = $j(_createItem(bm));
					$sdItems.append(itm)
					new $j.Avaya.ToolTipTrigger(itm,{staticContent:'<p>'+bm.description+'</p>',location:'NE',width:214, yOffset: 15, xOffset: -70, fixed:settings.isFixed, canLock:true});
				}
				
				
				self.initItems();
				
				currentCollection = collectionId;
				
				if (typeof callback == "function"){
					callback();
				}
				
				if($j.Avaya.global.ToolTip){
					$j.Avaya.global.ToolTip.killToolTip();
				}
			});
        }	
		
		function _checkCollectionNames(collectionName){
			var name= '';
			var number = 1;	
			var match = true;
			var opts = $customSelect.find('option');
			var optNames = [];
			
			(!collectionName) ? name = $j.Avaya.Error.SmartDock.defaultCollectionName : name  = collectionName;

			//Check for duplicate names, if so append 1, 2, ...
			for (var i=0;i<opts.length;i++){
				optNames.push(opts.eq(i).html());
			}
			
			var tempName = name;
			while (match){
				match = false;
				for (var i=0;i<optNames.length;i++){
					if (optNames[i] == tempName){
						tempName = name + ' ' + number;
						number++;
						optNames.splice(i,1);
						match = true;
						break;
					}
				}
			}
			
			return tempName;
		}
		

		function _addCollection(collectionName){
			
			$j.Avaya.global.Tracking.clickEvent("SD-COLLECTION_ADD");
			
			if (Collections < 10){
			    
				var name = _checkCollectionNames(collectionName);
				var oSmartDock = new SmartDock();
				oSmartDock.AddCollection(2,name, function(response) {
					if (response.result[0].id > 0){
						currentCollection = response.result[0].id;
						$j.Avaya.global.Tracking.pageView("SD-COLLECTION_" + _getCollectionIndex(currentCollection), "Open", "SmartDock" );
						$j('#beginSdActions').parents("select").prepend('<option value="collection_'+response.result[0].id+'">'+response.result[0].name+'</option>');

						self.customSelect.updateList();	
						itemManager.populate();
						// TEMP: make it jump twice because otherwise it won't just go to zero
						$j.Avaya.global.SmartDock.customSelect.jumpToIndex(self.customSelect.opts.length - 1);
						$j.Avaya.global.SmartDock.customSelect.jumpToIndex(0);
							
						$content.find("ul.selectList li").each(function(){ 
							if($j(this).html() == $j.Avaya.Error.SmartDock.newCollection) {
								$j(this).addClass("divider");
							}
						});
							
						$sdItems.html("");		
						$sdItems.jScrollPane(settings.scrollbar);
						_makeRenamable();
						$sdCollection.removeClass("collections-" + Collections);
						Collections++;
						$sdCollection.addClass("collections-" + Collections);;
					}														
				});
			} else {
				self.statusIndicator.setValue($j.Avaya.Error.SmartDock.exceedCollectionLimit,true).show({top:67});
			}
		}
		
		function _deleteCollection(collectionId){	
			
			if(confirm($j.Avaya.Error.SmartDock.areYouSureCollection)) {
				
				$j.Avaya.global.Tracking.clickEvent("SD-COLLECTION_DELETE");
				
				var oSmartDock = new SmartDock();
				
				oSmartDock.DeleteCollection(collectionId, function(params) {
					$customSelect.find(':selected').remove();
					self.customSelect.updateList();		
					itemManager.populate(); 

					if($customSelect.find('option').length == 3){
						_addCollection($j.Avaya.Error.SmartDock.currentCollection);
					} else {
						_getCollection($customSelect.val().split('_')[1], function() {
							// TEMP: make it jump twice because otherwise it won't just go to zero
							$j.Avaya.global.SmartDock.customSelect.jumpToIndex(3);										   
							$j.Avaya.global.SmartDock.customSelect.jumpToIndex(0);										   
						});
					}
					
					$content.find("ul.selectList li").each(function(){ 
						if($j(this).html() == $j.Avaya.Error.SmartDock.newCollection) {
							$j(this).addClass("divider");
						}
					});
					$sdCollection.removeClass("collections-" + Collections);
					Collections--;
					$sdCollection.addClass("collections-" + Collections);
				});
			}

		}
		
		function _renameCollection(collectionId,newName){
			$j.Avaya.global.Tracking.clickEvent("SD-COLLECTION_RENAME");
			
			var oSmartDock = new SmartDock();
			var selectParent = $customSelect.parents(".selectParent");
			var $label = selectParent.find("div.selectDisplay span");
			
			if (newName.search(/[<>]/) != -1){
				newName = newName.replace(/</g, '&lt;').replace(/>/g, '&gt;');
				//self.statusIndicator.setValue($j.Avaya.Error.Form.illegalCharacter, true).show({top:67});
				//return false;
			}
			
			if (newName == this.currentCollectionName){
				$label.html(this.currentCollectionName);
				return false;
			}
			
			if (newName != _checkCollectionNames(newName)){
				self.statusIndicator.setValue($j.Avaya.Error.SmartDock.collectionNameExists,true).show({top:67});
				$label.html(this.currentCollectionName);
				return false;
			}
			
			var _status = oSmartDock.RenameCollection(collectionId,newName, function(params){ 
				
				//if(typeof params.message != "undefined" && params.message == "") {
				var index = _getCurrentIndex() || 0;
				self.customSelect.editOptionText(index,newName);
				self.customSelect.displaySpan.html(newName);
				itemManager.populate();
				/*} else {
					var msg = params.message || "error";
					self.statusIndicator.setValue(msg, 1).setHorizontal(15,265).show();
					
					var index = _getCurrentIndex() || 0;
					self.customSelect.editOptionText(index,this.currentCollectionName);
					
					$label.html(this.currentCollectionName);
					
					$content.find("ul.selectList li").each(function(){ 
						if($j(this).html() == $j.Avaya.Error.SmartDock.newCollection) {
							$j(this).addClass("divider");
						}
					});
				}		*/
				
			});
		}
		
	
		function _deleteBookmark($target,collectionId,bookmarkId){
			$j.Avaya.global.ToolTip.killToolTip();
			if($j.Avaya.global.isRegistered) {
				var oSmartDock = new SmartDock();
				oSmartDock.DeleteBookMark(collectionId, bookmarkId, function(params) {
					
					$target.animate({left:-215},{duration:600,easing:'easeout',complete:function() {
						$target.remove();		
						$sdItems.jScrollPane(settings.scrollbar);
					}});									
					
					
				});
			
			} else {
				$target.animate({left:-215},{duration:600,easing:'easeout',complete:function() {
					$target.remove();		
					$sdItems.jScrollPane(settings.scrollbar);
				}});
			}
		}

        function _reorderBookmarks(){
			$j.Avaya.global.Tracking.clickEvent("SD-COLLECTION_REORDER");
			
			var bookmarkIdOrder = "itemIdOrder=";
			$sdItems.find("div.item").each(function(index, itm) {
				bookmarkIdOrder += this.id + ",";
			});
			bookmarkIdOrder = bookmarkIdOrder.replace(/,$/, "");
			
			// CHANGE TO POST!
			$j.ajax({
				type:'GET',
				url:'/_assets/json/reorderBookmarks.js',
				data:'action=reorderbookmarks&collectionId='+ currentCollection + '&' + bookmarkIdOrder, 
				dataType: 'json',
				success: function(response){
					if (response.status==-1){
						alert(response.message);
					}
				}
			});
		}
		
			
		this.addBookmark = function(tar, collectionId, pageInfo) {
		    var $target = $j(tar);
			
			$j.Avaya.global.Tracking.clickEvent("SD-BOOKMARK_ADD");
			
			if(
			   $j.Avaya.global.isRegistered || (window.XMLHttpRequest && !$j.Avaya.global.isRegistered && $j("#sd-items .item").length < settings.unregMaxItems)
				|| (!window.XMLHttpRequest && !$j.Avaya.global.isRegistered && $j("#sd-items .item").length < (settings.unregMaxItems - 2))
			) {
				
				if(tar == "flash") {
					id = collectionId;
				} else if($target.attr('id')) {
					var id = $target.attr('id').split('-')[1];
					if(id == null || typeof id == "undefined") {
						id = $target.parents("div.item").attr("id");	
					}
				} else if ($target.hasClass('smartdock-add') && !$target.attr('id')){
					var id = $target.parents('div.item').attr('id');
				}	
				
				var itm, itmInfo;
				//Call to add item 
				
				if($j.Avaya.global.isRegistered) {
					var collectionid = collectionId;
					
					var oSmartDock = new SmartDock();
					var bookmarkId;
					var itmData = null;
					
					if(tar == "flash") {
						itemData = pageInfo;
					} else if($target.parents("#util-saveList").get(0) != null) {
						itemData = pageInfo;
					} else {
						for (var i =0; i < contentlist.length;i++) {
							if (contentlist[i].id == id) {
								bookmarkId = id;
								itemData = contentlist[i];
								break;
							}
						}
					}
					
					if (collectionid==currentCollection){
						var itemAmount = $j("#sd-items").find('div.item').length;
						if (itemAmount < 35 ) {

							oSmartDock.AddBookMark(collectionid,JSON.stringify(itemData),function(params){
								//if(typeof params.message != "undefined" && params.message == "") {
								itmInfo = params.result;
									itm = $j(_createItem(itmInfo));									
									_appendItem(itm,itmInfo);
									new $j.Avaya.ToolTipTrigger(itm,{staticContent:'<p>'+itmInfo.description+'</p>',location:'NE',width:214, yOffset: 15, xOffset: -70, fixed:settings.isFixed, canLock:true});
								//} else {
								//	var msg = params.message || "error";
								//		self.statusIndicator.setValue(msg, 1).setHorizontal(15,265).show();
								//}
							});
							
						} else {
							self.statusIndicator.setValue($j.Avaya.Error.SmartDock.exceedRegItemLimit,true).show({top:67});
						}
					} else {
						_getCollection(collectionid,function(){
						
							self.customSelect.jumpToIndex(_getCurrentIndex());
							var itemAmount = $j("#sd-items").find('div.item').length;
							if (itemAmount < 35 ) {
							
								oSmartDock.AddBookMark(collectionid,JSON.stringify(itemData),function(params){
									//console.log(params);return;
									//if(typeof params.message != "undefined" && params.message == "") {
									itmInfo = params.result;
									itm = $j(_createItem(itmInfo));
									_appendItem(itm,itmInfo);						
									new $j.Avaya.ToolTipTrigger(itm,{staticContent:'<p>'+itmInfo.description+'</p>',location:'NE',width:214, yOffset: 15, xOffset: -70, fixed:settings.isFixed, canLock:true});
									//} else {
									//	var msg = params.message || "error";
									//	self.statusIndicator.setValue(msg, 1).setHorizontal(15,265).show();
									//}
								});

							} else {
								self.statusIndicator.setValue($j.Avaya.Error.SmartDock.exceedRegItemLimit,true).show({top:67});
							}
						});
					}  

				} else {
					var itmData = null;
					if (document.getElementById(id)){
						self.statusIndicator.setValue($j.Avaya.Error.SmartDock.duplicateItemExists, 1).setHorizontal(15,265).show({top:67});
					} else {
											
						if(tar == "flash") {
							itmData = pageInfo;
						} else if($target.parents("#util-saveList").get(0) != null) {
							itmData = pageInfo;				
						} else {
							for (var i =0; i < contentlist.length;i++) {
								if (contentlist[i].id == id) {
									itmData = contentlist[i];
									break;
								}
							}	
						}
						
						itmInfo = itmData;
						itm = $j(_createItem(itmInfo));
						
						new $j.Avaya.ToolTipTrigger(itm,{staticContent:'<p>'+itmInfo.description+'</p>',location:'NE',width:214, yOffset: 15, xOffset: -70, fixed:settings.isFixed, canLock:true});
						itm.data("itmInfo", JSON.stringify(itmData));		
						// TEMP: put in function
						itm.css({left: 400});
						itm.animate({left: 0}, 600);
						
						self.statusIndicator.setValue($j.Avaya.Error.SmartDock.registerToSave, 1).setHorizontal(-200,265).show();
						
						var $sdItems = $j("#sd-items");
						$sdItems.prepend(itm);
						
						try {
							$sdItems.jScrollPane(settings.scrollbar);
							// when the welcome screen is open this line fails in ie6
						} catch(e) {}
							$sdItems.sortable("destroy");
							$sdItems.sortable(settings.sortableSettings);
						
						
						if(!$j.Avaya.global.isRegistered && settings.dontShowAgain == false) {
							$j.Avaya.global.SmartDock.show();
							_showWelcome();			
						}
					}
				}					
				
			} else if(!$j.Avaya.global.isRegistered && $j("#sd-items .item").length == (settings.unregMaxItems - 2) && !window.XMLHttpRequest) {
				self.statusIndicator.setValue($j.Avaya.Error.SmartDock.exceedItemLimitGeneric, 1).setHorizontal(15,265).show();	
			} else if(!$j.Avaya.global.isRegistered && $j("#sd-items .item").length == settings.unregMaxItems) {
				self.statusIndicator.setValue($j.Avaya.Error.SmartDock.exceedItemLimit, 1).setHorizontal(15,265).show();	
			}
		}
		
		//returns index
		function _getCurrentIndex(){
			var index;
			$customSelect.find('option').each(function(i){
				if (this.value == 'collection_'+currentCollection){
					index= i;
					return false;
				}										
			});
			
			return index;
		}
		
		//accepts string, returns truncated string
		function _truncate(string){
			
			if (string.length > $j.Avaya.Item.truncate)
			{
				return string.substr(0, $j.Avaya.Item.truncate) + '...';
			}
			
			return string;
		}
		
		function _appendItem(item,info){
			item.css({left: 400});
			item.animate({left: 0}, 600);

			if ((!$smartDock.data('isOpen') || $smartDock.data('isOpen')==0)){
				self.statusIndicator.setValue('Item added.', 1).setHorizontal(-200,265).show();
			}

			var $sdItems = $j("#sd-items");
			$sdItems.prepend(item);
			$sdItems.jScrollPane(settings.scrollbar);
			
			$sdItems.sortable("destroy");
			$sdItems.sortable(settings.sortableSettings);
			
		}
		
		function saveUnregisteredData() {
			var serialized = "";
			// FORMAT: BOOKMARK***BOOKMARK***BOOKMARK***BOOKMARK***BOOKMARK***			
			var $items = $j("#sd-items div.item");
			
			$j("#sd-items div.item").each(function(index, itm) {
				serialized += $j(itm).data("itmInfo");
				if($items.length != index ) {
					serialized += "***";
				}
			});

			$j.cookie("dontShowAgain", settings.dontShowAgain, {path: "/", expires: 100 });

			var maxCookieSize = 2000;

			//$j.cookie(settings.cookieName, "overflow");
			var i = 0;
			
			var j = 0;
			while($j.cookie(settings.cookieName + j) != null) {
				$j.cookie(settings.cookieName + j, "");
				j++;
			}
			
			if(serialized.length < maxCookieSize) {
				$j.cookie(settings.cookieName + "0", serialized);
			} else {
				while(serialized.length >= maxCookieSize) {
					$j.cookie(settings.cookieName + i, serialized.substring(0,maxCookieSize));
					serialized = serialized.slice(maxCookieSize, serialized.length);
					i++;
					
					if(serialized.length < maxCookieSize) {
						$j.cookie(settings.cookieName + i, serialized);
					}
				}
			}
		}

		// private
		function loadUnregisteredData() {
			if($j.cookie(settings.cookieName + 0) != null) {

				var i = 0;
				serialized = "";
				
				while($j.cookie(settings.cookieName + i) != null) {
					serialized += $j.cookie(settings.cookieName + i);
					i++;
				}
				
				var deserialized = serialized;

				var itmArr = deserialized.split("***");
				if(itmArr == "" || itmArr == null) {
					itmArr = [];	
				}
				
				return {
					itms: itmArr
				}
			} else {
				return null;	
			}
		}

		var panels = {
			welcome: new Panel({
				height: 571,
				top: 5,
				toggle: $j("#sd-header").add("#sd-footer").add("#sd-content"),
				name: "welcome"
			}),
			share: new Panel({		
				height: 490,
				top: 50,
				toggle: $j("#sd-content"),
				name: "share"
			})
		}
		
		function Panel(options) {
			var settings = $j.extend({
				height: 0,
				top: 0,
				$container: $j("#smartDock"),
				toggle: null,
				name: ""
			},options);	
			
			this.show = function (params) {
				$j("#sd-loading").show();
				$j("#sd-panel").remove();
				settings.$container.append('<div id="sd-panel" class="'+settings.name+'"></div>');
				var $panel = $j("#sd-panel");
				$panel.css({height: settings.height, top: settings.top});

				settings.toggle.hide();
				
				setTimeout(function() {
					$j("#sd-loading").hide();	
					$panel.html(params.val);
					if(params.callback) {
						params.callback();
					}
				}, 500);
			}
			
			this.hide = function(params) {
				setTimeout(function() {
					$j("#sd-panel").remove();
					settings.toggle.show();
				}, 10);
				if(params && params.callback) { params.callback(); }				
			}
		}
		
		
		this.statusIndicator = {
			value : '',
			defaultStart:20,
			defaultEnd:255,
			maxWidth:300,
			
			init:function(){
				this.element=$j('#status-indicator');
				
				this.element.html('<div class="top-outer"><div class="top-inner"><div class="content"></div></div></div><div class="bottom-outer"><div class="bottom-inner"></div></div>');
				this.content = this.element.find('div.content');
				this.startingX = this.defaultStart;
				this.endingX = this.defaultEnd;
				this.top = 67;
				this.left = -250;
			},
			
			showTimeout:0,
			hideTimeout:0,

			abruptHide: function() {
				this.cancelTimeout();
				this.hide();
				this.element.css({left: -250});
			},
			
			cancelTimeout: function() {
				clearTimeout(this.showTimeout);
				clearTimeout(this.hideTimeout);
			},
			
			hide:function(){
				var self=this;
				this.element.css({left:self.startingX,zIndex:1,visibility:'hidden'});
				$j.Avaya.global.ToolTip.unlockToolTip();
				return this;
			},
			
			show:function(params){
				var self=this;
				
				if ($j('#mainNag').get(0)){
					$j('#mainNag').remove();
				}
				
				var settings = $j.extend({
					hide: 3000,
					top: self.top,
					delay: 0,
					endPos:self.endingX,
					bouncePos:300,
					duration:500,
					bounceDuration: 700
				}, params);
				
				clearTimeout(this.hideTimeout);
				$j.Avaya.global.ToolTip.lockToolTip();
				
				this.showTimeout = setTimeout(function(){
						self.element.css({top: settings.top, visibility: 'visible' });
						self.element.animate({left:settings.bouncePos},{duration:settings.duration,easing:'easein',complete:function(){self.element.css({zIndex:3})}})
									.animate({left:settings.endPos},{duration:settings.bounceDuration,easing:'bounceout'});

					self.hideTimeout = setTimeout(function(){self.hide()},settings.hide);
				},settings.delay);
				
				return this;
			},
			
			setValue:function(val, manual){
				this.value = val;
				var html = "";

				if(manual == true) {
					html = val;
				} else {
					var words = this.value.split(' ');
					var firstLine = Math.ceil(words.length/2);
					
					html = '<p>';
					for (var i=0;i<words.length;i++){
						html += ' '+words[i];
						if (i==firstLine-1){
							html += '</p><p>';
						}
						if (i==words.length-1){
							html += '</p>';
						}
					}
				}
				this.content.html(html);

				//Setting the width of the status indicator according to the content 
				$j('#page').append('<div id="tempStatusHolder"><div class="content"></div></div>');
				var width = $j('#tempStatusHolder').find('div.content').html(val).width() + 52;
				
				if (width > this.maxWidth){
					this.element.width(this.maxWidth);
				} else {
					this.element.width(width);
				}
				
				$j('#tempStatusHolder').remove();
				
				return this;
			},
			
			setHorizontal: function(starting,ending){
				this.startingX = starting;
				this.endingX = ending;
				
				return this;
			},
			
			reset:function(){
				this.startingX = this.defaultStart;
				this.endingX = this.defaultEnd;
				this.setValue('');
				this.element.css({top: this.top});
				
				return this;
			}
		}		
		this.statusIndicator.init();
	
		function ItemManager() {
				
		/***Initialize***/	
			if (!$j('#item-manager').get(0)){
				$j('body').append('<div id="item-manager"><ul></ul></div>');
			}
			
			var _this = this;
			var wrapper = $j('#item-manager');
			var list = wrapper.find('ul');
			var target = false;
			var isOpen = false;
			var multipleCollections = false;	
		
		/***Add events***/	
			$j(document).click(function(e){
				if (isOpen){
					_this.hide();
				}
			});
			
			$j('a.smartdock-add').live('click',function(e){
				e.preventDefault();
				target = $j(e.target);
				wrapper.find("li").each(function() {
					$j(this).show();
				});
				
				//If there is only 1 collection, the dropdown does not show and the item is added to that one collection
				if (multipleCollections && !target.hasClass("inCollection")){
					_this.show(target);
				} else if(multipleCollections && target.hasClass("inCollection") ) {
					var currentCollection = $j("#sd-content div.selectDisplay span").html();
					wrapper.find("li").each(function() {				
						if(currentCollection == $j(this).find("a").html()) {
							$j(this).hide();
						}
					});
					
					_this.show(target);
				} else {
					_this.addToCollection(e);
				}
			});
			
			list.find('a').live('click',function(e){
				e.preventDefault();
				_this.addToCollection(e);
			});
			
		/***Public methods***/
			this.show = function(){
				this.hide();
				position();
				wrapper.slideDown('fast',function(){
					isOpen = true;
				});
			}
			
			this.hide = function(){
				wrapper.css({display:'none'});
				isOpen = false;
			}
			
			this.addToCollection = function(e){
				var collectionId = null;
				$j(e.target).hasClass("smartdock-add") ? collectionId = currentCollection : collectionId = e.target.href.split('_')[1];
				self.addBookmark(target, collectionId);
			}
		
			this.populate = function(){
				var string = '';
				var select = $j('#sd-content').find('select');
				var count = 0;
				select.find('option').each(function(i){
					if (this.value.indexOf('ignore')==-1){
						string += '<li><a href="#'+this.value+'">'+this.innerHTML+'</a></li>';
						count++;
					}
				});
				
				count>1 ? multipleCollections = true : multipleCollections = false;
				list.html(string);
				list.find('a').eq(0).addClass('first');
			}
			
		/***Private methods***/	
			
			function position(){
				wrapper.css({
					top:target.offset().top + target.outerHeight(),
					left:target.offset().left + target.outerWidth() - wrapper.outerWidth()
				});				
			}
			
			this.populate();
		}

		
		function mainNagMessage(){
			
			var mainNag = $j('<div id="mainNag"><div class="wrapper"><div class="content">'+$j.Avaya.Error.SmartDock.mainNagMessage+'</div></div></div>');
			$smartDock.append(mainNag);
			
			var content = mainNag.find('div.content');
			
			$smartDock.click(function(){
				mainNag.remove();
			});
			
			mainNag.animate({left:350},{					
				duration:300,
				easing:'easeout'
			}).animate({left:263},{
				duration:500,
				easing:'bounceout',
				complete:function(){
					setTimeout(function(){
						mainNag.animate({left:-200},{
							duration:500,
							easing:'easein',
							complete: function(){
								mainNag.remove();
							}
						});	
					},6000);
				}
			});
		}
	
		if($j.cookie("wasOpened") != 1) {	
			setTimeout(function(){
				new mainNagMessage();
			},1500);
		}
		
	}
