<!--

    //////////////////////////////////////////////////////////////////////////
    //
    //  Copyright (c) 2003-2007, Levyco Development, LLC.
    //  All rights are reserved.
    //
    //////////////////////////////////////////////////////////////////////////

    var curFocus = "";
    var clientBrowser = "";
    var clientVersion = 0;
    var ua = navigator.appName;
    var ver = parseInt(navigator.appVersion);
    var refIn = "";
    var refOut = "";


    //
    // SETUP BROWSER IMPLEMENTATION SPECIFICS
    // ======================================
    //


    if ((ua == "Netscape") && (ver < 5)) {
        refIn = "document.layers['";
        refOut = "']";
        refOutStyle = "";
        clientBrowser = "NN";
        clientVersion = ver;
    }
    else if ((ua == "Netscape") && (ver >= 5)) {
        refIn = "document.getElementById('";
        refOut = "')";
        refOutStyle = ".style";
        clientBrowser = "NN";
        clientVersion = ver;
    }
    else if ((ua == "IE") && (ver >= 6)) {
        refIn = "document.getElementById('";
        refOut = "')";
        refOutStyle = ".style";
        clientBrowser = "IE";
        clientVersion = ver;
    }
    else {
        refIn = "document.all['";
        refOut = "']";
        refOutStyle = ".style";
        clientBrowser = "IE";
        clientVersion = ver;
    }


    //
    // SCRIPT EVAL FUNCTION THAT HANDLES BAD SCRIPT
    // ============================================
    //

    function evaluate (snippet) {

        try {
            eval (snippet);
            return (true);
        }
        catch(e) {
            return (false);
        }

    }


    //
    // MESSAGES HELPER FUNCTIONS
    // =========================
    //

    function displayError (msg, code) {
        return (displayMessage("t_del.gif","RED",msg,code));
    }

    function displayWarning (msg, code) {
        return (displayMessage("bang.gif","RED",msg,code));
    }

    function displayInfo (msg, code) {
        return (displayMessage("t_chk.gif","BLACK",msg,code));
    }

    function displayMessage (icon, txtcolor, msg, code) {
        return ("<span class=\""+txtcolor+" FORMFIELD\"><img src=\"/images/"+icon+"\">"+msg+(code!=0?"["+code+"]":"")+"</span>");
    }


    //
    // LOCAL TABLE NAVIGATOR FUNCTION
    // ==============================
    //

    function tableManager_Navigate (action, pager, srcdata, tblobject, pagelist, topage) {

        var oldtop = pager.top;

        switch (action) {
            case 1:
                pager.top = 0;
            break;
            case 2:
                pager.top -= pager.size;
                if (pager.top < 0) pager.top = 0;
            break;
            case 3:
                if (pager.top + pager.size < pager.count) {
                    pager.top += pager.size;
                    if (pager.top >= pager.count) pager.top = (pager.pages - 1) * pager.size;
                    if (pager.top < 0) pager.top = 0;
                }
            break;
            case 4:
                pager.top = (pager.pages - 1) * pager.size;
                if (pager.top < 0) pager.top = 0;
            break;
            case 5:
                if (topage === undefined) topage = 1;
                if (topage < 1) topage = 1;
                if (topage > pager.pages) topage = pager.pages;
                pager.top = (topage - 1) * pager.size;
            break;
        }

        if (pager.top != oldtop) {
            tableManager_GetPage (pager, srcdata, pagelist);
            if (typeof(tblobject) == 'object') {
                tableManager_LoadPage (tblobject, RESULT.data.rows);
            }
            else if (typeof(tblobject) == 'function') {
                tblobject();
            }
        }

    }

    function tableManager_LoadPage (tblobject, srcdata) {

        // (re)load the table's rows

        if (srcdata.length > 0) {
            tblobject.getRecordSet().replaceRecords (srcdata);
            tblobject.render();
        }
        else {
            tblobject.initializeTable();
            tblobject.render();
        }

    }

    function tableManager_GetPage (pager, srcdata, pagelist) {

        // extract the "page" from the whole dataset

        RESULT = { data:{ rows:[] } };
        for (var i=0; i<pager.size && pager.top+i<pager.count; i++) {
            RESULT.data.rows[i] = srcdata[pager.top+i];
        }

        // update the page list (if necessary)

        if (pagelist !== undefined) tableManager_SetPageSelector (pager, pagelist);

    }

    function tableManager_SetPageSelector (pager, pagelist) {

        // update the page list (if we can)

        if ((pager !== undefined) && (pagelist !== undefined)) {
            var list = getElement(pagelist);
            var selp = 0;
            var top = 0;
            if (list) {
                list.options.length = 0;
                for (var i=1; i<=pager.pages; i++) {
                    top = (i - 1) * pager.size;
                    if (top == pager.top) selp = i;
                    list.options[i-1] = new Option (i+' of '+pager.pages, i, (i==1), false);
                }
                if (selp > 0) list.selectedIndex = selp - 1;
            }
        }

    }


    //
    // OTHER TABLE HELPER FUNCTION
    // ===========================
    //

    function fmtInt (elCell, oRecord, oColumn, oData) {
        /*
        var n = new Number(oData);
        var s = n.toString();
        var i = parseInt(s);
        var c = 0;
        var sgn = '';
        if (i < 0) {
            sgn = '-';
            i = Math.abs(i);
        }
        s = '';
        do {
            s = '' + (i % 10) + s;
            i = Math.floor(i/10);
            if ((c % 3 == 2) && (i > 0)) {
                s = ',' + s;
            }
            ++c;
        } while (i > 0);
        elCell.innerHTML = sgn + s;
        */
        elCell.innerHTML = fmtIntStr(oData);
    }

    function fmtDec (elCell, oRecord, oColumn, oData) {
        /*
        var n = new Number(oData);
        var s = n.toString();
        var i = 0;
        var d = 0;
        var ext = '';
        var v = Math.abs(parseFloat(s)) * 100;
        d = Math.round(v) % 100;
        ext = '.' + (d < 10 ? '0' : '') + d;
        i = Math.floor(v/100);
        var c = 0;
        var sgn = '';
        if (i < 0) {
            sgn = '-';
            i = Math.abs(i);
        }
        s = '';
        do {
            s = '' + (i % 10) + s;
            i = Math.floor(i/10);
            if ((c % 3 == 2) && (i > 0)) {
                s = ',' + s;
            }
            ++c;
        } while (i > 0);
        elCell.innerHTML = sgn + s + ext;
        */
        elCell.innerHTML = fmtDecStr(oData);
    }

    function fmtResponse (elCell, oRecord, oColumn, oData) {
        var fmt = parseInt(oRecord.getData("formatid"));
        var s = '';
        switch (fmt) {
            case 1:
                t = parseInt(oData);
                s = (t == 0 ? 'N/A' : t);
            break;
            case 3:
                t = parseInt(oData);
                s = (t == 0 ? 'No' : 'Yes');
            break;
            default:
                s = oData;
            break;
        }
        elCell.innerHTML = s;
    }


    //
    // POPUP CALENDAR HELPER FUNCTIONS
    // ===============================
    //

    var calInit = true;
    var calObj;
    var calElM;
    var calElD;
    var calElY;

    function popupCalendar (elM, elD, elY, elBut) {

        if (!YAHOO.util.Dom.inDocument('popupCalContainer')) return;

        calElM = elM;
        calElD = elD;
        calElY = elY;

        var msel = getElement(elM);
        var dsel = getElement(elD);
        var ysel = getElement(elY);
        var m = msel.options[msel.selectedIndex].value;
        var d = dsel.options[dsel.selectedIndex].value;
        var y = ysel.options[ysel.selectedIndex].value;
        var my = m + '/' + y;
        var mdy = m + '/' + d + '/' + y;

        if (calInit) {
            calInit = false;
            calObj = new YAHOO.widget.Calendar ('popupCal', 'popupCalContainer', { title:'Select&nbsp;Date...', pageDate:my, selected:mdy, close:true });
            calObj.selectEvent.subscribe (popupCalendarHandler);
        }
        else {
            calObj.cfg.setProperty ('pageDate', my, false);
            calObj.cfg.setProperty ('selected', mdy, false);
        }

        var xy = YAHOO.util.Dom.getXY(elBut);
        xy[0] += 20;
        xy[1] += 10;
        calObj.render();
        calObj.show();
        YAHOO.util.Dom.setXY ('popupCalContainer', xy, false);

    }

    function popupCalendarHandler (type, args, obj) {

        var dates = args[0];
        var date = dates[0];
        setOptionByValue (getElement(calElM),date[1]);
        setOptionByValue (getElement(calElD),date[2]);
        setOptionByValue (getElement(calElY),date[0]);
        calObj.hide();

    }


    //
    // POPUP COLORPICKER HELPER FUNCTIONS
    // ==================================
    //

    var colorInit = true;
    var colorWidgetInit = true;
    var colorForm;
    var colorObj;
    var colorElV;
    var colorElC;

    function popupColorPicker (elV, elC, elBut) {

        if (!YAHOO.util.Dom.inDocument('popupColorPickerContainer')) return;

        colorElV = elV;
        colorElC = elC;

        var hex = getElement(elV).value;
        if (hex.length = 0) hex = "#000000";
        var r = hex2int(hex.length>=2?hex.substr(1,2):"0");
        var g = hex2int(hex.length>=4?hex.substr(3,2):"0");
        var b = hex2int(hex.length>=6?hex.substr(5,2):"0");
        var rgb = [r, g, b];

        if (colorInit) {
            colorInit = false;
		    colorForm = new YAHOO.widget.Panel("popupColorPickerContainer", { modal:false, draggable:false, x:50, y:150, height:150, width:350, zIndex:200, underlay:"shadow", visible:false, fixedcenter:false, constraintoviewport:true, close:true } );
            colorForm.render();
        }

        var xy = YAHOO.util.Dom.getXY(elBut);
        xy[0] += 20;
        xy[1] += 10;
        colorForm.show();
        YAHOO.util.Dom.setXY ('popupColorPickerContainer', xy, false);

        if (colorWidgetInit) {
            colorWidgetInit = false;
            var cpEl = getElement('ycolorPickerWidget');
            if (cpEl) {
                cpEl.innerHTML = '';
                colorObj = new YAHOO.widget.ColorPicker ('ycolorPickerWidget', { container:colorForm, showcontrols:false, images: { PICKER_THUMB: "/yui251/build/colorpicker/assets/picker_thumb.png", HUE_THUMB: "/yui251/build/colorpicker/assets/hue_thumb.png" } });
                colorObj.on ('rgbChange', popupColorPickerHandler);
            }
        }

        colorObj.setValue (rgb, true);

    }

    function popupColorPickerHandler (obj) {

        var rgb = '#' + int2hex(obj.newValue[0],2) + int2hex(obj.newValue[1],2) + int2hex(obj.newValue[2],2);
        var fg = '#' + int2hex(obj.newValue[0]^0xFF,2) + int2hex(obj.newValue[1]^0xFF,2) + int2hex(obj.newValue[2]^0xFF,2);
        getElement(colorElV).value = rgb;
        getRef(colorElC).backgroundColor = rgb;
        getRef(colorElC).color = fg;

    }

    function hex2int (s) {

        var t = s.toUpperCase();
        var v = 0;
        var c;

        for (var i=0; i<s.length; i++) {
            c = t.charCodeAt(i);
            if ((c >= 48) && (c <= 57)) v = (v * 16) + (c - 48);
            else if ((c >= 65) && (c <= 70)) v = (v * 16) + (c - 55);
        }

        return (v);

    }

    function int2hex (v, n) {

        var s = "";
        var d;

        for (var i=0; i<n; i++) {
            d = v % 16;
            v = v / 16;
            if (d < 10) s = String.fromCharCode(48+d) + s;
            else s = String.fromCharCode(55+d) + s;
        }

        return (s);

    }


    //
    // POPUP MESSAGE BOX FUNCTION
    // ==========================
    //

    var popupInit = true;
    var popupMessageBoxForm;

    function popupMessageBox (title, message, icon, buttons) {

        if (!YAHOO.util.Dom.inDocument('popupMessageBoxContainer')) return;

        // create the dialog

        var ybuttons = [];
        for (var i=0; i<buttons.length; i++) {
            ybuttons[i] = { text:buttons[i].label, handler:buttons[i].func, isDefault:(i==0?true:false) };
        }

        if (popupInit) {

            popupInit = false;

        	popupMessageBoxForm = new YAHOO.widget.SimpleDialog("popupMessageBoxContainer", {
                modal: true,
        	    width: "300px",
                fixedcenter: true,
                visible: false,
                draggable: false,
                close: true,
                text: message,
                icon: icon,
                constraintoviewport: true,
                buttons: ybuttons,
                zIndex: 5000
            });

        }

        else {

            popupMessageBoxForm.cfg.setProperty ("icon", icon);
            popupMessageBoxForm.cfg.setProperty ("text", message);
            popupMessageBoxForm.cfg.setProperty ("buttons", ybuttons);

        }

    	popupMessageBoxForm.setHeader(title);
        popupMessageBoxForm.render(document.body);
        popupMessageBoxForm.show();

    }

    function popupMessageBoxHide () {
        popupMessageBoxForm.hide();
    }

    function YAlert (title, msg, icon) {
        if (icon === undefined) icon = YAHOO.widget.SimpleDialog.ICON_ALARM;
        popupMessageBox (title, msg, icon, [{label:'OK',func:popupMessageBoxHide}]);
    }

    function YConfirm (msg, yeshandler) {
        popupMessageBox ('Please Confirm...', msg, YAHOO.widget.SimpleDialog.ICON_WARN, [{label:'Yes',func:function(){popupMessageBoxHide();yeshandler();}},{label:'No',func:popupMessageBoxHide}]);
    }

    function YAlarm (msg) {
        YAlert ('Alert...', msg, YAHOO.widget.SimpleDialog.ICON_ALARM);
    }

    function YHelp (msg) {
        YAlert ('Help...', msg, YAHOO.widget.SimpleDialog.ICON_HELP);
    }

    function YInfo (msg) {
        YAlert ('Info...', msg, YAHOO.widget.SimpleDialog.ICON_INFO);
    }

    function YTip (msg) {
        YAlert ('Tip...', msg, YAHOO.widget.SimpleDialog.ICON_TIP);
    }

    function YWarn (msg) {
        YAlert ('Warning...', msg, YAHOO.widget.SimpleDialog.ICON_WARN);
    }

    //
    // "GET ELEMENT" HELPER FUNCTIONS
    // ==============================
    //

    function getRef (name) {
        return (eval(refIn + name + refOut + refOutStyle));
    }

    function getElement (name) {
        return (YAHOO.util.Dom.get(name));
        //return (eval(refIn + name + refOut));
    }


    //
    // SELECT LIST HELPER FUNCTIONS
    // ============================
    //

    var trackerCount = 0;
    var trackerFlag = false;
    var trackerKeys = new Array(100);
    var trackerData = new Array(100);

    function getOptionIndex (list, value) {

        if (list) {

            var n = list.options.length;
            var i;
            var p = 0;

            for (i=0; i<n; i++) {
                if (list.options[i].value == value) return (i);
            }

        }

        return (0);

    }

    function getOptionValue (list) {
        if (list) return (list.options[list.selectedIndex].value);
        return('');
    }

    function getOptionText (list) {
        if (list) return (list.options[list.selectedIndex].text);
        return('');
    }

    function setOptionByValue (list, value) {
        if (list) {
            list.selectedIndex = getOptionIndex(list,value);
        }
    }


    function trackerInit () {
        var i;
        for (i=0; i<100; i++) {
            trackerKeys[i] = "";
            trackerData[i] = "";
        }
    }

    function trackerAdd (objName) {
        if (trackerCount < 100) {
            trackerKeys[trackerCount] = objName;
            trackerData[trackerCount] = "";
            ++trackerCount;
        }
    }

    function trackerFind (objName) {
        var i;
        for (i=0; i<trackerCount; i++) {
            if (trackerKeys[i] == objName) {
                return (i);
            }
        }
        return (-1);
    }

    function trackerReset (objName) {
        var p = trackerFind(objName);
        if (p < 0) {
            trackerAdd (objName);
        }
        else {
            trackerData[p] = "";
        }
    }

    function trackerTrack (objName, listbox) {
        var i;
        var n;
        var listStr;
        var trackStr;
        var count;
        var found = -1;
        var c;
        var p = trackerFind(objName);
        if (p >= 0) {
            if (clientBrowser == "IE") {
                c = (event.keyCode >= 32 ? String.fromCharCode(event.keyCode) : "");
                //event.keyCode = 0;
            }
            else {
                c = (event.which >= 32 ? String.fromCharCode(event.which) : "");
                //event.which = 0;
            }
            if (c == "") {
                trackerReset(objName);
                return (true);
            }
            trackerData[p] = trackerData[p] + c;
            trackStr = new String (trackerData[p]);
            n = trackStr.length;
            trackStr = trackStr.toLowerCase();
            count = listbox.length;
            for (i=0; (i<count) && (found<0); i++) {
                listStr = new String(listbox.options[i].text);
                listStr = listStr.toLowerCase();
                if (trackStr == listStr.substr(0,n)) {
                    found = i;
                }
            }
            if (found >= 0) {
                listbox.selectedIndex = found;
            }
        }
        return (false);
    }


    //
    // FORM HELPER FUNCTIONS
    // =====================
    //

    function selectCheckboxGroup (tag, flag) {
        var i = 0;
        var o;
        while (o = getElement(tag+i)) {
            o.checked = flag;
            ++i;
        }
    }


    //
    // EMAIL HELPER FUNCTION
    // =====================
    //

    function mail_to (addr) {
        var uri = 'mail' + 'to' + ':' + addr;
        if ((addr.indexOf('@') == -1) && (addr.indexOf('.') == -1)) uri += '@' + 'bluelinkdirect' + '.' + 'com';
        window.location = uri;
    }


    //
    // FORMATTER HELPER FUNCTIONS
    // ==========================
    //

    function fmtIntStr (oData) {

        var n = new Number(oData);
        var s = n.toString();
        var i = parseInt(s);
        var c = 0;

        var sgn = '';
        if (i < 0) {
            sgn = '-';
            i = Math.abs(i);
        }

        s = '';
        do {
            s = '' + (i % 10) + s;
            i = Math.floor(i/10);
            if ((c % 3 == 2) && (i > 0)) {
                s = ',' + s;
            }
            ++c;
        } while (i > 0);

        return (sgn + s);

    }

    function fmtDecStr (oData) {

        var n = new Number(oData);
        var s = n.toString();
        var i = 0;
        var d = 0;
        var ext = '';
        var v = Math.abs(parseFloat(s)) * 100;

        d = Math.round(v) % 100;
        ext = '.' + (d < 10 ? '0' : '') + d;
        i = Math.floor(v/100);
        var c = 0;

        var sgn = '';
        if (i < 0) {
            sgn = '-';
            i = Math.abs(i);
        }

        s = '';
        do {
            s = '' + (i % 10) + s;
            i = Math.floor(i/10);
            if ((c % 3 == 2) && (i > 0)) {
                s = ',' + s;
            }
            ++c;
        } while (i > 0);

        return (sgn + s + ext);

    }

    function unFmt (s) {

        var t = '';
        var c;
        var l = s.length;

        for (var i=0; i<l; i++) {
            c = s.charAt(i);
            if ((c != '$') && (c != ',')) t = t + c;
        }

        return (t);

    }

    function htmlEncode (s) {

        var re = /&/gi;
        var t = s.replace(re,'&amp;');
        re = /</gi;
        t = t.replace(re,'&lt;');
        re = />/gi;
        t = t.replace(re,'&gt;');
        return (t);

    }

    function jsSafe (s) {

        var l = s.length;
        var t = '';
        var c;
        for (var i=0; i<l; i++) {
            c = s.substr(i,1);
            if (c == "'") {
                t += "\\'";
            }
            else if (c == "\n") {
                t += "\\n";
            }
            else {
                t += c;
            }
        }
        return (t);

    }

    function nl2br (s) {

        var c;
        var t = '';

        for (var i=0; i<s.length; i++) {
            c = s.charAt(i);
            t += (c == '\n' ? '<br>' : c);
        }

        return (t);

    }



    //
    // STARTUP & HOUSECLEANING STUFF
    // =============================
    //

    function initializePage () {
        setupForm();
    }

    function setupForm () {

        if (document.forms[0]) {
            var i;
            var count = document.forms[0].elements.length;
            if (count > 0) {
                for (i=0; i<count; i++) {
                    try {
                        document.forms[0].elements[0].focus();
                        return;
                    } catch (e) {}
                }
            }
        }

    }

    trackerInit();


    //
    // SOME USELESS DEBUG STUFF
    // ========================
    //

    var dbugText = "";
    function dbug (s) {
        dbugText = dbugText + "\n" + s;
    }

    function getdbug () {
        document.debug.debugtext.value = dbugText;
        dbugText = "";
    }


    //-->
