/****************************************
 * Handles information about current user
 * Note that the current user may be different
 * than the logged in user.  For example, an
 * admin can perform operations as if they
 * were a user.
 ****************************************/
 
var User = new function() {
	var currentUser = 0;
	
	/* public */
	
	this.getCurrentUser = function() { return currentUser; }
	this.setUser = function(user) { currentUser = user; }
	
	this.displayAll = function() {
		var request = Utils.AJAX.createRequest();
		var url = Utils.AJAX.makeRequestURL('cardservlet', 'users', true);
		request.open('GET', url , false);
		request.send(null);
		try {
			if(request.readyState == 4) {
				if(request.status == 200) {
					var doc = request.responseXML;
					var userNs = doc.getElementsByTagName('user');
					
					for (var i = 0; i < userNs.length; i++) {
						placeUser(userNs[i]);
					}
				}
			}
		} catch(e) {
			alert(e);
		}
	}
	
	/* private helpers */
		
	function placeUser(userN) {
		var span = document.getElementById('users');
		var email = userN.getAttribute('email');
		var uid = userN.getAttribute('uid');
		
	  	var onClickCommand = "User.setUser(" + uid + "); Categories.refresh()";
		var link = Utils.DOM.createEmptyLink();
		link.className='user';
		link.onclick = function() { eval(onClickCommand); };
		var node = document.createTextNode(email);
		var br = document.createElement('br');
	
		link.appendChild(node);
		span.appendChild(link);
		span.appendChild(br);
	}
}