/** Function that handles the update when the asynchronous request returns. */
function append(obj, container) {
	
	$(container).removeClass("waiting");
	
	$(container).append(obj);
	
}

function insert(obj, container) {
	
	$(container).removeClass("waiting");
	
	$(container).html(obj);
	
}

function replace(obj, container) {
	
	$(container).removeClass("waiting");
	
	$(container).replaceWith(obj);
	
}

function replaceAndRun(obj, container, callback) {
	
	$(container).removeClass("waiting");
	
	try{
		
		$(container).html($(obj).html());
		
		$(container).each( function() { callback(this); });
		
	} catch(err) {
		
//		alert(err);
		
		$(container).filter('div').replaceWith('');
		
	}
	
}

/** Function to submit a request and invoke a handler when it completes. */
function invoke(form, event, callback) {
	
    var params = $(form).serialize();
    
    $.post($(form).attr("action"), event + params, function(obj) { callback(obj); });
    
}

function invokeGET(form, event, callback) {
    
	var params = $(form).serialize();
    
    $.get($(form).attr("action"), event + "&" + params, function(obj) { callback(obj); });
    
}

function invokeLink(link, callback) {
	
    $.get($(link).attr("href"), null, function(obj) { callback(obj); });
    
}

function wait(container, message) {
	
	$(container).each(function() {

		if(!$(this).hasClass("waiting")) {

			$(this).append('<span class="wait">' + message + '<span class="wait"></span></span>');
			
			$(this).addClass("waiting");
			
		}
		
	});
	
}



