// JavaScript Document

var textLoading = '<p>Loading... please wait.</p>';

var POST = 0;
var GET = 1;
var NONE = -1
var REPLACE = 0;
var APPEND = 1;
var PREPEND = 2;
var ALERT = 3;
var PARAM_RESET = true;
var PARAM_SURVIVE = false;

/* Ajax/Url functions */

function makeQuery(url) {
	var par = Array();

  query = '';
	q_sign = ((arguments.length > 1 && arguments[1]))? '?' : '';
	if (ajax_url[url]) ajax_url[url] = ajax_url[url].replace(/\?.*/g,query);
	i=0;
	if (params[url]) for (p_name in params[url]) {
		p_value = params[url][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);
  		//alert('makeQuery('+url+'): '+par[i]);
	  	i++;
		}
	}
	query += (par.length)? (q_sign + par.join('&')) : ''; //'?defaultquery=1';
	if (query && q_sign!='') ajax_url[url] += query.replace(/\+/,'%2B');
	return query;
}

function copyURL(src_url,dst_url) {
	//alert('copyURL('+expose(arguments)+')');
	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);
		//alert(src_url+' - params:\n'+expose(params[src_url])+'\n'+src_url+' - ajax_url:\n'+expose(ajax_url[src_url]));
		//alert(dst_url+' - params:\n'+expose(params[dst_url])+'\n'+dst_url+' - ajax_url:\n'+expose(ajax_url[dst_url]));
		return 2;
	}
	return 0;
}

function chParams(url) {
	//alert('chParams('+expose(arguments)+')');
	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;
		}
		//alert('chParams('+url+','+param_name+','+param_value+') after loading params:\n\n'+'defaults['+url+']=\n'+expose(defaults[url])+'\n'+'params['+url+']=\n'+expose(params[url]));
	}
	else {
		params[url] = Array();
		copyArray(defaults[url],params[url]);
		//alert('chParams('+url+') after copyArray:\n\n'+'defaults['+url+']=\n'+expose(defaults[url])+'\n'+'params['+url+']=\n'+expose(params[url]));
		//alert('defaults:\n\n'+expose(defaults[url]));
		//alert('params:\n\n'+expose(params[url]));
	}
	return makeQuery(url);
}

function trigger() {
	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;
		trigger_action  = arguments[i+3];
		makeQuery(trigger_url);
  	//alert('trigger('+trigger_target+'#'+trigger_target.id+','+trigger_url+'('+ajax_url[trigger_url]+'),'+trigger_reset+','+trigger_action+')');
		//alert('ajaxurl:\n'+expose(ajax_url));
		//alert('ajaxpage('+ajax_url[trigger_url]+',\''+trigger_target+'\')');
		result = ajaxpage(ajax_url[trigger_url],trigger_target,null,null,trigger_action);
		if (trigger_reset) {
			//params[trigger_url] = Array();
			//copyArray(defaults[trigger_url],params[trigger_url]);
			chParams(trigger_url);
		}
		return result;
	}
}


function triggerURL() {
	//alert(arguments.length);
	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];
		//alert('triggerURL('+trigger_target+', "'+trigger_url+'", '+append+', '+parameters+', "'+jsaction+'")');
		return ajaxpage(trigger_url,trigger_target,append,parameters,jsaction);
	}
	return null;
}

function triggerAction() {
	//alert('trigger('+expose(arguments)+')');
	for (i=0; i<arguments.length; i+=4) {
		trigger_target  = arguments[i];
		trigger_url     = arguments[i+1];
		trigger_action  = arguments[i+2];
		trigger_reset   = arguments[i+3];
		if (trigger_reset) {
			//alert('reset url '+trigger_url);
			params[trigger_url] = Array();
			copyArray(defaults[trigger_url],params[trigger_url]);
		}
		makeQuery(trigger_url);
		//alert('params['+trigger_url+']:\n'+expose(params[trigger_url]));
		//alert('ajaxurl:\n'+expose(ajax_url));
		//alert('ajaxpage('+ajax_url[trigger_url]+',\''+trigger_target+'\')');
		ajaxpage(ajax_url[trigger_url],trigger_target);
		if (trigger_action) eval(trigger_action);
	}
}

function hijax(linkObj,target) {
	url = linkObj.href;
	//linkObj.href = 'javascript:void(0)';
	triggerURL(target,url);
	return false;
}

function ajaxobj(url, target_obj){
	var page_request = false
	if (window.XMLHttpRequest) // if Mozilla, Safari etc
	page_request = new XMLHttpRequest()
	else if (window.ActiveXObject){ // if IE
		try {
			page_request = new ActiveXObject("Msxml2.XMLHTTP")
		}
		catch (e){
		try{
			page_request = new ActiveXObject("Microsoft.XMLHTTP")
		}
		catch (e){}
		}
		}
		else
		return false
		page_request.onreadystatechange=function(){
		loadpageobject(page_request, target_obj)
	}
	page_request.open('GET', url, true)
	page_request.send(null)
}


function loadpageobject(page_request, target_obj){
	if (page_request.readyState == 4 && (page_request.status==200 || window.location.href.indexOf("http")==-1))
	target_obj.innerHTML=page_request.responseText
}

function runScripts(obj) {
	if (typeof obj == 'string') {
		id = obj; obj = null;
		obj = document.getElementById(id);
		if (!obj) obj = undefined;
	}
	if (typeof obj != 'undefined') {
		if (obj.hasChildNodes) {
			cn = obj.childNodes;
			for (i in cn) {
				if (cn[i] && (cn[i].nodeName == 'SCRIPT')) {
					if (cn[i].innerHTML) {
						eval (cn[i].innerHTML);
					}
				}
			}
		}
	}
}

/**/
