// JavaScript Document

var textLoading = '<p>Loading... please wait.</p>';

var POST = false;
var GET = true;
var REPLACE = false;
var APPEND = true;
var PARAM_RESET = true;
var PARAM_SURVIVE = false;
var RUN_SCRIPTS = true;

/* Ajax/Url functions */

function makeQuery(params) {
	var par = Array();

  query = '';
	q_sign = ((arguments.length > 1 && arguments[1]==false))? '' : '?';
	i=0;
	if (params) for (p_name in params) {
		p_value = params[p_name]+'';
		if (p_value != null) {
  		p_value = p_value.replace(/\+/,'%2B');
  		p_value = p_value.replace(/&/,'%26');
			//p_value = escape(p_value);
			par[i] = (p_name+'='+p_value);
	  	i++;
		}
	}
	query += (par.length)? (q_sign + par.join('&')) : ''; //'?defaultquery=1';
	return query;
}

function copy_URL(src_url,dst_url) {
	if_copy = (arguments[2] && (arguments[2]==true));
	if (ajax_url[dst_url] && if_copy) {
		return 1;
	}
	else if (ajax_url[src_url]) {
		ajax_url[dst_url] = Array();
		ajax_url[dst_url] = ajax_url[src_url]+'';
		params[dst_url] = Array();
		for (i in params[src_url]) params[dst_url][i] = params[src_url][i];
		defaults[dst_url] = Array();
		for (i in defaults[src_url]) defaults[dst_url][i] = defaults[src_url][i];
		makeQuery(dst_url);
		return 2;
	}
	return 0;
}

function chParams(url) {
	if (arguments.length > 1) {
		for (i = 1; i < arguments.length; i+=2) {
  		param_name  = arguments[i];
	  	param_value = arguments[i+1];
			params[url][param_name] = param_value;
		}
	}
	else {
		params[url] = Array();
		copyArray(defaults[url],params[url]);
	}
	return makeQuery(url);
}

function trigger() {
	var trigger_target,trigger_url,trigger_reset,jsaction;
	for (i=0; i<arguments.length; i+=4) {
		trigger_target  = arguments[i];
		trigger_url     = arguments[i+1];
		trigger_reset   = (arguments[i+2]!=null)? arguments[i+2] : PARAM_RESET;
		jsaction  			= arguments[i+3];
		if (RUN_SCRIPTS) jsaction  = 'runScripts("'+trigger_target+'");'+jsaction;
		makeQuery(trigger_url);
		result = ajaxpage(ajax_url[trigger_url],trigger_target,null,null,jsaction);
		if (trigger_reset) {
			chParams(trigger_url);
		}
		return result;
	}
}


function triggerURL() {
	var trigger_target,trigger_url,append,parameters,jsaction;
	for (i=0; i<arguments.length; i+=4) {
		trigger_target  = arguments[i];
		trigger_url     = arguments[i+1];
		append          = arguments[i+2];
		parameters      = null;
		jsaction        = arguments[i+4];
		if (RUN_SCRIPTS) jsaction  = 'runScripts("'+trigger_target+'");'+jsaction;
		if (isOpera && !append) trigger_target.innerHTML = ''; 
		return ajaxpage(trigger_url,trigger_target,append,parameters,jsaction);
	}
	return null;
}

function jxFormSubmit(form_obj) {
	var jxFormSubmit, poststr, form_action, form_target, jsaction;
	jxFormSubmit = Array();

	if (form_obj && form_obj.action) {
		form_action = (form_obj.action)? form_obj.action : form_obj.getAttribute("action");
		//form_obj.action = null;
	}
	if (form_obj && form_obj.target) {
		form_target = form_obj.target;
		form_obj.target = null;
	}

	if (arguments.length > 1) {
		if (arguments[1]) form_target = arguments[1];
		if (arguments[2]) form_action = arguments[2];
		if (arguments[4]) jsaction = arguments[4];
	}
	
	try {
		getFormFields(form_obj,jxFormSubmit);
		
		poststr = makeQuery(jxFormSubmit,false);
		
		if (typeof form_action == 'undefined') return false;
		if (!poststr) return false;

		if (RUN_SCRIPTS) jsaction  = 'runScripts("'+form_target+'");'+jsaction;
		makePOSTRequest(form_action, form_target, REPLACE, poststr, jsaction);
	}
	catch(e) {
		alert(e);
	}
	
	return false;
}

/**/


function runScripts(obj) {
	var i, cn, code;
	if (typeof obj == 'string') {
		id = obj; obj = null;
		obj = document.getElementById(id);
		if (!obj) obj = undefined;
	}
	if (typeof obj != 'undefined') {
		if (cn = document.getElementsByTagName('SCRIPT')) {
			for (i=0; i < cn.length; i++) {
				if (code = cn.item(i).innerHTML) {
					eval (code);
				}
			}
		}
		else if (obj.hasChildNodes) {
			cn = obj.childNodes;
			for (i=0; i < cn.length; i++) {
				if (cn.item(i) && (cn.item(i).nodeName == 'SCRIPT')) {
					if (code = cn.item(i).innerHTML) {
						eval (code);
					}
				}
			}
		}
	}
}
