//PASSWORD
function isPwd(dPwd)
{
    var x = dPwd.value;
    var apwd=/^[a-zA-Z0-9]+$/;

    return (apwd.test(x));
}

function isAlphaNumeric(obj)
{
	var x ="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
	
	for(var b=0; b < obj.value.length; b++)
	{
		var c = b+1;
		if(x.indexOf(obj.value.substring(b,c))==-1)
		{
			return false;
		}
	}  
	return true;
}

// EMAIL
function isEmail(m)
{
	var filter  = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9])+$/;
	
	/*remarked by lee due to error*/
	//var filter=/^([\w-]+(?:\.[\w-]+)*)@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$/i;

	return filter.test(m);
}

// DOUBLE
function isDouble(dNum)  // Object
{
    var x = dNum.value;
    var anum=/(^\d+$)|(^\d+\.\d+$)/;

    return (anum.test(x));
}

function isDbl(dNum)  // Value
{
    var x = dNum;
    var anum=/(^\d+$)|(^\d+\.\d+$)/;

    return (anum.test(x));
}

// INTEGER
function isInteger(pNum)	// Object
{
    var x=pNum.value;
    var anum=/(^\d+$)/;

    return (anum.test(x));
}

function isInt(pNum)	// Value
{
    var anum=/(^\d+$)/;
    return (anum.test(pNum));
}

function ValidInt(x)
{
	 return (x+"."==parseInt(x)+".");
}

// ALPHABET
function isAlpha(obj)
{
   var x ="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
   
   for(var b=0; b < obj.value.length; b++)
   {
     var c = b+1;
     
     if(x.indexOf(obj.value.substring(b,c))==-1)
      {
        return false;
      }
   }  
   
   return true;
}

function isAlpha1(obj)
{
   var x ="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
   
     if(x.indexOf(obj.value)==-1)
      {
        return false;
      }
      
   return true;
}

// CURRENCY
function isCurrency(currNum)  // object
{
    if (!isDouble(currNum))
        return false;

    fmtCurrency(currNum);

    return true;
}

function isCurr(currNum)  // Value
{
    if (!isDbl(currNum))
        return false;

    return true;
}

// DATE
function isDate(obj)
{
    if (obj.value.length == 8 && isInteger(obj)) fmtDate(obj);

    var dd;
    var mm;
    var yyyy;
    var inDate = obj.value;

    if (inDate.length != 10) return false;
    if (!(inDate.substring(2,3) == "/" && inDate.substring(5,6) == "/")) return false;

    dd = inDate.substring(0,2);
    mm   = inDate.substring(3,5);
    yyyy   = inDate.substring(6,10);

    if (!(isInt(dd) && isInt(mm) && isInt(yyyy))) return false;
    if (dd < 1 || dd > 31 || mm < 1 || mm > 12 || yyyy < 1900 || yyyy > 2100) return false;
    switch (parseInt(mm))
    {
	    case 1: case 3: case 5: case 7: case 8: case 10: case 12:
        {
            if (dd > 31) return false;
            break;
        }
	    case 4: case 6: case 9: case 11:
        {
            if (dd > 30) return false;
            break;
        }
	    case 2:
	    {
	        if (((yyyy % 4 == 0) && (yyyy % 100 != 0)) || (yyyy % 400 == 0))
	        {
	            if (dd > 29) return false;
            }
            else if (dd > 28) return false;
    		break;
	    }
    }

    return true;
}

// TIME
function isTime(obj)
{
    if (obj.value.length == 4 && isInteger(obj)) fmtTime(obj);

    var hh24;
    var mi;
    var inTime = obj.value;

    if (inTime.length != 5) return false;
    if (inTime.substring(2,3) != ":" ) return false;

    hh24 = inTime.substring(0,2);
    mi   = inTime.substring(3,5);

    if (!(isInt(hh24) && isInt(mi))) return false;
    if (hh24 < 0 || hh24 > 23 || mi < 0 || mi > 59) return false;

    return true;
}

// VALID ID
function isValidID(obj)
{
   var x ="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890_";
   
   for(var b=0; b < obj.value.length; b++)
   {
     var c = b+1;
     
     if(x.indexOf(obj.value.substring(b,c))==-1)
      {
        return false;
      }
   }  
   
   return true;
}

// ERROR PROMPT
function errPrompt(inObj, inPrompt)
{
    alert(inPrompt);
    if (inObj.disabled == false)
    	inObj.focus();    
    if (trim(inObj.value) != "")
    	inObj.select();
}

// COMPARE DATE
function compareDate(d1, d2) // d1=greater date, d2=smaller date
{
    if (d2 == null)
    {
        var dt = new Date();
        var m  = dt.getMonth() + 1;
        var d  = dt.getDate();

        if (m < 10) m = "0" + m;
        if (d < 10) d = "0" + d;

        d2 = dt.getFullYear() + "" + m + "" + d;
    }
    else
        d2 = d2.substring(0,4) + d2.substring(5,7) + d2.substring(8,10);

    d1 = d1.substring(0,4) + d1.substring(5,7) + d1.substring(8,10);
//alert(d1+" - "+d2+" = "+(d1-d2));
    return d1 - d2;
}

