$(document).ready(function () {

	// COLLAPSABLE WIDGETS (on Dashboard & Profile pages)
	// toggle widget box contents
	$('a.toggle_box_contents').bind('click', toggleContent);
	
	// toggle widget box edit panel
	$('a.toggle_box_edit_panel').click(function () {
		$(this.parentNode.parentNode).children("[class=collapsable_box_editpanel]").slideToggle("fast");
		return false;
	});
	
	// toggle customise edit panel
	$('a.toggle_customise_edit_panel').click(function () {
		$('div#customise_editpanel').slideToggle("fast");
		return false;
	}); 
	
	// toggle plugin's settings nad more info on admin tools admin
	$('a.pluginsettings_link').click(function () {
		$(this.parentNode.parentNode).children("[class=pluginsettings]").slideToggle("fast");
		return false;
	});
	$('a.manifest_details').click(function () {
		$(this.parentNode.parentNode).children("[class=manifest_file]").slideToggle("fast");
		return false;
	});
	// reusable generic hidden panel
	$('a.collapsibleboxlink').click(function () {
		$(this.parentNode.parentNode).children("[class=collapsible_box]").slideToggle("fast");
		return false;
	});
	
	// WIDGET GALLERY EDIT PANEL
	// Sortable widgets
	var els = ['#leftcolumn_widgets', '#middlecolumn_widgets', '#rightcolumn_widgets', '#widget_picker_gallery' ];
	var $els = $(els.toString());
	
	$els.sortable({
		items: '.draggable_widget',
		handle: '.drag_handle',
		cursor: 'move',
		revert: true,
		opacity: 1.0,
		appendTo: 'body',
		placeholder: 'placeholder',
		connectWith: els,
		start:function(e,ui) {
	
		},
		stop: function(e,ui) {	
			// refresh list before updating hidden fields with new widget order		
			$(this).sortable( "refresh" );
			
			var widgetNamesLeft = outputWidgetList('#leftcolumn_widgets');
			var widgetNamesMiddle = outputWidgetList('#middlecolumn_widgets');
			var widgetNamesRight = outputWidgetList('#rightcolumn_widgets');
			
			document.getElementById('debugField1').value = widgetNamesLeft;
			document.getElementById('debugField2').value = widgetNamesMiddle;
			document.getElementById('debugField3').value = widgetNamesRight;
		}
	});
	
	// bind more info buttons - called when new widgets are created
	widget_moreinfo();
	
	// set-up hover class for dragged widgets
	$("#rightcolumn_widgets").droppable({
		accept: ".draggable_widget",
		hoverClass: 'droppable-hover'
	});
	$("#middlecolumn_widgets").droppable({
		accept: ".draggable_widget",
		hoverClass: 'droppable-hover'
	});
	$("#leftcolumn_widgets").droppable({
		accept: ".draggable_widget",
		hoverClass: 'droppable-hover'
	});

}); /* end document ready function */


// List active widgets for each page column
function outputWidgetList(forElement) {
	return( $("input[@name='handler'], input[@name='guid']", forElement ).makeDelimitedList("value") );	
}

// Make delimited list
jQuery.fn.makeDelimitedList = function(elementAttribute) {

	var delimitedListArray = new Array();
	var listDelimiter = "::";
	
	// Loop over each element in the stack and add the elementAttribute to the array
	this.each(function(e) {
			var listElement = $(this);
			// Add the attribute value to our values array
			delimitedListArray[delimitedListArray.length] = listElement.attr(elementAttribute);
		}
	);
	
	// Return value list by joining the array
	return(delimitedListArray.join(listDelimiter));
}


// Read each widgets collapsed/expanded state from cookie and apply
function widget_state(forWidget) {

	var thisWidgetState = $.cookie(forWidget);

	if (thisWidgetState == 'collapsed') {
		forWidget = "#" + forWidget;
		$(forWidget).find("div.collapsable_box_content").hide();
		$(forWidget).find("a.toggle_box_contents").html('+');
		$(forWidget).find("a.toggle_box_edit_panel").fadeOut('medium');
	};	
}


