/* Starfield Web Controls Events Scripts */

function swc_getEvent(evt)
{
	return (evt ? evt : (window.event ? window.event : null));
}

function swc_keyCode(evt)
{
	return (evt.charCode ? evt.charCode : (evt.which ? evt.which : evt.keyCode));
}

function swc_isEnter(key)
{
	return (key == 13);
}

function swc_isDigit(key)
{
	return ((key >= 48) && (key <= 57));
}

function swc_eatEnterKey(evt)
{
	evt = swc_getEvent(evt);
	if (evt && swc_isEnter(swc_keyCode(evt)))
	{
		swc_cancelEvent(evt);
		return true;
	}
	return false;
}

function swc_cancelEvent(evt)	// cancels an event & prevents further event bubbling
{
	if (evt)
	{
		if (evt.preventDefault)
		{
			evt.preventDefault();
			evt.stopPropagation();
		}
		else	// IE
		{
			evt.returnValue = false;
			evt.cancelBubble = true;
		}
	}
	return false;
}

function click(ctrl)
{
	if (!ctrl)
		return;

	if (isString(ctrl))
	{
		ctrl = swc_getById(ctrl);
		if (!ctrl)
			return;
	}

	if (ctrl.click)
		ctrl.click();
	else
	{
		var evt = document.createEvent('MouseEvents');
		evt.initEvent('click', true, true);
		ctrl.dispatchEvent(evt);
	}
}

function swc_digitFilter(evt)
{
	evt = swc_getEvent(evt);
	if (!evt)
		return true;

	if (!isIE() && swc_isNavigation(evt.keyCode))
		return true;

	var key = swc_keyCode(evt);
	var cancel = (evt.shiftKey || !swc_isDigit(key));
	return (cancel ? swc_cancelEvent(evt) : true);
}

function swc_isNavigation(key)
{
	switch (key)
	{
		case 9:   // tab
		case 16:  // shift
		case 46:  // Delete
		case 8:   // Backspace
		case 33:  // page up
		case 34:  // page down
		case 35:  // end
		case 36:  // home
		case 37:  // up
		case 38:  // right
		case 39:  // down
		case 40:  // left
			return true;
		default:
			return false;
	}
}