function DateDiffDay(d1, d2) // d1=greater date, d2=smaller date
{
	var dt1 = new Date(getMonthName(d1.substring(3,5)) + " " + d1.substring(0,2) + ", " + d1.substring(6,10));
	var dt2 = new Date(getMonthName(d2.substring(3,5)) + " " + d2.substring(0,2) + ", " + d2.substring(6,10));
	var diff = dt1.getTime() - dt2.getTime();
	var days = Math.floor(diff / (1000 * 60 * 60 * 24));
	
	return days;
}

function DateTimeDiff24(sDate, sTime, eDate, eTime)
{
	var HH = "00";
	var MM = "00";
	var tDiff = 0;
	if (isDate(sDate) == true && isTime(sTime) == true && isDate(eDate) == true && isTime(eTime) == true)
	{
		var sDT_HH = sTime.value.substring(0,2);
		var sDT_MI = sTime.value.substring(3,5);
		var sDT_DD = sDate.value.substring(0,2);
		var sDT_MM = sDate.value.substring(3,5);
		var sDT_YY = sDate.value.substring(6,10);
		var sDT = new Date(sDT_YY, sDT_MM-1, sDT_DD, sDT_HH, sDT_MI, 00);
	
		var eDT_HH = eTime.value.substring(0,2);
		var eDT_MI = eTime.value.substring(3,5);
		var eDT_DD = eDate.value.substring(0,2);
		var eDT_MM = eDate.value.substring(3,5);
		var eDT_YY = eDate.value.substring(6,10);
		var eDT = new Date(eDT_YY, eDT_MM-1, eDT_DD, eDT_HH, eDT_MI, 00);
		tDiff = (eDT.getTime()-sDT.getTime()) / (1000*60);
		if (tDiff > 0)
		{
			HH = Math.floor(tDiff / 60);
			MM = tDiff % 60;
			
			if (HH < 10) HH = "0" + HH;
			if (MM < 10) MM = "0" + MM;
		}
	}
    return HH + ":" + MM;
}

function TimeDiff24(sTime, eTime)
{
	var diff = ""
	var HH = "00";
	var MM = "00";
	var tDiff = 0;
	if (isTime(sTime) == true && isTime(eTime) == true)
	{
		var sTimeSS = (sTime.value.substring(0,2)/1 * 60) + sTime.value.substring(3,5)/1;
		var eTimeSS = (eTime.value.substring(0,2)/1 * 60) + eTime.value.substring(3,5)/1;
		
		//alert (" IN sTimeSS=" + sTimeSS + ", eTimeSS=" + eTimeSS)
		if (eTimeSS >= sTimeSS)
		{
			tDiff = eTimeSS - sTimeSS;
		}
		else
		{
			tDiff = (eTimeSS + (24 * 60)) - sTimeSS;
		}
		
		if (tDiff > 0)
		{
			HH = Math.floor(tDiff / 60);
			MM = tDiff % 60;
			
			if (HH < 10) HH = "0" + HH;
			if (MM < 10) MM = "0" + MM;
		}
	}
    return HH + ":" + MM;
}

// FORMAT TIME
function fmtTime(obj)
{
    obj.value = trim(obj.value);
    if (obj.value.length == 4 && isInteger(obj))
    {
        var mHH24 = obj.value.substring(0,2);
        var mMI   = obj.value.substring(2,4);
		if ( (parseInt(mHH24) >= 0 && parseInt(mHH24) <= 23) && (parseInt(mMI) >= 0 && parseInt(mMI) <= 59) )
			obj.value = mHH24 + ":" + mMI;
		else
			obj.value = "";
    }
	else if (obj.value.length == 3 && isInteger(obj))
    {
        var mHH24 = obj.value.substring(0,1);
        var mMI   = obj.value.substring(1,3);
		if ( (parseInt(mHH24) >= 0 && parseInt(mHH24) <= 9) && (parseInt(mMI) >= 0 && parseInt(mMI) <= 59) )
			obj.value = "0" + mHH24 + ":" + mMI;
		else
			obj.value = "";
    }
	/*else if (obj.value = "0" && isInteger(obj))
    {
        obj.value = "";
    }*/
}

function cvtSec(obj)
{
	var xSec = 0
	if (isTime(obj)) 
		xSec = (obj.value.substring(0,2)/1 * 60) + obj.value.substring(3,5)/1;
	return xSec;
}

function cvtTime(val)
{
	HH = Math.floor(val / 60);
	MM = val % 60;
	
	if (HH < 10) HH = "0" + HH;
	if (MM < 10) MM = "0" + MM;
	
	return HH + ":" + MM;
}

function getMonthName(mth)
{
	var mthName = "";
	if (parseInt(mth) == 1) mthName = "January";
	if (parseInt(mth) == 2) mthName = "February";
	if (parseInt(mth) == 3) mthName = "March";
	if (parseInt(mth) == 4) mthName = "April";
	if (parseInt(mth) == 5) mthName = "May";
	if (parseInt(mth) == 6) mthName = "June";
	if (parseInt(mth) == 7) mthName = "July";
	if (parseInt(mth) == 8) mthName = "August";
	if (parseInt(mth) == 9) mthName = "September";
	if (parseInt(mth) == 10) mthName = "October";
	if (parseInt(mth) == 11) mthName = "November";
	if (parseInt(mth) == 12) mthName = "December";
	
	return mthName;
}

