/*
' ------------------------------------------------------
'  2002 (c) Atlas Industries Limited. All rights reserved.
'  Tel:       +84 (8) 8227 800
'  Fax:       +84 (8) 8227 801
'  Internet: www.atlasindustries.com
'  E-mail:    info@atlasindustries.com
'
'  $Workfile: $ 
'  $Author: $ 
'  $Revision: $
'  $Modtime: $ 
'  ------------------------------------------------------
*/
function _checkunload(windowname) {
	if (windowname && !windowname.closed) {windowname.close();}
}

function _checkLoggedIn(URLReturn) {	
	if (!eval('top.header')) {top.location=URLReturn;}	
}	

function _cboValue(strListboxName) {
	objListbox=_getObject(strListboxName);
	return objListbox.options[objListbox.selectedIndex].value;
}

function _selectChkAll(strObjimage, strimage1, strimage2, intNumRow) {
	var fcheck, imagechange;	
	fcheck = _checkAll("chk", intNumRow);
	imagechange = (fcheck==false)? strimage1:strimage2;
	MM_swapImage(strObjimage,'',imagechange,1);
}

function _selectChkAll2(strObjimage, strimage1, strimage2, intFrom, intTo) {
	var fcheck, imagechange;	
	fcheck = _checkAll2("chk", intFrom, intTo);
	imagechange = (fcheck==false)? strimage1:strimage2;
	MM_swapImage(strObjimage,'',imagechange,1);
}

function _getcboDate(strcboDay, strcboMonth, strcboYear) {
	objDay=_getObject(strcboDay);
	objMonth=_getObject(strcboMonth);
	objYear=_getObject(strcboYear);
	vDay=objDay.options[objDay.selectedIndex].value;
	vMonth=objMonth.options[objMonth.selectedIndex].value;
	vYear=objYear.options[objYear.selectedIndex].value;
	vDate=vDay + "/" + vMonth + "/" + vYear;
	return vDate;
}

function _occur(strinput, chroccur) {
returnvalue=0;
	astrinput=strinput.split(chroccur);
	astrinputlen=astrinput.length;
	if (astrinputlen>0) {
		returnvalue=astrinputlen - 1;
	}
return returnvalue;
}

function _chrloop(charater, looptime) {
	returnvalue=charater;
	for (ilooptime=0; ilooptime<looptime-1; ilooptime++) {
		returnvalue+=returnvalue;
	}
	return returnvalue;
}

function _submitform(strURL, strTarget) {
	frmname="document." + document.forms[0].name;
	objform=eval(frmname);
	objform.action=strURL;
	objform.target=strTarget;
	objform.submit();
}

function _changedate(strdate,separatorSource,separatorTarget) {
returnValue="";
if (strdate!="") {
        adate=strdate.split(separatorSource);
        if (adate.length==3) {
                returnValue=adate[2] + separatorTarget + adate[1] + separatorTarget + adate[0];
        }
}
return returnValue;
}

function _radiovalue(strobjname) {
	value="";	
	frmname="document." + document.forms[0].name;
	obj=eval(frmname + "." + strobjname);
	objlen=obj.length;
	if (objlen>=2) {
		for (ii=0;ii<objlen;ii++) {
			if (obj[ii].checked) {
				value=obj[ii].value;			
				break;}
		}	
	} else	{if (obj.checked) value=obj.value;}
return value;	
}

function _checkAllsave(strCheckboxName, intObjNumber) { 
	formname="document." + document.forms[0].name;
	fSelect=(parseFloat(document.queryCommandValue)!=1)? 0:1;
	if (fSelect==1) {
		freturn = true;		
		if (_isChecked_Uncheck_All(strCheckboxName, intObjNumber, 2)==true) {document.queryCommandValue=0;freturn=false;}
	}
	else
	{ 
		freturn = false;
		if (_isChecked_Uncheck_All(strCheckboxName, intObjNumber, 1)==true) {document.queryCommandValue=1;freturn=true;}
	}	
	if (intObjNumber>=0) {
		for (var i=0;i<intObjNumber;i++) {
			chk=formname + "." + strCheckboxName + i;
			ochk=eval(chk);
			if(ochk){
				if (fSelect==1) ochk.checked=false;
				else ochk.checked=true; 
			}
		}
	}
	return freturn;
}


