/*
//////////////////////////////////////////////////////////
///// SWARM AJAX FUNCTIONS
//////////////////////////////////////////////////////////
*/

var ajaxLoaderHTML = '<div style="padding-bottom:10px"><img src="/images/pages/ajax_loading_shaded.gif" width="16" height="16" align="absmiddle"> Loading data...</div>';
var ajaxErrorHTML = '<div style="padding-bottom:10px"><span style="color:red;font-weight:bold">DATA ERROR:</span> There has been an error loading your data. Please try again.</div>';

function ajaxResults(url,type,div,formName,callbackFns,funcStart,funcEnd,frameName) { 
	/*
	url = string
	type = "getData", "postForm", or "getValue"
	div = element id
	formName = name of form to collect var
	callbackFns = function(s) after processing;
		can be a list of functions such as 'function1()|function2()|function3(\'with data\')' 
	funcStart = beginning str for function
	funcEnd = ending str for function
	frameName = name of parent frame if function is being called in an iframe
	*/
	if (!frameName) {
		frameName = '';
	}
	
	//AJAX request call
	// Mozilla/Safari
	if (window.XMLHttpRequest) {
		var req = new XMLHttpRequest();
	}
	// IE
	else if (window.ActiveXObject) {
		var req = new ActiveXObject("Microsoft.XMLHTTP");
	}
	if(req) {
		// If there's AJAX data, process it
		req.onreadystatechange=function() {
			if (req.readyState==4) {
				data = req.responseText;
				if (div && div != '')
					showAJAXContent(data,div,frameName);
				if (callbackFns)
					ajaxHandleCallbacks(callbackFns);
				if (funcStart)
					eval(funcStart+'\''+data+'\''+funcEnd);
				req = null;
		 	}
		}
		switch (type) {
			case "postForm":
				req.open("POST", url, true);
				req.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
				req.send(ajaxGetFormQueryStr(formName));
				break;
			case "getValue":
				req.open("POST", url, true);
				req.send('');
				break;
			default:
				req.open("POST", url, true);
				req.send('');
				showAJAXLoader(div,frameName);
				break;
		}
	} else {
		alert('theres no req');
		// If there's an error with the AJAX data, show an error msg and clear 'req'
		switch (type) {
			case "getValue":
				return false;
				break;
			default:
				showAJAXError(div,frameName);
				break;
		}
		req = null;
	}
}
function showAJAXLoader(div,frameName) {
	if (frameName) {
		if (frameName != '')
			top[frameName].$(div).innerHTML = ajaxLoaderHTML;
	} else {
		top.$(div).innerHTML = ajaxLoaderHTML;
	}
}
function showAJAXError(div,frameName) {
	if (frameName) {
		if (frameName != '')
			top[frameName].$(div).innerHTML = ajaxErrorHTML;
	} else {
		top.$(div).innerHTML = ajaxErrorHTML;
	}		
}
function showAJAXContent(str,div,frameName){
	if (frameName) {
		if (frameName != '')
			top[frameName].$(div).innerHTML = str;
	} else {
		top.$(div).innerHTML = str;
	}
}
function ajaxHandleCallbacks(callbackFns) {
	var callbacks = callbackFns.split('|');
	for(i=0;i<callbacks.length;i++) {
		eval(callbacks[i]);
	}
}
function ajaxGetFormQueryStr(formname) {
	var form = document.forms[formname];
	var qstr = '';
	for(i=0; i<form.elements.length; i++)  {
		if (form[i].type == 'checkbox') {
			if (i != 0) 
				qstr = qstr + '&';
			qstr = qstr + form[i].name + '=' + form[i].checked;
		}			
		else {
			if (i != 0) 
				qstr = qstr + '&';			
			qstr = qstr + "&" + form.elements[i].name + "=" + encodeURIComponent(form.elements[i].value);
		}
	}
	return qstr;
}