// Toggle widgets contents and save to a cookie
var toggleContent = function(e) {
var targetContent = $('div.collapsable_box_content', this.parentNode.parentNode);
	if (targetContent.css('display') == 'none') {
		targetContent.slideDown(400);
		$(this).html('-');
		$(this.parentNode).children("[class=toggle_box_edit_panel]").fadeIn('medium');
		
		// set cookie for widget panel open-state
		var thisWidgetName = $(this.parentNode.parentNode.parentNode).attr('id');
		$.cookie(thisWidgetName, 'expanded', { expires: 365 });
		
	} else {
		targetContent.slideUp(400);
		$(this).html('+');
		$(this.parentNode).children("[class=toggle_box_edit_panel]").fadeOut('medium');
		// make sure edit pane is closed
		$(this.parentNode.parentNode).children("[class=collapsable_box_editpanel]").hide();
		
		// set cookie for widget panel closed-state
		var thisWidgetName = $(this.parentNode.parentNode.parentNode).attr('id');
		$.cookie(thisWidgetName, 'collapsed', { expires: 365 });			
	}
	return false;
};

// More info tooltip in widget gallery edit panel
function widget_moreinfo() {

	$("img.more_info").hover(function(e) {										  
	var widgetdescription = $("input[@name='description']", this.parentNode.parentNode.parentNode ).attr('value');
	$("body").append("<p id='widget_moreinfo'><b>"+ widgetdescription +" </b></p>");
	
		if (e.pageX < 900) {
			$("#widget_moreinfo")
				.css("top",(e.pageY + 10) + "px")
				.css("left",(e.pageX + 10) + "px")
				.fadeIn("medium");	
		}	
		else {
			$("#widget_moreinfo")
				.css("top",(e.pageY + 10) + "px")
				.css("left",(e.pageX - 210) + "px")
				.fadeIn("medium");		
		}			
	},
	function() {
		$("#widget_moreinfo").remove();
	});	
	
	$("img.more_info").mousemove(function(e) {
		// action on mousemove
	});	
};

// COOKIES
jQuery.cookie = function(name, value, options) {
	if (typeof value != 'undefined') { // name and value given, set cookie
    options = options || {};
	    if (value === null) {
	        value = '';
	        options.expires = -1;
	    }
    var expires = '';
    if (options.expires && (typeof options.expires == 'number' || options.expires.toUTCString)) {
        var date;
        if (typeof options.expires == 'number') {
            date = new Date();
            date.setTime(date.getTime() + (options.expires * 24 * 60 * 60 * 1000));
        } else {
            date = options.expires;
        }
        expires = '; expires=' + date.toUTCString(); // use expires attribute, max-age is not supported by IE
    }
    // CAUTION: Needed to parenthesize options.path and options.domain
    // in the following expressions, otherwise they evaluate to undefined
    // in the packed version for some reason.
    var path = options.path ? '; path=' + (options.path) : '';
    var domain = options.domain ? '; domain=' + (options.domain) : '';
    var secure = options.secure ? '; secure' : '';
    document.cookie = [name, '=', encodeURIComponent(value), expires, path, domain, secure].join('');
    
	} else { // only name given, get cookie
	    var cookieValue = null;
	    if (document.cookie && document.cookie != '') {
	        var cookies = document.cookie.split(';');
	        for (var i = 0; i < cookies.length; i++) {
	            var cookie = jQuery.trim(cookies[i]);
	            // Does this cookie string begin with the name we want?
	            if (cookie.substring(0, name.length + 1) == (name + '=')) {
	                cookieValue = decodeURIComponent(cookie.substring(name.length + 1));
	                break;
	            }
	        }
	    }
	    return cookieValue;
	}
};

