//Java script validation library used by JT
function ValidateEmailAddr(fld,need)
//validate whether the email address is valid or not, copied from StarHub
{strAccount=fld.value;
	if(need==1)
//required field
	if(!ValidateFld(fld))return false;
	if(strAccount.length==0) return true;
var i = 0;
var nCount = 0;
var nDotCount = 0;
var cChar;
for (i=0 ; i< strAccount.length ; i++)
{
     cChar = strAccount.charAt(i);
     if (cChar == "@")nCount ++;
     else if (nDotCount == 0 && cChar == ".")
     {
         nCount ++;
         nDotCount = 1;
     } else if (cChar==" " || cChar=="[" || cChar=="]" || cChar=="{" || cChar=="|" ||
        cChar=="}" || cChar==":" || cChar==";" || cChar=="\"" || cChar=="<" ||
        cChar==">" || cChar=="?" || cChar=="/" || cChar=="\\" || cChar==";" || cChar==","
       ) break;
                
     }
     if(nCount >=2) return true;
	
	alert("Invalid e-mail address");
	fld.focus();		
    return false;
}

function ValidateFld(fld,len)//check whether the field has value
{
var val=fld.value;
if (val == ""){alert("Please enter value for this field");
	fld.focus();
	return false;
}
return ValidateFldSz(fld,len);

}

function ValidateFldSz(fld,len)//check whether the field's value exceed the size
{
var val=fld.value;
if (len>0 && val.length>len) {
	alert("max length for this field is:"+len);
	fld.focus();
	return false;
}
return true;

}

function ValidateOpt(fld)//check whether the option field has value
{
var val=fld.selectedIndex;
if (val != -1)   return true;
alert("Please enter value for this field");
fld.focus();
return false;
}

function ValidateFoneNo(fld,need)
//validate various fone no, including mobile, fax, pager,etc
//allow 9-77988703, 9,22567 kind's of presentation
//[need=1] - the field must be entered with a value
{valu=fld.value;
if(need==1)
if(!ValidateFld(fld))return false;

    var i = 0;
    var cChar;
    var prec=0;//previous char non numeric?
    for (i=0 ; i< valu.length ; i++)
    {
        cChar = valu.charAt(i);
        if (cChar > "9" ||cChar<'0')
        {
          if(i==0||cChar !='-' && cChar !=','&& cChar !=' '&& cChar !='/'
			  ||i==valu.length-1||prec==1)
          {
             alert("Not acceptable char ("+cChar+") for this Phone No field");
			fld.focus();
			return false;
        	}else prec=1;
        }else prec=0;
	}

    return true;
}

function ValidatePhotoName(fld)//check whether file name is jpg/gif file
{
fn=fld.value;
//alert(fn);
	if(!ValidateFld(fld))return false;

	ext=fn.indexOf(".",1);
	if(fn.indexOf("jpg",ext+1)== -1 && fn.indexOf("gif",ext+1)== -1
	&& fn.indexOf("GIF",ext+1)== -1 && fn.indexOf("JPG",ext+1)== -1	)
	{
		alert('We are only able to hand JPG/JPEG or GIF file');
		fld.focus();
		return false;
	}
	return true;
}

function ChkLimit(fld,limit)//make sure fld's value don't exceed limit
{

if(fld.value!=""  && parseInt(fld.value) > limit )
{	alert("value for this field must not be greater than "+limit);
	fld.focus();
	return false;
}
return true;
}

function ValidateNumeric(fld,need)
//allow 9,999,999 format, take away the ',' in between
//[need=1], need value;need=2, default 0;need=0 need not to have value
//truncate float into 2 digits after decimal part
{var num,valu;
valu=fld.value;
if(need==1)//required field
	 if(!ValidateFld(fld))return false;
if(valu==""){if(need==2)fld.value=0;return true;}//need=2,default as 0
num=0;
d1='',d2='';
dec_flag = 0;

//alert(valu);
for (i=0; i< valu.length ; i++)
{var cChar=valu.charAt(i);
	if (cChar >= '0' && cChar<='9'){
		if(dec_flag==0)num=num*10+(cChar-'0');
		else if (d1=='')d1=cChar;
		else if (d2=='')d2=cChar;
		else break;
	}else if(cChar == '.' && dec_flag==0)dec_flag=1;
	else if(cChar != ',')
	{
            alert("Not acceptable char ("+cChar+") for this Numeric field");
			fld.focus();
			return false;
	}
}
if(num>0||dec_flag==1)
if(dec_flag==1)fld.value=num+'.'+d1+d2; else fld.value=num;
//alert(fld.value+'<--'+valu);
return true;
};

