// _cms/js/AJAXCore.js ©2006 lesshype / joseph wilson

/*		create XMLHttpRequest Object		*/

var request = false;

try {
	/*	for standard compliant browsers */
	request = new XMLHttpRequest();
} catch (trymsie) {
	try {
		/*	newer style IE */
		request = new ActiveXObject("Msxml2.XMLHTTP");
	} catch (trymsie2) {
		try {
			/*	older style IE */
			request = new ActiveXObject("Microsoft.XMLHTTP");
		} catch (failed) {
			request = false;
		}
	}
}


/*		he's dead Jim	*/
if (!request) {
	alert("Error initializing XMLHttpRequest. You need to upgrade to a modern browser.");
}


/*		set up base_url for ajax
		returns difrectory of requesting file	*/
if (!base_url) {
	url = document.location.href;
	xend = url.lastIndexOf("/") + 1;
	var base_url = url.substring(0, xend);
}

function ajaxSetData(form, id, value) {
	var theField = form + '_' + id;
	var obj = document.getElementById(theField);
	var value = value;

	// catch non standard field names: data[foo][] usually in use on multiple select fields
	if (!obj) {
		//alert('no place for: ' + theField);
	}

	// we have our object
	if (obj) {

		if (obj.type == "hidden" || obj.type == "text" || obj.type == "textarea") {

			obj.value = unescape(value);

		} else if (obj.type == "select-one") {

			for(i = 0; i < obj.length; i++) {
				if(obj[i].value == value) {
					obj.selectedIndex = i;
				}
			}

		} else if (obj.type == "select-multiple") {

			var value = value.split(":");

			LISTUtil.add(obj, value[1], value[0]);

		} else if (obj.length > 0) {

			if(obj.length == undefined) {
				obj.checked = (obj.value == value.toString());
				return;
			}
			for(var i = 0; i < obj.length; i++) {
				obj[i].checked = false;
				if(obj[i].value == value.toString()) {
					obj[i].checked = true;
				}
			}
		} else {
			alert(id);
		}
	}
}

function ajaxSendData(f,a) {
	var oForm = DOMUtil.checkTarget(f);
	
	// disable all the fields to make sure we don't get multiple submissions / nothing changes
	FORMUtil.disableFields(oForm);
	var ajax = false;
	if (a == true) {
		ajax = true;
	}

	if (oForm.length > 0) {
		if (oForm.elements["section"] && ajax == false) {
			alert('that form needs fixed! ajaxcore ln 100');
			var s = oForm.elements["section"].value;
			var m = oForm.elements["module"].value;
			var a = oForm.elements["do_action"].value;
			var url = 'lib/' + s + '/' + m + '/lib/ajax.inc.php?do_action=' + a;
		}

		var fields = new Array();
		var data = new Array();

		for (var i = 0; i < oForm.elements.length; i++) {
//			alert(oForm.elements[i].type);
//			alert(oForm.elements[i].name);
//			alert(oForm.elements[i].value);
//			alert(oForm.elements[i].id);
			if (oForm.elements[i].type == "checkbox" && oForm.elements[i].checked == true) {
				fields.push(escape(oForm.elements[i].name));
				data.push(escape(oForm.elements[i].value));
			} else if (oForm.elements[i].type == "file") {

			} else if (oForm.elements[i].type == "password") {
				fields.push(escape(oForm.elements[i].name));
				data.push(sha1Hash(oForm.elements[i].value));
			} else if (oForm.elements[i].type == "radio" && oForm.elements[i].checked == true) {
				fields.push(escape(oForm.elements[i].name));
				data.push(escape(oForm.elements[i].value));
			} else if (oForm.elements[i].type == "select-multiple") {
				var values = new Array();
				fields.push(escape(oForm.elements[i].name));
				for (x = 0; x < oForm.elements[i].length; x++) {
					if (oForm.elements[i][x].selected == true && oForm.elements[i][x].value != '') {
						values.push(escape(oForm.elements[i][x].value));
					}
				}
				data.push(escape(values));
			} else if (oForm.elements[i].type == "select-one") {
				fields.push(escape(oForm.elements[i].name));
				data.push(escape(oForm.elements[i].value));
			} else if (oForm.elements[i].type == "submit") {
				
			} else if (oForm.elements[i].type == "text" ||
						oForm.elements[i].type == "textarea" ||
						oForm.elements[i].type == "hidden") {
				fields.push(escape(oForm.elements[i].name));
				data.push(escape(oForm.elements[i].value));
			}
		}

		var temp = new Array();
		for (i = 0; i < fields.length; i++) {
			temp[i] = fields[i] + '=' + data[i];
		}

		if (ajax == true) {	// ajax style (true = standard, false = previously coded)
			var data = temp.join('&');	// join fields to send
			return data;
		} else {
			var data = temp.join('&');	// join fields to send
			ajax_do(url + data);
		}
	}
}

function on_ready_state() {
	var ready = request.readyState;
	var data = null;
	if (ready == 4) {
		data = request.responseText;
	} else {
		data = "loading...["+ready+"]";
	}
	updateUI(data);
}

function updateUI() {
	if (this.req.readyState == 1) {
		DIVUtil.setSysmsg('Loading');
	} else if (this.req.readyState == 4) {
		var response = this.req.responseText.split('||');
		if (response[0] == '') {
			DIVUtil.hideTarget('cms_sysmsg');
//		} else if (data.length > 300){
//			alert('It apears your session has expired. Please log back in to continue.');
//			document.location.reload();
		} else {
			DIVUtil.setSysmsg(response[0]);
		}
		for (j = 1; j < response.length; j++) {
			if (response[j] != '') {
			//	if (j > 150) { // && j < 130) {
			 // 		alert(response[j]);
			//	}
				eval(response[j]);
			}
		}
	}
}
