/* -----------------------------------------------------------------------------
	FORM VALIDATION FUNCTIONS
----------------------------------------------------------------------------- */
function validate_notEmpty( fField ) {
	return (( fField.value != "" ) ? 1 : 0 )
}

function validate_isNumber( fField ) {
	if( fField.value == "" ) return 0;
	
	var firstNumberChar = "+-.0123456789";
	var numberChars = ".0123456789";
	var valIsNumber = 1;
	
	if (firstNumberChar.indexOf( fField.value.charAt( 0 )) < 0) {
		valIsNumber = 0;
	} else {
		for( var i = 1; i < fField.value.length; i++ ) {
			if (numberChars.indexOf( fField.value.charAt( i )) < 0) {
				valIsNumber = 0;
				break;
			}
		}
	}
	
	return valIsNumber;
}


function validate_isPositiveNumber( fField ) {
	if( !validate_isNumber( fField )) return 0;
	
	var valIsNumber = 1;
	
	if( fField.value < 0) { valIsNumber = 0 }
	
	return valIsNumber;
}


function validate_isNegativeNumber( fField ) {
	if( !validate_isNumber( fField )) return 0;
	
	var valIsNumber = 1;
	
	if( fField.value >= 0) { valIsNumber = 1 }
	
	return valIsNumber;
}


function validate_optionChecked( fField ) {
	var valIsSelected = false;
	
	for( var i = 0; i < fField.length; i++ ) {
		if( fField[i].checked ) { valIsSelected = 1; break; }
	}
	
	return valIsSelected;
}


function validate_optionCheckedCount( fField ) {
	var optionCount = 0;
	
	for( var i = 0; i < fField.length; i++ ) {
		if( fField[i].checked ) { optionCount++; }
	}
	return optionCount;
}


function validate_newPassword( fField, confirmfField ) {
	return( fField.value == confirmfField.value )
}


function validate_optionSelected( fField ) {
	var optionCount = 0;
	
	//if((fField.options[0].value != 'null_value_selected')
		//&& (fField.options[0].selected)) { optionCount++; }
	
	for( var i = 0; i < fField.options.length; i++ ) {
		if((fField.options[i].value != 'null_value_selected') 
			&& fField.options[i].selected ) {
			optionCount++;
		}
	}
	
	return optionCount;
} 


function errorMessageHandler( array_errorMsg ) {
	var errorString = array_errorMsg.length
		+ ( (array_errorMsg.length > 1) ? " issues were" : " issue was" )
		+ " found with your form:\n\n";
		
	for( var i = 0; i < array_errorMsg.length; i++ ) {
		errorString += ' * ' + array_errorMsg[i] + '\n\n';
	}

	alert( errorString );
}


function getFormFieldValue( fField ) {
	if( fField.type == "select-one" ) { return fField.options[ fField.options.selectedIndex ].value; }
	if( fField.type == "text" ) { return fField.value; };
	
	return -1;
}


// Override this function
function validateForm( formObject ) { }

function NB_formValidateErrorHandler( arrErrorMsgs, szErrorString ) {

	if( typeof szErrorString == "undefined" )
	{
		var szErrorString = arrErrorMsgs.length
			+ ((arrErrorMsgs.length > 1 ) ? " errors were" : " error was" )
			+ " detected in your form:";
	}
	
	szErrorString += "\n\n";
	

	for( var i = 0; i < arrErrorMsgs.length; i++ ) {
		szErrorString += ' * ' + arrErrorMsgs[i] + '\n\n';
	}

	alert( szErrorString );

}


function NB_formValidate(formObject){}


function NB_formFieldValueGet( objField ) {

	// GET VALUE OF SELECT LIST (SINGLE ITEM SELECTION)
	if( objField.type == "select-one" )
	{
		if (objField.options.length > 0) {
			return objField.options[ objField.options.selectedIndex ].value;
		} else {
			return "";
		}
	}	

	// GET VALUE OF SELECT LIST (MULTIPLE ITEM SELECTION)
	if( objField.type == "select-multiple" )
	{ 
		var szReturn = "";
		for( var i = 0; i< objField.options.length; i++ )
		{
			if( objField.options[ i ].selected )
			{
				szReturn += objField.options[i].value + ",";
			}
		}

		if( szReturn.length > 0 ) { szReturn = szReturn.substring( 0, szReturn.length-1); }

		return szReturn;
	}
	
	// GET VALUE OF A SINGLE CHECKBOX IF IT IS CHECKED
	if( objField.type == "checkbox" ) {
		return ((objField.checked) ? objField.value : "" );
	}
	
	// GET VALUE OF MULTIPLE CHECKBOXES
	if(
		(typeof objField.type != "string") &&
		(objField.length > 0) &&
		(objField[ 0 ] != null) &&
		(objField[ 0 ].type == "checkbox")
	) {
		var arrSelected = new Array();
	
		for (var i=0; i< objField.length; i++) {
			if( objField[i].checked ) { arrSelected[ arrSelected.length ] = objField[i].value; }
		}
		
		return arrSelected.toString();
	}

	// GET VALUE OF RADIO BUTTONS
	if(
		(typeof objField.type != "string") &&
		(objField.length > 0) &&
		(objField[ 0 ] != null) &&
		(objField[ 0 ].type == "radio")
	) {
		for (var i=0; i< objField.length; i++) {
			if( objField[i].checked ) { return objField[i].value; }
		}
		return "";
	}


	// GET VALUE OF STRING TYPES - HIDDEN, PASSWORD, TEXT, TEXTAREA
	if( typeof objField.type == "string" ) { return objField.value; };

	// IF NO MATCH, RETURN EMPTY STRING
	return "";
}


function NB_formFieldIsNotEmpty( objField ){ return(( NB_formFieldValueGet( objField ) != "" )?1:0) }



function NB_formFieldIsNumber( fField )
{
	if(fField.value=="")return 0;
	var firstNumberChar="+-.0123456789";
	var numberChars=".0123456789";
	var valIsNumber=1;
	
	if(firstNumberChar.indexOf(fField.value.charAt(0))<0){
		valIsNumber=0;
	}
	
	for(var i=1;i<fField.value.length;i++){
		if(numberChars.indexOf(fField.value.charAt(i))<0){valIsNumber=0;break;}
	}
	
	return valIsNumber;
}



function NB_formFieldIsPositiveNumber( fField )
{
	if(!NB_formFieldIsNumber( fField )) return 0;
	
	var blnIsNumber = 1;
	
	if( fField.value < 0 ){ blnIsNumber = 0 }
	return blnIsNumber;
}



function NB_formOptionSelect( objField, vValueToSelect ) {

	// ONLY PROCESS SELECT CONTROLS
	if((objField.type == "select-one") || (objField.type == "select-multiple" ))
	{ 
		for( var i = 0; i< objField.options.length; i++ )
		{
			objField.options[ i ].selected
				= ( objField.options[ i ].value == vValueToSelect );
		}
	}
}


function NB_formPasswordCompare( objField, objFieldConfirm ) { 
	return( objField.value == objFieldConfirm.value )
}


function NB_stringTrim( szString ) {
	return szString.replace(/^\\s+|\\s+$/,'');
}