// 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}$/ ; var priceval = /^\d*\.?\d{0,2}$/ ;
var DetectBulletval = /•/g ; var DetectSingleQuote = /'/g ; var DetectDoubleQuote = /"/g ; var DetectPipe = /[|]/g ;
var timeval = /^\d{1,2}:\d{2} {0,1}PM|AM$/i ;


//  CHECKS TO SEE IF THE SPECIFIED FORM ELEMENT CONTAINS A VALID TIME, FORMATS : h:mm OR hh:mm
function isnottime(fn1,fe1,msg) {
	var path = document[fn1][fe1].value
	if( (path != "") && (!(timeval.test(path)))  ) 
		{ error = 1 ; errortext += "* " + msg + " must be entered useing the following format hh:mm AM OR hh:mm PM\n" ; }
}

//  CHECKS TO SEE IF THE SPECIFIED FORM ELEMENT CONTAINS A VALID AUSTRALIAN DATE, FORMATS : dd/mm/yy 
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\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 == 0)
		{ error = 1 ; errortext += "* Add some valid options to the " + msg + " option list first\n" ; }
	else if(path.selectedIndex == -1)
		{ 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 == 0)
		{  error = 1 ; errortext += "* Add some valid options to the " + msg + " option list first\n" ; }
	else
	{
		if(path.selectedIndex == -1)
			{ 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;") ;
			}
		}
	}
}


function SimulateTextBox(e, fe1, fn1, size){

	var returnvalue = true ; 
	var fp1 = document[fn1] ;

	if(fe1.value.length >= size) {
		fe1.value = fe1.value.substr(0,size) ;
	}

	// LIMIT THE NUMBER OF CARACTERS
	if (!e.which && fe1.value.length>=size) {
		returnvalue = false ;
	}

	// BLOCK THE ENTER KEY
	if(e.keyCode == 13){ 
		
		validate(fn1,true) ;
		//fp1.submit() ;
		returnvalue = false ;
	}

	return returnvalue ;

	// EXAMPLE OF USE !!! NOTE, USE BOTH onkeypress AND onblur : onkeypress="return SimulateTextBox(event, this, this.form.name, 255)" onblur="return SimulateTextBox(event, this, this.form.name, 255)"
}


/**** 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')
*/