function dayInMonth (mth, yr) {
	var day = 0;
    switch (parseInt(mth)) {
	    case 1: case 3: case 5: case 7: case 8: case 10: case 12:
	    {
            day = 31;
            break;
        }
	    case 4: case 6: case 9: case 11:
        {
            day = 30;
            break;
        }
	    case 2:
	    {
	        if (((yr % 4 == 0) && (yr % 100 != 0)) || (yr % 400 == 0))
	            day > 29;
            else
            	day > 28;
    		break;
	    }
    }
    return day;
}

function DateDiff(dt1,dt2)
{
	diff = dt2-dt1;    //difference in milliseconds
	mtg = new String(diff/86400000);    //calculate days and convert to string
	point=mtg.indexOf(".");    //find the decimal point
	days=mtg.substring(0,point);    //get just the whole days
	return days;
}

function calculateDate (dt1, dt2) {	// date1=start, date2=end
	var date1 = dt1.value;
	var date2 = dt2.value;
	var returnVal = 0;
	var dt = 0;

	if (date1 != "" && date2 != "" && isDate(dt1) && isDate(dt2)) {
		var y1 = date1.substring(0,4);
		var m1 = date1.substring(5,7);
		var d1 = date1.substring(8,10);
		var y2 = date2.substring(0,4);
		var m2 = date2.substring(5,7);
		var d2 = date2.substring(8,10);
		var m = 0;
		var d = 0;
		var y = 0;
		var td = 0;

		//dt = new Date(y1/1,(m1/1)-1,d1/1);
		//alert(new Date(y1/1,(m1/1)-1,d1/1).getDay());
		//alert("Date="+dt+"\nmyDate="+y1+m1+d1+"\nYear="+dt.getYear()+"\nMonth="+dt.getMonth()+"\nDayOfWeek="+dt.getDay()+"\nDay="+dt.getDate());

		if (compareDate(date2,date1)>=0) {
			if (y2/1==y1/1) {
				// same year
				returnVal = 0;
				//alert(returnVal);
				if (m1/1==m2/1) {
					// same month
					for (d = d1/1; d <= d2/1; d++) {
						dt = new Date(y1/1,(m1/1)-1,d/1);
						//if (dt.getDay() != 0 && dt.getDay() != 6)
							returnVal++;
						//returnVal = d2/1 - d1/1;
					}
				}
				else {
					// different month
					for (m = m1/1; m <= m2/1; m++) {
						if (m == m1/1 && m < m2/1) {
							//returnVal = returnVal/1 + ((dayInMonth(m,y1)/1)-(d1/1)+1);
							for (d = d1/1; d <= dayInMonth(m,y1)/1; d++) {
								dt = new Date(y1/1,(m/1)-1,d/1);
								//if (dt.getDay() != 0 && dt.getDay() != 6)
									returnVal++;
							}
						}
						else if (m > m1/1 && m < m2/1) {
							//returnVal = returnVal/1 + dayInMonth(m,y1)/1;
							for (d = 1; d <= dayInMonth(m,y1)/1; d++) {
								dt = new Date(y1/1,(m/1)-1,d/1);
								//if (dt.getDay() != 0 && dt.getDay() != 6)
									returnVal++;
							}
						}
						else if (m > parseInt(m1) && m == parseInt(m2)) {
							//returnVal = returnVal/1 + d2/1;
							for (d = 1; d <= d2/1; d++) {
								dt = new Date(y1/1,(m/1)-1,d/1);
								//if (dt.getDay() != 0 && dt.getDay() != 6)
									returnVal++;
							}
						}
					}
				}
			}
			else {
				returnVal = 0;
				// different year
				//alert(returnVal);
				for (y = y1/1; y <= y2/1; y++) {
			        if (((y % 4 == 0) && (y % 100 != 0)) || (y % 400 == 0)) td = 366;
		            else td = 365;

					if (y == y1/1 && y < y2/1) {
						for (m = m1/1; m <= 12; m++) {
							if (m == m1/1) {
								//returnVal = returnVal/1 + ((dayInMonth(m,y1)/1)-(d1/1)+1);
								for (d = d1/1; d <= dayInMonth(m,y)/1; d++) {
									dt = new Date(y/1,(m/1)-1,d/1);
									//if (dt.getDay() != 0 && dt.getDay() != 6)
										returnVal++;
								}
							}
							else {
								//returnVal = returnVal/1 + (dayInMonth(m,y1))/1;
								for (d = 1; d <= dayInMonth(m,y)/1; d++) {
									dt = new Date(y/1,(m/1)-1,d/1);
									//if (dt.getDay() != 0 && dt.getDay() != 6)
										returnVal++;
								}
							}
						}
					}
					else if (y > y1/1 && y < y2/1) {
						//returnVal = returnVal/1 + td/1;
						for (m = 1; m <= 12; m++) {
							for (d = 1; d <= dayInMonth(m,y)/1; d++) {
								dt = new Date(y/1,(m/1)-1,d/1);
								//if (dt.getDay() != 0 && dt.getDay() != 6)
									returnVal++;
							}
						}
					}
					else if (y > y1/1 && y == y2/1) {
						for (m = 1; m <= m2/1; m++) {
							if (m == m2/1) {
								//returnVal = returnVal/1 + ((dayInMonth(m,y2)/1)-(d2/1)+1);
								for (d = 1; d <= d2/1; d++) {
									dt = new Date(y/1,(m/1)-1,d/1);
									//if (dt.getDay() != 0 && dt.getDay() != 6)
										returnVal++;
								}
							}
							else {
								//returnVal = returnVal/1 + (dayInMonth(m,y2))/1;
								for (d = 1; d <= dayInMonth(m,y)/1; d++) {
									dt = new Date(y/1,(m/1)-1,d/1);
									//if (dt.getDay() != 0 && dt.getDay() != 6)
										returnVal++;
								}
							}
						}
					}
				}
			}
		}
	}
	//alert("Final="+returnVal);
	return returnVal;
}

