// EXAMPLES OF HOW TO CALL THESE FUNCTIONS FROM THE PRIMARY VALIDATE SCRIPT ARE AT THE BOTTOM

//  REGULAR EXPRESSIONS USED IN THESE FUNCTIONS
var emailval = /[@]/ ; var numval = /^\d*\.?\d*$/ ; var alphaval = /^\D+$/ ;
var dateval = /^\d{2}\/\d{2}\/(\d{2}|\d{4})$/ ; var priceval = /^\d*\.?\d{0,2}$/ ;
var DetectBulletval = /•/g ; var DetectSingleQuote = /'/g ; var DetectDoubleQuote = /"/g ; var DetectPipe = /[|]/g ;

//  CHECKS TO SEE IF THE SPECIFIED FORM ELEMENT CONTAINS A VALID AUSTRALIAN DATE, FORMATS : dd/mm/yy OR dd/mm/yyyy
function isnotdate(fn1,fe1,msg) {
	var path = document[fn1][fe1].value
	if( (path != "") && (!(dateval.test(path)))  ) 
		{ error = 1 ; errortext += "* " + msg + " must be entered useing the following format dd/mm/yy OR dd/mm/yyyy\n" ; }
}

//  CHECKS TO SEE IF THE SPECIFIED FORM ELEMENT IS NOT A NUMBER
function isnotnumber(fn1,fe1,msg) {
	var path = document[fn1][fe1].value
	if( (path != "") && (!(numval.test(path)))  ) 
		{ error = 1 ; errortext += "* " + msg + " must be entered as a number only\n" ; }	
}

//  CHECKS TO SEE IF THE SPECIFIED FORM ELEMENT CONTAINS ONLY ALPHA CHARACTERS
function isnotalpha(fn1,fe1,msg) {
	var path = document[fn1][fe1].value
	if( (path != "") && (!(alphaval.test(path)))  ) 
		{ error = 1 ; errortext += "* " + msg + " must be entered without any numbers\n" ; }	
}

//  CHECKS TO SEE IF THE FIRST LETTER ENTERED IS ONLY AN ALPHA CHARACTER
function firstletterisalpha(fn1,fe1,msg) {
	var path = document[fn1][fe1].value
	if( (path != "") && (!(firstletteralpha.test(path)))  ) 
		{ error = 1 ; errortext += "* The first character in " + msg + " must be entered as a letter only\n" ; }	
}

//  CHECK IF THE SELECT FORM ELEMENT HAS AN OPTION(S) SELECTED
function checkselect(fn1,fe1,selindex,msg) {
	var path = document[fn1][fe1] ;
	var fe1_lenth = path.length ;

	if(path.length <= (selindex + 1))
		{ error = 1 ; errortext += "* Add some valid options to the " + msg + " option list first\n" ; }
	else if(path.selectedIndex <= selindex)
		{ error = 1 ; errortext += "* Please select a valid option from the " + msg +" option list\n" ; }
}

//  CHCK IF THE SELECT FORM ELEMENT HAS A VALID OPTION(S) SELECTED, AND CONFIRM IF THE USER WANTS TO DELETE SELECTED OPTION(S)
function checkdelete(fn1,fe1,selindex,msg) {
	var path = document[fn1][fe1] ;
	var fe1_lenth = path.length ;

	if(path.length <= (selindex + 1))
		{  error = 1 ; errortext += "* Add some valid options to the " + msg + " option list first\n" ; }
	else
	{
		if(path.selectedIndex <= selindex)
			{ error = 1 ; errortext += "* Please select a valid option from the " + msg +" option list\n" ; }
		else
			{		
				var promptfordelete = "* Are you sure you want to PERMANENTLY DELETE the following record(s) ?\n"
				for(var i = 0; i < fe1_lenth; i++)
				{
					if (path[i].selected)
						{ promptfordelete += "   " + path.options[i].text + "\n" ; }	
				}				
				if( !confirm(promptfordelete) )
					{ error = 1 ; submitform = false ; }
			}
	}
}

//  CHECKS TO SEE IF THE SPECIFIED FORM ELEMENT CONTAINS A VALID EMAIL ADDRESS
function isnotemail(fn1,fe1,msg) {
	var path = document[fn1][fe1]
	if( path.value != "" && !emailval.test(path.value) )	
		{ error = 1 ; errortext += "* " + msg + " must be entered correctly\n" ; }
}

function isnotprice(fn1,fe1,msg) {
	var path = document[fn1][fe1]
	if( path.value != "" && !priceval.test(path.value) )	
		{ error = 1 ; errortext += "* " + msg + " must be entered correctly\n" ; }
}


function ReplaceCharacters() {

	for(formIndex = 0 ; formIndex < document.forms.length ; formIndex++ ) {
		for(formElementsIndex = 0 ; formElementsIndex < document.forms[formIndex].elements.length ; formElementsIndex++ ) {
			fep1 = document.forms[formIndex].elements[formElementsIndex] ;
			if(fep1.type == "text" || fep1.type == "hidden" || fep1.type == "password") {
				fep1.value = fep1.value.replace(DetectBulletval, "&#8226;") ;
				fep1.value = fep1.value.replace(DetectSingleQuote, "") ;
				fep1.value = fep1.value.replace(DetectDoubleQuote, "") ;
				fep1.value = fep1.value.replace(DetectPipe, "&#124;") ;
			}

			if(fep1.type == "textarea") {
				fep1.value = fep1.value.replace(DetectBulletval, "&#8226;") ;
				fep1.value = fep1.value.replace(DetectPipe, "&#124;") ;
			}
		}
	}
}

/**** EXAMPLES OF HOW TO CALL THESE VALIDATE FUNCITONS ****

// CHECKS TO SEE IF THE SPECIFIED FORM ELEMENT CONTAINS A VALID AUSTRALIAN DATE, FORMATS : dd/mm/yy OR dd/mm/yyyy
	isnotdate(fn1,'date_of_birth','DATE OF BIRTH') ;

// CHECK IF THE FIRST LETTER IN A STRING IS AN ALPHA CHARACTER
	firstletterisalpha(fn1,'username','USER NAME')

// CHECK IF THE STRING CONTAINS ONLY INTEGER CHARACTERS
	isnotnumber(fn1,'fax','FAX NUMBER') ;

/// CHECK IF THE STRING CONTAINS ONLY ALPHA CHARACTERS
	isnotalpha(fn1,'cardname','CREDIT CARD NAME') ;

/// CHECK IF THE SELECT FORM ELEMENT HAS AN OPTION(S) SELECTED
	checkselect(fn1,'cardtype',1,'CARD TYPE') ;

/// CHCK IF THE SELECT FORM ELEMENT HAS A VALID OPTION(S) SELECTED, AND CONFIRM IF THE USER WANTS TO DELETE SELECTED OPTION(S)
	checkdelete(fn1,'positionid',1,'STAFF POSITION')

/// CHECKS TO SEE IF THE SPECIFIED FORM ELEMENT CONTAINS A VALID EMAIL ADDRESS
	isnotemail(fn1,'email','EMAIL')

/// CHECKS TO SEE IF THE SPECIFIED FORM ELEMENT CONTAINS A VALID PRICE
	isnotprice(fn1,'price','PRICE')
*/