/*
Author:		Benjamin Smith
Function:	Interface functions using Sam Stephenson's prototype javascript library (http://prototypejs.org/).
Version:	1.0
*/

var updater_array = new Array();

bclick = function(object) {
	var obj = document.getElementById(object);
	obj.click();
		}

auto_complete = function(page, table, element, div, field_name) {
	var obj = document.getElementById(element);

	if(obj) {
		var has_content = true;
		if(obj.value.length < 1) {
			has_content = false;
				}

		var query_string = 'table=' + table + '&val=' + obj.value + '&element=' + element + '&field_name=' + field_name + '&div=' + div;
			new Ajax.Request(page, {method:'post', parameters:query_string, onComplete:function(complete_element){
				var obj2 = document.getElementById(div);

				if(obj2) {
					if(has_content){
						response_text = complete_element.responseText;
						obj2.innerHTML = complete_element.responseText;
						obj2.style.visibility = 'visible';
						obj2.style.display = 'block';
							}
					else {
						obj2.style.visibility = 'hidden';
						obj2.style.display = 'none';
							}
						}
					}
				});
			}
		}


add_suggest = function(page, table, field_name, val, element, div) {
	var obj = document.getElementById(div);

	if(obj) {
		var query_string = 'table=' + table + '&val=' + val + '&element=' + element + '&field_name=' + field_name + '&div=' + div;
		new Ajax.Updater(div, page, {method:'post', parameters:query_string, onSuccess:set_load(div), onComplete:do_additional});
			}
		}


stat_text = function() {
	window.status='Apple Core Parts System';
	return true;
		}
		

encode = function(query_string) {
	query_string = query_string.replace('&', '');
	query_string = query_string.replace('#', '');

	return query_string;
		}

		
send_form = function(page, div, form, send_method, do_add, message, proxy) {

	if (div == 'newsletterss')
	{
		//- check email
		if (document.newsletter.newsletter_email.value.length == 0)
		{
			alert('Please enter your email address.');
			document.newsletter.newsletter_email.focus();
			return false;
			exit();
		} else {
			pattern=/^([a-zA-Z0-9_.-])+@([a-zA-Z0-9_.-])+\.([a-zA-Z])+([a-zA-Z])+/;
			
			if (!pattern.test(document.newsletter.newsletter_email.value))
			{
				alert("The email address format is incorrect.");
				document.newsletter.newsletter_email.select();
				return(false);	
				exit();
			}
		}
	}
		
	var form = document.getElementById(form);
	var obj = document.getElementById(div);

	if(!obj) {
		//alert('No div element named ' + div + ' could be located.');
		return;
			}

	if(!form) {
		//alert('No form element named ' + form + ' could be located.');
		return;
			}

	var query_string = '';

	for (var i=0; i<form.elements.length; i++) {
		if(form.elements[i].type == 'checkbox') {
			if(!form.elements[i].checked) {
				form.elements[i].value = '';
					}
				}

		query_string = query_string + "&" + form.elements[i].name + '=' + encode(form.elements[i].value);
			}

	if(proxy) {
		page = proxy + '?url=' + page;
			}

	if(do_add) {
		new Ajax.Updater(div, page, {method:send_method, parameters:query_string, onSuccess:set_load(div, message), onComplete:do_additional});
			}
	else {
		new Ajax.Updater(div, page, {method:send_method, parameters:query_string, onSuccess:set_load(div, message)});
			}
		}

get_content = function(page, div, id, do_add, message) {
	remove_div('command_content');
	var obj = document.getElementById(div);
	
	if(!obj) {
		alert('No div element named ' + div + ' could be located.');
		return;
			}

	void_div(obj);

	var query_string = 'id=' + id;
	
	if(do_add) {
		new Ajax.Updater(div, page, {method:'post', parameters:query_string, onSuccess:set_load(div, message), onComplete:do_additional});
			}
	else {
		new Ajax.Updater(div, page, {method:'post', parameters:query_string, onSuccess:set_load(div, message)});
			}
		}
		