function calculateDateWkd (dt1, dt2) {	// date1=start, date2=end, minus weekend
	var date1 = dt1.value;
	var date2 = dt2.value;
	var returnVal = 0;
	var dt = 0;

	if (date1 != "" && date2 != "" && isDate(dt1) && isDate(dt2)) {
		var y1 = date1.substring(0,4);
		var m1 = date1.substring(5,7);
		var d1 = date1.substring(8,10);
		var y2 = date2.substring(0,4);
		var m2 = date2.substring(5,7);
		var d2 = date2.substring(8,10);
		var m = 0;
		var d = 0;
		var y = 0;
		var td = 0;

		//dt = new Date(y1/1,(m1/1)-1,d1/1);
		//alert(new Date(y1/1,(m1/1)-1,d1/1).getDay());
		//alert("Date="+dt+"\nmyDate="+y1+m1+d1+"\nYear="+dt.getYear()+"\nMonth="+dt.getMonth()+"\nDayOfWeek="+dt.getDay()+"\nDay="+dt.getDate());

		if (compareDate(date2,date1)>=0) {
			if (y2/1==y1/1) {
				// same year
				returnVal = 0;
				//alert(returnVal);
				if (m1/1==m2/1) {
					// same month
					for (d = d1/1; d <= d2/1; d++) {
						dt = new Date(y1/1,(m1/1)-1,d/1);
						if (dt.getDay() != 0 && dt.getDay() != 6)
							returnVal++;
						//returnVal = d2/1 - d1/1;
					}
				}
				else {
					// different month
					for (m = m1/1; m <= m2/1; m++) {
						if (m == m1/1 && m < m2/1) {
							//returnVal = returnVal/1 + ((dayInMonth(m,y1)/1)-(d1/1)+1);
							for (d = d1/1; d <= dayInMonth(m,y1)/1; d++) {
								dt = new Date(y1/1,(m/1)-1,d/1);
								if (dt.getDay() != 0 && dt.getDay() != 6)
									returnVal++;
							}
						}
						else if (m > m1/1 && m < m2/1) {
							//returnVal = returnVal/1 + dayInMonth(m,y1)/1;
							for (d = 1; d <= dayInMonth(m,y1)/1; d++) {
								dt = new Date(y1/1,(m/1)-1,d/1);
								if (dt.getDay() != 0 && dt.getDay() != 6)
									returnVal++;
							}
						}
						else if (m > parseInt(m1) && m == parseInt(m2)) {
							//returnVal = returnVal/1 + d2/1;
							for (d = 1; d <= d2/1; d++) {
								dt = new Date(y1/1,(m/1)-1,d/1);
								if (dt.getDay() != 0 && dt.getDay() != 6)
									returnVal++;
							}
						}
					}
				}
			}
			else {
				returnVal = 0;
				// different year
				//alert(returnVal);
				for (y = y1/1; y <= y2/1; y++) {
			        if (((y % 4 == 0) && (y % 100 != 0)) || (y % 400 == 0)) td = 366;
		            else td = 365;

					if (y == y1/1 && y < y2/1) {
						for (m = m1/1; m <= 12; m++) {
							if (m == m1/1) {
								//returnVal = returnVal/1 + ((dayInMonth(m,y1)/1)-(d1/1)+1);
								for (d = d1/1; d <= dayInMonth(m,y)/1; d++) {
									dt = new Date(y/1,(m/1)-1,d/1);
									if (dt.getDay() != 0 && dt.getDay() != 6)
										returnVal++;
								}
							}
							else {
								//returnVal = returnVal/1 + (dayInMonth(m,y1))/1;
								for (d = 1; d <= dayInMonth(m,y)/1; d++) {
									dt = new Date(y/1,(m/1)-1,d/1);
									if (dt.getDay() != 0 && dt.getDay() != 6)
										returnVal++;
								}
							}
						}
					}
					else if (y > y1/1 && y < y2/1) {
						//returnVal = returnVal/1 + td/1;
						for (m = 1; m <= 12; m++) {
							for (d = 1; d <= dayInMonth(m,y)/1; d++) {
								dt = new Date(y/1,(m/1)-1,d/1);
								if (dt.getDay() != 0 && dt.getDay() != 6)
									returnVal++;
							}
						}
					}
					else if (y > y1/1 && y == y2/1) {
						for (m = 1; m <= m2/1; m++) {
							if (m == m2/1) {
								//returnVal = returnVal/1 + ((dayInMonth(m,y2)/1)-(d2/1)+1);
								for (d = 1; d <= d2/1; d++) {
									dt = new Date(y/1,(m/1)-1,d/1);
									if (dt.getDay() != 0 && dt.getDay() != 6)
										returnVal++;
								}
							}
							else {
								//returnVal = returnVal/1 + (dayInMonth(m,y2))/1;
								for (d = 1; d <= dayInMonth(m,y)/1; d++) {
									dt = new Date(y/1,(m/1)-1,d/1);
									if (dt.getDay() != 0 && dt.getDay() != 6)
										returnVal++;
								}
							}
						}
					}
				}
			}
		}
	}
	//alert("Final="+returnVal);
	return returnVal;
}

