//Spark CM

//Create Variables
var http_request = false;
var current_content = '';
var form_values = '';
var message_content = '';
var submitTimer = false;
var form_name = false;

//Set up Ajax object
if (window.XMLHttpRequest) {
	http_request = new XMLHttpRequest();
	if (http_request.overrideMimeType) {
		http_request.overrideMimeType('text/html');
	}
} else if (window.ActiveXObject) {
	try {
		http_request = new ActiveXObject('Msxml2.XMLHTTP');
	} catch (e) {
		try {
			http_request = new ActiveXObject('Microsoft.XMLHTTP');
		} catch (e) {
			window.status = "Browser version does not support Ajax"
		}
	}
}

//Send Request
function send_request(parameters) {
	http_request.open('post', 'http://www.obfuscatedgirl.com/process', true);
	http_request.onreadystatechange = process_response;
	http_request.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');
	http_request.setRequestHeader('Content-length', parameters.length);
	http_request.setRequestHeader('Connection', 'close');
	http_request.send(parameters);
}

//Process Response
function process_response() {
	if (http_request) {
		if (http_request.readyState == 4) {
			if (http_request.status == 200) {
				window.status='';
				if (submitTimer) {
					clearTimeout(submitTimer);
				}
				if (sendTimer) {
					clearTimeout(sendTimer);
				}
				response = http_request.responseText;
				if (response == '') {
					document.getElementById('message').innerHTML = '<h4>Empty response from server</h4><p><button onclick="document.getElementById(\'message\').className = \'\'">Close</button></p>';
					document.getElementById('message').className = 'display';
				} else {
					response_array = response.split('\020', 3);
					element_name = response_array[1];
					new_content = response_array[2];
					if (element_name == 'refresh') {
						window.location.reload();
					} else if (element_name == 'message') {
						document.getElementById('message').innerHTML = new_content;
						document.getElementById('message').className = 'display';
					} else if (element_name == 'form_enable') {
						enable_form('form' + new_content);
					} else {
						current_content = document.getElementById(element_name).innerHTML;
						document.getElementById(element_name).innerHTML = new_content;
					}
				}
			} else {
				document.getElementById('message').innerHTML = '<h4>No response from server</h4><p><button onclick="document.getElementById(\'message\').className = \'\'">Close</button></p>';
				document.getElementById('message').className = 'display';
				return false;
			}
		}
	}
}

//AJAX Request function
function request(action, id, supplemental) {
	parameters = 'action=' + action + '&id=' + id + '&supplemental=' + supplemental;
	form_name = 'form' + id;
	if (form_obj = document.forms[form_name]) {
		if (form_obj.submit.disabled == true) {
			for(i=0; i < form_obj.elements.length; i++) {
				form_obj.elements[i].disabled = true;
				if (form_obj.elements[i].type == "checkbox") {
					form_value = form_obj.elements[i].checked;
				} else {
					form_value = escape(form_obj.elements[i].value);
				}
				parameters = parameters + '&' + form_obj.elements[i].name + '=' + form_value;
			}
		}
	}
	if (form_values != '') {
		parameters = parameters + '&' + form_values;
		form_values = '';
	}
	document.getElementById('message').className = '';
	window.status = 'Processing...';
	sendTimer = setTimeout("window.status='Error in transmit. Please retry...'", 8000);
	send_request(parameters);
}

//Page Control Function
function selectpage(element, num, total) {
	if (num == "previous") {
		if (p > 1) {
			num = p - 1;
		} else {
			num = false;
		}
	}
	if (num == "next") {
		if (p < total) {
			num = p + 1;
		} else {
			num = false;
		}
	}
	if (num) {
		buttons = document.getElementsByName('p' + p)
		for (i=0; i < buttons.length; i++) {
			buttons[i].className = '';
		}
		p = num;
		if (p == 1) {
			buttons = document.getElementsByName('previous')
			for (i=0; i < buttons.length; i++) {
				buttons[i].className = 'disabled';
			}
		} else {
			buttons = document.getElementsByName('previous')
			for (i=0; i < buttons.length; i++) {
				buttons[i].className = '';
			}
		}
		if (p == total) {
			buttons = document.getElementsByName('next')
			for (i=0; i < buttons.length; i++) {
				buttons[i].className = 'disabled';
			}
		} else {
			buttons = document.getElementsByName('next')
			for (i=0; i < buttons.length; i++) {
				buttons[i].className = '';
			}
		}
		buttons = document.getElementsByName('p' + p)
		for (i=0; i < buttons.length; i++) {
			buttons[i].className = 'selected';
		}
		document.getElementById(element).innerHTML = '<p>Loading...</p>';
		request('items', element, 'page_number,' + num);
	}
}

//Clear and close message window
function clear_message(form_name) {
	document.getElementById('message').innerHTML = '';
	document.getElementById('message').className = '';
	enable_form(form_name);
}

//Form value enumeration
function capture_value(form_element) {
	document.getElementById('save_table_changes').disabled = false;
	new_value = form_element.name + '=' + form_element.value;
	prev_pos = form_values.indexOf(form_element.name);
	if (prev_pos != -1) {
		end_pos = form_values.indexOf("&", prev_pos);
		if (end_pos == -1) {
			end_pos = form_values.length;
		}
		old_value = form_values.substr(prev_pos, end_pos - prev_pos);
		form_values = form_values.replace(old_value, new_value);
	} else if (form_values == '') {
		form_values = new_value;
	} else {
		form_values = form_values + '&' + new_value;
	}
	form_element.className = 'changed';
}

//Form disable
function disable_form(form_name) {
	document.forms[form_name].submit.disabled = true;
	submitTimer = setTimeout("enable_form(form_name)", 5000);
}

//Form enable
function enable_form(form_name) {
	if (form_obj = document.forms[form_name]) {
		for(i=0; i < form_obj.elements.length; i++) {
			form_obj.elements[i].disabled = false;
		}
	}
}

//Toggle element visibility
function toggle_element(element_id) {
	if (document.getElementById(element_id).style.visibility == "visible") {
		document.getElementById(element_id).style.visibility = "hidden";
		document.getElementById(element_id).style.position = "absolute";
	} else {
		document.getElementById(element_id).style.visibility = "visible";
		document.getElementById(element_id).style.position = "relative";
	}
}