/**
 * Simple Ajax wrapper.
 */
YAHOO.namespace('s4j');
YAHOO.s4j.ajaxSimple = function(result_node) {

request = function(arg, result_node, override_params) {
	var params = { 
		'success' : handleResponse, 
		'failure' : handleFailure, 
		'argument' : { 'result_node' : result_node } 
	}
	if (override_params) {
		for (i in override_params) {
			params[i] = override_params[i];
		}
	}
	YAHOO.util.Connect.asyncRequest('GET', '/ajax/?'+arg, params);
};

handleResponse = function(response){
	response.argument.result_node.innerHTML = response.responseText;
};

handleFailure = function(response){
	response.argument.result_node.innerHTML = "<div style='color:red'>Request failed.</div>";
};

// Public methods
return {
	request : request
}
};

/**
 * Simple function designed for trivial Ajax in Job seeker tools (side tools)
 * 
 * The "argument" value to be sent to the Ajax controller must be in 
 * the <a name='...'> attribute. Look at /job/view/<guid> for example use.
 */
function attach_ajax(id, ajax_method, message_saving, params) {
	var dests = YAHOO.util.Dom.getElementsByClassName("dest", null, id);
	if (dests) {
		var dest = dests[0];
		var links = YAHOO.util.Dom.getElementsBy(function(){return true}, "a", id);
		YAHOO.util.Event.on(links, 'click', function(ev, params) {
			var dest = params.dest;
			dest.innerHTML = message_saving;
			YAHOO.s4j.ajaxSimple().request(ajax_method+"="+this.name, dest, params.params);
			YAHOO.util.Event.preventDefault(ev);
		}, { "dest" : dest, "params" : params });
		
	}
}

function attach_ajax_with_popup(id, ajax_method, message_saving, message_popup) {
	params = {
		'success' : function(response) {
			response.argument.result_node.innerHTML = response.responseText;
			popUpDialog(message_popup, 5000);
		}
	}
	attach_ajax(id, ajax_method, message_saving, params);	
}