function _checkAll(strCheckboxName, intObjNumber) { 
	formname="document." + document.forms[0].name;
	fSelect=(parseFloat(document.queryCommandValue)!=1)? 0:1;
	if (fSelect==1) {document.queryCommandValue=0;freturn=false;}
	else {document.queryCommandValue=1;freturn=true;}
	if (intObjNumber>=0) {
		for (var i=0;i<intObjNumber;i++) {
			chk=formname + "." + strCheckboxName + i;
			ochk=eval(chk);
			if(ochk){
				if (fSelect==1) ochk.checked=false;
				else ochk.checked=true; 
			}
		}
	}
	return freturn;
}

function _checkAll2(strCheckboxName, intFrom, intTo) {
//alert(intFrom)
//alert(intTo)
var freturn, intObjNumber, fSelect;
 intObjNumber = intTo - intFrom;
 fSelect=(parseFloat(document.queryCommandValue)!=1)? 0:1;
 if (fSelect==1) {document.queryCommandValue=0;freturn=false;}
 else {document.queryCommandValue=1;freturn=true;}
  if (intObjNumber>=0) {
	formname="document." + document.forms[0].name;	
	for (var i=intFrom;i<intTo+1;i++) {
		chk=formname + "." + strCheckboxName + i;
		ochk=eval(chk);
		if (fSelect==1) ochk.checked=false;
		else ochk.checked=true; 
	}
 }	
 return freturn;
}

function _ischecked(strCheckboxName, intObjNumber) {
	if (intObjNumber>=0) {  
		for (var i=0;i<intObjNumber ;i++) {	
			formname="document." + document.forms[0].name;
			chk=formname + "." +strCheckboxName + i;
			ochk=eval(chk);
			if (ochk.checked==true) {		
				return true;
				break;
			}
		}		
		return false;
	}		
}

function _isChecked_Uncheck_All(strCheckboxName, intObjNumber, checktype) {
//1: Check All
//2: UnCheck All
var fchk, chk;
	if (intObjNumber>=0) {
		for (var i=0;i<intObjNumber ;i++) {
			formname="document." + document.forms[0].name;
			chk=formname + "." +strCheckboxName + i;
			ochk=eval(chk);
			fchk = (checktype==1)? true:false;
			if (ochk.checked!=fchk) {
				return false;
				break;
			}
		}		
		return true;
	}		
}

function _ischecked2(strCheckboxName, iFrom, iTo) {
var iChange=iTo-iFrom;
	if (iChange>=0) {  
		for (var i=iFrom;i<iTo+1;i++) {	
			formname="document." + document.forms[0].name;
			chk=formname + "." +strCheckboxName + i;
			ochk=eval(chk);
			if (ochk.checked==true) {		
				return true;
				break;
			}
		}		
		return false;
	}		
}
function _isselected(strObjListbox) {
	fselect=false;
	listbox=_getObject(strObjListbox);
	nItem = listbox.options.length;
	for (iItem=0; iItem<nItem; iItem++) {
		if (listbox.options[iItem].selected == true) {
			fselect=true;
			break;
		}
	}
	return fselect;
}

function skip() {
var type;
	type=this.type;
	switch(type.toUpperCase()) {
	case "TEXT":
	case "SELECT-ONE":
		this.blur();
		break;
	default:	
		this.checked = this.storeChecked;
		break;
	}	
}

function _disableObject(strObjectname) {
//disable an object on form
var type;
	field=_getObject(strObjectname);
	if (document.all || document.getElementById)
		field.disabled = true;
	else
	{
		type=field.type;
		switch(type.toUpperCase()) {
			case "TEXT":
				field.oldOnFocus = field.onfocus;
				field.onfocus = skip;
				break;
			case "SELECT-ONE":
				field.oldOnFocus = (field.onfocus)? field.onfocus : null;
				field.onfocus = skip;
				break
			default:
				field.storeChecked = field.checked;
				field.oldOnClick = field.onclick;
				field.onclick = skip;
				break;
		}	
	}
}

function _enableObject(strObjectname) {
//enable an object on form
	field=_getObject(strObjectname);
	if (document.all || document.getElementById)
		field.disabled = false;
	else
	{
		type=field.type;
		if (type.toUpperCase()=="TEXT"||type.toUpperCase()=="SELECT-ONE") {field.onfocus = field.oldOnFocus;}
		else if (field.disabled) {
			field.disabled = false;
			if (!document.all && !document.getElementById) {
				field.onclick = field.oldOnClick;
			}	
		}
	}
}

