//
// General Variables/Functions
//

var bV=parseInt(navigator.appVersion,10)
var WIN=(navigator.userAgent.indexOf("Windows")>=0)?1:0
var DOM=(document.getElementById)?1:0
var IE4=((document.all)&&(bV>=4)&&!DOM)?1:0
var NS4=(document.layers)?1:0
var ver4=(NS4||IE4||DOM)?1:0
var CAN=(DOM||IE4)?1:0

function dummy() {return}

function getPos(o,y) {
	var d=document,p=0;
	if(IE4||DOM) {while(o!=d.body) {p+=y?o.offsetTop:o.offsetLeft;o=o.offsetParent}} else {p=y?o.y:o.x}; return p
}



//
// Date Functions
//

months = new Array('January','February','March','April','May','June','July','August','September','October','November','December')
smonths = new Array('Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec')
smonths1 = new Array('01','02','03','04','05','06','07','08','09','10','11','12')

function writeDate(){
	now = new Date()
	document.write(now.getDate()+" "+months[now.getMonth()]+" "+now.getFullYear() + ".")
}

function writeDateList(dd){
var num, tag
for(i=1; i<=31; i++){
	num = insChar(i,'0',2,'left')
	tag = (i==parseInt(dd,10))?" selected>":">"
	document.write("<option value="+num+tag+num)
}}

function writeMonthList(mm){
var num, tag
for(i=1; i<=12; i++){
	num = insChar(i,'0',2,'left')
	tag = (i==parseInt(mm,10))?" selected>":">"
	document.write("<option value="+num+tag+smonths1[i-1])
}}

function writeYearList(yy,min,max,asc){
var num, tag
for(i=0; i<=(max-min); i++){
	num = (asc)?(max-i):(min+i)
	tag = (num==parseInt(yy,10))?" selected>":">"
	document.write("<option value="+num+tag+num)
}}

function insChar(str,cha,len,pos){
var inputStr=str.toString()
	while(inputStr.length<len) {inputStr=(pos=="left")?cha+inputStr:inputStr+cha}
	return inputStr
}



//
// Customise Form Functions
//

var errHdr, errMsg, errArr=Array("","is required","is not selected","not specified","is invalid","is incomplete","entries did not match")
function genErrMsg(){
	arg=genErrMsg.arguments; msg=arg[0]; err=arg.length>1?arg[1]:0
	errMsg = errMsg + "-> "+msg+" "+errArr[err]+"\t\n"
}
function initErrMsg(){
	errHdr = "The following error(s) occurred:\n========================\t\n"
	errMsg = ""
}
initErrMsg()



//
// General Form Functions
//

function isBlank(input){
if(!input.value) {return true}
var inputStr=input.value
if(window.RegExp && inputStr){
	var regExp1 = /\S/
	if(!regExp1.test(inputStr)) {input.value="";return true}; return false
}}

function isNumber(input){
var inputStr=input.value, arg=isNumber.arguments
var alertMsg=(arg.length>1)?((arg[1]=="")?"":arg[1]):"Invalid entry.\n\nPlease use numbers (0-9) only."
if(window.RegExp && inputStr){
	var regExp1 = /[^0-9]/
	if(regExp1.test(inputStr)) {if(alertMsg){alert(alertMsg)};input.value=input.defaultValue;input.focus();return false}; return true
}}

function isAlphaNum(input){
var inputStr=input.value, arg=isAlphaNum.arguments
var alertMsg=(arg.length>1)?((arg[1]=="")?"":arg[1]):"Invalid entry.\n\nPlease use alphabets (a-z) and/or numbers (0-9) only.\n\nYour entry cannot contain any spacing."
if(window.RegExp && inputStr){
	var regExp1 = /[^a-zA-Z0-9]/
	if(regExp1.test(inputStr)) {if(alertMsg){alert(alertMsg)};input.value=input.defaultValue;input.focus();return false}; return true
}}

function isEmail(input){
var inputStr=input.value, arg=isEmail.arguments
var alertMsg=(arg.length>1)?((arg[1]=="")?"":arg[1]):"Invalid entry.\n\nPlease ensure entry is a valid email address."
if(window.RegExp && inputStr){
	var regExp1 = /^[a-zA-Z0-9][\w\.-]*[a-zA-Z0-9]@[a-zA-Z0-9][\w\.-]*[a-zA-Z0-9]\.[a-zA-Z][a-zA-Z\.]*[a-zA-Z]$/g
	if(!regExp1.test(inputStr)) {if(alertMsg){alert(alertMsg)};input.value=input.defaultValue;input.focus();return false}; return true
}}

function isDate(sd,sm,sy){
var sDate = new Date()
	if(parseInt(sy,10)<=1900) {return false}
	sDate.setDate(1); sDate.setFullYear(parseInt(sy,10)); sDate.setMonth(parseInt(sm,10)-1); sDate.setDate(parseInt(sd,10))
	if(sDate.getDate()!=parseInt(sd,10)||sDate.getMonth()!=(parseInt(sm,10)-1)||sDate.getFullYear()!=parseInt(sy,10)) {return false}
	return true
}

function isFwdDate(sd,sm,sy,min,cd,cm,cy){
var sDate=new Date(); cDate=new Date()
	if(parseInt(sy,10)<=1900) {return false}
	sDate.setDate(1); sDate.setFullYear(parseInt(sy,10)); sDate.setMonth(parseInt(sm,10)-1); sDate.setDate(parseInt(sd,10))
	if(cd&&cm&&cy) {cDate.setDate(1); cDate.setFullYear(parseInt(cy,10)); cDate.setMonth(parseInt(cm,10)-1); cDate.setDate(parseInt(cd,10))}
	if(min) {cDate.setDate(cDate.getDate()+min)}
	if(sDate.getTime()<cDate.getTime()) {return false}
	return true
}

function chkField(input,min,type){
var inputStr=input.value
	if(type=="n") {isNumber(input)}
	else if(type=="an") {isAlphaNum(input)}
	else {isBlank(input)}
	if(window.RegExp && inputStr){
		inputStr=inputStr.replace(/^\s+/,""); inputStr=inputStr.replace(/\s+$/,"")
		if(min && inputStr.length<min) {alert("Invalid entry.\n\nPlease enter a minimum of "+min+" characters.");input.value=input.defaultValue;input.focus(); return false}; return true
	}
}

function chkMaxLen(input,max){
var inputStr=input.value
	if(max && inputStr.length>max) {alert("Your message has exceeded the maximum length of "+max+" characters.\n\nPlease shorten your message.");input.value=inputStr.substring(0,max);input.focus(); return false}; return true
}

function chkSelect(input){
	if(!input.length) {if(input.checked) return true}
	else {for(i=0;i<input.length;i++) {if(input[i].checked) return true}}
	return false
}