//(c)Alex Barnard 2000-2006
//--------------------------------------------------------------------------------
var CONST_FORMAT_POSTCODE="A"
var CONST_FORMAT_BOOLEAN="B"
var CONST_FORMAT_CHARACTER="C"
var CONST_FORMAT_DATE="D"
var CONST_FORMAT_EMAIL="E"
var CONST_FORMAT_FLOAT="F"
var CONST_FORMAT_USERNAME="G"
var CONST_FORMAT_ID="I"
var CONST_FORMAT_FILE="L"
var CONST_FORMAT_MEMO="M"
var CONST_FORMAT_INT="N"
var CONST_FORMAT_OPTION="O"
var CONST_FORMAT_PHONE="P"
var CONST_FORMAT_SMALLINT="S"
var CONST_FORMAT_TIME="T"
var CONST_FORMAT_URL="U"
var CONST_FORMAT_IMAGEPATH="V"
var CONST_FORMAT_YESNO="Y"


var CONST_FORM_FIELD_ID="Field"
var CONST_FORM_KEEP_FIELD="X0_KeepRecord"
var JAVASCRIPT_CHECK_FIELD="X0_JavaProcessed"
var LIMIT_TO_THESE_CHARS=""

var g_blur=0
var g_FORM=true

function _msg(txt){
	window.status=txt
	return true
}	
function _testBit(me,iBit){
	return (parseInt(me.name.substr(1,1),16)&iBit)!=0
}	
//--------------------------------------------------------------------------------
function _FIELDkeyPress(me,e,parseChars,param,param2){
	//get keypressed	
	var c = document.layers ? e.which 
            : document.all ? event.keyCode
            : e.which;

	var cc=String.fromCharCode(c)
	window.status=c+" "+cc
	var meFMT=_format(me)

	if(c==8||c==9||c==0||c==13)
		return true
	if(parseChars)
		if(!eval("/["+parseChars+"]/.test(cc)"))
			return false

	switch(meFMT){
		case CONST_FORMAT_TIME:
			return /[\dpam:.]/i.test(cc)
		case CONST_FORMAT_DATE:
			if(/[\d,.\/]/.test(cc)){
				c=me.value.match(/\D/g)
				if(c)
					if(c.length>1)
						return /\d/.test(cc)
				return true			
			}
			return false
		case CONST_FORMAT_USERNAME:
			return /[\w-]/.test(cc)
		case CONST_FORMAT_POSTCODE:
			return /\w+|\s+/.test(cc)
		case CONST_FORMAT_PHONE:
			return /[\d ext]/.test(cc)
		case CONST_FORMAT_EMAIL:
			return /[\w\.@\-&']/.test(cc)
		case CONST_FORMAT_URL:
		case CONST_FORMAT_IMAGEPATH:
			return /[\w:\/\.\-&%]/.test(cc)
		case CONST_FORMAT_CHARACTER:
			return true
		case CONST_FORMAT_INT:
			return /[\d,]/.test(cc)
		case CONST_FORMAT_SMALLINT:
			return /\d/.test(cc)
		case CONST_FORMAT_MEMO:
			if(param2)
				return (me.value.length<param)
			else{
				var n=me.value.split(/\s/g).length
				return (n<param||n==param&&c!=32)
			}	
		case CONST_FORMAT_FLOAT:
			if(/[\d,.]/.test(cc))
				if(c==46)//check if decimal point added
					return (me.value.indexOf(".")<1)
				else	
					return true	
	}
	return false
}
function _getFieldName(me){
	return "["+me.title+"]"
}
function _FIELDupperCase(me){
	me.value=me.value.toUpperCase()
	return true
}
function _FIELDlowerCase(me){
	me.value=me.value.toLowerCase()
	return true
}
function _FIELDfirstUpper(it){
	var txt=it.value
	if(!/[a-z]/.test(txt))txt=txt.toLowerCase()
	it.value=txt.replace(/(\w)(\w+)?(')?(\w+)?/g,function(a,b,c,d,e){
//alert(a+"\nb:"+b+"\nc:"+c+"\nd:"+d+"\ne:"+e+"\nf:"+f+"\ng:"+g)
	if(/^(and|in|is|of|or)$/i.test(a))return a
	if(!d)d=""
	if(!c)c=""
	if(!e)e=""
	if(e.length>1)e=e.substr(0,1).toUpperCase()+e.substr(1)
	return b.toUpperCase()+c+d+e
	})
	return true
}
//====CHECKS==========
function fnChkNumber(me,pReq){
	var ok=true
	var f=_format(me)
	var n=_getFieldName(me)
	var v=me.value
	
	if(!v&&!pReq)
		return true
	v=v.replace(/,/g,"")
	if(f!=CONST_FORMAT_FLOAT)
		v=parseInt(v)
	else
		v=parseFloat(v)	
	if(isNaN(v)){
		_alert("Invalid Format",n+" : Numerical entry.\n\nPlease re-type your entry.")
		ok=false
	}else if(f==CONST_FORMAT_SMALLINT)
		if(v>255){
			_alert("Invalid Entry",n+" : Numerical entry.\n\nValid entry must between 0 and 255")
			me.value=255
			ok=false
		}
//alert(v)	
	if(!ok)
	 	_setFocus(me)
	return ok
}
//--------------------------------------------------------------------------------
function fnChkText(theField,flgReq){
	return true
}		
//--------------------------------------------------------------------------------
function fnChkFieldLen(me,pLen){
	var msg="" 

	if(me.value.indexOf(" ")>=0)
		msg+="Must not contain spaces.\n"
	if(me.value.length<pLen)
		msg+="Must be "+pLen+" characters or more."
	if(msg){
		_alert("Invalid Format",_getFieldName(me)+" : Text entry\n\n"+msg)
		_setFocus(me)		
		return false
	}	
	return true	
}		
//--------------------------------------------------------------------------------
function fnChkDate(me,flgReq){
	var msg=""
	var n = me.value;

	if(!flgReq && !n)
		return true

	n=n.replace(/(\s|[A-z])/g,"")
	n=n.replace(/\D/g,"/")
	n=n.match(/(\d+)\/(\d+)\/(\d{2,4})/)
	if(n){
		for(i=1;i<n.length;i++)
			n[i]=n[i]*1
			
		if(n[3]<100){
			//2 DIG YEAR ADD ON
			n[3]+=(n[3]<50)?2000:1900
		}
		if(n[3]>=1000){
			//check date entered is valid
			if (n[2] == 2 ){	//if February
				//if leap Year (century / 400) OR (Year / 4)
				if (( n[3] % 100 ==0 && n[3] % 400==0)||( n[3] % 4==0 && n[3] % 100 !=0)){
					if (n[1] > 29){
						//if leap Year check Feb <=29 g_n[1]s
						msg="February has only 29 days in "+n[3]
					}
				}else if (n[1] > 28){
					//ordinary Year - check Feb <=28 days			
					msg="Feburary has only 28 days in "+n[3]
				} 
			}		 
			//Month in range
			if(n[2]>12||n[2]<1){
				msg+="\nMONTH: must be in the range 1-12."
			}	
			//check Month with only 30 dayss
			if ((n[2] == 4) || (n[2] == 6) || (n[2] == 9) || (n[2] == 11)){
				//if >30 Days
				if ( n[1] > 30 )	{
					msg+="\nMONTH "+n[2]+" has only 30 days"
				}
			}	
			if(n[1]<1||n[1]>31){
				msg+="\nDAY: must be a number between 1 and 31."
			}	
		}else
		msg=":"
	}else
		msg=":"
	if(msg){
		if(msg!=":")
			msg=msg+"\n\n"	
		msg=msg+"Valid date format : dd/mm/yyyy  (day/month/year)"
		_alert("Invalid Format",_getFieldName(me)+" : Date entry.\n\n"+msg)
		_setFocus(me)
		return false
	}

	me.value=((n[1]<10)?"0":"")+n[1]+"/"+((n[2]<10)?"0":"")+n[2]+"/"+n[3]
	return true
}
//----------------------------------------------------------------------------
function fnChkURL(me,pReq){
	me.value=me.value.replace(/(http:)*(\/\/)*/gi,"")
	return (!pReq)?true:(me.value)
}
//----------------------------------------------------------------------------	
function fnChkPhone(me,pReq){
	if(!me.value&&!pReq)
		return true
	if(/[^0-9 ext]|(^[^\d ])|([^\d ]$)|(((\de)|e[\d ])|([\d ]x)|(x[\d ])|([\d ]t)|(t\d))/.test(me.value)){
		_alert("Invalid Format",_getFieldName(me.name)+" : Telephone Number entry.\n\nValid formats being :-\n012 1202 0202\n0121 20202022 ext 115")
		_setFocus(me)
		return false
	}
	return true
}
//------------------------------------------------------------------------------
function fnChkEmail(me,pReq){	

	if(!me.value&&!pReq)
		return true
	me.value=me.value.replace( /([‘’`])/g,"'").toLowerCase()
	var f1 = /(@.*@)|(@\.)|(^@)|(\.@)|(@$)|(^\.)|(\.\.)|(\.$)/;
	var f2 = /^.+\@[a-z0-9\-\.]+\.([a-z]{2,4}|[0-9]{1,3})$/;
	if (!f1.test(me.value) && f2.test(me.value)){
		return true
	}	
	var n=_getFieldName(me)
	_alert("Invalid Format",n+" : Email Address\n\nYou have entered an badly formatted email address. Please check the "+n+" entry again.");
	_setFocus(me)
	return false;
}
//--------------------------------------------------------------------------------
function fnChkPostcode(me,pflgReq)	{
	var f=/\s{2,}/g
	var pc=me.value.replace(f," ")
	if(!pc&&!pflgReq)
		return true
	f=/^([a-z]{1,2}\d{1,2}[a-z]?)[ ](\d\d?[a-z]{2})$/i
	if(!f.test(pc)){
		var n=_getFieldName(me)
		_alert("Invalid Format",n+" : Postcode\n\nValid Postcode format : ''L(L)n(n)(L) <space> n(n)LL''\n\nL = letter\nn = Number 0-9\n( ) = optional.\n\nValid Examples : ''A1 2BC'', ''D34 5EF'', ''GH6 7IJ'', ''KL8 99MP'', ''QR2T 3UV''");
		_setFocus(me)
		return false;
	}
	me.value=pc.toUpperCase()
 	return true;
}
//------------------------------------------------------------------------------------
function fnChkTime(me,pReq){
	var v=me.value.toLowerCase()
	var flg=false
	var time=/(\d+)([:.])*(\d+)*(\w+)*/
	var a=v.match(time) 

	if(!v&&!pReq)
		return true

	if(a!=null){	
		if(!isNaN(a[1])){
			a[1]=parseInt("0"+a[1],10)
			if(a[1]<24){
				a[3]=parseInt("0"+a[3],10)
				if(a[3]<60)
					if(!a[4]){
						if(a[1]<10&&a[0].substr(0,1)!="0")
							a[1]+=12
						flg=true	
					}else		
						if(a[4]=="am"){
							if(a[1]==12)
								a[1]=0
							if(a[1]<12)
								flg=true
						}else{
							if(a[4]=="pm")
								if(a[1]<13){
									if(a[1]<12)
										a[1]=a[1]+12
									flg=true
								}	
						}			
					}			
			}			
	}				
	if(flg){
		if((""+a[1]).length==1)
			a[1]="0"+a[1]
		if((""+a[3]).length==1)
			a[3]="0"+a[3]
		me.value=a[1]+":"+a[3]
	}else{
		_alert("Invalid Format",_getFieldName(me)+" : Time entry.\n\nValid examples : 1.20pm , 1:20pm ,13.20 , 13:20")	
		_setFocus(me)
		return false		
	}		
	return true
}	
//----------------------------------------------------------------------------
function _FIELDwordCount(me,minUnit,maxUnit,flgChars){	
	var MARKER="|--->"
	var sName=_getFieldName(me)
	var txt=me.value
	var tlen=0

	if(!_testBit(me,1)&&!me.value)
		return true

	if(flgChars){
		var sUnit="character"
		var len=txt.length
		tlen=maxUnit
	}else{
	    var sUnit="word"
		var words=txt.split(/[\S]+/g)
		var gaps=txt.split(/[\s]+/g)
		var len=words.length
	}	

	if(len<minUnit){
		_alert("Invalid Entry",sName+" Text entry.\n\nYour entry MUST contain MORE than "+minUnit+" "+sUnit+"s.")
		_setFocus(me)
//		me.value=me.value+"1"
		return false
	}	
	if(len>maxUnit) {
		if(!flgChars)
			for(var j=0;j<maxUnit;j++)
				tlen+=words[j].length+gaps[j].length


		if(confirm("Your entry for "+sName+" contains "+len+" "+sUnit+"s.\nThe maximum number of "+sUnit+"s permitted is "+maxUnit+".\n\nClick [OK] to automatically reduce your entry to "+maxUnit+" "+sUnit+"s.\n\nClick [Cancel] to edit the entry so that it contains "+maxUnit+" "+sUnit+"s or less.")){
			me.value=(flgChars)?(txt.substring(0,tlen-3)+"..."):txt.substring(0,tlen)
			return true
		}else{	
			alert("The excess text (as marked from '"+MARKER+"') must be removed from your entry\nbefore the form can be submitted.")
			me.value=txt=txt.substring(0,tlen)+MARKER+txt.substring(tlen,txt.length)
			_setFocus(me)
			if(document.all){
				var tr=me.createTextRange()
				if(tr.findText(MARKER)){
					tr.scrollIntoView()
					tr.moveEnd("textedit")	
					tr.select()
				}
				
			}else{
				me.selectionStart=me.value.indexOf(MARKER)
				me.selectionEnd=txt.length
			}							
			return false				
		}	
	}
	return true
}


//--------------------------------------------------------------------------------
function fnChkForm(theForm,flgForceReq){
	//if onChange active - stop form process
	if(!g_FORM)
		return false
	var flgErr=false
	var iPassPtr=-1
	var chk=0
	var objEg
	var objE
	var sBox
	var iNotFilled=0
	var iFilledField=0
	var err=""
	var firstField=-1
	var maxE=theForm.elements.length
	var fType
	var sName=""
	var flgReq
	var flg

	for(var i=0;i<maxE;i++){
		objE=theForm.elements[i]
		//alert(objE._editorID)
		//get Editor Value
		if(objE._editorValue)
			objE._editorValue()
		//if(objE._editorID)
		//	objE.value=__oED[objE._editorID].oED.document.body.innerHTML
		fType=_format(objE)		
		flg=false
		//if(objE.name.indexOf(CONST_FORM_KEEP_FIELD)==0)
		///	flgNewRecord=true
		if(fType!="X")
			if(_testBit(objE,2))
				if(objE.type!="hidden"&&!objE.disabled&&_isTABLEcellVisible(objE.id))
//					if(objE.name.substring(0,1)!=CONST_FORMAT_BOOLEAN){
						
						if(sName.indexOf(objE.name)<0){
							sName=sName+","+objE.name
							if(fType==CONST_FORMAT_OPTION){
								for(j=0;j<theForm[objE.name].length;j++)
									if(theForm[objE.name][j].checked)
										flg=true
							}else if (fType==CONST_FORMAT_BOOLEAN){
								flg=objE.checked
							}else flg=(objE.value!="")
							if(flg)	
								iFilledField++			
							else if(_testBit(objE,1)){
									iNotFilled++
									err+="\n"+_getFieldName(objE)
									if(firstField<0)
										firstField=i
							}		
						}
//					}	
	}		
	if(flgForceReq&&iFilledField==0)iFilledField=1
//	alert(iFilledField+"\n"+sName+"\n"+iFilledField+"&&"+iNotFilled+"!=0")
	if(iNotFilled&&iFilledField!=0){
		_alert("Missing Entries","The form was not submitted because the following required field(s) for the New Record are empty\n"+err)
		_setFocus(theForm.elements[firstField])
//alert("OK")
		return false
	}	
    for(var i=0;i<maxE;i++){
		objE=theForm.elements[i]
		fType=objE.name.substring(0,1)		
		sName=_getFieldName(objE)
		flgReq=_isRequired(objE,flgForceReq)

//alert(i+" "+maxE+" "+objE.name+" "+_testBit(objE,1)+" "+flgReq)

		if(fType!="X"){
			if((iFilledField>0&&_testBit(objE,2))||!_testBit(objE,2)){//don't fire if no new rec entered
				var oc=objE['_change']
				if(oc){
					if(!(oc.go()))return false
				}else{		
					oc=""+objE.onchange
					if(oc){
						oc=oc.match(/({[\n return]+)([^}]*)/i)
						if(oc)
							if(oc.length==3){
							//alert(oc)
								if(!eval(oc[2].replace('this','objE')))
									return false
							}		
					}		
				}		
			}

			if(objE.type=="text" || objE.type=="file"){// || objE.type=="hidden")
				if(objE.value=="" && flgReq){
					_alert("Missing Entry",sName+" requires an entry.")
					_setFocus(objE)
					return false
				}		
			}
			if(objE.type=="select-one"){
				err=0
				if(objE.selectedIndex<0 && flgReq)
					err=1
				else if(objE.options[objE.selectedIndex].value=="" && flgReq)
					err=1
							
				if(err){
					_alert("Missing Entry",sName+" requires an entry.")
					_setFocus(objE)
					return false
				}
			}	
			
			if(objE.type=="textarea"){
				if(!objE.value){
					if(flgReq){
						_alert("Missing Entry",sName+" requires an entry.")
						_setFocus(objE)
						return false				
					}	
				}	
			}	
	
			//if(!_checkFormat(objE,flgReq))
			//	return false
				
			if(objE.type=="password"||(/(password)+/i).test(objE.name))
				if(flgReq){
					if(!fnChkFieldLen(objE,6))
						return false
/*
				if(iPassPtr<0)
					iPassPtr=i
				else
					if(objE.value!=theForm.elements[iPassPtr].value&&objE.value!=""){
						alert("Your password does not Verify.  Re-Enter your Password");
						objE.value=""
						theForm.elements[iPassPtr].value=""
						_setFocus(theForm.elements[iPassPtr])
						return false
					}		
*/					
				}

			if(objE.type=="radio"||objE.type=="checkbox"){	
				objEg=theForm[objE.name]
				chk=false
				if(!objEg.length)
					chk=objEg.checked
				else if(objEg[0]._processed==undefined){
					objEg[0]._processed=true
					for(var j=0;j<objEg.length;j++){
						if(objEg[j].checked)
							chk=true
					}
				}	
				if (!chk && flgReq){
					if(objE.type=="checkbox")
						_alert("Missing Box Entry","Please check the "+sName+" box.")
					else	
						_alert("Missing Option Entry","Please select an option for "+sName)
					_setFocus(objE)
					return false
				}	
			}	
		}
	}
	return fnStampFormProcessed(theForm)
}
//----------------
function fnStampFormProcessed(me){
	var obj=me.elements[JAVASCRIPT_CHECK_FIELD]
	if(obj)
		if(obj.value==0){
			obj.value=1
			return true
		}
	return (!obj)
}	
//
function fnResetForms(){
	var o
	for(i=0;i<d.forms.length;i++){
		fnFORMreset(d.forms[i])
		o=d.forms[i].elements[JAVASCRIPT_CHECK_FIELD]
		if(o)
			o.value=0
	}		
}	
//------------------------------------------------------------------------------------

function fnConvertDate(dd){
	var o = dd.indexOf("/")
	var cd = dd.substring(0,o)//day
	dd = dd.substring( o+1, dd.length )
	o = dd.indexOf("/")
	cd = "/"+dd.substring(0,o)+"/"+cd//month
	cd= dd.substring(o+1, dd.length)+cd//year
	o = cd.indexOf("/")//get length of year
	if(o==2)//only 2 dig in year??
		if(parseInt(cd.substring(0,2))<10)//<10 ??
			cd="20"+cd//add "20" to year string
	return cd
}

//function fnChkMemoForm(me){
//	if(!fnChkForm(me,false))
//		return false
//	if(!fnChkWordCount(me.elements[0],1,1024))
//		return false
//		
//	return true	
//}		

function _FIELDboolean(me){
	var fld=me.form[me.id+'x']
	if(fld)fld.value=(fld.value!="true")
}

function fnAskDeleteRecord(me,pName,pID){
	var f=me.form,sName=""

	if(pName)
		sName=pName
	else
		for(i=0;i<f.elements.length;i++){
			if(/name/ig.test(f.elements[i].name)){
				sName=f.elements[i].value.toUpperCase()
				break;
			}
		}		
	if(sName)
		sName=sName+"\n"+"_".rep(40)+"\n\n"
		
	if(confirm("               DELETE RECORD No."+pID+"\n"+"_".rep(40)+"\n\n"+sName+"Are you sure you want to DELETE this record ?")){
		var q=""+f.action.match(/stp=\d*/)
		if(q!=""+null)
			f.action=f.action.replace(/stp=\d*/,("stp="+(parseInt(q.substr(4))+100)))
		else
			f.action=f.action+"&stp=100"
		fnStampFormProcessed(f)
		f.submit()
		return true
	}
	return false		
}			

function fnFormElement(theID){
	return document.forms["theForm"].elements[CONST_FORM_FIELD_ID+theID].value
}	
function _isTABLEcellVisible(id){
	var f=true;
	var o=document.getElementById("TABLE"+id)
	if(o)
		f=(o.style.display!='none')
	return f	
}
function _GetFieldIndex(me){
	return (me.id)?parseInt(me.id.substr(CONST_FORM_FIELD_ID.length)):0
}	

function fnFORMTotalize(pCols){
	if(!flgLoaded)
		return
	var f=document.forms["theForm"],m=0,t=0,arrCol=pCols.split(",")
	for(a=1;a<arrCol.length;a++){
		t=0
		fldCol=eval("f."+arrCol[a])
		for(i=0;i<fldCol.length-1;i++)
			if(fldCol[i].value)
				if(_format(fldCol[i])==CONST_FORMAT_FLOAT)
					t+=parseFloat(fldCol[i].value.replace(/,/g,""))
				else
					t+=parseInt(fldCol[i].value)	
		m=fldCol.length-1		
		if(_format(fldCol[m])==CONST_FORMAT_FLOAT)
			fldCol[m].value=t.toFixed(2)
		else	
			fldCol[m].value=t
	}		
}	
function _FIELDmakeOptional(me,pValue,pIDOffset){
	if(!pIDOffset)pIDOffset=1
	var id=_GetFieldIndex(me)+pIDOffset
	//alert(id)
	var o=_getObject("TABLEField"+id)
	//alert(o)
	var f=me.form.elements[CONST_FORM_FIELD_ID+id]
	var q=pValue

	if(o){
		if(q)
			f.value=''
		if(!o._defaultDisplay)
			o._defaultDisplay=o.style.display
		o.style.display=(q)?((document.all)?'block':'table-row'):'none'
//alert(o.style.display+" "+id)		
		if(q)
			_setFocus(f)
	}	
	return true
}		
function _FIELDverify(me,offset){
	if(!offset)offset=1
	var id=CONST_FORM_FIELD_ID+(_GetFieldIndex(me)-offset)
	var f=me.form.elements[id]
	var oc=""+f.onchange
	var fm=_format(me)
	var msg=""
	if(f.defaultValue==f.value&&me.value=="")return true
	
	if(me.value!=f.value){
		if(!me.value)
			msg=_getFieldName(me)
		else
			msg=_getFieldName(f)
		_alert("Verification Error","The "+_getFieldName(f)+" does not verify.\n\nPlease enter "+msg+" again.");
		
		if(oc.match(/_FIELDmakeOptional/g)!=null)
			_FIELDmakeOptional(f,false)
		
		if(!me.value)
			_setFocus(me)
		else{	
			me.value=""
			f.value=f.defaultValue
			_setFocus(f)
		}	
		return false
	}
	return true		
}	
function _FIELDchange(me,fn){
	g_FORM=false//stop FORM processing if alert shown
	var ok=_checkFormat(me)
	if(ok)
		if(fn){
			fn=fn.split("$")
			for(var i=0;i<fn.length;i++){
//alert(me.name+" "+fn[i])
				if(fn[i]){
					ok=eval(fn[i])
					if(!ok)
						break
				}		
			}	
		}		
	g_FORM=true//allow form to process
	return ok
}
function fnFORMreset(me){
	for(var i=0;i<me.elements.length;i++){
		var e=me.elements[i]
		if(e._class!=undefined)
			e.className=(e._class!="")?e._class:"txtinput"
				
		var o=d.getElementById("TABLE"+e.id)
		if(o)if(o._defaultDisplay)
				o.style.display=o._defaultDisplay
				
	}
	i=0;o=2
	while(o>0){
		o=(fnoo(0,i++,true))?o:o-1
	}
}
function _checkFormat(me,pFflg){
	var t=_format(me)
	if(pFflg==null) pFflg=_isRequired(me,0)
	var ok=true
	switch(t){
		case CONST_FORMAT_DATE:
			ok=fnChkDate(me,pFflg)
			break
		case CONST_FORMAT_FLOAT:
		case CONST_FORMAT_INT:
		case CONST_FORMAT_SMALLINT:
			ok=fnChkNumber(me,pFflg)
			break
		case CONST_FORMAT_TIME:
			ok=fnChkTime(me,pFflg)
			break		
		case CONST_FORMAT_EMAIL:
			ok=fnChkEmail(me,pFflg)
			break	
		case CONST_FORMAT_PHONE:
			ok=fnChkPhone(me,pFflg)
			break			
		case CONST_FORMAT_POSTCODE:	
			ok=fnChkPostcode(me,pFflg)
			break	
		case CONST_FORMAT_URL:
			ok=fnChkURL(me,pFflg)
			break															
	}
	return ok
}	

function _isRequired(me,pFflg){
	return !_testBit(me,2)&&(pFflg||_testBit(me,1))&&!me.disabled&&_isTABLEcellVisible(me.id)
}

function _format(me){
	return me.name.substr(0,1)
}

function fnoo(me,id,force){
	var o=_getObject("XDIV"+id)
	if(o){
		if(!o._divHeight){
			o._divHeight = o.offsetHeight
			o._open = false
		}	
		o._open=(force==true)?false:!o._open
		if(!o._open){o.scrollTop="0px"}
		o.style.overflow=(o._open)?"visible":"hidden"
		o.style.height=(o._open)?"auto":o._divHeight+"px"
		var b=(o._open)?"/btn_close":"/btn_open"
		o=_getObject(o.id+'btn')
		if(o){
			o._on.src=o._on.src.substr(0,o._on.src.lastIndexOf('/'))+b+'1.gif'
			o._off=o._off.substr(0,o._off.lastIndexOf('/'))+b+'0.gif'
		}	
		window.status=o._on.src
		return true
	}
	return false
}

function _alert(pTitle,pTxt){
	var m=50
	var r=new RegExp("([^\\b\\n]{"+m+"}[ ])","g")
	l="=".rep(m)
	pTitle="FORM ENTRY ERROR. : "+pTitle
	pTxt=pTxt.replace(r,function(w){return w+"\n"})	
	alert(pTitle+"\n"+l+"\n\n"+pTxt+"\n\n")
}

function _showIMG(me,id,pPath){
	var fid=CONST_FORM_FIELD_ID+id
	var o=_getObject(fid)
	var f=o.value
	fid=CONST_FORMAT_IMAGEPATH+fid
	o=fnShowHide(me,fid)
	if(o._state){
		o.style.zIndex=100
		o.innerHTML="<img src="+unescape(pPath)+f+" border=0 id="+fid+"po>"
		setTimeout("_op('"+fid+"po')",1000)
	}	
}
function fnASPuploadProgress(theForm,pReq,aspFile){
	var strAppVersion = navigator.appVersion;
	if(fnChkForm(theForm,pReq)) 
    	if (strAppVersion.indexOf('MSIE') != -1 && strAppVersion.substr(strAppVersion.indexOf('MSIE')+5,1) > 4) {
			var winstyle = "dialogWidth=385px; dialogHeight:140px; center:yes"
			window.showModelessDialog(aspFile+'&b=IE',null,winstyle)
		}else 
			window.open(aspFile+'&b=NN','','width=385,height=140', true)
	else 
  		return false
	return true
}
function _op(id){
	o=_getObject(id)
    if ((o.naturalWidth != undefined && o.naturalWidth > 0)||(o.naturalWidth==undefined && o.complete)) return
	o.src="../_images/error.gif"
}
function _strRep(n) {
   var s="", t=this.toString()
   while (--n>=0) s+=t
   return s
}
String.prototype.rep=_strRep

//_onLoad.add("fnResetForms()")