// COMPARE TIME
function compareTime(t1, t2)
{
    if (t2 == null)
    {
        var dt = new Date();
        var h  = dt.getHours();
        var m  = dt.getMinutes();

        if (h < 10) h = "0" + h;
        if (m < 10) m = "0" + m;

//        t2 = h + ":" + m;
        t2 = h +""+ m;
    }
    else
        t2 = t2.substring(0,2) + t2.substring(3,5);

//    t1 = t1.substring(0,2) +":"+ t1.substring(3,5);
    t1 = t1.substring(0,2) + t1.substring(3,5);
    
//alert ("t1 = " + t1 + "\nt2 = " + t2 + "\nt1 - t2 = " + (t1 - t2));
    return t1 - t2;
}

// TRIM STRING VALUE
function rtrim ( s )
{
	return s.replace( /\s*$/, "" );
}

function trim ( s )
{
	return rtrim(ltrim(s));
}

function ltrim ( s )
{
	return s.replace( /^\s*/, "" );
}

// FORMAT DATE
function fmtDate(obj) {
    obj.value = trim(obj.value);
    if (obj.value.length == 8 && isInteger(obj))
    {
        var mDay  = obj.value.substring(0,2);
        var mMonth = obj.value.substring(2,4);
        var mYear   = obj.value.substring(4,8);
        obj.value = mDay + "/" + mMonth + "/" + mYear;
    }
}

// CHECK VALID DATE
function checkDate(obj) {
	if (!isDate(obj)) {
	   	errPrompt(obj,"Invalid Date Value")
		obj.select();
	}
	else {
	   	fmtDate(obj);	
	}
}


// FORMAT MONTH YEAR
function fmtMthYr(obj)
{
	obj.value = trim(obj.value);
	if (obj.value.length == 6 && isInteger(obj))
	{
		var mMonth =obj.value.substring(0,2);
		var mYear  =obj.value.substring(2,6);
		obj.value = mMonth + "/"+ mYear ;
	}
}

// FORMAT UPPER CASE STRING
function fmtUpString(obj)
{
    obj.value = trim(obj.value);
    obj.value = obj.value.toUpperCase();
}

// FORMAT LOWER CASE STRING
function fmtLowString(obj)
{
    obj.value = trim(obj.value);
    obj.value = obj.value.toLowerCase();
}

// FORMAT CURRENCY
function fmtCurrency(currNum)  // Object
{
    if (currNum.value == "" || !isDouble(currNum))
        return;

    var wd;
    wd="w";
    var tempnum=currNum.value;
    for (var i=0;i<tempnum.length;i++)
    {
        if (tempnum.charAt(i)==".")
        {
            wd="d";
            break;
        }
    }
    if (wd=="w")
        currNum.value=tempnum+".00";
    else
    {
        if (tempnum.charAt(tempnum.length-2)==".")
        {
            currNum.value=tempnum+"0";
        }
        else
        {
            tempnum=Math.round(tempnum*100)/100;
            currNum.value=tempnum;
            if (isInteger(currNum))
                fmtCurrency(currNum); // get back ".00"
        }
    }
}

function fmtCurr(currNum)  // Value
{
    if (currNum == "" || !isDbl(currNum))
        return currNum;

    var wd;
    wd="w";
    var tempnum=currNum;
    for (var i=0;i<tempnum.length;i++)
    {
        if (tempnum.charAt(i)==".")
        {
            wd="d";
            break;
        }
    }
    if (wd=="w")
        currNum=tempnum+".00";
    else
    {
        if (tempnum.charAt(tempnum.length-2)==".")
        {
            currNum=tempnum+"0";
        }
        else
        {
            tempnum=Math.round(tempnum*100)/100;
            currNum=tempnum;
            if (isInt(currNum))
                currNum = fmtCurr(currNum); // get back ".00"
        }
    }

    return currNum;
}

