/***************************************************************************
         jesus/modules/base.js  -  Form submit & ajax req_xml
                             -------------------
    copyright            : (C) 2007 by Filios Konstantinos
    licence              : GNU GPL 2 (or later)
 ***************************************************************************/

var JESUS_THEME_ROOT = JESUS_SCRIPT_ROOT + 'themes/' + JESUS_THEME + '/';

function url(str)
{
	return JESUS_SCRIPT_ROOT + str;
}

function req_xml(str_uri, str_target, str_form)
{
	// Check parameter sanity
	if (typeof(str_uri) != 'string') {
		str_uri = str_uri.href;
	}

	if (str_uri == '') {
		return false;
	}

	// Get the target html element
	if (str_target == '' || !(dom_target = $('#' + str_target))) {
		alert('Element "' + str_target + '" does not exist');
		return false;
	}

	//We have a form to submit
	if (str_form && (dom_form = $('#' + str_form))) {
		post_data = dom_form.serialize();
	} else {
		post_data = {};
	}

	// Make the call
	$.ajax({
		url: str_uri,
		type: 'POST',
		dataType: 'html',
		data: post_data,
		target: dom_target,

		// Prepare "loading" effect
		beforeSend: function () {
			str_node = (dom_target[0].nodeName.toLowerCase() == 'tr') ? 'td' : 'div';
			str_html = '<' + str_node + ' style="' +
				'width: ' + $(dom_target).width() + 'px;' +
				'height: ' + $(dom_target).height() + 'px;" ' +
				'class="ajax_loading">' + JESUS_AJAX_LOADING + '</' + str_node + '>';
			dom_target.html(str_html);
		},

		// Display an ajax error message
		error: function () {
			str_node = (dom_target[0].nodeName.toLowerCase() == 'tr') ? 'td' : 'div';
			str_html = '<' + str_node + ' style="' +
				'width: ' + $(dom_target).width() + 'px;' +
				'height: ' + $(dom_target).height() + 'px;" ' +
				'class="ajax_error">' + JESUS_AJAX_ERROR + '</' + str_node + '>'; 
			dom_target.html(str_html);
		},

		// Assign return data to the passed target
		success: function (str_data) {
			this.target.html(str_data);
		}
	});

	return false;
}

function submit_form(str_form, var_args)
{
	dom_form = $('#' + str_form);

	if (dom_form.length == 0) {
		alert('Form `' + str_form + '` not found!');
		return;
	} else {
		dom_form = dom_form[0];
	}

	// Concatenate string arguments
	if (var_args) {
		if (typeof(var_args) == 'string') {
			dom_form.action += var_args;
		// Reset form string from anchor's href
		} else {
			dom_form.action = var_args.href;
		}
	}

	$(dom_form).submit();

	return false;
}