// ELGG TOOLBAR MENU
$.fn.elgg_topbardropdownmenu = function(options) {
    
  options = $.extend({speed: 350}, options || {});
  
  this.each(function() {
    
    var root = this, zIndex = 5000;
    
    function getSubnav(ele) {
      if (ele.nodeName.toLowerCase() == 'li') {
        var subnav = $('> ul', ele);
        return subnav.length ? subnav[0] : null;
      } else {
	      
        return ele;
      }
    }
    
    function getActuator(ele) {
      if (ele.nodeName.toLowerCase() == 'ul') {
        return $(ele).parents('li')[0];
      } else {
        return ele;
      }
    }
    
    function hide() {
      var subnav = getSubnav(this);
      if (!subnav) return;
      $.data(subnav, 'cancelHide', false);
      setTimeout(function() {
        if (!$.data(subnav, 'cancelHide')) {
          $(subnav).slideUp(100);
        }
      }, 250);
    }
  
    function show() {
      var subnav = getSubnav(this);
      if (!subnav) return;
      $.data(subnav, 'cancelHide', true);
      $(subnav).css({zIndex: zIndex++}).slideDown(options.speed);
      if (this.nodeName.toLowerCase() == 'ul') {
        var li = getActuator(this);
        $(li).addClass('hover');
        $('> a', li).addClass('hover');
      }
    }
    
    $('ul, li', this).hover(show, hide);
    $('li', this).hover(
      function() { $(this).addClass('hover'); $('> a', this).addClass('hover'); },
      function() { $(this).removeClass('hover'); $('> a', this).removeClass('hover'); }
    );
    
  });
  
};
















var submenuLayer = 1000;

