/* vim:set ts=4: */
/**
 * ASC Steel Deck - Common JavaScript Library (Generic & Unspectacular Code)
 */

function doSort(s)
{
	var f = document.forms.theForm;
	f.sort.value = s;
	f.submit();

	return false;
}

function doSubmit()
{
	var f = document.forms.theForm;
	f.submit();
}

function resetForm()
{
	var f = document.forms.theForm;

	f.sort.value = '';
	f.ft.value = '6';
	f['in'].value = '0';
	f.spans.value = '3';
	f.shear.value = '1';
	f.verticalLoad.value = '1';
	f.maxFlex.value = '';
	f.laborRate.value = '$65.00';
	f.deflection.value = '240';

	// reset the filters (beware the brackets in name for PHP array decode)
	var i;
	for (i = 1; i <= 12; ++i) {
		var so = f['filter[' + i + '][]'].options;

		var j;
		for (j = 0; j < so.length; ++j) so[j].selected = false;
	}
}

// document.onload entry point
function main()
{
	// initialize column filter handlers
	ColumnFilter.initColumns(9);
}


// Class: ColumnFilter
with ({
	// private static data-space (ie can't see this, so it's unused)
	width: 250 + 35 // including waste space for borders, margins, and such
}) {

	// constructor
	function ColumnFilter(id)
	{
		with ({
			// private instance data-space
			columnID: null,
			domNode:  null,
			visible:  false
		}) {
			// START: Public Definition
	
			this.show = function()
			{
				domNode.style.display = 'block';
				visible = true;
			}
	
			this.hide = function()
			{
				domNode.style.display = 'none';
				visible = false;
			}
	
			this.isVisible = function()
			{
				return visible == true;
			}
	
			this.setPosition = function(x, y)
			{
				domNode.style.top  = y + 'px';
				domNode.style.left = x + 'px';
			}
	
			this.clickHandler = function(e)
			{
				if (window.event) {
					// internet explorer
					var x = window.event.clientX;
					var y = window.event.clientY;				
				} else {
					// everone else, afaik
					var x = e.pageX;
					var y = e.pageY;
				}

				var sx = window.innerWidth;

				// make sure the pop-up fits (width-wise)
				if (x + 285 > sx) x = sx - 285;
				if (x < 0) x = 0;

				this.setPosition(x, y);
				this.show();
			}
	
			// STOP:  Public Definition
			// START: Instance Initialization
	
			columnID = id;
			domNode  = document.getElementById('columnFilter' + id);
	
			// STOP:  Instance Initialization
		}
	}

	// START: Public Static Definition

	ColumnFilter.columns = [];

	// hides all ColumnFilter instances that are visible
	ColumnFilter.hideColumns = function()
	{
		var i, count = ColumnFilter.columns.length;

		for (i = 0; i < count; ++i) {
			if (
				typeof ColumnFilter.columns[i] == 'object'
				&& ColumnFilter.columns[i].isVisible()
			) ColumnFilter.columns[i].hide();
		}
	}

	// instantiates a ColumnFilter class for each column in "columns"
	ColumnFilter.initColumns = function(upperRange)
	{
		var i;
		for (i = 1; i <= upperRange; ++i)
			ColumnFilter.columns[i] = new ColumnFilter(i);
	}

	// STOP:  Public Static Definition
	// START: Public Static Initialization

	//

	// STOP:  Public Static Initialization
}
