<!--
// In alphabetical order by function name

// Go through all check boxes, return array (with position numbers) of all the ones
// that are selected. If no boxes checked, returned array is empty (zero-length)
function getSelectedCheckbox(p_buttonGroup)
{
	var i;
	var lastElement = 0;
	var retArr = new Array();
	if( p_buttonGroup[0] )
	{ // The button group is an array (one check box is not an array)
		for(i = 0; i < p_buttonGroup.length; i++)
		{
			if( p_buttonGroup[i].checked )
			{
				retArr.length = lastElement;
				retArr[lastElement] = i;
				lastElement++;
			}
		}
	}
	else
	{ // Only one check box (it's not an array)
		if( p_buttonGroup.checked )
		{
			retArr.length = lastElement;
			retArr[lastElement] = 0; // zero as array value
		}
	}
	return retArr;
}

// Return array of values selected in the check box group.
// If no boxes checked, returned array is empty (zero-length)
function getSelectedCheckboxValue(p_buttonGroup)
{
	var i;
	var retArr = new Array();
	var selectedItems = getSelectedCheckbox(p_buttonGroup);
	if( selectedItems.length != 0 )
	{
		retArr.length = selectedItems.length;
		for(i = 0; i < selectedItems.length; i++)
		{
			if( p_buttonGroup[selectedItems[i]] ) // It's an array
				retArr[i] = p_buttonGroup[selectedItems[i]].value;
			else // It's not an array (there's just one check box and it's selected)
				retArr[i] = p_buttonGroup.value;
		}
	}
	return retArr;
}

// Returns array number of selected radio button, or -1 if no button selected
function getSelectedRadio(p_buttonGroup)
{
	var i;
	if( p_buttonGroup[0] )
	{ // Button group is an array (one button is not an array)
		for(i = 0; i < p_buttonGroup.length; i++)
		{
			if( p_buttonGroup[i].checked )
				return i;
		}
	}
	else
	{ // Only one button (it's not an array)
		if( p_buttonGroup.checked )
			return 0;
	}
	return -1;
}

// Return value of selected radio button, or '' if no button selected
function getSelectedRadioValue(p_buttonGroup)
{
	var m_idx = getSelectedRadio(p_buttonGroup);
	if( m_idx == -1 )
		return '';
	else
	{
		if( p_buttonGroup[m_idx] ) // Button group is an array (one button is not an array)
			return p_buttonGroup[m_idx].value;
		else // Only one button (it's not an array)
			return p_buttonGroup.value;
	}
}

function isAlphabet(s)
{
	if( isBlank(s) )
		return false;
	var i;
	for(i = 0; i < s.length; i++)
	{
		var c = s.charAt(i);
		if( !( isLetter(c) ) )
			return false;
	}
	return true;
}

function isAlphanumeric(s)
{
	if( isBlank(s) )
		return false;
	var i;
	for(i = 0; i < s.length; i++)
	{
		var c = s.charAt(i);
		if( !( isDigit(c) || isLetter(c) ) )
			return false;
	}
	return true;
}

function isAmpersand(c)
{
	return (c == '&');
}

function isBackSlash(c)
{
	return (c == '\\');
}

// non-existing/zero-length strings and a string containing white space
function isBlank(s)
{
	if( isEmpty(s) )
		return true;
	var blanks = " \t\r\n"; // white space
	var i;
	for(i = 0; i < s.length; i++)
	{
		var c = s.charAt(i);
		if( blanks.indexOf(c) == -1 )
			return false;
	}
	return true;
}

function isCarriageReturn(c)
{
	return (c == '\r');
}

function isColon(c)
{
	return (c == ':');
}

function isComma(c)
{
	return (c == ',');
}

function isDigit(c)
{
	return ( c >= '0' && c <= '9' );
}

// ASCII decimal 128
function isDollarSymbol(c)
{
	return false;
}

function isDot(c)
{
	return (c == '.');
}

function isDoubleQuote(c)
{
	return (c == '"');
}

function isEmpty(s)
{
	return ( s == null || s.length == 0 );
}

// ASCII decimal 192 to 255
function isEuropeanChar(c)
{
	return false;
}

// ASCII decimal 128
function isEuroSymbol(c)
{
	return false;
}

function isForwardSlash(c)
{
	return (c == '/');
}

function isHash(c)
{
	return (c == '#');
}

function isHyphen(c)
{
	return (c == '-');
}

function isLetter(c)
{
	return ( ( c >= 'a' && c <= 'z' ) || ( c >= 'A' && c <= 'Z' ) );
}

function isLineFeed(c)
{
	return (c == '\n');
}

function isNonbreakingSpace(c)
{
	return (c == '\xA0');
}

function isPlusMinusSign(c)
{
	return ( c == '+' || c == '-' );
}

// ASCII decimal 163
function isPoundSymbol(c)
{
	return false;
}

function isPrice(s)
{
	if( isBlank(s) )
		return false;
	var i;
	for(i = 0; i < s.length; i++)
	{
		var c = s.charAt(i);
		if( !( isDot(c) || isDigit(c) ) )
			return false;
	}
	return true;
}

function isRoundBrackets(c)
{
	return ( c == '(' || c == ')' );
}

