//-----------------------------------------[ ACTION: SEARCH PRODUCTS ]
function searchProducts(formID)
{
	var serialized = Form.serialize(formID);
	
	// Call DB process: Read, Options, DB record ID, Display element ID, Serialized Data.
	dbProcessUpdater(1, 1, null, 'search_results', serialized);
	
	if (element) Element.hide(element);
}

//-------------------------------------------------[ SELECT: PRODUCT ]
function selectProduct(item)
{
	// Call DB process: Read, Options, DB record ID, Display element ID, Serialized Data.
	dbProcessUpdater(1, 2, item, 'product_preview', null);
}

//-------------------------------------------[ ONCLICK: EXPLAIN THIS ]
var element;
function explainThis(elementID)
{
	if (element && element.id != 'send_email_box') Element.hide(element);
	if (elementID == 'send_email_box') Element.hide('products_table');
	element = $(elementID);
	Element.show(element);
}

//-----------------------------------[ ONCHANGE: UPDATE SHAPE SELECT ]
function updateShapeSelect(select)
{
	var material = select.value;
	var serialized = (material != 0) ? 'material=' + material : '';
	dbProcessUpdater(1, 3, null, 'Shape', serialized);
}

//------------------[ CLOSE: ELEMENT (mode: 1=hide; 2=clear content) ]
function closeElement(element, mode)
{
	if (element.id == 'send_email_box') Element.show('products_table');
	if (Element.visible('send_email_box') && element.id == 'product_preview')
	{
		Element.hide('send_email_box');
		Element.show('products_table');
	}
	
	switch (mode)
	{
		case 1: Element.hide(element);
			break;
		case 2: Element.update(element, '');
			break;
	}
	element = null;
}

//---------------------------------------------[ SEND: PRODUCT EMAIL ]
function sendProductEmail(productID)
{
	var frame = $('send_email_box');
	var senderField = $('yourEmail');
	var recipientField = $('recipientEmail');
	var error = $('error_prompt');
	var hilite = '#ffd';
	var from = ($F(senderField).checkInput(1)) ? $F(senderField) : false;
	var recipient = ($F(recipientField).checkInput(1)) ? $F(recipientField) : false;
	var fromName = $F('yourName').trim();
	var recipientName = $F('recipientName').trim();
	var message = $F('message').trim();
	var fromStyle = (from) ? '#fff' : hilite; 
	var toStyle = (recipient) ? '#fff' : hilite;
	senderField.style.backgroundColor = fromStyle;
	recipientField.style.backgroundColor = toStyle;
	
	if (from && recipient)
	{
		var userMessage = '<p>Sending e-mail, please wait&#8230</p>';
		if (error)
		{
			Element.update(error, userMessage);
		} else {
			new Insertion.Top(frame, '<span id="error_prompt">' + userMessage + '</span>');
		}
		var serialized = 'productID=' + productID + '&fromName=' + fromName + '&from=' + from + '&rtName=' + recipientName + '&rt=' + recipient + '&message=' + message + '&ft=0';
		
		dbProcessUpdater(2, 1, null, 'send_email_box', serialized);
		
	} else {
	
		if (!error)
		{
			new Insertion.Top(frame, '<span id="error_prompt"><p>Please check entry is correct in any highlighted fields.</p></span>');
		}
	}
}

//---------------------------------------------[ DISPLAY IN PROGRESS ]
var inProgress = 
{
	onCreate: function()
	{
		$('in_progress').style.visibility = 'visible';
	},
	
	onComplete: function()
	{
		$('in_progress').style.visibility = 'hidden';
	}
}

// Register 'In Progress' responder.
Ajax.Responders.register(inProgress);

//------------------------------------------------[ AJAX: DB Updater ]
/* dataMode: Read=1/Write=2/Insert=3/Duplicate=4/Delete=5.
	dataFormat: Options=1/Tabular list=2/Search result=3/HTML Edit=4.
	dave: is a dog.
	vdu: visual display unit or element that holds results.
	serialized: serialized data for posting.
*/
function dbProcessUpdater(dataMode, dataFormat, dave, vdu, serialized)
{
	//var cmsSection = $('cms_section').value;
	var options = 'dataMode=' + dataMode + '&dataFormat=' + dataFormat + '&dave=' + dave;
	//options += '&opsPanel=' + selectedPanel();
	if (serialized) options += '&' + serialized;
	var postURL = (vdu != 'send_email_box') ? 'scripts/db.comms.php' : 'admin/send.email.php';
	var myAjax = new Ajax.Updater(vdu, postURL, { method: 'post', parameters: options, evalScripts: false });
}

//------------------------------------------------[ AJAX: DB Request ]
function dbProcessRequest(dataMode, dataFormat, dave, serialized, success)
{
	//var cmsSection = $('cms_section').value;
	var options = 'dataMode=' + dataMode + '&dataFormat=' + dataFormat +'&cmsSection=' + cmsSection + '&dave=' + dave;
	options += '&opsPanel=' + selectedPanel();
	if (serialized) options += '&' + serialized;
	var postURL = 'db.comms.php';
	
	switch (success)
	{
		case 4:
			var myAjax = new Ajax.Request(postURL, { method: 'post', parameters: options, onSuccess: setupConfig });
			break;
		case 3:
			var myAjax = new Ajax.Request(postURL, { method: 'post', parameters: options, onSuccess: setupLinkOptions });
			break;
		case 2:
			var myAjax = new Ajax.Request(postURL, { method: 'post', parameters: options, onSuccess: updateImagePreview });
			break;
		case 1:
			var myAjax = new Ajax.Request(postURL, { method: 'post', parameters: options, onSuccess: startUpload });
			break;
		default:
			var myAjax = new Ajax.Request(postURL, { method: 'post', parameters: options });
			break;
	}
}

//----------------------------------------[ clear: INPUT MESSAGE ]
function clearInputMessage(inputElement, message)
{
	if (inputElement.value == message) inputElement.value = '';
}


