

/** Roster Javascript **/

	$(document).ready(function() {
		
		ViewRoster_Init();
		
	});
	
	/**
	 * Initialize the view roster functionality
	 */
	function ViewRoster_Init() {
		
		
		// Filter event
		$(".roster-holder .filters li").live("click", function() {
			$(this).toggleClass("selected");
			
			var filterEvents = "";
			var filterMyRoster = "";
			$(".filters li.selected").each(function() {
				if ($(this).hasClass("filter-event")) {
					filterEvents += "&e=" + $(this).attr("event");
				}
				if ($(this).hasClass("my-roster")) {
					filterMyRoster += "&p=me";
				}
			});
			
			var filter = filterEvents + filterMyRoster;
			
			$(".roster").load("ControlViewer.aspx?c=Roster" + filter + " .roster-container", null, function() {
				// Count how many meeting columns there are
				var numMeetings = $(".roster table:first tbody tr:first td[meeting]").length;
				ResizeRosterViewport(6, numMeetings);
				
				// Following event setup calls not needed anymore as of jQuery 1.3
				//EditRoster_Init();
				//EditRoster_RightClick_Init();
			});
		});
		
		
		// Highlight Person event
		$(".roster .roster-person").live("click", function(e) {
			var node = $(this)
			var personid = node.attr("person");
			HighlightPerson(personid);
		});
		
		
		//Drag Roster event
		$(".roster").live("mousedown", function(event) {
			$(this)
				.data('isDragging', true)
				.data('x', event.clientX)
				.data('scrollLeft', this.scrollLeft);
			return false;
			
		}).live("mouseup", function(event) {
			$(this).data('isDragging', false)
			
		}).live("mousemove", function(event) {
			var leftX = this.offsetLeft;
			var rightX = leftX + this.offsetWidth;
			var top = this.offsetTop;
			var bottom = top + this.offsetHeight;
			//alert("leftX: " + leftX + " |rightX: " + rightX);
			/*
			if (event.clientX < leftX 
				|| event.clientX > rightX 
				|| event.clientY < top 
				|| event.clientY > bottom) {
					$(this).data('isDragging', false);
				}*/
			
			
			
			if ($(this).data('isDragging') == true) {
				this.scrollLeft = $(this).data('scrollLeft') 
								+ ($(this).data('x') 
								- event.clientX) / 1
								;
			}
			
		}).css({
			'cursor' : '-moz-grab !important'
			
		});/*.mousewheel(function(event, delta) {
			this.scrollLeft -= (delta * 30);
			return false;
			
		});*/
		
		
		//Meeting Notes
		$(".meeting-name .note").live("mouseover", function() {
			var note = $(this);
			var text = note.find(".text");
			
			text.show("fast");
			
			text.mouseout(function() {
				//text.hide("fast");
			})
			
		});
		

	}
	
	
	/**
	 * ONLY call this method in IE
	 */
	function ResizeRosterViewport(viewSize, numMeetings) {
		//Set the container width for IE browsers
        
		var width = numMeetings*140 + (numMeetings/viewSize)*160;
		
        if ($.browser.msie) {
            $(".roster-container").css("width", width + "px");
        }
	}

	

	
	/**
	 * Highlights a person in the roster
	 * @param {Object} personID
	 */
	function HighlightPerson(personID) {
		UnhighlightPerson();
		$(".roster-person[person='" + personID + "']").addClass("highlight");
	}
	
	/** 
	 * Removes the highlight class from all roster persons
	 */
	function UnhighlightPerson() {
		$(".roster-person.highlight").removeClass("highlight");		
	}
	