function _isvalidinput(strinput,straccept, fieldname) {
//check each element of 'strinput' is match each element of 'straccept' or not
//straccept string content acceptable characters
	var icut,i;
	inputLen = strinput.length;
	for (i=0;i<inputLen;i++){
		icut=strinput.substr(i,1);
		ipos=straccept.indexOf(icut);
		if (ipos==-1) {
			alert("Invalid " + fieldname + " data, please re-enter.");
			return false;
			break;
		}
	}
	return true;
}
function _strsearch(strsearched,strinput) {
//return true if found strsearched in strinput	
	return (strinput.indexOf(strsearched)!=-1)? true:false;
}
function _isvalidinput2(strinput,straccept) {
//check each element of 'strinput' is match each element of 'straccept' or not
//straccept string content acceptable characters
	var icut,i;
	inputLen = strinput.length;
	for (i=0;i<inputLen;i++){
		icut=strinput.substr(i,1);
		ipos=straccept.indexOf(icut);
		if (ipos==-1) {
			return false;
			break;
		}
	}
	return true;
}

function _isinvalidinput(strinput,strunaccept, fieldname) {
//check each element of 'strinput' is match each element of 'straccept' or not
//straccept string content acceptable characters
	var icut,i;
	unacceptLen = strunaccept.length;
	for (i=0;i<unacceptLen;i++){
		icut=strunaccept.substr(i,1);
		ipos=strinput.indexOf(icut);
		if (ipos!=-1) {
			alert("Invalid " + fieldname + " data, please re-enter.");
			return true;
			break;
		}
	}
	return false;
}

function replace(string,strsearch,replacement) {
        lLen=string.length;
        lCut=strsearch.length;
        newstring="";
        for (i=0;i<lLen;i++) {
                mMidSearch=string.substr(i,lCut);
                mMid=string.substr(i,1);
                if (mMidSearch==strsearch) {
                        mMid = replacement;
                        i = i + (lCut-1);
                }
                newstring+=mMid;
        }
        return newstring;
}

function newwindow(URL, windowname, width, height) {
	vleft=(screen.width - width) / 2;
	vtop=(screen.height - height) / 2;
	args="resizable=yes,scrollbars=yes, width=" + width + ",height=" + height + ",left=" + vleft + ", top=" + vtop;
	window.open(URL, windowname, args);
}

function newwindow2(URL, windowname, width, height) {
	vleft=(screen.width - width) / 2;
	vtop=(screen.height - height) / 2;	
	args ="toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=no,resizable=no,width=" + width + ",height=" + height + ",left=" + vleft + ", top=" + vtop;	
	return window.open(URL, windowname, args);	
}

function trim(text) {
	if (text=="" || text==null) return "";	
	pos1=0;
	pos2=text.length;
	for(i=0;i<=text.length-1;i++) {
		if (text.substr(i,1)==" ") pos1=i+1;
		else break;}
	for(i=text.length-1;i>=0;i--) {
		if(text.substr(i,1)==" ") pos2=i;
		else break;}
	if (pos2<pos1) return "";	
	return text.substr(pos1,pos2-pos1);
}

function _istime(strtime) {	
	strtime = trim(strtime)
	if (strtime.length==0) {return false;}
	atime=strtime.split(":")
	strHour=trim(atime[0]);
	if (strHour.length==0) {return false;}
	if (isNaN(strHour)==true) {return false;}
	if (strHour.length>2) {return false;}
	else if (parseFloat(strHour)<0 || parseFloat(strHour)>23) {return false;}	
	if (atime.length>0) {
		strMinute=trim(atime[1]);
		if (strMinute.length==0) {return false;}
		if (isNaN(strMinute)==true) {return false;}
		if (strMinute.length>2) {return false;}
		else if (parseFloat(strMinute)<0 || parseFloat(strMinute)>59) {return false;}
	}
return true;	
}

function _time2number(strtime) {
	atime=strtime.split(":");
	return (parseFloat(atime[0])*60) + parseFloat(atime[1]);
}

function _istoday(strdate) {
	strdate=trim(strdate);
	if (strdate.length=0) {return false;}
	cur_time =  new Date() ;
	cur_day = cur_time.getDate();
	cur_month =(cur_time.getMonth() + 1);
	cur_year = cur_time.getYear() ;
	adate=strdate.split("/");
	
	if (parseFloat(adate[0])!=cur_day || parseFloat(adate[1])!=cur_month || parseFloat(adate[2])!=cur_year) {return false;}
return true;
}