//load an image file
function newImage(imgfile) {
	if (document.images) {
		rslt = new Image();
		rslt.src = imgfile;
		return rslt;
	}
}

//check whether called from our own program
//stop =1, to be stopped when accessed from foreign domain
function alien(stop)
{
var myhost=self.location.hostname;
var pos=document.referrer.indexOf(myhost);
var x=location.href;
if(pos==7 || netscape())// len("http://")=7
	return true;
if(window.name.indexOf("proms")==0 && window.name.length==5)return true;
if(stop==1 ){	
	alert("illegal access<br>from:"+document.referrer+"to:"+document.URL);
	location.href="/";
}
return false;
}

if(navigator.appName == 'Netscape')isNetscape=true; else isNetscape=false;
//check whether the browser in used is Netscape
//return 1- it's Netscape, 0 -it's IE
function netscape()
{
	return isNetscape;
}

function ValidateDate(fld,need)
//validate date, make sure it's in yyyy/mm/dd format
{valu=fld.value;
if(need==1)
	if(!ValidateFld(fld))return false;

yyyy=valu.substring(0,4);
mm=valu.substring(5,2);
dd=valu.substring(8,2);

    return true;
}

//show/hide dynamic elements
oldx="";//current element
function show(x,topy)
{
	if(oldx !="")
	if(netscape())document.layers[oldx].visibility="hide";
	else document.all[oldx].style.visibility="hidden";//hide old elements
//show new elements in given position
	if(netscape())
	{
		document.layers[x].visibility="show";
		document.layers[x].top=topy;
	}else {
		document.all[x].style.visibility="visible";
//		alert(x);
		if(show.arguments.length>1)
			document.all[x].style.top=topy;
	}
	oldx=x;
	return true;
}

function backforth(start,endr,num,total)
//write the following info to the table head
//Records start - end of Total     Back Button  Next n Record
//num - the number of records to be printed in this page.
{

document.writeln("<font size=1 face=Verdana>Record "
	+start+" - "+endr+" of "+total); 

if (start>1)
	document.writeln("&nbsp;<A href='Javascript:history.go(-1);'>"
			+"<font size=1 face=Verdana>Back</a>");
rest= total-endr
if (rest > num) rest=num;
else if (rest <=0)return;

url=location.href;
x=url.indexOf("start=");

nstart=endr+1;
if(x<0)x=url.length;else --x;
window.status=x;
	nurl=url.substring(0,x)+"&start="+nstart;
window.status=nurl;
	document.writeln("&nbsp;<a href="+nurl
		+"><font size=1 face=Verdana>Next "+rest+"</a>");
}
//used for eguide
function setCurType(ctype)//memb,item
{curForm=top.bottomFrame.document.forms[0];
curForm.curType.value=ctype;
}

function setCurValue(id)
{curForm=top.bottomFrame.document.forms[0];
if(curForm.curType.value=='memb')curForm.cMemb.value=id;
else curForm.cItem.value=id;
}

function remb(id)
{
	top.bottomFrame.document.forms[0].cItem.value=id;
	return true;
}

function chk(fms,itm)//combined check item value
{var val=""; var obj;
	for(j=0;;++j)
	{
xj=itm+j;
	obj=eval(xj);

	if(!obj)break;
alert(xj+":"+obj.checked);
	if(obj.checked)val+=","+obj.value;
	//alert(val);
	}
	if (val.length==0){
		alert("please check at least one item for "+itm);
	//	x0=itm+"0";
	//	obj=eval(x0);
	//	obj.focus();
		return false;
	}
	obj=eval(itm);
	obj.value=val.substring(1);
//alert(obj.value);
	return true;
}

function putFloat(y)
{
if(!isNaN(y))
{
var i;
x=y.toString();
i=x.indexOf(".");
if(i<0)x+=".00";
else x+="00";
i=x.indexOf(".");
y=x.substring(0,i+3);
}
document.write("<td class=numeric>"+y+"</td>");
}

function getFloat(y)
{
if(isNaN(y))return y;
x=y.toString();
return x;
//Javascript bugs
i=x.indexOf(".");
if(i<0)return x+".00";
x+="00";
return x.substring(0,i+3);
}