// FORMAT NO OF DAYS / HOUR --> allow 1 decimal point either 0 or 5 ==> 1.0 or 1.5
function fmtHalf(numVal)  // Object
{
    if (numVal.value == "" || !isDouble(numVal))
        return;

    var wd;
    wd="w";
    var tempnum=numVal.value;
    for (var i=0;i<tempnum.length;i++)
    {
        if (tempnum.charAt(i)==".")
        {
            wd="d";
            break;
        }
    }
    if (wd=="w")
        numVal.value=tempnum+".0";
    else
    {
        if (tempnum.charAt(tempnum.length-2)==".")
        {
        	tempnum = tempnum+"0";
        }
        var tempnum2 = tempnum.substring(tempnum.indexOf(".")+1,tempnum.length);
        //alert("tempnum2="+tempnum2);
        if (tempnum2.length > 2) {
        	//alert("roundup1="+Math.round(tempnum2.substring(0,3)/100));
        	if (Math.round(tempnum2.substring(0,3)/100) < 5)
        		tempnum = tempnum.substring(0, tempnum.indexOf("."))+".0";
        	else if (Math.round(tempnum2.substring(0,3)/100) == 5)
        		tempnum = tempnum.substring(0, tempnum.indexOf("."))+".5";
        	else if (Math.round(tempnum2.substring(0,3)/100) > 5)
        		tempnum = (parseInt(tempnum.substring(0,tempnum.indexOf(".")))+1)+".0";
        }
        else {
        	if (tempnum2.length == 1)
        		tempnum2 = tempnum2 + "0";
        	//alert("roundup2="+Math.round(tempnum2/10));
        	if (Math.round(tempnum2/10) < 5)
        		tempnum = tempnum.substring(0, tempnum.indexOf("."))+".0";
        	else if (Math.round(tempnum2/10) == 5)
        		tempnum = tempnum.substring(0, tempnum.indexOf("."))+".5";
        	else if (Math.round(tempnum2/10) > 5)
        		tempnum = (parseInt(tempnum.substring(0,tempnum.indexOf(".")))+1)+".0";
        }
        
        numVal.value=tempnum;
        if (isInteger(numVal))
            fmtNoOfDay(numVal); // get back ".0"
    }
}

// FORMAT EXCHANGE RATE
function fmtExch(currNum)  // Object
{   
    currNum.value = trim(currNum.value);
    if (currNum.value == "" || !isDouble(currNum))
        return;    
   
    var wd;
    wd="w";
    var tempnum=currNum.value;
    for (var i=0;i<tempnum.length;i++)
    {        
        if (tempnum.charAt(i)==".")
        {            
            wd="d";
            break;
        }
    }
    
    if (wd=="w")
        currNum.value=tempnum+".0000";
    else
    {       
        if (tempnum.charAt(tempnum.length-4)==".")
        {
            currNum.value=tempnum+"0";            
        }
        else
        {            
            tempnum=Math.round(tempnum*10000)/10000;
            currNum.value=tempnum;
            if (isInteger(currNum))
                fmtExch(currNum); // get back ".0000"
        }        
    }   
}

function fmtExchRate(currNum)  // Value
{
    if (currNum == "" || !isDbl(currNum))
        return;

    var wd;
    wd="w";
    var tempnum=currNum;
    for (var i=0;i<tempnum.length;i++)
    {
        if (tempnum.charAt(i)==".")
        {
            wd="d";
            break;
        }
    }
    if (wd=="w")
        currNum=tempnum+".0000";
    else
    {
        if (tempnum.charAt(tempnum.length-4)==".")
        {
            currNum=tempnum+"0";
        }
        else
        {
            tempnum=Math.round(tempnum*10000)/10000;
            currNum=tempnum;
            if (isInt(currNum))
                currNum = fmtCurr(currNum); // get back ".0000"
        }
    }

    return currNum;
}

function LTrim(String)
{
	var i = 0;
	var j = String.length - 1;

	if (String == null)
		return (false);

	for (i = 0; i < String.length; i++)
	{
		if (String.substr(i, 1) != ' ' &&
		    String.substr(i, 1) != '\t')
			break;
	}

	if (i <= j)
		return (String.substr(i, (j+1)-i));
	else
		return ('');
}

function RTrim(String)
{
	var i = 0;
	var j = String.length - 1;

	if (String == null)
		return (false);

	for(j = String.length - 1; j >= 0; j--)
	{
		if (String.substr(j, 1) != ' ' &&
			String.substr(j, 1) != '\t')
		break;
	}

	if (i <= j)
		return (String.substr(i, (j+1)-i));
	else
		return ('');
}

function Trim(String)
{
	if (String == null)
		return (false);

	return RTrim(LTrim(String));
}

function textCounter (field, maxlimit) {
	if (field.value.length > maxlimit)
		field.value = field.value.substring(0, maxlimit);
}

function getHour(varMin)
{
	return Math.floor(varMin / 60); 
}

function getMinutes(varMin)
{
 	return varMin % 60;
}

