// JScript File
<!--

    var arrDayNames = new Array("Sun","Mon","Tue","Wed",
		"Thu","Fri","Sat");
    var arrDayFullNames = new Array("Sunday","Monday","Tuesday","Wednesday",
		"Thursday","Friday","Saturday");

    var arrMonthNames = new Array("Jan",
		"Feb","Mar","Apr",
		"May","Jun","Jul","Aug","Sep","Oct","Nov","Dec");
    var arrMonthFullNames = new Array("January","February","March","April",
		"May","June","July","August",
		"September","October","November","December");
            
    function getMiniDateStr(dtstr) {
        var DATEIDX_YEAR = 0;
        var DATEIDX_MONTH = 1;
        var DATEIDX_DATE = 2;

        var retval = "?"

        dtstr = ( !(dtstr==null) && !(dtstr==undefined) ? dtstr : "" );

        if ( dtstr.length > 0 ) {
            var datetimearray = dtstr.split(" ");

            if ( datetimearray.length > 0 ) {
                var datearray = datetimearray[0].substring(0,10).split("-");

                if ( datearray.length == 3 ) {
                    retval = eval(datearray[DATEIDX_MONTH])
                    + "/" + eval(datearray[DATEIDX_DATE]);
                }
            }
        }

        return trim(retval);
    }
          
    function cvtDateStr2DateObj(dtstr) {
        var DATEIDX_YEAR = 0;
        var DATEIDX_MONTH = 1;
        var DATEIDX_DATE = 2;

        var retval = new Date();

        dtstr = ( !(dtstr==null) && !(dtstr==undefined) ? dtstr : "" );

        if ( dtstr.length > 0 ) {
            var datetimearray = dtstr.split(" ");

            if ( datetimearray.length > 0 ) {
                var datearray = datetimearray[0].substring(0,10).split("-");

                if ( datearray.length == 3 ) {
                    retval.setFullYear(parseInt(datearray[DATEIDX_YEAR]));
                    retval.setMonth(parseInt(datearray[DATEIDX_MONTH]) - 1);
                    retval.setDate(parseInt(datearray[DATEIDX_DATE]));
                }
            }
        }

        return retval;
    }

    function cvtDateStr2Num(dtstr) {
        var DATEIDX_YEAR = 0;
        var DATEIDX_MONTH = 1;
        var DATEIDX_DATE = 2;

        var retval = "000000"

        dtstr = ( !(dtstr==null) && !(dtstr==undefined) ? dtstr : "" );

        if ( dtstr.length > 0 ) {
            var datetimearray = dtstr.split(" ");

            if ( datetimearray.length > 0 ) {
                var datearray = datetimearray[0].substring(0,10).split("-");

                if ( datearray.length == 3 ) {
                    retval = ""
                        + datearray[DATEIDX_YEAR]
                        + datearray[DATEIDX_MONTH]
                        + datearray[DATEIDX_DATE];
                }
            }
        }

        return parseInt(retval);
    }

    function cvtTimeStr2Num(dtstr) {
        var TIMEIDX_HOUR = 0;
        var TIMEIDX_MINUTE = 1;
        var TIMEIDX_SECOND = 2;

        var retval = "000000"

        dtstr = ( !(dtstr==null) && !(dtstr==undefined) ? dtstr : "" );

        if ( dtstr.length > 0 ) {
            var datetimearray = dtstr.split(" ");
            var timearray = ( ( datetimearray.length > 1 ) ? datetimearray[1].substring(0,8).split(":") :datetimearray[0].substring(0,8).split(":") );

            if ( timearray.length >= 3 ) {
                retval = ""
                + timearray[TIMEIDX_HOUR]
                + timearray[TIMEIDX_MINUTE]
                + timearray[TIMEIDX_SECOND];
            }
        } 

        return parseInt(retval);
    }

    function formatDateStr(dateObj) {
        var retStr = "";
        
        if ( ( dateObj != undefined ) && dateObj.getDate ) {
            var m = dateObj.getMonth();
            var d = dateObj.getDate();
            var y = dateObj.getYear();
            
            m = m += 1;
            if ( y < 1000 ) y += 1900;

            retStr = trim(m) + "/" + trim(d) + "/" + trim(y);
        }
        
        return retStr;
    }
  
    function formatXMLDateStr(dateObj) {
        var retStr = "";
        
        if ( ( dateObj != undefined ) && dateObj.getDate ) {
            var m = dateObj.getMonth();
            var d = dateObj.getDate();
            var y = dateObj.getYear();
            
            m = m += 1;
            if ( y < 1000 ) y += 1900;
            
            m = "0" + m.toString();
            m = m.substr(m.length-2,2);
            d = "0" + d.toString();
            d = d.substr(d.length-2,2);

            retStr = trim(y) + "-" + trim(m) + "-" + trim(d);
        }
        
        return retStr;
    }
  
    function getShortDateStr(dtstr) {
        var DATEIDX_YEAR = 0;
        var DATEIDX_MONTH = 1;
        var DATEIDX_DATE = 2;

        var retval = "?"

        dtstr = ( !(dtstr==null) && !(dtstr==undefined) ? dtstr : "" );

        if ( dtstr.length > 0 ) {
            var datetimearray = dtstr.split(" ");

            if ( datetimearray.length > 0 ) {
                var datearray = datetimearray[0].substring(0,10).split("-");

                if ( datearray.length == 3 ) {
                    retval = parseInt(datearray[DATEIDX_MONTH],10)
                        + "/" + parseInt(datearray[DATEIDX_DATE],10)
                        + "/" + parseInt(datearray[DATEIDX_YEAR],10);
                }
            }
        }

        return trim(retval);
    }

    function getShortTimeStr(dtstr) {
        var TIMEIDX_HOUR = 0;
        var TIMEIDX_MINUTE = 1;
        var TIMEIDX_SECOND = 2;

        var retval = "?"

        dtstr = ( !(dtstr==null) && !(dtstr==undefined) ? dtstr : "" );

        if ( dtstr.length > 0 ) {
            var datetimearray = dtstr.split(" ");
            var timearray = ( ( datetimearray.length > 1 ) ? datetimearray[1].substring(0,8).split(":") :datetimearray[0].substring(0,8).split(":") );

            if ( timearray.length > 0 ) {
                var h = parseInt(timearray[TIMEIDX_HOUR],10);
                h = ( ( h - 12 > 0 ) ? h - 12 :( ( h == 0 ) ? 12 :h ) );

                var ampm = ( ( parseInt(timearray[TIMEIDX_HOUR]) > 11 ) ? "PM" :"AM" );

                retval = parseInt(h,10)
                    + ":" + timearray[TIMEIDX_MINUTE]
                    + " " + ampm;
            }
        } 

        return trim(retval);
    }

    function getDatePart(dtstr,partname) {
        var retval = "?";

        if ( dtstr.length > 0 ) {
            var fmtdate = getShortDateStr(dtstr);

            if ( fmtdate != "?" ) {
                var dtobj = new Date(fmtdate);

                switch ( partname ) {
                    case "day":
                        retval = arrDayNames[dtobj.getDay()];
                        break;
                    case "month":
                        retval = arrMonthNames[dtobj.getMonth()];
                        break;
                }
            }
        }
        return retval;
    }

    function getNewDateTime(yr,mo,dt,hr,mi,ss,ms) {
        var odt = new Date();

	if ( !(yr==undefined) && !(yr==null) ) {
		if ( !(typeof yr=='number') ) yr = parseInt(yr);

		odt.setFullYear(yr); 
	}

	if ( !(mo==undefined) && !(mo==null) ) {
		// NOTE: user-supplied value for month parameter "mo" is one-based
		//	 date object sets and returns zero-based values for month

		if ( !(typeof mo=='number') ) mo = parseInt(mo);
		mo--;

		odt.setMonth(mo); 
	}


	if ( !(dt==undefined) && !(dt==null) ) {
		if ( !(typeof dt=='number') ) dt = parseInt(dt);

		odt.setDate(dt); 
	}

	if ( !(hr==undefined) && !(hr==null) ) {
		if ( !(typeof hr=='number') ) hr = parseInt(hr);

		odt.setHours(hr); 
	}

	if ( !(mi==undefined) && !(mi==null) ) {
		if ( !(typeof mi=='number') ) mi = parseInt(mi);

		odt.setMinutes(mi); 
	}

	if ( !(ss==undefined) && !(ss==null) ) {
		if ( !(typeof ss=='number') ) ss = parseInt(ss);

		odt.setSeconds(ss); 
	}

	if ( !(ms==undefined) && !(ms==null) ) {
		if ( !(typeof ms=='number') ) ms = parseInt(ms);

		odt.setMilliseconds(ms); 
	}

	return odt;
    }

    function getNewDate(yr,mo,dt) {
	// NOTE: user-supplied value for month parameter "mo" is one-based
	//	 date object sets and returns zero-based values for month

	var hr;
	var mi;
	var ss;
	var ms;

        var od = getNewDateTime(yr,mo,dt,hr,mi,ss,ms);

	return od;
    }

    function getNewTime(hr,mi,ss,ms) {
	var yr;
	var mo;
	var dt;

        var ot = getNewDateTime(yr,mo,dt,hr,mi,ss,ms);

	return ot;
    }

    function cvtDate2Int() {
	var fnVal = 0;

	var YR_FACTOR =	10000;
	var MO_FACTOR =	100;
	var DT_FACTOR =	1;

	var od = new Date();

	var yr = od.getFullYear();
	var mo = od.getMonth() + 1;
	var dt = od.getDate();

	for ( var idx=0; idx<arguments.length; idx++ ) {
		var arg = arguments[idx];

		switch ( idx ) {
			case 0:
				if ( ( typeof arg=='object' ) && arg.getFullYear ) {
					yr = arg.getFullYear();
					mo = arg.getMonth() + 1;
					dt = arg.getDate();
				} else yr = parseInt(arg);

				break;
			case 1:
				mo = parseInt(arg);

				break;
			case 2:
				dt = parseInt(arg);

				break;
		}
	}

	fnVal = ( YR_FACTOR * yr ) 
		+ ( MO_FACTOR * mo ) 
		+ ( DT_FACTOR * dt );

	return fnVal;
    }

    function cvtTime2Float() {
	var fnVal = 0.0;

	var HR_FACTOR =	0.01;
	var MI_FACTOR =	0.0001;
	var SS_FACTOR =	0.000001;
	var MS_FACTOR =	0.000000001;

	var PRECISION = 9;

	var od = new Date();

	var hr = od.getHours();
	var mi = od.getMinutes();
	var ss = od.getSeconds();
	var ms = od.getMilliseconds();

	for ( var idx=0; idx<arguments.length; idx++ ) {
		var arg = arguments[idx];

		switch ( idx ) {
			case 0:
				if ( ( typeof arg=='object' ) && arg.getFullYear ) {
					hr = arg.getHours();
					mi = arg.getMinutes();
					ss = arg.getSeconds();
					ms = arg.getMilliseconds();
				} else hr = parseInt(arg);

				break;
			case 1:
				mi = parseInt(arg);

				break;
			case 2:
				ss = parseInt(arg);

				break;
			case 3:
				ms = parseInt(arg);

				break;
		}
	}

	fnVal = ( HR_FACTOR * hr ) 
		+ ( MI_FACTOR * mi ) 
		+ ( SS_FACTOR * ss )
		+ ( MS_FACTOR * ms );

	return fnVal.toPrecision(PRECISION);
    }

    function cvtDateTime2TokenID() {
	var fnVal;

	var INT_PRECISION = 8;
	var FLOAT_PRECISION = 9 ;
	var TOT_PRECISION = eval(INT_PRECISION + FLOAT_PRECISION + 1); 

	var od = new Date();

	var yr = od.getFullYear();
	var mo = od.getMonth() + 1;
	var dt = od.getDate();
	var hr = od.getHours();
	var mi = od.getMinutes();
	var ss = od.getSeconds();
	var ms = od.getMilliseconds();

	for ( var idx=0; idx<arguments.length; idx++ ) {
		var arg = arguments[idx];

		switch ( idx ) {
			case 0:
				if ( ( typeof arg=='object' ) && arg.getFullYear ) {
					yr = arg.getFullYear();
					mo = arg.getMonth() + 1;
					dt = arg.getDate();
					hr = arg.getHours();
					mi = arg.getMinutes();
					ss = arg.getSeconds();
					ms = arg.getMilliseconds();
				} else yr = parseInt(arg);

				break;
			case 1:
				mo = parseInt(arg);

				break;
			case 2:
				dt = parseInt(arg);

				break;
			case 3:
				hr = parseInt(arg);

				break;
			case 4:
				mi = parseInt(arg);

				break;
			case 5:
				ss = parseInt(arg);

				break;
			case 6:
				ms = parseInt(arg);

				break;
		}
	}

	var dt_num = cvtDate2Int(yr,mo,dt);
	var tm_num = cvtTime2Float(hr,mi,ss,ms);

	fnVal = "~" + dt_num.toString() + "::" + tm_num.toString().split(".")[1];

	return fnVal;
    }

    function getUTCStamp(yr,mo,dt,hr,mi,ss,ms,rdx) {
	// NOTE: user-supplied value for parameter "yr" is one-based
	// NOTE: user-supplied value for parameter "mo" is one-based

        var od = getNewDate(yr,mo,dt);
	var ot = getNewTime(hr,mi,ss,ms)

	var ut = Date.UTC(od.getFullYear(),od.getMonth(),od.getDate(),
			ot.getHours(),ot.getMinutes(),ot.getSeconds(),ot.getMilliseconds());
	var ts;

	if ( !(rdx==undefined) ) ts = ut.toString(Number(rdx));

	return ts;
    }

    function cvtDate2UTCStamp(od,rdx) {
        od = ( ( od==undefined || od==null || !(od.getFullYear) ) ? new Date() : od );

	var ut = Date.UTC(od.getFullYear(),od.getMonth(),od.getDate(),
			od.getHours(),od.getMinutes(),od.getSeconds(),od.getMilliseconds());
	var ts;

	if ( !(rdx==undefined) ) ts = ut.toString(Number(rdx));

	return ts;
    }

    function getMaxMonthDate(yr,mo) {
	// NOTE: user-supplied value for parameter "yr" is one-based
	// NOTE: user-supplied value for parameter "mo" is one-based

        var od = new Date();

	var od_yr = od.getFullYear(); // four-digit one-based
	var od_mo = od.getMonth(); // zero-based

	var Y2K = 2000;
	var Y1K = 1900;

	yr = ( !(yr==undefined) ? Number(yr) : od_yr );
	if ( yr < 100 ) yr = eval(yr + ( yr > ( od_yr - Y2K ) ? Y1K : Y2K ));
	od.setFullYear(yr);
 
	mo = ( !(mo==undefined) && ( Number(mo)>=1 && Number(mo)<=12 ) ? Number(mo) : eval(od_mo + 1) );
	od.setMonth(mo); 

	od.setDate(1);
	od.setDate(od.getDate()-1); 

	return od.getDate();
    }

// --> 