set_content = function(page, div, query_string, type, do_add, message) {
	remove_div('command_content');
	var obj = document.getElementById(div);
	
	if(!obj) {
		alert('No div element named ' + div + ' could be located.');
		return;
			}

	void_div(obj);
	
	if(do_add) {
		new Ajax.Updater(div, page, {method:type, parameters:query_string, onSuccess:set_load(div, message), onComplete:do_additional});
			}
	else {
		new Ajax.Updater(div, page, {method:type, parameters:query_string, onSuccess:set_load(div, message)});
			}
		}


get_straight = function(page, div, do_add, message) {	
	remove_div('command_content');
	var obj = document.getElementById(div);

	if(!obj) {
		alert('No div element named ' + div + ' could be located.');
		return;
			}

	void_div(obj);

	if(do_add) {
		new Ajax.Updater(div, page, {method:'get', onSuccess:set_load(div, message), onComplete:do_additional});
			}
	else {
		new Ajax.Updater(div, page, {method:'get', onSuccess:set_load(div, message)});
			}
		}


set_straight = function(page, div, do_add, message, freq, dec) {
	remove_div('command_content');
	var obj = document.getElementById(div);

	if(!obj) {
		alert('No div element named ' + div + ' could be located.');
		return;
			}
			
	void_div(obj);

	if(do_add) {
		updater_array[div] = new Ajax.PeriodicalUpdater(div, page, {method:'get', onSuccess:set_load(div, message), onComplete:do_additional});
			}
	else {
		updater_array[div] = new Ajax.PeriodicalUpdater(div, page, {method:'get', frequency: freq, decay: dec, onSuccess:set_load(div, message)});
			}
		}
		
		
void_div = function(div) {
	div.style.visibility = 'visible';
	div.style.display = 'block';
	
	return;
		}


do_additional = function() {
	var obj = document.getElementById('command_content');

	if(obj) {
		var command_text = obj.innerHTML;
		eval(command_text);
		remove_div('command_content');
		return;
			}
	else {
		alert('No div element named command_content could be located.');
		return;
			}
				
		}


find_command_content = function() {
	var obj = document.getElementById('command_content');

	if(obj) {
		var command_text = obj.innerHTML;
		alert(command_text);
		remove_div('command_content');
			}
	else {
		alert('No div element named command_content could be located.');
			}
		}


set_load = function(div, message) {
//	if(!message) {
//		message = 'Loading...';
//			}
//
//	var obj = document.getElementById(div);
//
//	if(div != "blank_div_content") { // && div != "spacer"
//		obj.innerHTML = '<strong>' + message + '</strong><br /><img src="images/loading.gif">';
//			}
//	else {
//		obj.innerHTML = '';
//			}
		}


remove_div = function(child_div) {
	var obj_child_div = document.getElementById(child_div);

	if(obj_child_div) {
		obj_parent_div = obj_child_div.parentNode
		obj_parent_div.removeChild(obj_child_div);
			}
	else {
			}
		}
		

hide_div_section = function(start, end, id) {
	var obj = document.getElementById(start+id+end);
	
	if(obj) {
		}
	else {
		alert('No div element named ' + start+id+end + ' could be located');
			}

	var divs = document.getElementsByTagName('div');

	if(!divs) {
		alert('No div elements could be located.');
		return;
			}

	for(i=0; i<divs.length; i++) {
		if(divs[i].id.indexOf(start) >= 0 && divs[i].id.indexOf(end) >= 0 && divs[i].id.indexOf('manager') < 0)
				{
			if(divs[i].id.indexOf(start + id + end) < 0) {
				divs[i].style.visibility="hidden";
				divs[i].style.display="none";
					}
			else {
				divs[i].style.visibility="visible";
				divs[i].style.display="block";	
					}
				}
			}
		}


toggle_table_headers = function(start, end, id, on_color, off_color) {
	var tables = document.getElementsByTagName('table');
	
	if(!tables)
			{
		alert('No table elements could be located.');
		return;
			}

	for(i=0; i<tables.length; i++) {
		if(tables[i].id.indexOf(start) >= 0 && tables[i].id.indexOf(end) >= 0 && tables[i].id.indexOf('manager') < 0)
				{
			if(tables[i].id.indexOf(start + id + end) < 0) {
				tables[i].style.backgroundColor = off_color;
					}
			else {
				tables[i].style.backgroundColor = on_color;
					}
				}
			}
		}