function _checkdatefromto(strinput) {
	if (_occur(strinput,"-")==1) {
		adate=strinput.split("-");
		if (isdate(adate[0])==false || isdate(adate[1])==false) { return false;}
		else
		{
			if (comparedate(adate[0],adate[1])==false) {
				return false;
			}
		}
	}
	else {return false;}
return true;
}

function isdate(s) {
	if (s =="") return false;
	var atmp,ii;
	atmp = s.split("/");
	if (atmp.length != 3) return false;
	for (ii=0; ii<atmp.length ;ii++) {
		if (isNaN(atmp[ii])) return false;
		else {
			switch (ii) {
				case 0,1: //month
					if (atmp[ii].length <= 0 || atmp[ii].length > 2) {return false;}
					if (parseFloat(atmp[0])<=0 || parseFloat(atmp[1])<=0) {return false;}
					switch (parseFloat(atmp[1])) {
						case 4:
						case 6:
						case 9:
						case 11:
							if (parseFloat(atmp[0]) > 30) return false;
							break;
						case 2:
							if (parseFloat(atmp[2])%4 == 0 )
								{if (parseFloat(atmp[0]) > 29) return false;}
							else
								{if (parseFloat(atmp[0]) > 28) return false;}
							break;
						default:
							if (atmp[1] <=0 || atmp[1]>12) return false;
							if (parseFloat(atmp[0]) > 31) return false;
					}
					break;
				case 2: //year
					if (atmp[ii].length != 4 || parseFloat(atmp[ii])<1900) {return false;}
			}
		}
	}
	return true;
}

function comparedate(sbeg,send) {	
	abeg = sbeg.split("/")
	aend = send.split("/")
	
	dbeg = abeg[0]; 
	if (abeg[0].substr(0,1) == "0")
		dbeg = abeg[0].substr(1,1);
	dend = aend[0]; 
	if (aend[0].substr(0,1) == "0")
		dend = aend[0].substr(1,1);
	
	mbeg = abeg[1]; 
	if (abeg[1].substr(0,1) == "0")
		mbeg = abeg[1].substr(1,1);
	mend = aend[1]; 
	if (aend[1].substr(0,1) == "0") {mend = aend[1].substr(1,1);}
	if (parseFloat(abeg[2]) > parseFloat(aend[2])) 
	{
		return false;
	}	
	else 
	{
		if (parseFloat(abeg[2]) == parseFloat(aend[2])) 
		{
			if (parseFloat(mbeg) > parseFloat(mend))
				return false;
			else if (parseFloat(dbeg) > parseFloat(dend) & parseFloat(mbeg) >= parseFloat(mend))
				return false;
		}
	}	
	return true;
}

function isempty(str, field) {	

	atmp = str.split(String.fromCharCode(32));
	for (ii=0; ii< atmp.length;ii++ ) {
		if (atmp[ii] != "") {
			return false;			
		}
	}
	//alert("Please input data into the " + field + " field.");
	return true;
}
function _isnumber(strinput, fieldname) {
	if (isNaN(strinput) == true) {				
		alert("Invalid " + fieldname + " format. Please ensure the data is numeric.");		
		return false;
	} else if (_isvalidinput(strinput,"0123456789.,",fieldname)==false) {
			return false;}
	return true;
}

function _isnumber2(strinput, fieldname) {
	if (isNaN(strinput) == true) {	
		strfielderr=(fieldname!="")? "of '" + fieldname + "' field":"";
		alert("Invalid data. Please enter a number using following format: x.x");		
		return false;
	}
	else
	{
		if (_isvalidinput(strinput,"0123456789.,",fieldname)==false) {
			return false;
		}
		else
		{
			var vartemp	= strinput.split(".");
			if (vartemp.length > 1)
			{
				if (parseFloat(vartemp[1].length) > 1)
				{
					alert("Invalid data. Please enter a number using following format: x.x");
					return false;
				}
			}	
		}
	}
	return true;
}

function isnull(str) {	
	atmp = str.split(String.fromCharCode(32));
	for (ii=0; ii< atmp.length;ii++ ) {
		if (atmp[ii] != "") {
			return false;
		}
	}
	return true;
}