function setup_avatar_menu() {

	// avatar image menu link
	$("div.usericon img").mouseover(function() {
		// find nested avatar_menu_button and show
		$(this.parentNode.parentNode).children("[class=avatar_menu_button]").show();
		$(this.parentNode.parentNode).children("div.avatar_menu_button").addClass("avatar_menu_arrow");
		//$(this.parentNode.parentNode).css("z-index", submenuLayer);
	})
	.mouseout(function() { 
		if($(this).parent().parent().find("div.sub_menu").css('display')!="block") {
			$(this.parentNode.parentNode).children("div.avatar_menu_button").removeClass("avatar_menu_arrow");
			$(this.parentNode.parentNode).children("div.avatar_menu_button").removeClass("avatar_menu_arrow_on");
			$(this.parentNode.parentNode).children("div.avatar_menu_button").removeClass("avatar_menu_arrow_hover");
			$(this.parentNode.parentNode).children("[class=avatar_menu_button]").hide();
		}
		else {
			$(this.parentNode.parentNode).children("div.avatar_menu_button").removeClass("avatar_menu_arrow");
			$(this.parentNode.parentNode).children("div.avatar_menu_button").removeClass("avatar_menu_arrow_on");
			$(this.parentNode.parentNode).children("div.avatar_menu_button").removeClass("avatar_menu_arrow_hover");
			$(this.parentNode.parentNode).children("[class=avatar_menu_button]").show();
			$(this.parentNode.parentNode).children("div.avatar_menu_button").addClass("avatar_menu_arrow");
		}
	});


	// avatar contextual menu
	$(".avatar_menu_button img").click(function(e) { 
		
		var submenu = $(this).parent().parent().find("div.sub_menu");
		
		// close submenu if arrow is clicked & menu already open
		if(submenu.css('display') == "block") {
			//submenu.hide(); 		
		}
		else {
			// get avatar dimensions
			var avatar = $(this).parent().parent().parent().find("div.usericon");
			//alert( "avatarWidth: " + avatar.width() + ", avatarHeight: " + avatar.height() );
			
			// move submenu position so it aligns with arrow graphic
			if (e.pageX < 840) { // popup menu to left of arrow if we're at edge of page
			submenu.css("top",(avatar.height()) + "px")
					.css("left",(avatar.width()-15) + "px")
					.fadeIn('normal');	
			}	
			else {
			submenu.css("top",(avatar.height()) + "px")
					.css("left",(avatar.width()-166) + "px")
					.fadeIn('normal');		
			}	
			
			// force z-index - workaround for IE z-index bug			
			avatar.css("z-index",  submenuLayer);
			avatar.find("a.icon img").css("z-index",  submenuLayer);
			submenu.css("z-index", submenuLayer+1);
						
			submenuLayer++;
			
			// change arrow to 'on' state
			$(this.parentNode.parentNode).children("div.avatar_menu_button").removeClass("avatar_menu_arrow");
			$(this.parentNode.parentNode).children("div.avatar_menu_button").removeClass("avatar_menu_arrow_hover");
			$(this.parentNode.parentNode).children("div.avatar_menu_button").addClass("avatar_menu_arrow_on");
		}
		
		// hide any other open submenus and reset arrows
		$("div.sub_menu:visible").not(submenu).hide();
		$(".avatar_menu_button").removeClass("avatar_menu_arrow");
		$(".avatar_menu_button").removeClass("avatar_menu_arrow_on");
		$(".avatar_menu_button").removeClass("avatar_menu_arrow_hover");
		$(".avatar_menu_button").hide();
		$(this.parentNode.parentNode).children("div.avatar_menu_button").addClass("avatar_menu_arrow_on");
		$(this.parentNode.parentNode).children("div.avatar_menu_button").show();
		//alert("submenuLayer = " +submenu.css("z-index"));
	})
	// hover arrow each time mouseover enters arrow graphic (eg. when menu is already shown)
	.mouseover(function() {
		$(this.parentNode.parentNode).children("div.avatar_menu_button").removeClass("avatar_menu_arrow_on");
		$(this.parentNode.parentNode).children("div.avatar_menu_button").removeClass("avatar_menu_arrow");
		$(this.parentNode.parentNode).children("div.avatar_menu_button").addClass("avatar_menu_arrow_hover");
	})
	// if menu not shown revert arrow, else show 'menu open' arrow
	.mouseout(function() { 
		if($(this).parent().parent().find("div.sub_menu").css('display')!="block"){
			$(this.parentNode.parentNode).children("div.avatar_menu_button").removeClass("avatar_menu_arrow_hover");
			$(this.parentNode.parentNode).children("div.avatar_menu_button").removeClass("avatar_menu_arrow");
			$(this.parentNode.parentNode).children("div.avatar_menu_button").addClass("avatar_menu_arrow");
		}
		else {
			$(this.parentNode.parentNode).children("div.avatar_menu_button").removeClass("avatar_menu_arrow_hover");
			$(this.parentNode.parentNode).children("div.avatar_menu_button").removeClass("avatar_menu_arrow");
			$(this.parentNode.parentNode).children("div.avatar_menu_button").addClass("avatar_menu_arrow_on");
		}
	});
	
	// hide avatar menu if click occurs outside of menu	
	// and hide arrow button						
	$(document).click(function(event) { 		
			var target = $(event.target);
			if (target.parents(".usericon").length == 0) {				
				$(".usericon div.sub_menu").fadeOut();
				$(".avatar_menu_button").removeClass("avatar_menu_arrow");
				$(".avatar_menu_button").removeClass("avatar_menu_arrow_on");
				$(".avatar_menu_button").removeClass("avatar_menu_arrow_hover");
				$(".avatar_menu_button").hide();
			}
	});			   
	

}

$(document).ready(function() {

	setup_avatar_menu();						   
								   
});

	function elggUpdateContent(content, entityname) {
		content = ' ' + content + ' ';
		
	if(window.tinyMCE)
		window.tinyMCE.execCommand("mceInsertContent",true,content);
		} 
function removeField(guid){
	if(confirm('Are you sure you wish to delete this field?')){
		$.post('http://www.webberview.com/action/custom_profile_fields/delete?guid=' + guid, function(data){
			if(data == 'true'){
				$('#custom_profile_field_' + guid).hide('slow');
				$('#custom_profile_field_' + guid).remove();
				reorderCustomFields();
			} else {
				alert('Unknown error occurred while deleting');
			}
		});
	}
	
}