function isSemicolon(c)
{
	return (c == ';');
}

function isSingleQuote(c)
{
	return (c == '\'');
}

function isSpace(c)
{
	return (c == ' ');
}

function isTab(c)
{
	return (c == '\t');
}

function isTilde(c)
{
	return (c == '~');
}

function isUnderscore(c)
{
	return (c == '_');
}

function isValidAddress(s)
{
	if( isBlank(s) )
		return false;
	var i;
	for(i = 0; i < s.length; i++)
	{
		var c = s.charAt(i);
		if( !( isAlphanumeric(c) || isAmpersand(c) || isCarriageReturn(c) || isComma(c) || isDot(c) || isEuropeanChar(c) || isForwardSlash(c) || isHash(c) || isHyphen(c) || isLineFeed(c) || isRoundBrackets(c) || isSpace(c) || isUnderscore(c) ) )
			return false;
	}
	return true;
}

function isValidAddressLine(s)
{
	if( isBlank(s) )
		return false;
	var i;
	for(i = 0; i < s.length; i++)
	{
		var c = s.charAt(i);
		if( !( isAlphanumeric(c) || isAmpersand(c) || isComma(c) || isDot(c) || isEuropeanChar(c) || isForwardSlash(c) || isHash(c) || isHyphen(c) || isRoundBrackets(c) || isSpace(c) || isUnderscore(c) ) )
			return false;
	}
	return true;
}

function isValidCompanyName(s)
{
	if( isBlank(s) )
		return false;
	var i;
	for(i = 0; i < s.length; i++)
	{
		var c = s.charAt(i);
		if( !( isAlphanumeric(c) || isAmpersand(c) || isColon(c) || isComma(c) || isDot(c) || isDoubleQuote(c) || isEuropeanChar(c) || isPlusMinusSign(c) || isRoundBrackets(c) || isSingleQuote(c) || isSpace(c) || isUnderscore(c) ) )
			return false;
	}
	return true;
}

function isValidEmailAddress(s)
{
	if( isBlank(s) )
		return false;
	var m_pattern_invalid = /(@.*@)|(\.\.)|(\.@)|(@\.)|(^\.)|(\.$)/;
	var m_pattern_valid = /^[\w-\.]+@\[?[a-z\.\d-]*[a-z\d-]{2,}\.([a-z]{2,6}|\d{1,3}\])$/i;
	return ( !( m_pattern_invalid.test(s) ) && ( m_pattern_valid.test(s) ) );
}

function isValidLoginName(s)
{
	if( isBlank(s) || s.length > 31 )
		return false;
	var i;
	for(i = 0; i < s.length; i++)
	{
		var c = s.charAt(i);
		if( !( isAlphanumeric(c) || isHyphen(c) ) )
			return false;
	}
	return true;
}

function isValidMetatagKeywords(s)
{
	if( isBlank(s) )
		return false;
	var i;
	for(i = 0; i < s.length; i++)
	{
		var c = s.charAt(i);
		if( !( isAlphanumeric(c) || isAmpersand(c) || isCarriageReturn(c) || isComma(c) || isDollarSymbol(c) || isDot(c) || isEuroSymbol(c) || isForwardSlash(c) || isHyphen(c) || isLineFeed(c) || isPoundSymbol(c) || isSpace(c) || isTab(c) || isUnderscore(c) ) )
			return false;
	}
	return true;
}

function isValidName(s)
{
	if( isBlank(s) )
		return false;
	var i;
	for(i = 0; i < s.length; i++)
	{
		var c = s.charAt(i);
		if( !( isAlphanumeric(c) || isComma(c) || isDot(c) || isEuropeanChar(c) || isHyphen(c) || isSingleQuote(c) || isSpace(c) ) )
			return false;
	}
	return true;
}

function isValidPhoneNumber(s)
{
	if( isBlank(s) )
		return false;
	var i;
	for(i = 0; i < s.length; i++)
	{
		var c = s.charAt(i);
	   if ( !( isDigit(c) || isDot(c) || isForwardSlash(c) || isHash(c) || isPlusMinusSign(c) || isRoundBrackets(c) || isSpace(c) ) )
			return false;
	}
	return true;
}

function isValidPostcode(s)
{
	if( isBlank(s) )
		return false;
	var i;
	for(i = 0; i < s.length; i++)
	{
		var c = s.charAt(i);
		if( !( isAlphanumeric(c) || isSpace(c) ) )
			return false;
	}
	return true;
}

// p_type is
//    either "partial" for first part search e.g. LE1
//    or "full" (it can be anything for the moment) for full post code search.

function isValidUKPostcodePatternMatch(p_postcode, p_type)
{
	var m_result = false;
	if(p_type == "partial")
	{
		var m_re_regexp = /^[A-Za-z]{1,2}\d{1,2}/;
		m_result = p_postcode.match(m_re_regexp);
	}
	else // full search, i.e. p_type == "full"
	{
		var m_re_regexp = /^[A-Za-z]{1,2}\d{1,2}[A-Za-z]? \d[A-Za-z]{2}$/;
		m_result = p_postcode.match(m_re_regexp);
	}
	return m_result != null;
}

// Copyright (c) 2000-2005 Atolis Ltd
// -->