function isemail(string)
{	
	var pos1,pos2,pos3,pos4;
	var strinvalid = "`~!#$%^&*()+={}[]|\:;'\",<>?/";
	pos1=string.indexOf("@");	
	pos2=string.indexOf(" ");
	pos3=string.indexOf(".");
	
	if ( (pos1 == -1) || (pos2!= -1) || (pos3 == -1))
	{
		//alert("Invalid email address.");
		return false;
	}
	
	aassign=string.split("@");
	adoubledot=string.split("..");
	aassigndot=string.split("@.");
	adotassign=string.split(".@");
	if (aassign.length>2 || adoubledot.length>1 || aassigndot.length>1 || adotassign.length>1) {
		//alert("Invalid email address");
		return false;
	}
	
	if (_getRight(string, ".")=="") {
		//alert("Invalid email address");
		return false;
	}
	
	strinvalidLen = strinvalid.length;
	for (i=0;i<strinvalidLen;i++){
		icut=strinvalid.substr(i,1);
		ipos=string.indexOf(icut);
		if (ipos!=-1) {
			//alert("Invalid email address");
			return false;
			break;
		}
	}		
	return true;
}

function _getRight(strInput, strSeparator) {
//return tring from 'strInput' from right to left until matches 'strSeparator'
	InputLen=strInput.length;
	strGet="";
	iChar=0;
	aChar = new Array;
	for (iLen=InputLen-1;iLen>=0;iLen--) {
		strChar=strInput.substr(iLen,1);
		if (strChar!=strSeparator) {
			aChar[iChar]=strChar;
			iChar++;
		} else break;
	}
	if (aChar.length>0) {
		for (iChar=aChar.length-1;iChar>=0;iChar--) {
			strGet+=aChar[iChar];
		}
	}
	return strGet;
}

function _getAction() {
//get action in form
	strAction=document.location.pathname;
	return _getRight(strAction,"/");
}

function istroi(text) {
	if(text.indexOf(" ")!=-1) return false;
	return true;
}

function isdateusa(s) {
	if (s =="") return false;
	var atmp,ii;
	atmp = s.split("/");
	if (atmp.length != 3) return false;
	for (ii=0; ii<atmp.length ;ii++) {				
		if (isNaN(atmp[ii])) return false;
		else {
			switch (ii) {
				case 0,1: //month			
					if (atmp[ii].length <= 0 || atmp[ii].length > 2) {return false;}
					switch (parseFloat(atmp[0])) {
						case 4,6,9,11:
							if (parseFloat(atmp[1]) > 30) return false;
							break;
						case 2:
							if (parseFloat(atmp[2])%4 == 0 )
								{if (parseFloat(atmp[1]) > 29) return false;}
							else
								{if (parseFloat(atmp[1]) > 28) return false;}
							break;
						default:
							if (atmp[0] <=0 || atmp[0]>12) return false;
							if (parseFloat(atmp[1]) > 31) return false;
					}
					break;
				case 2: //year
					if (atmp[ii].length != 4) {return false;}
			}
		}
	}
	return true;
}

function MM_nbGroup(event, grpName) { //v3.0
  var i,img,nbArr,args=MM_nbGroup.arguments;
  if (event == "init" && args.length > 2) {
    if ((img = MM_findObj(args[2])) != null && !img.MM_init) {
      img.MM_init = true; img.MM_up = args[3]; img.MM_dn = img.src;
      if ((nbArr = document[grpName]) == null) nbArr = document[grpName] = new Array();
      nbArr[nbArr.length] = img;
      for (i=4; i < args.length-1; i+=2) if ((img = MM_findObj(args[i])) != null) {
        if (!img.MM_up) img.MM_up = img.src;
        img.src = img.MM_dn = args[i+1];
        nbArr[nbArr.length] = img;
    } }
  } else if (event == "over") {
    document.MM_nbOver = nbArr = new Array();
    for (i=1; i < args.length-1; i+=3) if ((img = MM_findObj(args[i])) != null) {
      if (!img.MM_up) img.MM_up = img.src;
      img.src = (img.MM_dn && args[i+2]) ? args[i+2] : args[i+1];
      nbArr[nbArr.length] = img;
    }
  } else if (event == "out" ) {
    for (i=0; i < document.MM_nbOver.length; i++) {
      img = document.MM_nbOver[i]; img.src = (img.MM_dn) ? img.MM_dn : img.MM_up; }
  } else if (event == "down") {
    if ((nbArr = document[grpName]) != null)
      for (i=0; i < nbArr.length; i++) { img=nbArr[i]; img.src = img.MM_up; img.MM_dn = 0; }
    document[grpName] = nbArr = new Array();
    for (i=2; i < args.length-1; i+=2) if ((img = MM_findObj(args[i])) != null) {
      if (!img.MM_up) img.MM_up = img.src;
      img.src = img.MM_dn = args[i+1];
      nbArr[nbArr.length] = img;
  } }
}