function toggleOption(field, guid){

	$.post('http://www.webberview.com/action/custom_profile_fields/toggleOption?guid=' + guid + '&field=' + field, function(data){
		if(data == 'true'){
			var curval = $("#" + field + "_" + guid + " font").html();
			if(curval == "Yes"){
				$("#" + field + "_" + guid + " font").attr("class","metadata_config_right_disabled").html("No");				
			} else {
				$("#" + field + "_" + guid + " font").attr("class","metadata_config_right_enabled").html("Yes");
			}					
		} else {
			alert('Unknown error occurred while changing the option');
		}
	});
}

function reorderCustomFields(){
	var strArray = $('#custom_profile_fields_ordering').sortable('serialize');
	$.post('http://www.webberview.com/action/custom_profile_fields/reorder', strArray);
}
	var basesec = 5;
	var maxsecs = 30;
	var delay = 1000;
	
	var secs;
	var processing = false;
	var pollingPause = false;
	
	var lastTimeDataReceived = new Date().getTime();
	
	function InitializeTimer(){
		// Set the length of the timer, in seconds
		secs = basesec;
		tick();
	}

	function tick(){
		if(!pollingPause){
			if(!processing){
				if (secs == 0){
					checkForSessions();					
				} else {
					secs = secs - 1;
				}
			} else {
				resetTimer();
			}
			
			self.setTimeout("tick()", delay);
		}
	}
	
	function resetTimer(){
		// if needed apply multiplier
		var currentTimeStamp = new Date().getTime();
		var timeDiff = (currentTimeStamp - lastTimeDataReceived) / 1000;
		
		var interval = Math.ceil((Math.sqrt(Math.pow(basesec * 10 / 2, 2) + (2 * basesec * 10 * timeDiff)) - (basesec * 10 / 2)) / (basesec * 10));
		// reset secs
		secs = basesec * interval;
		if(secs > maxsecs){
			secs = maxsecs;
		}
	}
		
	function inviteFriends(sessionid){
		var currentChatWindow = $("#" + sessionid + " .chatmembersfunctions_invite"); 
		if(currentChatWindow.css("display") != "block"){
			currentChatWindow.html("");
			$("#elggchat_friends_picker .chatmemberinfo").each(function(){
				var friend = $(this).find("a");
				if(!($("#" + sessionid + " .chatmember a[rel='" + friend.attr('rel') + "']").length > 0)){
					newFriend = "<a href='javascript:addFriend(" + sessionid + ", " + friend.attr('rel') + ")'>";
					newFriend += friend.html();
					newFriend += "</a><br />";
					currentChatWindow.append(newFriend);
				}
			});
		}
		currentChatWindow.slideToggle();
	}
	
	function addFriend(sessionid, friend){
		$.post("http://www.webberview.com/action/elggchat/invite?chatsession=" + sessionid + "&friend=" + friend, function(){
			$("#" + sessionid + " .chatmembersfunctions_invite").toggle();
			checkForSessions();
			$("#" + sessionid + " input[name='chatmessage']").focus();
		});
	}	
	
	function leaveSession(sessionid){
		if(confirm("Are you sure you wish to hide this session?")){
			eraseCookie("elggchat_session_" + sessionid);
			var current = readCookie("elggchat");
			if(current == sessionid){
				eraseCookie("elggchat");
			}
			$.post("http://www.webberview.com/action/elggchat/leave?chatsession=" + sessionid, function(){
				$("#" + sessionid).remove();
				checkForSessions();
			});
		} 
	}
	
	function elggchat_toolbar_resize(){
		$("#elggchat_toolbar_left").css("width", $(window).width() - $("#toggle_elggchat_toolbar").width());

	}
	
	function toggleChatToolbar(speed){
		$('#elggchat_toolbar_left').toggle(speed);
		$('#toggle_elggchat_toolbar').toggleClass('minimizedToolbar');
		
		if($('#toggle_elggchat_toolbar').hasClass('minimizedToolbar')){
			createCookie("elggchat_toolbar_minimized", "true");
			pollingPause = true;
			$('#toggle_elggchat_toolbar').attr("title", "Maximize WebberChat Toolbar");
		} else {
			pollingPause = false;
			checkForSessions();
			tick();
			eraseCookie("elggchat_toolbar_minimized");
			$('#toggle_elggchat_toolbar').attr("title", "Minimize WebberChat Toolbar");
		}
	}
	
	function startSession(friendGUID){
		$.post('http://www.webberview.com/action/elggchat/create?invite=' + friendGUID, function(data){
			if(data){
				checkForSessions();
				openSession(data);
			}
		});
	}
	
	function toggleFriendsPicker(){
		$("#elggchat_friends_picker").slideToggle();
	}
	
	function scroll_to_bottom(sessionid){
		var chat_window = $("#" + sessionid +" .chatsessiondata");
		var scrHeight = chat_window.find(".chatmessages").attr("scrollHeight");
		chat_window.find(".chatmessages").attr("scrollTop", scrHeight);
	}
	
	function checkForSessions(){
		// Starting the work, so stop the timer
		processing = true;
		
		$.getJSON("http://www.webberview.com/action/elggchat/poll", function(data){
			if(typeof(data.sessions) != "undefined"){
				var current = readCookie("elggchat");
				
				$.each(data.sessions, function(i, session){
					var sessionExists = false;
					$("#" + i).each(function(){
						sessionExists = true;
					});
					if(i != current || sessionExists == false){
						
						var newSession = "";
						
						newSession += "<div class='elggchat_session_leave' onclick='leaveSession(" + i + ")' title='Leave'></div><a href='javascript:openSession(" + i + ")'>" + session.name + "</a>";
						newSession += "<div class='chatsessiondatacontainer'>";
						newSession += "<div class='chatsessiondata'>"; 
							newSession += "<div class='chatmembers'><table>";
							if(typeof(session.members) != "undefined"){
								$.each(session.members, function(memNum, member){
									newSession += member;
									
								});
							}
							
							newSession += "</table></div>";
							newSession += "<div class='chatmembersfunctions'><a href='javascript:inviteFriends(" + i + ")'>invite</a>";
														
							newSession += "</div><div class='chatmembersfunctions_invite'></div>";
							
							newSession += "<div class='chatmessages'>";
							if(typeof(session.messages) != "undefined"){
								$.each(session.messages, function(msgNum, msg){
									newSession += msg;
								});
							}
							newSession += "</div>";
							newSession += "<div class='elggchatinput'>";
							newSession += "<form>";
							newSession += "<input name='chatsession' type='hidden' value='" + i + "'></input>";	
							newSession += "<input name='chatmessage' type='text' autocomplete='off'></input>";						
							newSession += "</form>";
							newSession += "</div>";
						newSession += "</div>";	
						newSession += "</div>";
						if(sessionExists){
							 $("#" + i).html(newSession);
						} else {
							newSession = "<div class='session' id='" + i + "'>" + newSession + "</div>";
							$("#elggchat_sessions").append(newSession);
						}
					} else {
						$("#" + i + ">a").html(session.name);
						var membersData = "";
						if(typeof(session.members) != "undefined"){
							$.each(session.members, function(memNum, member){
								membersData += member;
							});
						}
						$("#" + i + " .chatmembers").html("<table>" + membersData + "</table>");
						
						var messageData = "";
						var cookie = readCookie("elggchat_session_" + i);
						
						var lastKnownMsgId = 0;
						if(cookie > 0){
							var lastKnownMsgId = parseInt(readCookie("elggchat_session_" + i));
						} 
						
						if(typeof(session.messages) != "undefined"){
							$.each(session.messages, function(msgNum, msg){
								if(msgNum > lastKnownMsgId || lastKnownMsgId == NaN){
									messageData += msg;
									lastTimeDataReceived = new Date().getTime();
								}
							});
						}
						$("#" + i + " .chatmessages").append(messageData);						
					}
				});
				
				// search for new data
				$(".session").each(function(){
				
					var sessionid = $(this).attr("id");
					var lastKnownMsgId = parseInt(readCookie("elggchat_session_" + sessionid));
					var newestMsgId = parseInt($("#" + sessionid + " .chatmessages div:last").attr("id"));
					
					if(newestMsgId > lastKnownMsgId || !lastKnownMsgId){
						if($(this).find(".chatsessiondatacontainer").css("display") != "block" && newestMsgId){
							$("#" + sessionid).addClass("elggchat_session_new_messages");
							lastTimeDataReceived = new Date().getTime();
						}
					}
				
				});
				
				// register submit events on message input
				$(".elggchatinput form").unbind("submit");
				$(".elggchatinput form").bind("submit", function(){
					var input = $.trim($(this).find("input[name='chatmessage']").val());
					
					if(input != ""){
						$.post("http://www.webberview.com/action/elggchat/post_message", $(this).serialize(), function(data){
							checkForSessions();
						});
					}
					// empty input field
					$(this).find("input[name='chatmessage']").val("");
					
					return false;
				});
				
				if(current){
					if($("#" + current + " .chatsessiondatacontainer").css("display") != "block"){
						openSession(current);
					}
					var cookie = readCookie("elggchat_session_" + current);
					if(cookie > 0){
						var lastKnownMsgId = parseInt(cookie);
					} else {
						var lastKnownMsgId = 0;
					}
					var newestMsgId = parseInt($("#" + current + " .chatmessages div:last").attr("id"));
					if(newestMsgId > lastKnownMsgId){
						scroll_to_bottom(current);
						createCookie("elggchat_session_" + current, newestMsgId);
					}
				}
				
			}
			
			// build friendspicker
			$("#elggchat_friends a").html("Contacts online (" + data.friends_online_count + ")");
			if(typeof(data.friends) != "undefined"){
				$("#elggchat_friends_picker").html("");
				
				var tableData = "";
				$.each(data.friends, function(i, friend){
					tableData += friend;
					
				});
				$("#elggchat_friends_picker").append("<table>"  + tableData + "</table>");
				
				$("#elggchat_friends_picker a").each(function(){
					$(this).attr("href","javascript:startSession(" + this.rel + "); toggleFriendsPicker();");
				});
			}
			
			// Done with all the work
			resetTimer();
			processing = false;
		});
	}
	
	function openSession(id){
		$("#"+ id).removeClass("elggchat_session_new_messages");
		var current = $("#" + id + " .chatsessiondatacontainer").css("display");
		eraseCookie("elggchat");
		$("#elggchat_sessions .chatsessiondatacontainer").hide();
		if(current != "block"){
			createCookie("elggchat", id);
			var last = $("#" + id + " .chatmessages div:last").attr("id");
			createCookie("elggchat_session_" + id, last); 
			$("#" + id + " .chatsessiondatacontainer").toggle();
		}	
		scroll_to_bottom(id);
		$("#" + id + " input[name='chatmessage']").focus();
	}
	
	/* Cookie Functions */
	function createCookie(name, value, days) {
		if (days) {
			var date = new Date();
			date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000));
			var expires = "Expires=" + date.toGMTString() + "; ";
		} else {
			var expires = "";
		}
		
		document.cookie = name + "=" + value + "; " + expires + "Path=/;";
	}

	function readCookie(name) {
		var nameEQ = name + "=";
		var ca = document.cookie.split(';');

		for(var i = 0; i < ca.length; i++) {
			var c = ca[i];

			while (c.charAt(0) == ' '){
				c = c.substring(1, c.length);
			}
			
			if (c.indexOf(nameEQ) == 0){
				return c.substring(nameEQ.length, c.length);
			}
		}
		return null;
	}

	function eraseCookie(name) {
		createCookie(name, "", -1);
	}	
	
	$(document).ready(function(){
		if(readCookie("elggchat_toolbar_minimized")){
			toggleChatToolbar(0);
		}
		
		$(window).resize(function(){
			elggchat_toolbar_resize();
		});
		elggchat_toolbar_resize();
		InitializeTimer();
		checkForSessions();
	});
	