function getDay(varHour)
{
 	return Math.floor(varHour / 24);
}

function getHourInDay(varHour)
{
 	return varHour % 24;
}

//usage
//OpenBrWindow("searchdetail.asp?member_id="+ escape(frm.member_id.value),'','','800','500','true');
function OpenBrWindow(theURL,winName,features, myWidth, myHeight, isCenter) //v3.0 
{ 
  	if(window.screen)if(isCenter)if(isCenter=="true")
	{
   	 	var myLeft = (screen.width-myWidth)/2;
   		var myTop = (screen.height-myHeight)/2;
   		features+=(features!='')?',':'';
   		features+=',left='+myLeft+',top='+myTop;
	}
	window.open(theURL,winName,features+((features!='')?',':'')+'width='+myWidth+',height='+myHeight);
}

function alphaOnly()
{
	//if ((event.keyCode > 32 && event.keyCode < 48) || (event.keyCode > 57 && event.keyCode < 65) || (event.keyCode > 90 && event.keyCode < 97))
	if ((event.keyCode > 32 && event.keyCode < 35) || (event.keyCode > 35 && event.keyCode < 48) || (event.keyCode > 57 && event.keyCode < 65) || (event.keyCode > 90 && event.keyCode < 97)) 
	{ 
	   	event.returnValue = false;
	}
}
	
function numOnly()
{
 	if ((event.keyCode > 32 && event.keyCode < 46) || (event.keyCode > 46 && event.keyCode < 48) || (event.keyCode > 57 && event.keyCode < 65) || (event.keyCode > 90 && event.keyCode < 97) || event.keyCode < 45 || event.keyCode > 57) 
	//if ((event.keyCode > 32 && event.keyCode < 48) || (event.keyCode > 57 && event.keyCode < 65) || (event.keyCode > 90 && event.keyCode < 97) || event.keyCode < 45 || event.keyCode > 57) 
	{ 
	   	event.returnValue = false;
	}
}

function mask(str,textbox,loc,delim)
{
 	var locs = loc.split(',');
	for (var i = 0; i <= locs.length; i++)
	{
	 	for (var k = 0; k <= str.length; k++)
		{
		 	if (k == locs[i])
			{
			   	if (str.substring(k, k+1) != delim)
				{
				   	str = str.substring(0,k) + delim + str.substring(k,str.length);
				}
			}
		}
	}
	textbox.value = str;
}

function textCounter (field, maxlimit) {
	if (field.value.length > maxlimit)
		field.value = field.value.substring(0, maxlimit);
}

function changeStatus(value) {		
	//alert("changeStatus("+value+")");
	if (document.frmSearch.SearchBy.value == "" || document.frmSearch.SearchBy.value == value) {
		document.frmSearch.SearchItem.value = "";
		document.frmSearch.SearchItem.disabled = true;
	}
	else {
		document.frmSearch.SearchItem.disabled = false;
	}
}

sortitems = 1;  // Automatically sort items within lists? (1 or 0)
function move(fbox,tbox)
{
	for(var i=0; i<fbox.options.length; i++)
	{
		if(fbox.options[i].selected && fbox.options[i].value != "")
		{
			var no = new Option();
			no.value = fbox.options[i].value;
			no.text = fbox.options[i].text;
			tbox.options[tbox.options.length] = no;
			fbox.options[i].value = "";
			fbox.options[i].text = "";
		}
	}
	BumpUp(fbox);
	if (sortitems) SortD(tbox);
}

function BumpUp(box)
{
	for(var i=0; i<box.options.length; i++)
	{
		if(box.options[i].value == "")
		{
			for(var j=i; j<box.options.length-1; j++)
			{
				box.options[j].value = box.options[j+1].value;
				box.options[j].text = box.options[j+1].text;
			}
			var ln = i;
			break;
		}
	}
	
	if(ln < box.options.length)
	{
		box.options.length -= 1;
		BumpUp(box);
	}
}

function SortD(box)
{
	var temp_opts = new Array();
	var temp = new Object();
	for(var i=0; i<box.options.length; i++)
	{
		temp_opts[i] = box.options[i];
	}
	for(var x=0; x<temp_opts.length-1; x++)
	{
		for(var y=(x+1); y<temp_opts.length; y++)
		{
			if(temp_opts[x].text > temp_opts[y].text)
			{
				temp = temp_opts[x].text;
				temp_opts[x].text = temp_opts[y].text;
				temp_opts[y].text = temp;
				temp = temp_opts[x].value;
				temp_opts[x].value = temp_opts[y].value;
				temp_opts[y].value = temp;
			}
		}
	}
	for(var i=0; i<box.options.length; i++)
	{
		box.options[i].value = temp_opts[i].value;
		box.options[i].text = temp_opts[i].text;
	}
}

function refreshNavi(id)
{
	//self.parent.IMenu.location.reload();
	self.parent.IMenu.location.href='Navi.asp?LinkID=' + id;
	self.parent.linkHover('');
}

function reverseStr(value)
{
	for (var text = '',i=value.length-1;i>-1;i=i-1)
	{
		text += value.charAt(i);
	}
	return text;
}