function MM_swapImgRestore() { //v3.0
  var i,x,a=document.MM_sr; for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++) x.src=x.oSrc;
}

function MM_preloadImages() { //v3.0
  var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();
    var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++)
    if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}
}

function MM_findObj(n, d) { //v4.0
  var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
  if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
  if(!x && document.getElementById) x=document.getElementById(n); return x;
}

function MM_swapImage() { //v3.0
  var i,j=0,x,a=MM_swapImage.arguments; document.MM_sr=new Array; for(i=0;i<(a.length-2);i+=3)
   if ((x=MM_findObj(a[i]))!=null){document.MM_sr[j++]=x; if(!x.oSrc) x.oSrc=x.src; x.src=a[i+2];}
}

function MM_goToURL() { //v3.0
  var i, args=MM_goToURL.arguments; document.MM_returnValue = false;
  for (i=0; i<(args.length-1); i+=2) eval(args[i]+".location='"+args[i+1]+"'");
}

function MM_jumpMenu(targ,selObj,restore){ //v3.0
  eval(targ+".location='"+selObj.options[selObj.selectedIndex].value+"'");
  if (restore) selObj.selectedIndex=0;
}

function MM_openBrWindow(theURL,winName,features) { //v2.0
  window.open(theURL,winName,features);
}

function norightclick(e)  // This function is used by all others
{
	if (window.Event)  // again, IE or NAV ?
		{
			if (e.which == 2 || e.which == 3)
			return false;
		} else
			if (event.button == 2 || event.button == 3)	{
				event.cancelBubble = true;
				event.returnValue = false;
				return false;}
}

function _getObject(strObject) {
//get an object in form by 'strObject' name
var i, objnum, ielement, frmlen;
var obj=null;
	frmname="document." + document.forms[0].name;
	objform=eval(frmname);
	objnum=objform.length;
	for (ielement=0;ielement<objnum;ielement++) {		
		ElementName=objform.elements[ielement].name;
		if (ElementName==strObject) {
			obj=objform.elements[ielement];
			break;
		}
	}
	return obj;
}
function _SelectAllListbox(strListbox, lbstatus) {
	obj = _getObject(strListbox);
	objLen = obj.options.length;
	if (objLen>0) {
		for (iLen=0; iLen< objLen; iLen++) {
			obj.options[iLen].selected=(lbstatus==0)? false:true;
		}
	}	
}
function _setnulllistbox(objlistbox) {
	listboxlen=objlistbox.options.length;
	if (listboxlen>0) {
		for (ilen=listboxlen-1; ilen>=0; ilen--) {
			objlistbox.options[ilen]=null;
		}
	}
}

function _setvalue2listbox(avalue, objlistbox) {
	listboxlen=objlistbox.options.length;
	nvalue=avalue.length;
	if (nvalue>0) {
		for (ivalue=0;ivalue<nvalue;ivalue++) {
			objlistbox.options[ivalue]=new Option(avalue[ivalue].text,avalue[ivalue].value);
		}
	}	
	objlistbox.options[0].selected=true;
}

function _moveItem(strlistFrom, strlistTo) {
/* 
	this function enable you remove All Item from strlistFrom to strlistTo
	Parameter : strlistFrom, strlistTo
	Format : strlistFrom = "<listboxname>"	(Listbox will be move Item)
	strlistTo = "<listboxname>" (Listbox will receive Item)
*/
var iFrom, nFrom, nextStep;
	var listFrom, listTo;
	var frmname, LbselectedIndex;
	var nItems = -1;
	frmname="document." + document.forms[0].name;
	listFrom=eval(frmname + "." + strlistFrom);
	listTo=eval(frmname + "." + strlistTo);
	nFrom = listFrom.options.length;
	nTo = listTo.options.length;
	LbselectedIndex = listFrom.selectedIndex;
	nextStep=LbselectedIndex;
	if (LbselectedIndex==(nFrom - 1)) {nextStep=LbselectedIndex-1;}
	if (LbselectedIndex==-1) {
		alert("Please select item(s) to move.");
		listFrom.focus();
		listFrom.selectedIndex=0;
		return;
	}
	var aItems = new Array();
	for (iFrom=0;iFrom<nFrom;iFrom++) {
		if (listFrom.options[iFrom].selected==true) {
			nItems++;
			aItems[nItems] = iFrom;
			listFrom.options[iFrom].selected = false;
		}
	}
	if (nItems>=0) {
		for (iItem=0;iItem<=nItems;iItem++) {			
			lbselectedItem = aItems[iItem];
			lbtext = listFrom.options[lbselectedItem].text;
			lbvalue = trim(listFrom.options[lbselectedItem].value);
			nTo = listTo.options.length;
			if (nTo==0) {listTo.options[0] = new Option(lbtext,lbvalue);}
			else {listTo.options[nTo] = new Option(lbtext,lbvalue);}		
		}
		for (iItem=nItems;iItem>=0;iItem--) {
			lbselectedItem = aItems[iItem];
			listFrom.options[lbselectedItem]= null;	
		}
	}	
	if (nFrom>0) {
		listFrom.selectedIndex=nextStep;
		listFrom.focus();}
}


function _moveAllItem(strlistFrom, strlistTo) {
/* 
this function enable you remove All Item from strlistFrom to strlistTo
Parameter : strlistFrom, strlistTo
Format : strlistFrom = "<listboxname>"	(Listbox will be move Item)
strlistTo = "<listboxname>"	(Listbox will receive Item)
*/
	listFrom=_getObject(strlistFrom);
	nFrom = listFrom.options.length;
	listTo=_getObject(strlistTo);
	nTo = listTo.options.length;
	if (nFrom==0) {
		alert("There is no item to move");
		return;}
	for (iFrom=0;iFrom<nFrom;iFrom++) {
		listFrom.selectedIndex=0;
		text = listFrom.options[0].text;
		value=listFrom.options[0].value;
		if (nTo==0) {listTo.options[0] = new Option(text,value);}
		else {listTo.options[nTo] = new Option(text,value);}
		listFrom.options[0]=null;
		nTo = listTo.options.length;
	}
}

function _moveItemsDown(strlistbox) {
	if (_isselected(strlistbox)==false)
	{
		alert("Please select Item(s) to move");
		return;
	}
	select=_getObject(strlistbox);	
	var max;
	var selected = new Array();
	var j = 0;
	max = select.options.length;
	for (i=0; i<max; i++) {
		if (select.options[i].selected == true) {
			selected[j] = i;
			j++;
		}
	}
	if (selected[j-1] < max-1) {
		for (j=selected.length-1; j>=0 ; j--) {_sortItem(select, selected[j],"DOWN");}
	}
}

function _moveItemsUp(strlistbox) {
	if (_isselected(strlistbox)==false)
	{
		alert("Please select Item(s) to move");
		return;
	}
	select=_getObject(strlistbox);
	var selected = new Array();
	var j = 0;
	max = select.options.length;
	for (i=0; i<max; i++) {
		if (select.options[i].selected == true) {
			if (i==0) break;
			if (i > 0) {selected[j] = i;j++;}
		}
	}
	for (j=0 ; j<selected.length ; j++) {_sortItem(select, selected[j],"UP");}
}

function _sortItem(select, index, moveoption) {
	if (moveoption!="" && (moveoption.toUpperCase()=="UP" || moveoption.toUpperCase()=="DOWN")) {
		max = select.options.length;
		if (index == null) index = select.selectedIndex;
		if (moveoption.toUpperCase()=="UP") {
			if ( (max <= 1) || (index <= 0) || (index >= max) ) return;
			var switchindex = index-1;
		}
		if (moveoption.toUpperCase()=="DOWN") {
			if ( (max <= 1) || (index < 0) || (index >= (max-1)) ) return;
			var switchindex = index+1;
		}		
		var tmp=select.options[switchindex].text;
		var val=select.options[switchindex].value;
		select.options[switchindex].text=select.options[index].text;
		select.options[switchindex].value=select.options[index].value;
		select.options[index].text=tmp;
		select.options[index].value=val;
		select.options[index].selected=false;
		select.options[switchindex].selected=true;
	}	
}