function isOraMth(val)
{
	val = val.toUpperCase();
	if (val == "JAN" || val == "FEB" || val == "MAR" || val == "APR" || val == "MAT" || val == "JUN" || val == "JUL" || val == "AUG" || val == "SEP" || val == "OCT" || val == "NOV" || val == "DEC")
		return true;
	else
		return false;
}

function isOraDate(obj)
{
    var dd;
    var mm;
    var yyyy;
    var inDate = obj.value;

    if (inDate.length != 11) return false;
    if (!(inDate.substring(2,3) == "/" && inDate.substring(6,7) == "/")) return false;

    dd = inDate.substring(0,2);
    mm   = inDate.substring(3,6);
    yyyy   = inDate.substring(7,11);

    if (!(isInt(dd) && isOraMth(mm) && isInt(yyyy))) return false;
    if (dd < 1 || dd > 31 || mm < 1 || mm > 12 || yyyy < 1900 || yyyy > 2100) return false;
    switch (parseInt(mm))
    {
	    case "JAN": case "MAR": case "MAY": case "JUL": case "AUG": case "OCT": case "DEC":
        {
            if (dd > 31) return false;
            break;
        }
	    case "APR": case "JUN": case "SEP": case "NOV":
        {
            if (dd > 30) return false;
            break;
        }
	    case "FEB":
	    {
	        if (((yyyy % 4 == 0) && (yyyy % 100 != 0)) || (yyyy % 400 == 0))
	        {
	            if (dd > 29) return false;
            }
            else if (dd > 28) return false;
    		break;
	    }
    }
    return true;
}

<!-- This script and many more are available free online at -->
<!-- The JavaScript Source!! http://javascript.internet.com -->
<!-- Original:  Premshree Pillai (premshree@hotmail.com ) -->
<!-- Web Site:  http://www.qiksearch.com -->
<!-- Begin

window.onerror = null;
 var bName = navigator.appName;
 var bVer = parseInt(navigator.appVersion);
 var NS4 = (bName == "Netscape" && bVer >= 4);
 var IE4 = (bName == "Microsoft Internet Explorer" 
 && bVer >= 4);
 var NS3 = (bName == "Netscape" && bVer < 4);
 var IE3 = (bName == "Microsoft Internet Explorer" 
 && bVer < 4);
 var blink_speed=1000;
 var i=0;
 
if (NS4 || IE4) {
 if (navigator.appName == "Netscape") {
 layerStyleRef="layer.";
 layerRef="document.layers";
 styleSwitch="";
 }else{
 layerStyleRef="layer.style.";
 layerRef="document.all";
 styleSwitch=".style";
 }
}

//BLINKING
function Blink(layerName){
 if (NS4 || IE4) { 
 if(i%2==0)
 {
 eval(layerRef+'["'+layerName+'"]'+
 styleSwitch+'.visibility="visible"');
 }
 else
 {
 eval(layerRef+'["'+layerName+'"]'+
 styleSwitch+'.visibility="hidden"');
 }
 } 
 if(i<1)
 {
 i++;
 } 
 else
 {
 i--
 }
 setTimeout("Blink('"+layerName+"')",blink_speed);
}

function userConfirm(msg,url)
{
	var mywindowCfm = OpenBrWindow('PopMsg.asp?pMsg=' + escape(msg) + '&pURL=' + escape(url),'','resizable=no,scrollbars=no,dependent=yes,alwaysRaised=yes','400','280','true');	
}

///// usage <body  onload="setInterval('blinkIt()',500)">
function blinkIt()
{
	if (!document.all) return;
	else
	{
		for(i=0;i<document.all.tags('blink').length;i++)
		{
			s=document.all.tags('blink')[i];
			s.style.visibility=(s.style.visibility=='visible')?'hidden':'visible';
		}
	}
}

function viewDCRLog(tbl,title,index)
{
	var myWindow = OpenBrWindow('ViewLog.asp?prmTable=' + escape(tbl) + '&prmTitle=' + escape(title) + '&prmLogIndex=' + escape(index),'DCR_LOG','resizable=no,scrollbars=no,dependent=yes,alwaysRaised=yes','550','400','true')
}

function sortCol(col,no)
{
	if (document.all.prmSortRecNo.value > 1)
	{
		if (document.all.prmSortBy.value != "" && document.all.prmSortBy.value == col) col += " desc";
		location.href = "?prmSortBy=" + escape(col) + "&prmSortNo=" + escape(no);
	}
}

function sortColShow(col,no)
{
	if (no != "")
	{
		var table = document.getElementById("tblSort");
		var cTR = table.getElementsByTagName("TR");
		table.rows[0].cells[no].style.backgroundColor = "#E5E5E5";
		for (i = 1; i < cTR.length; i++)
		{
			var tr = cTR.item(i);
			tr.cells[no].style.backgroundColor = "#E0F7C3";
		}
	}
}

function showRegion(objCtry,objRegion,objCtryName)
{
	objRegion.value = objCtry.value.split("[==]")[1];
	objCtryName.value = objCtry.value.split("[==]")[0];
}