function _CF_checknumber(object_value) {
	//Returns true if value is a number or is NULL
	//otherwise returns false	  
	if (object_value.length == 0) return true;
	//Returns true if value is a number defined as  
	//  having an optional leading + or -.  
	//  having at most 1 decimal point.  
	//  otherwise containing only the characters 0-9.	
	var start_format = " .+-0123456789";
	var number_format = " .0123456789";
	var check_char;
	var decimal = false;
	var trailing_blank = false;
	var digits = false;
	//The first character can be + - . blank or a digit.	
	check_char = start_format.indexOf(object_value.charAt(0));
	//Was it a decimal?
	if (check_char == 1) decimal = true;
	else if (check_char < 1) return false;
	//Remaining characters can be only . or a digit, but only one decimal.
	for (var i = 1; i < object_value.length; i++) {
		check_char = number_format.indexOf(object_value.charAt(i));
		if (check_char < 0) return false;
		else if (check_char == 1) {
				if (decimal)
	// Second decimal.
				return false;
				else decimal = true;}
			else if (check_char == 0)
				{
					if (decimal || digits)	trailing_blank = true;
	//ignore leading blanks
				} else if (trailing_blank) return false;
						else digits = true;
			}
	//All tests passed, so...
	return true;
}

function _CF_checkinteger(object_value) {
	//Returns true if value is a number or is NULL
	//otherwise returns false
		if (object_value.length == 0) return true;
	//Returns true if value is an integer defined as
	//  having an optional leading + or -.
	//  otherwise containing only the characters 0-9.
		var decimal_format = ".";
		var check_char;
	//The first character can be + - blank or a digit.
		check_char = object_value.indexOf(decimal_format);
	//Was it a decimal?
		if (check_char < 1)
			return _CF_checknumber(object_value);
		else return false;
}

function getValueOfSelect(fname)
{
    obj1=_getObject(fname);
	vIndex=obj1.selectedIndex;
	value1=obj1.options[vIndex].value;
	return value1;
}

function isblank(s)
{
    for(var i = 0; i < s.length; i++) {
        var c = s.charAt(i);
        if ((c != ' ') && (c != '\n') && (c != '\t')) return false;
    }
    return true;
}

function _formatnumber(intInput, decimals) {
	strInput=intInput.toString();
	returnvalue=strInput;
	if (strInput.indexOf(".")==-1) {
		returnvalue=strInput + "." + _chrloop("0", decimals);
	}
	else
	{
		aInput=strInput.split(".");
		strInt=aInput[0];		
		strDecimal=aInput[1];
		if (strDecimal.length==decimals) {
			returnvalue=strInput;
		}
		else
		{
			if (strDecimal.length<decimals) {
				returnvalue=strInput + _chrloop("0", decimals-strDecimal.length);
			}
			else
			{
				if (parseFloat(strDecimal.charAt(decimals))<5) {
					returnvalue= strInt + "." + strDecimal.substr(0,decimals);
				}
				else
				{
					strcheck=_chrloop("9", decimals);
					strDecimalcheck=strDecimal.substr(0,decimals);					
					if (parseFloat(strcheck)==parseFloat(strDecimalcheck)) {
						newInt= parseFloat(strInt) + 1;
						returnvalue = newInt.toString() + "." + _chrloop("0", decimals);
					}
					else
					{
						newDecimal=parseFloat(strDecimalcheck) + 1;
						returnvalue = strInt + "." + newDecimal.toString();
					}
				}
			}
		}
	}
	return returnvalue;
}
//****************************************
// Function: restore
// Description: collect the items that user selected and put them into hidden textbox 
// Parameters: 
// Return value: 
// Author: 
// Date: 
// Note: 
//****************************************
function restore(strlistSrc, strtxtDes) {
	listSrc = _getObject(strlistSrc);
	txtDes = _getObject(strtxtDes);
	if(listSrc){
		strres = ""
		nTo = listSrc.options.length;
		for (iTo=0;iTo<nTo;iTo++) {	
			vtype = listSrc.options[iTo].value
			arrtype = vtype.split("/")
			strres += arrtype[0] + ","
		}
		strres = strres.substr(0, strres.length-1)
		txtDes.value = strres;
	}
	else txtDes.value = ""
}

function checkPassword(pass,conf) {
	if (pass=="" || conf=="")
		return false;
	if ((pass.length<3) || (conf.length<3) )	
		return false;	
	if (pass != conf)			
		return false;	
	return true;
}