// Java script for Exact controls
// ------------------------------

// General functions
// -----------------
var sysWasSubmitted = false;
function SysSubmit(wm) {
    if (!sysWasSubmitted) {
        if (wm != null)
            SysShowWaitMessage();
        var isSubmitted = sysIsSubmitted
        sysIsSubmitted = true;
        sysWasSubmitted = true;
        try {
            return document.forms[0].submit();
        }
        catch (e) {
            if (wm != null)
                SysWaitMessage(false);
            sysIsSubmitted = isSubmitted
            sysWasSubmitted = false;
            // BR 23.495.185
            var msg = '';
            switch (e.number) {
                case -2147024891:
                    {
                        msg = SysTerm(20006, 'Invalid') + ': ' + SysTerm(1011, 'File path');
                        break;
                    }
                default:
                    {
                        msg = e.message;
                        break;
                    }
            }
            //SysConfirm(5,null,msg,null,null,'The form couldn\'t be submitted.');
            SysConfirm(5, null, msg, null, null, SysTerm(35240, 'The form couldn\'t be submitted.'));
            return false;
        }
    }
    else
        return false;
}
function SysShowWaitMessage() {
    SysWaitMessage(true);
}

function SysWaitMessage(show) {
    var wm = document.getElementById('WaitMessage');
    if (wm != null) {
        wm.style.display = (show ? 'block' : 'none');
        wm.runtimeStyle.height = '100%';
    }
}

var sysIsSubmitted = false;
function SysAuto(id) {
    SysSet('sysFocus', id);
    return SysSubmit(1);
}
function SysAutoTab(e) {
    if (SysGetKey(e) == 9) { SysSet('sysTab', true); }
}
function SysFocusTab(id) {
    var found = false;
    var next = 0;
    var nextEl;
    var nElems = document.forms[0].length;

    // BR 24.785.272: add try catch block
    try {
        for (i = 0; i < nElems; i++) {
            if (document.forms[0][i].name == id || found) {
                next = i;
                if (next < nElems && found == false) { next++; }

                nextEl = document.forms[0][next];
                if (nextEl.tabIndex >= 0 && nextEl.type != 'hidden') {
                    SysFocus(nextEl.id);
                    break;
                }
                found = true;
            }
        }
    }
    catch (e) { }
}
function SysLocation(url) {
    sysIsSubmitted = true;
    window.location.assign(url);
}
function SysForward() {
    sysIsSubmitted = true;
    history.forward();
}
function SysBack() {
    sysIsSubmitted = true;
    history.back();
}
function SysFocus(id) {
    var el = SysGetElement(id);
    if (el != null) {
        if (el.tagName == 'INPUT' && el.type == 'radio') {
            var c = document.getElementsByName(id);
            if (c != null) {
                for (i = 0; i < c.length; i++) {
                    if (c[i].checked) {
                        el = c[i];
                        break;
                    }
                }
            }
        }
        try {
            document.focus();
            el.focus();
            el.setActive();
            SysSelect(el);
        }
        catch (e)
		{ }
    }
}

// CT 23.719.192, BR 23.742.168
function SysDefaultFocus() {
    var el = document.getElementById('sysDefaultFocus');
    if (!el) return;
    if (el.value == '') return;
    el = document.getElementById(el.value);
    if (!el) return;
    SysFocus(el.id);
}

function SysSelect(el) {
    if (el.tagName != 'INPUT' || el.type == 'radio' || el.type == 'checkbox' || el.type == 'hidden') return;
    var sel = document.selection;
    if (sel != null) {
        var rng = sel.createRange();
        if (rng != null)
            if (rng.expand("textedit"))
            rng.select();
    }
}

function SysFocusFirst(doc) {
    if (doc == null)
        doc = document;
    if (doc.forms.length == 0)
        return;
    try {
        var f = doc.forms[0];
        for (var i = 0; i < f.elements.length; i++) {
            var el = f.elements[i];
            if (el.tagName != 'INPUT' || el.type != 'hidden') {
                el.focus();
                return;
            }
        }
    }
    catch (e)
	{ }
}

function SysURLEncode(s) {
    return (encodeURIComponent(s));
}

function SysKeyDown(e) {
    if (SysGetKey(e) == 13) {
        SysCancelInputSearch();
        SysSetKey(e, 9);
    }
}

// BR 30.479.178
function SysPageInIFrame(win) {
    return ((win != null) && (win.frameElement != null) && (win.frameElement.nodeName.toLowerCase() == 'iframe'));
}

var sysButtonClose = null;
function SysBackUrl(url) {
    if (SysGetKey(event) == 27 && event != null && !(event.altKey || event.altLeft)) {
        // BR 30.479.178
        var isIframe = false;
        var par = null;
        if (SysPageInIFrame(window)) {
            isIframe = true;
            par = window.parent;
            while (SysPageInIFrame(par)) { par = par.parent; }
        }

        if ((isIframe) && (par != null)) {
            if (par.sysButtonClose == null) {
                if (par.GetSysBackUrl) {
                    var newurl = par.GetSysBackUrl();
                    if (newurl != null) { par.location.assign(newurl); }
                    else { window.location.assign(url); }
                }
                else { window.location.assign(url); }
            }
            else {
                var b = par.document.getElementById(par.sysButtonClose);
                b.focus();
                b.click();
            }
        }
        else {
            if (sysButtonClose == null) { window.location.assign(url); }
            else {
                var b = SysGetElement(sysButtonClose);
                b.focus();
                b.click();
            }
        }
    }
}
//FC 23.768.833
var sysDefaultEnter = null;
function SysDefaultEnter(e) {
    if (event.srcElement.tagName == 'TEXTAREA' || event.srcElement.tagName == 'SELECT' ||
		event.srcElement.tagName == 'BUTTON' || event.srcElement.tagName == 'A') return;

    if (SysGetKey(event) == 13 && event != null && !(event.altKey || event.altLeft)) {

        if (!sysXmlHttpAborted) {
            event.cancelBubble = true;
            event.returnValue = false;
            SysCallbackAbort();
            //return; //BR 30.905.164
        }

        if (sysDefaultEnter != null) {
            var b = SysGetElement(sysDefaultEnter);
            if (b != null) {
                b.focus();
                b.click();
            }
            event.cancelBubble = true;
            event.returnValue = false;
        }
    }
}
function SysCancelClose() {
    if (SysGetKey(event) == 27 && !(event.altKey || event.altLeft)) {
        window.close();
    }
}
function SysClickTag() {
    var el = event.srcElement;
    if (SysGetKey(event) == 32 && el != null && el.tagName == "A") {
        el.click();
    }
}
function SysEnable(id) {
    var el = SysGetElement(id);
    if (el != null)
        el.disabled = false;
}
function SysSetImage(id, imgs) {
    var img = SysGetElement(id);
    if (img != null) {
        img.src = imgs;
    }
}
function SysSetDisplay(name, style) {
    var ctl = SysGetElement(name);
    if (ctl != null)
        ctl.style.display = style;
}
//Check back history
function SysCheckBackHistory() {
    var ne = SysGet('SysNoBack');
    if (ne == null || ne == '') {
        SysSet('SysNoBack', 1);
    }
    else {
        SysForward();
    }
}

// Format number
// -------------
// Events
function SysNumKeyDown(el, dec, neg) {
    switch (window.event.keyCode) {
        case 46:
            {
                SysNumDelete(el, dec, neg);
                event.cancelBubble = true;
                event.returnValue = false;
                break;
            }
        case 8:
            {
                SysNumBackSpace(el, dec, neg);
                event.cancelBubble = true;
                event.returnValue = false;
                break;
            }
        case 110: // decimal seperator num
            {
                SysNumStep(el);
                event.cancelBubble = true;
                event.returnValue = false;
                break;
            }
    }
}

function SysNumKeyPress(el, dec, neg, ch) {
    if (ch == null) {
        event.cancelBubble = true;
        event.returnValue = false;
        ch = String.fromCharCode(window.event.keyCode);
    }
    if (ch >= '0' && ch <= '9')
        SysNumInput(el, dec, ch, neg);
    else if (ch == sysFormatDecSep)
        SysNumStep(el);
    else if (ch == '-' && neg)
        SysNumToggleSign(el, dec);
}

function SysNumPaste(el, dec, neg) {
    event.cancelBubble = true;
    event.returnValue = false;
    var ch = window.clipboardData.getData("Text");
    if (ch == null) return;
    var v = SysNumClearSelection(el);
    if (v != '' && v != null) {
        var pos = SysGetCaretPosition(el);
        el.value = v;
        SysSetCaretPosition(el, pos);
    }
    var f = SysNumUnFormat(ch, neg);
    var n = neg && (f.substr(0, 1) == '-');
    if (n) f = f.substr(1);
    if (el.value != '' && el.value != null)
        ch = f;
    else if (n) {
        SysNumKeyPress(el, dec, neg, '-');
        ch = ch.replace(/-/g, '');
    }
    for (var i = 0; i < ch.length; i++) {
        SysNumKeyPress(el, dec, neg, ch.charAt(i));
    }
}

function SysNumCut(el, dec) {
    document.execCommand('Copy');
    var v = SysNumClearSelection(el);
    if (v == '') return;
    var pos = SysGetCaretPosition(el);
    var num = SysNumUnFormat(v, true);
    v = SysNumFormat(num, dec);
    el.value = v;
    SysSetCaretPosition(el, pos);
    sysInputChanged = true;
}

function SysNumUnFormat(val, neg) {
    if (val == null)
        return '0';
    var t = '';
    var i;
    var n = false;
    var first = true;
    for (i = 0; i < val.length; i++) {
        var c = val.charAt(i)
        if (!first || c != '0') {
            if (c >= '0' && c <= '9') {
                first = false;
                t += c;
            }
            if (neg && (c == '-' || c == '(' || c == ')'))
                n = true;
        }
    }
    if (t.length == 0)
        t = '0';
    if (n)
        t = '-' + t;
    return t;
}

function SysNumFormat(num, dec) {
    var n = (num.substr(0, 1) == '-');
    if (n)
        num = num.substr(1);
    if (dec == null)
        dec = 2;
    var v = '';
    var i = num.length - 1;
    var j = 0;
    for (; j < dec && i >= 0; i--, j++) {
        var l = num.substr(i, 1);
        v = l + v;
    }
    if (j < dec || num.length == dec) {
        if (dec == 0)
            v = '0';
        else {
            for (; j < dec; j++)
                v = '0' + v;
            v = '0' + sysFormatDecSep + v;
        }
    }
    else {
        if (dec != 0)
            v = sysFormatDecSep + v;
        var j = 0;
        for (; i >= 0; i--, j++) {
            if (j == 3) {
                v = sysFormatSep + v;
                j = 0;
            }
            var l = num.substr(i, 1);
            v = l + v;
        }
    }
    if (n)
        return SysFormatNegative(v, sysFormatNegative);
    else
        return v;
}

function SysFormatNegative(num, fmt) {
    switch (fmt) {
        case 0: // (100)
            return '(' + num + ')';
        case 1: // -100
            return '-' + num;
        case 2: // - 100
            return '- ' + num;
        case 3: // 100-
            return num + '-';
        case 4: // 100 -
            return num + ' -';
    }
    return num;
}

function SysNegativeChars(fmt) {
    var nc = new Array();
    nc[0] = 0; nc[1] = 0;
    switch (fmt) {
        case 0: // (100)
            { nc[0] = 1; nc[1] = 1; break; }
        case 1: // -100
            { nc[0] = 1; break; }
        case 2: // - 100
            { nc[0] = 2; break; }
        case 3: // 100-
            { nc[1] = 1; break; }
        case 4: // 100 -
            { nc[1] = 2; break; }
    }
    return nc;
}

function SysNumStep(el) {
    var v = el.value;
    var c = v.indexOf(sysFormatDecSep);
    if (c >= 0)
        SysSetCaretPosition(el, c + 1);
}

function SysNumClearSelection(el) {
    if (document.selection.type == "Text") {
        var pos = SysGetCaretPosition(el);
        var t = document.selection.createRange().text
        document.selection.clear();
        var v = el.value;
        if (v == '' || v == null) {
            el.value = '';
            SysSetCaretPosition(el, 1);
            sysInputChanged = true;
            return '';
        }
        var c = v.indexOf(sysFormatDecSep);
        if (c >= 0 && pos > c) {
            t = t.replace(/-|\)| /g, '')
            for (var length = t.length; length > 0; length--) {
                v += '0'
            }
        }
        return v;
    }
    return null;
}

function SysNumDelete(el, dec, neg) {
    var ch;
    var pos = SysGetCaretPosition(el);
    var v = SysNumClearSelection(el);
    if (v == '')
        return;
    else if (v == null) {
        v = el.value;
        if (pos == v.length) return;
        ch = v.substr(pos, 1);
        if (ch == sysFormatDecSep || ch == sysFormatSep || ch == ' ' || ch == '(')
            pos++;
        var c = v.indexOf(sysFormatDecSep);
        v = v.substr(0, pos) + v.substr(pos + 1) + ((c >= 0 && pos > c) ? '0' : '');
    }
    var p = v.length - pos;
    var num = SysNumUnFormat(v, neg);
    v = SysNumFormat(num, dec);
    el.value = v;
    pos = v.length - p;
    ch = v.substr(pos, 1);
    if (ch == sysFormatSep || '( -'.indexOf(ch) >= 0)
        pos++;
    SysSetCaretPosition(el, pos);
    sysInputChanged = true;
}

function SysNumBackSpace(el, dec, neg) {
    var pos = SysGetCaretPosition(el);
    var p;
    var v = SysNumClearSelection(el);
    if (v == '')
        return;
    else if (v == null) {
        if (pos == 0) return;
        v = el.value;
        var ch = v.substr(pos - 1, 1);
        if (ch == sysFormatDecSep || ch == sysFormatSep || ch == ' ' || ch == ')')
            pos--;
        p = v.length - pos;
        var c = v.indexOf(sysFormatDecSep);
        v = v.substr(0, pos - 1) + v.substr(pos);
        if (c >= 0 && pos > c && ch != '-') {
            v += '0';
            p++;
        }
    }
    else
        p = v.length - pos;
    var num = SysNumUnFormat(v, neg);
    v = SysNumFormat(num, dec);
    el.value = v;
    pos = v.length - p;
    SysSetCaretPosition(el, pos);
    sysInputChanged = true;
}

function SysNumZeros(dec) {
    var v = '';
    for (; dec > 0; dec--)
        v += '0';
    return v;
}

function SysNumToggleSign(el, dec) {
    var pos = SysGetCaretPosition(el);
    var v = el.value;
    if (document.selection.type == "Text") {
        document.selection.clear();
        v = el.value;
    }
    var num = SysNumUnFormat(v, true);
    var n = (num.substr(0, 1) == '-');
    if (n)
        num = num.substr(1);
    else {
        if (num == '0' && pos == 0)
            pos++;
        num = '-' + num;
    }
    el.value = SysNumFormat(num, dec);
    SysSetCaretPosition(el, pos + (n ? -1 : 1) * SysNegativeChars(sysFormatNegative)[0]);
    sysInputChanged = true;
}

function SysNumInput(el, dec, ch, neg) {
    var pos = SysGetCaretPosition(el);
    var v = SysNumClearSelection(el);
    if (v == null) v = el.value;
    if (v == '' || v == null) {
        el.value = SysNumFormat(ch + SysNumZeros(dec), dec);
        SysSetCaretPosition(el, 1);
    }
    else {
        var c = v.indexOf(sysFormatDecSep);
        var add = true;
        var n = false;
        if (c >= 0 && pos > c) {
            if (neg) {
                var f = SysNumUnFormat(v, neg);
                n = (f.substr(0, 1) == '-')
            }
            if (v.length <= pos + (n ? SysNegativeChars(sysFormatNegative)[1] : 0))
                return;
            add = false;
        }
        var p = v.length - pos;
        var l = v.substr(0, pos);
        var r;
        if (add)
            r = v.substr(pos);
        else {
            r = v.substring(pos, c + dec);
            if (n)
                r += v.substr(v.length - SysNegativeChars(sysFormatNegative)[1]);
        }
        var num = SysNumUnFormat(l + ch + r, neg);

        var maxlength = el.maxLength;
        //    BR 31.910.936	start
        //		if ((maxlength > 0) && (dec > 0)) {
        //			if ((num.length + 1) > el.maxLength) return; 
        //		}
        if (maxlength > 0) {
            if (dec > 0) {
                if ((num.length + 1) > el.maxLength) return;
            }
            else {
                if (num.length > el.maxLength) return;
            }
        }
        //    BR 31.910.936	end

        v = SysNumFormat(num, dec);
        el.value = v;
        pos = v.length - p;
        if (!add)
            pos++;
        SysSetCaretPosition(el, pos);
    }
    sysInputChanged = true;
}

// Validation
// ----------
function SysValidateNumber(e, bInteger, bNegative, bThoSep) {
    var key = SysGetKey(e);
    var s = '1234567890';
    if (!bInteger) { s += sysFormatDecSep; }
    if (bNegative) { s += '-() '; }
    if (bThoSep) { s += sysFormatSep; }
    if (!bInteger && sysFormatDecSep == ',' && key == 46) { key = 44; SysSetKey(e, key); }
    var c = String.fromCharCode(key);
    return (key <= 31) || (s.indexOf(c) >= 0);
}

function SysValidateDate(e) {
    var key = SysGetKey(e);
    var s = '.-/1234567890';
    var c = String.fromCharCode(key);
    return (key <= 31) || (s.indexOf(c) >= 0);
}

function SysValidateTime(e, b12) {
    var key = SysGetKey(e);
    var s = ':1234567890';
    if (b12) { s += ' apmAPM'; }
    var c = String.fromCharCode(key);
    return (key <= 31) || (s.indexOf(c) >= 0);
	//  || (key >= 96 && key <= 105) Removed via BR 32.542.354.
}

function SysAddClass(el, className) {
    if (el.className == null || el.className == '')
        el.className = className;
    else {
        if (el.className.indexOf(className) >= 0)
            return;
        el.className = className + ' ' + el.className;
    }
}
function SysRemoveClass(el, className) {
    if (el.className == null || el.className == '')
        return;
    var i = el.className.indexOf(className);
    if (i >= 0) {
        el.className = el.className.substring(0, i) + el.className.substr(i + className.length)
        el.className = SysTrim(el.className);
    }
}

function SysResetInvalidFlag(ctl) {
    var c = document.getElementById('InvalidFlag_' + ctl);
    if (c != null)
        c.innerHTML = '';
    c = document.getElementById(ctl);
    if (c != null) {
        if (c.className.indexOf('selected') > 0)
            c.className = 'savehistory selected';
        else
            c.className = 'savehistory';
    }
    c = document.getElementById(ctl + '_alt');
    if (c != null) {
        if (c.className.indexOf('selected') > 0)
            c.className = 'savehistory selected';
        else
            c.className = 'savehistory';
    }
}
function SysSetInvalidFlag(ctl) {
    var c = document.getElementById(ctl);
    if (c != null) {
        if (c.className.indexOf('selected') > 0)
            c.className = 'savehistory notValid selected';
        else
            c.className = 'savehistory notValid';
    }
}

// format Date
function SysSetDate(parts) {
    switch (sysFormatDate) {
        case '1': //DateMonthYear
            {
                return SetDate(parts[2], parts[1], parts[0]);
                break;
            }
        case '2': //MonthDateYear
            {
                return SetDate(parts[2], parts[0], parts[1]);
                break;
            }
        case '3': //YearMonthDate
            {
                return SetDate(parts[0], parts[1], parts[2]);
                break;
            }
    }
}

function SetDate(y, m, d) {
    if (y >= 0 && y <= 99) {
        if (y < 50)
            y += 2000;
        else
            y += 1900;
    }
    if (y > 9999) y = 9999;
    if (m > 12) m = 12;
    var md = 31;
    switch (m) {
        case 2:
            {
                md = (SysLeapYear(y)) ? 29 : 28;
                break;
            }
        case 4:
        case 6:
        case 9:
        case 11:
            {
                md = 30;
                break;
            }
    }
    if (d > md) d = md;

    var dt = new Date();
    dt.setFullYear(y, m - 1, d); 	//decrease month because offset is 0
    return dt;
}

function SysLeapYear(y) {
    if (y % 400 == 0)
        return true;
    else if (y % 100 == 0)
        return false;
    else if (y % 4 == 0)
        return true;
    else
        return false;
}

function SysFormatDate(expr) {
    var sdate = expr.getDate();
    if (sdate.toString(10).length == 1) sdate = '0' + sdate;
    var smonth = expr.getMonth() + 1;
    if (smonth.toString(10).length == 1) smonth = '0' + smonth;
    var syear = expr.getFullYear();
    if (syear.toString(10).length == 3) syear = ' ' + syear;
    switch (sysFormatDate) {
        case '1':
            {
                return (sdate + sysFormatDateSep + smonth + sysFormatDateSep + syear);
                break;
            }
        case '2':
            {
                return (smonth + sysFormatDateSep + sdate + sysFormatDateSep + syear);
                break;
            }
        case '3':
            {
                return (syear + sysFormatDateSep + smonth + sysFormatDateSep + sdate);
                break;
            }
    }
}

function SysDateParts(val) {
    //first retrieve values from string
    var parts = new Array();
    var sDt = val, pos, sub
    var separator = sysFormatDateSep;
    if (separator == '.') separator = '\\.';
    pos = sDt.search(separator);
    if (pos != -1) {
        sub = SysStrip(sDt.substr(0, pos));
        parts[0] = parseInt(sub);
        sDt = sDt.substr(pos + 1);
    }
    pos = sDt.search(separator);
    if (pos != -1) {
        sub = SysStrip(sDt.substr(0, pos));
        parts[1] = parseInt(sub);
        sDt = sDt.substr(pos + 1);
    }
    parts[2] = parseInt(SysStrip(sDt));

    for (var i = 0; i < 3; i++) {
        if (isNaN(parts[i])) parts[i] = 0;
    }
    return parts;
}

function SysSetDateCursor(el) {
    if (el.value == SysMask(sysDateMask, "")) {
        SysSetCaretPosition(el, 0);
    }
}

function SysStrip(val) {
    if (val == null) return '';
    val = val.replace(/ /g, '');
    for (; val.length > 1 && val.substr(0, 1) == '0'; val = val.substr(1)) { }
    return val;
}

function SysUnFormatDate(val) {
    var parts = SysDateParts(val);
    if (parts[0] == 0 || parts[1] == 0 || parts[2] == 0)
        return null;
    else
        return SysSetDate(parts);
}

function SysMClearSelection(el) {
    if (el.createTextRange) {
        var length = document.selection.createRange().text.length
        if (length > 0) {
            var pos = SysGetCaretPosition(el);
            var value = el.value;
            var v = value.substr(0, pos);
            for (; v.length < length + pos; v += '#') { }
            v += value.substr(pos + length);
            var mask = sysDateMask;
            v = SysUnmask(mask, v, pos).replace(/#/g, ' ');
            el.value = SysMask(mask, v);
            SysSetCaretPosition(el, pos - sysMaskEnd);
            sysInputChanged = true;
            return true
        }
    }
    return false
}

var sysMaskPos, sysMaskEnd
function SysUnmask(mask, value, pos) {
    sysMaskEnd = 0;
    sysMaskPos = pos;
    var v = '';
    var maskEnd = true;
    for (var i = mask.length - 1; i >= 0; i--) {
        switch (mask.charAt(i)) {
            case 'a': // lower case only
            case 'A': // upper case only
            case '9': // '0'=48, '9'=57
            case '#': // all chars
                {
                    v = value.charAt(i) + v;
                    if (i < pos) maskEnd = false;
                    break;
                }
            default:
                {
                    if (i < pos) {
                        sysMaskPos--;
                        if (maskEnd) sysMaskEnd++;
                    }
                    break;
                }
        }
    }
    return v;
}

function SysMask(mask, value) {
    var v = '';
    var j = 0;
    for (var i = 0; i < mask.length; i++) {
        switch (mask.charAt(i)) {
            case 'a': // lower case only
            case 'A': // upper case only
            case '9': // '0'=48, '9'=57
            case '#': // all chars
                {
                    if (j < value.length)
                        v += value.charAt(j);
                    else
                        v += ' ';
                    j++;
                    break;
                }
            default:
                {
                    v += mask.charAt(i);
                    break;
                }
        }
    }
    return v;
}

function SysMKeyDown(el) {
    switch (window.event.keyCode) {
        case 46: // Del
            {
                SysMDelete(el);
                event.cancelBubble = true;
                event.returnValue = false;
                break;
            }
        case 8: // Backspace
            {
                SysMBackSpace(el);
                event.cancelBubble = true;
                event.returnValue = false;
                break;
            }
    }
}

function SysMKeyPress(el) {
    SysMPassChar(el, window.event.keyCode);
    event.cancelBubble = true;
    event.returnValue = false;
}

function SysMDelete(el) {
    if (SysMClearSelection(el)) return;
    var pos = SysGetCaretPosition(el);
    var value = el.value;
    var mask = sysDateMask;
    var v = SysUnmask(mask, value, pos);
    for (; v.charAt(sysMaskPos) == ' '; sysMaskPos++) { }
    v = SysMPutChar(sysMaskPos, ' ', v);
    el.value = SysMask(mask, v);
    SysSetCaretPosition(el, pos);
    if (value != el.value) sysInputChanged = true;
}

function SysMBackSpace(el) {
    if (SysMClearSelection(el)) return;
    var pos = SysGetCaretPosition(el);
    if (pos > 0) {
        var mask = sysDateMask;
        var value = el.value;
        var v = SysUnmask(mask, value, pos);
        v = SysMPutChar(sysMaskPos - 1, ' ', v);
        el.value = SysMask(mask, v);
        SysSetCaretPosition(el, pos - sysMaskEnd - 1);
        sysInputChanged = true;
    }
}

function SysMPutChar(pos, ch, value) {
    var l = value.substr(0, pos);
    var r = value.substr(pos + 1);
    sysInputChanged = true;
    return l + ch + r;
}

function SysMPassChar(el, key) {
    SysMClearSelection(el);
    var pos = SysGetCaretPosition(el);
    var mask = sysDateMask;
    var value = el.value;
    var ch = String.fromCharCode(key);
    if (pos >= mask.length) {
        return;
    }
    var done = true;
    switch (mask.charAt(pos)) {
        case 'a': // lower case only
            {
                if (ch >= 'a' && ch <= 'z') {
                    el.value = SysMPutChar(pos, ch, value);
                    pos += 1;
                    SysSetCaretPosition(el, pos);
                }
                else done = false;
                break;
            }
        case 'A': // upper case only
            {
                if (ch >= 'A' && ch <= 'Z') {
                    el.value = SysMPutChar(pos, ch, value);
                    pos += 1;
                    SysSetCaretPosition(el, pos);
                }
                else done = false;
                break;
            }
        case '9': // '0'=48, '9'=57
            {
                if (ch >= '0' && ch <= '9') {
                    el.value = SysMPutChar(pos, ch, value);
                    pos += 1;
                    SysSetCaretPosition(el, pos);
                }
                else done = false;
                break;
            }
        case '#': // all chars
            {
                el.value = SysMPutChar(pos, ch, value);
                pos += 1;
                SysSetCaretPosition(el, pos);
                break;
            }
        default:
            {
                pos += 1;
                SysSetCaretPosition(el, pos);
                if (mask.charAt(pos - 1) != (('.-/'.indexOf(ch) >= 0) ? sysFormatDateSep : ch)) {
                    SysMPassChar(el, key);
                }
                break;
            }
    }
    if (!done && '.-/'.indexOf(ch) >= 0) {
        // Try to set cursor right after first matching separator
        for (var i = pos; i < mask.length; i++) {
            if (mask.charAt(i) == sysFormatDateSep) {
                pos = ++i;
                SysSetCaretPosition(el, pos);
                break;
            }
        }
    }
    return pos;
}

function SysMCut(el) {
    document.execCommand('Copy');
    SysMClearSelection(el);
    event.cancelBubble = true;
    event.returnValue = false;
}

function SysMPaste(el) {
    event.cancelBubble = true;
    event.returnValue = false;
    var ch = window.clipboardData.getData("Text");
    if (ch == null) return;
    // BR 26.199.594
    if (el.value == null || el.value == "" || el.value == " ") {
        el.value = ch;
    }
    for (var i = 0; i < ch.length; i++) {
        SysMPassChar(el, ch.charCodeAt(i));
    }
}

function SysParseDate(el) {
    var parts = SysDateParts(el.value);
    var zc = 0;
    for (var i = 0; i < 3; i++) {
        if (parts[i] == 0) zc++
    }
    switch (zc) {
        case 3:
            {
                break;
            }
        case 2:
            {
                var dt = new Date();
                var m = dt.getMonth() + 1;
                var y = dt.getYear();
                for (var i = 0; i < 3; i++) {
                    if (parts[i] != 0)
                        el.value = SysFormatDate(SetDate(y, m, parts[i]));
                }
                break;
            }
        case 1:
            {
                var dt = new Date();
                var d, m
                var y = dt.getYear();
                var first = true
                for (var i = 0; i < 3; i++) {
                    if (parts[i] != 0) {
                        if (first ^ (sysFormatDate != '1')) {
                            d = i;
                        } else
                            m = parts[i];
                        first = false;
                    }
                }
                el.value = SysFormatDate(SetDate(y, m, parts[d]));
                break;
            }
        case 0:
            {
                el.value = SysFormatDate(SysSetDate(parts));
                break;
            }
    }
}

// Format number
function SysUnFormatNumber(val) {
    if (val == null)
        return 0;
    var t = '';
    var i;
    var n = false;
    for (i = 0; i < val.length; i++) {
        var c = val.charAt(i)
        if (c >= '0' && c <= '9')
            t += c;
        if (c == sysFormatDecSep)
            t += '.';
        if (c == '-' || c == '(' || c == ')')
            n = true;
    }
    if (t.length == 0)
        return 0;
    if (n)
        t = '-' + t;
    return parseFloat(t);
}
function SysFormatNumber(num, prec) {
    if (prec == null)
        prec = 2;
    return SysFormatNumberEx(num, prec);
}
function SysFormatNumberEx(num, prec) {
    var pow = Math.pow(10, prec);

    if (num == null) num = '0';
    num = num.toString().replace(/\$|\,/g, '');
    if (isNaN(num)) num = "0";

    sign = (num == (num = Math.abs(num)));
    num = Math.floor(num * pow + 0.50000000001);

    // BR 29.405.493
    if ((num + "").length >= 15) {
        var url = 'SysCallBack.aspx?Action=5&num=' + num + '&pow=' + pow;
        cents = parseInt(SysCallback(url));
    }
    else {
        cents = num % pow;
    }
    num = Math.floor(num / pow).toString();

    // set precision
    if (cents < pow) {
        if (cents == 0) {
            cents = "";
        }
        var x = prec - cents.toString().length;
        for (var i = 0; i < x; i++) {
            cents = "0" + cents;
        }
    }

    // format
    var sep = sysFormatSep;
    var decsep = sysFormatDecSep;
    for (var i = 0; i < Math.floor((num.length - (1 + i)) / 3); i++)
        num = num.substr(0, num.length - (4 * i + 3)) + sep + num.substr(num.length - (4 * i + 3));
    if (prec > 0)
        num = num + decsep + cents;
    return ((sign) ? num : SysFormatNegative(num, sysFormatNegative));
}

// Dialog handling
// FROM: XXX
// ---------------
// One object tracks the current modal dialog opened from this window.
var SysDialog = new Object()

// Event handler to inhibit Navigator form element 
function SysDialogDeadend() {
    if (SysDialog.win && !SysDialog.win.closed) {
        SysDialog.win.focus();
        return false;
    }
}
// Invoked by onFocus event handler of EVERY frame, return focus to dialog window if it's open.
function SysDialogCheckModal() {
    if (SysDialog.win && !SysDialog.win.closed) {
        SysDialog.win.focus();
    }
}
// Grab all Navigator events that might get through to form elements while dialog is open.
function SysDialogBlockEvents() {
    window.captureEvents(Event.CLICK | Event.MOUSEDOWN | Event.MOUSEUP | Event.FOCUS)
    window.onclick = SysDialogDeadend;
    window.onfocus = SysDialogCheckModal;
}
// As dialog closes, restore the main window's original event mechanisms.
function SysDialogUnblockEvents() {
    window.releaseEvents(Event.CLICK | Event.MOUSEDOWN | Event.MOUSEUP | Event.FOCUS)
    window.onclick = null;
    window.onfocus = null;
}

function SysShowModalDialog(url, args, options) {
    if (window.showModalDialog) {
        return window.showModalDialog(url, args, options);
    }
    else {
        alert('Only Internet explorer supports this feature');
        return null;
    }
}

// Header
// ------
function SysShowFavorite(title, url, root) {
    if (root == undefined) { root = ''; }
    var u = root + 'SysFavoriteAddContent.aspx?IsModal=1';
    var options = 'dialogHeight:' + "225px" + ';dialogWidth:' + "500px" + ';status:no;unadorned:yes;help:no;resizable:yes;';
    try {
        SysDialog.returnValue = window.showModalDialog(u, new Array(title, url), options);
    }
    catch (ex) {
        window.alert(SysTerm(15693, 'Pop-up blocked. Please enable pop-ups for this site.'))
    }
    return SysDialog.returnValue;
}

function SysShowHelp(title, topic, filter, root) {
    if (root == undefined) { root = ''; }
    var url = "SysHelp.aspx?Title=" + SysURLEncode(title) + "&Topic=" + SysURLEncode(topic) + "&TopicFilter=" + filter;
    window.open(root + url, null, "width=800,height=500,resizable=yes,scrollbars=yes,status=yes,toolbar=yes,menubar=no,location=no");
}
var sysPageUrl;
function SysPrintPage(url, root) {
    window.open(url, null, "width=200,height=200,titlebar=no,resizable=yes,scrollbars=yes,status=yes,toolbar=yes,menubar=yes,location=no");
}
function SysAddUrl(url, parm) {
    if (url.indexOf('?') < 0)
        return url + "?" + parm
    else
        return url + "&" + parm
}
function SysPrint() {
    SysPrintPage(SysAddUrl(sysPageUrl, 'SysDoPrinting=1'))
}
function SysExport(e) {
    window.location = SysAddUrl(sysPageUrl, 'SysDoPrinting=1&SysExporting=' + e);
}
function SysSendMail(ss, root) {
    //BR 26.627.152 - Added param root
    SysSendPage(SysAddUrl(sysPageUrl, 'SysDoPrinting=1&SysExporting=2'), ss, root)
}

// Values
// ------
function SysGetElement(ctl) {
    return document.getElementById(ctl);
}
function SysSet(ctl, v) {
    SysSetValue(ctl, v);
}
function SysSetValue(ctl, v) {
    var c = document.getElementById(ctl);
    if (c != null)
        c.value = v;
}
function SysGet(ctl) {
    return SysGetValue(ctl);
}
function SysGetValue(ctl) {
    var c = document.getElementById(ctl);
    if (c != null)
        return c.value;
}
function SysTrim2(val, onlySpace) {
    if (val == null)
        return '';
    var t = '';
    var b = false;
    var i;
    for (i = 0; i < val.length; i++) {
        var c = val.charAt(i);
        onlySpace = onlySpace && (c == ' ');
        b = b || (c != ' ');
        if (b)
            t += c;
    }
    if (onlySpace) return val;
    var s = '';
    b = false;
    for (i = t.length - 1; i >= 0; i--) {
        var c = t.charAt(i);
        b = b || (c != ' ');
        if (b)
            s = c + s;
    }
    return s;
}
function SysTrim(val) {
    return SysTrim2(val, false);
}
// Set Default
// -----------
function SysDef(ctl, v) {
    var c = document.getElementById(ctl);
    if (c != null)
        c.value = v;
}
function SysDefName(ctl, i, v) {
    var a = document.getElementsByName(ctl);
    if (a != null && a.length >= (i - 1)) {
        var c = a(i);
        if (c != null) c.value = v;
    }
}
function SysDefCheck(ctl, v) {
    var c = document.getElementById(ctl);
    if (c != null)
        c.checked = v;
}
function SysDefCheckList(ctl, v) {
    var c = document.getElementsByName(ctl);
    if (c == null)
        return;
    var ar;
    if (v != null && v != '')
        ar = v.split(',');
    for (i = 0; i < c.length; i++) {
        var b = false;
        if (ar != null) {
            var j = 0;
            while (!b && j < ar.length) {
                if (c[i].value == ar[j])
                    b = true;
                j++
            }
        }
        c[i].checked = b;
    }
}
function SysDefRadioList(ctl, v) {
    var c = document.getElementsByName(ctl);
    if (c == null)
        return;
    for (i = 0; i < c.length; i++) {
        c[i].checked = c[i].value == v;
    }
}
// ConfirmBox
// ----------
function SysAsk(ctl, question) {
    if (window.confirm(question))
        SysSet(ctl, 1);
    else
        SysSet(ctl, 0);
    SysSubmit();
}

// Color Field
// -----------
function SysBrowseColor(ctl, script, allowempty) {
    SysDialog.ctl = ctl;
    SysDialog.onchange = script;
    var u = "SysPopupColorPicker.aspx";
    if (allowempty != null && allowempty != 'undefined' && (allowempty == 1 || allowempty == true)) u += "?AllowEmpty=1";
    SysShowModal(u, "", "480px", "400px", "SysBrowseColorHandler();", false);
}
function SysBrowseColorHandler() {
    var c = SysDialog.ctl;
    var d = SysDialog.returnValue;
    if (d != null) {
        document.getElementById(c).value = d[0];
        if (d[0] == -1) {
            document.getElementById(c + '_color').style.background = "url(images\\ColorEmpty.png)";
            document.getElementById(c + '_color').title = d[1];
        }
        else {
            document.getElementById(c + '_color').style.background = "";
            document.getElementById(c + '_color').style.backgroundColor = d[1];
            document.getElementById(c + '_color').title = d[1] + '(' + d[0] + ')';
        }

        if (SysDialog.onchange != null && SysDialog.onchange != '') {
            var onc = new Function(SysDialog.onchange);
            onc();
        }
    }
}

// Switch Division
function SysSwitchDivision(division, url, nomsg, remember) {
    if (nomsg || SysConfirm(8)) {
        window.top.allowSwitch = true;
        SysLogOff(division, url, remember)
    }
}
function SysLogOff(division, url, remember) {
    var qsp = '';
    if (division != null)
        qsp = qsp.concat('&Division='.concat(division));
    if (url != null)
        qsp = qsp.concat('&App='.concat(url));
    if (remember != null)
        qsp = qsp.concat('&Remember='.concat(remember));
    try {
        window.top.location = 'ClearSession.aspx'.concat(qsp.replace('&', '?'));
    }
    catch (e) {
    }
}

// Button Ask
var _sysDirtyChecks;
var _sysDirtyIDs;
var sysNoBeforeUnloadCheck = false;
function SysDirtyBeforeUnload(txt) {
    if (sysNoBeforeUnloadCheck) {
        sysIsSubmitted = false;
    }
    else if (SysIsDirty() && !sysIsSubmitted) {
        sysIsSubmitted = false;
        event.returnValue = txt;
    }
}
function SysIsDirty() {
    try {
        if (SysCheckDirty())
            return true;
    }
    catch (e) { }
    if (_sysDirtyIDs != null && _sysDirtyChecks != null) {
        for (i = 0; i < _sysDirtyIDs.length; i++) {
            var e = SysGetElement(_sysDirtyIDs[i]);
            if (e != null) {
                if (e.tagName == 'INPUT' && e.type == 'checkbox') {
                    if (_sysDirtyChecks[i] != e.checked)
                        return true;
                }
                else {
                    if (e.name == "Editor") //BR 25.547.112
                        return EditorEdited;

                    if (_sysDirtyChecks[i] != e.value)
                        return true;
                }
            }
        }
    }
    return false
}
function SysSaveDirtyValues() {
    if (_sysDirtyIDs != null) {
        _sysDirtyChecks = new Array();
        for (i = 0; i < _sysDirtyIDs.length; i++) {
            var e = SysGetElement(_sysDirtyIDs[i]);
            if (e != null) {
                if (e.tagName == 'INPUT' && e.type == 'checkbox')
                    _sysDirtyChecks[i] = e.checked;
                else
                    _sysDirtyChecks[i] = e.value;
            }
            else
                _sysDirtyChecks[i] = "";
        }
    }
}
function SysSetDirtyFalse(ctrlid) {
    if (_sysDirtyIDs != null && _sysDirtyChecks != null) {
        for (i = 0; i < _sysDirtyIDs.length; i++) {
            if (_sysDirtyIDs[i] == ctrlid) {
                var e = SysGetElement(_sysDirtyIDs[i]);
                if (e != null) {
                    if (e.tagName == 'INPUT' && e.type == 'checkbox') {
                        _sysDirtyChecks[i] = e.checked;
                    }
                    else {
                        _sysDirtyChecks[i] = e.value;
                    }
                }
                break;
            }
        }
    }
    return false;
}

function SysButtonAsk(e, url, f) {
    if (!SysIsDirty()) {
        if (url == null)
            window.close();
        else
            SysLocation(url);
        return;
    }
    SysDialog.func = f;
    SysDialog.url = url;
    SysShowModal("SysConfirm.aspx", null, "300px", "150px", 'SysButtonHandler()', null, "scroll:no;"); // FC 23.842.030
}
function SysButtonHandler() {
    var a = SysDialog.returnValue;
    if (a == 1) {
        var f = SysDialog.func;
        if (f != null) {
            if (!f())
                return;
        }
        SysSet('BCAction', 6);
        SysSubmit(1);
    }
    else
        if (a == 0) {
        if (SysDialog.url == null) {
            sysIsSubmitted = true;
            window.close();
        }
        else
            SysLocation(SysDialog.url);
    }
}
function SysColumnDirty(b) {
    if (b)
        return true
    else {
        SysConfirm(3);
        return false;
    }
}
function SysColumnDeleteAsk(b) {
    if (b)
        return SysConfirm()
    else {
        SysConfirm(3);
        return false;
    }
}
// SysAlert
//FC 30.314.780
function SysAlert(captionid, caption, width, height, explanation, htmlencode) {
    return SysConfirm(5, captionid, caption, width, height, explanation, htmlencode)
}
// SysConfirm
//FC 30.314.780
function SysConfirm(mode, captionid, caption, width, height, explanation, htmlencode) {
    var sUrl;
    sUrl = "SysConfirm.aspx?";
    if (mode == null)
        mode = 2;
    if (width == null)
        width = "300px";
    if (height == null)
        height = "150px";
    if (mode > 3) {
        sUrl += "Caption=" + SysURLEncode(caption) + "&CaptionID=" + captionid + "&";
        if (explanation != null)
            sUrl += "Explanation=" + SysURLEncode(explanation) + "&";
    }
    //FC 30.314.780
    if (htmlencode == false) {
        sUrl += 'htmlencode=0&'
    }
    SysShowModal(sUrl + "mode=" + mode, null, width, height, null, null, "scroll:no;"); // FC 23.842.030
    if (SysDialog.returnValue == null)
        return false;
    return SysDialog.returnValue;
}
function SysErrorMessage(id) {
    var el = document.getElementById(id);
    if (el) {
        var a = SysShowModal("SysErrorMessage.aspx", el.outerHTML, "500px", "50px");
        if (a)
            SysLocation(a);
    }
}
// Date Field
// ----------
function SysPopupDate() {
    SysCallback("SysInputSearch.aspx?TextType=" + sysInputTextType + "&Text=" + sysInputText, "", SysInputCallback)
}


function SysBrowseDate(ctl, linkedCtl, script) {
    var curDate = SysGet(ctl);
    var calurl = 'SysPopupCalendar.aspx';
    if (curDate != null) {
        var UnFormatDate = SysUnFormatDate(curDate);
        if (UnFormatDate) {
            var yr = UnFormatDate.getFullYear();
            var mt = UnFormatDate.getMonth() + 1;
            mt = (mt < 10) ? ("0" + mt) : mt;
            var dd = UnFormatDate.getDate();
            dd = (dd < 10) ? ("0" + dd) : dd;
            UnFormatDate = yr + '-' + mt + '-' + dd;
            calurl = calurl + '?Date=' + UnFormatDate;
        }
        else {
            calurl = calurl + '?Date=' + curDate;
        }
    }
    SysDialog.ctl = ctl;
    SysDialog.linkedCtl = linkedCtl;
    SysShowModal(calurl, null, '320px', '315px', 'SysBrowseDateHandler(\'' + script + '\');');
}

function SysBrowseDateHandler(script) {
    var ctl = SysDialog.ctl;
    var curDate = SysGet(ctl);
    var linkedCtl = SysDialog.linkedCtl;
    var d = SysDialog.returnValue;
    if (d != null) {
        document.getElementById(ctl).value = d;
        if (linkedCtl != undefined) {
            var l = document.getElementById(linkedCtl);
            if (l.value == curDate) { l.value = d; }
        }
        if (script != '') {
            var f = new Function(script);
            f();
        }
        return true;
    }
    return false;
}

// Browse Field
// ------------
var F2pressed;
function SysBrowserKeyDown(event, allowEmpty) {
    var k = SysGetKey(event);
    if (k == 9)
        SysCancelInputSearch();
    var el = SysSrcElement(event);
    if (allowEmpty) {
        if (k == 113) {
            F2pressed = true;
            el.fireEvent('ondblclick')
            SysCancelBubble(event)
        }
    }
    else {
        if (k == 113 || (el.value.length == 0 &&
			(k == 13 || (k == 9 && (!event.shiftKey && !event.shiftLeft))))) {
            if (k == 113) { F2pressed = true; }
            el.fireEvent('ondblclick')
            SysCancelBubble(event)
        }
    }
}
function SysBrowseData(ctl, params, refurl, bAltKey, bKeyInRef, altParam, onchangeScript, extraResults, multiple, bEnterpriseSearch, backOfficeDivisionCode) {
    var c;
    if (altParam != null) {
        c = document.getElementById(ctl + '_alt');
        if (c != null && c.value != null) {
            var val = SysTrim(c.value);
            var i; var ok = false; var str = '0123456789 .';
            for (i = 0; i < val.length; i++) {
                if (str.indexOf(val.charAt(i)) < 0)
                    ok = true;
            }
            if (ok)
                params = params + '&BRS_' + altParam + '=' + SysURLEncode(val);
        }
    }

    //FC 26.556.647, Enterprise Search
    var el = SysSrcElement(ctl);
    if (bEnterpriseSearch && !F2pressed && el.tagName == 'INPUT') {
        c = SysGetElement(ctl + '_alt');
        if (c == null)
            c = SysGetElement(ctl);

        if (c != null && c.value != '')
            params = params + '&BRS_QuickSearch=' + c.value + '&ClickSearch=1';
    }
    F2pressed = null;

    if (multiple != 1 && backOfficeDivisionCode != null) {
        params = params + '&BRS_BackOfficeDivisionCode=' + SysURLEncode(backOfficeDivisionCode);
    }

    var u;
    var args;
    if (multiple == 1) {
        u = 'SysMultiBrowser.aspx?' + params;
        args = SysGet(ctl);
    }
    else
        u = 'SysBrowser.aspx?' + params;

    SysDialog.ctl = ctl;
    SysDialog.bKeyInRef = bKeyInRef;
    SysDialog.refurl = refurl;
    SysDialog.onchangeScript = onchangeScript;
    SysDialog.extraResults = extraResults;
    SysShowModal(u, args, '850px', '600px', 'SysBrowseDataHandler();', true);

}

//FC 26.556.647, Enterprise Search
function SysBrowserMouseDown(el) {
    if (el != null) { el.mouseclicked = true; }
}
function SysBrowserReset(el) {
    if (el != null) { el.mouseclicked = null; }
}
function SysBrowserCheckKeyDown(el) {
    if (el != null) {
        if (el.mouseclicked) { return false } else { return true }
    }
}

function SysBrowseDataHandler() {
    var ctl = SysDialog.ctl;
    var bKeyInRef = SysDialog.bKeyInRef;
    var refurl = SysDialog.refurl;
    var v = SysDialog.returnValue;
    var extraResults = SysDialog.extraResults;
    var c;

    if (typeof (v) != 'undefined') {
        if (v == null) {
            c = document.getElementById(ctl); if (c != null) { c.value = ''; }
            c = document.getElementById(ctl + '_alt'); if (c != null) { c.value = ''; }
            c = document.getElementById(ctl + '_ref'); if (c != null) { c.innerText = ''; }
            c = document.getElementById(ctl + '_ref_ref'); if ((c != null) && (c.nodeName.toLowerCase() == 'a')) { c.innerText = ''; } // BR 26.863.222 
            if (extraResults != null) {
                var er = extraResults.split(',');
                for (j = 0; j < er.length; j++) {
                    c = SysGetElement(er[j]); if (c != null) { SysSet(er[j], ''); }
                }
            }
        }
        else {
            var f = 1;
            var r = '';
            var erc = 0;
            if (extraResults != null) {
                var er = extraResults.split(',');
                erc = er.length;
            }
            if (typeof (v) != 'object') { v = Array(v) };

            if (v[0] == 'multi' || v[0] == 'query') {
                SysSet(ctl, v[1]);
                SysSet(ctl + '_alt', '');
                c = document.getElementById(ctl + '_ref');
                if (c != null) {
                    c.removeAttribute('href');
                    SysSetInnerText(c, v[2]);
                }
            }
            else {
                c = document.getElementById(ctl);
                if (c != null) { c.value = SysTrim(v[0]); }
                c = document.getElementById(ctl + '_alt');
                if (c != null) { c.value = SysTrim(v[1]); f++ }
                c = document.getElementById(ctl + '_ref');
                if (c != null) {

                    // BR 26.863.222
                    if (c.nodeName.toLowerCase() == 'input') {
                        var a = document.getElementById(c.id + '_ref');
                        if (a) { c = a; }
                    }

                    if (refurl.length > 0) { c.href = refurl + SysURLEncode(v[0]); }
                    if (bKeyInRef) { r = SysTrim(v[0]); }
                    for (j = f; j < (v.length - erc); j++) {
                        if (r.length > 0) { r += ' - '; }
                        r += SysTrim(v[j]);
                    }
                    SysSetInnerText(c, r);
                    c.runtimeStyle.color = '';
                    if (er != null) {
                        for (k = 0; k < er.length; k++) {
                            SysSet(er[k], v[j + k]);
                        }
                    }
                }
            }
        }
        if (SysDialog.onchangeScript != null && SysDialog.onchangeScript != '') {
            var f = new Function(SysDialog.onchangeScript);
            f();
        }
        try {
            HlpHtHandleBrowser(ctl);
        }
        catch (e) { }
        return true;
    }
    else if (document.getElementById('Editor_Editor') != null)	//BR 23.617.461
        SysFrameDocument(Editor_Editor).body.focus();

    return false;
}
function SysBrowserClear(id) {
    SysSet(id, '');
    SysSet(id + '_alt', '');
    var c = document.getElementById(id + '_ref');
    if (c != null) {
        SysSetInnerText(c, '');
        c.href = '';
    }
}
function SysMultiBrowserSingleSelect() {
    var e = event.srcElement;
    if (e.tagName == 'TD') {
        var tr = e.parentNode;
        var td = tr.children(0);
        var c = td.children(0);
        c.checked = !c.checked;
    }
}
function SysBrowserDef(ctl) {
    var c = document.getElementById(ctl);
    if (c != null)
        c.value = '';
    var b = document.getElementById(ctl + '_ref');
    if (b != null)
        b.innerText = '';
    var f = document.getElementById(ctl + '_alt');
    if (f != null)
        f.value = '';
}
function SysBrowserURL(url, value) {
    var re = new RegExp('<[A-Z](.+?)>', 'g');
    var r = url.match(re);
    if (r != null) {
        var v;
        for (i = 0; i < r.length; i++) {
            var c = document.getElementById(r[i].slice(1, -1));
            if (c != null) { v = SysURLEncode(c.value); } else { v = ''; }
            url = url.replace(r[i], v);
        }
    }
    return url + SysURLEncode(value);
}

function SysBrowseParam(parm, name) {
    var p = SysGetValue(parm);
    if (p != null)
        return "&ParamName=" + name + "&ParamValue=" + SysURLEncode(p);
    else
        return "&ParamName=" + name + "&ParamValue=";
}


function SysBrowseList(ctl, params, options, refurl, bAltKey, bKeyInRef, altParam) {
    var c;
    var u = 'SysBrowser.aspx?' + params; // DO NOT CHANGE: Different application name
    var v = window.showModalDialog(u, window, options);
    if (typeof (v) != 'undefined' && v != null) {
        var f = 1;
        var r = '';
        if (typeof (v) != 'object') { v = Array(v) };

        if (bKeyInRef || v.length == 1) { r = v[0]; }
        for (j = 1; j < v.length; j++) {
            if (r.length > 0) { r += ' - '; }
            r += v[j];
        }
        var rl = document.getElementById(ctl.substr(0, ctl.length - 4));
        var rlv = rl.value;
        if (rlv != null && rlv.length > 0 && rlv.substr(rlv.length - 1, 1) != ';')
            rlv += ';';
        rlv += r;
        rl.value = rlv;
    }
    return false;
}
function SysBrowseEdit(page, resultcols) {
    var u = page + (page.indexOf('?') < 0 ? '?' : '&') + 'BCAction=1&Resultcols=' + resultcols;
    var v = SysShowModal(u, null, window.screen.availWidth + 'px', window.screen.availHeight + 'px', null, true);
    if (v != null)
        ListCurrent();
}
function SysBrowseNew(page, resultcols, resultformats) {
    var u = page + (page.indexOf('?') < 0 ? '?' : '&') + 'BCAction=0&Resultcols=' + resultcols + '&Resultformats=' + resultformats;
    SysShowModal(u, null, window.screen.availWidth + 'px', window.screen.availHeight + 'px', 'SysBrowseNewHandler("' + resultformats + '");', true);
}
function SysBrowseNewHandler(resultformats) {
    var v = SysDialog.returnValue;
    if (v != null) {
        // BR 26.882.701 
        var query = sysPageUrl.substr(sysPageUrl.indexOf('?') + 1).replace('&IsModal=1', '');
        var url = 'SysInputSearch.aspx?InputType=B' + '&' + query + '&Check=1&Rf=' + SysURLEncode(resultformats);
        for (var k = 0; k < v.length; k++) {
            if (SysTrim(v[k]) != '') url += '&Text' + (k + 1) + '=' + SysURLEncode(v[k]);
        }
        var result = SysCallback(url, '', null, true);
        if (result == '-1') {
            SysAlert(0, SysTerm(33814, 'Validation error') + ': ' + SysTerm(16120, 'Please contact your system administrator for more information.'));
            return;
        }
        else if (result == '0') {
            SysAlert(0, SysTerm(18483, 'New data') + ': ' + SysTerm(5842, 'No valid criteria entered.'))
            return;
        }

        var pw = window.parent;
        pw.returnValue = v;
        window.parent.close();
    }
}
function SysBrowse(name) {
    try {
        SysGetElement('p' + name).click();
        return SysGet(name);
    }
    catch (e) {
    }
}
// File Field
// ----------
function SysFileFieldToggle(ctl) {
    var tdName = document.getElementById(ctl + '_tdName');
    var tdFile = document.getElementById(ctl + '_tdFile');
    if (tdName.style.display == "none") {
        tdName.style.display = "block"; tdFile.style.display = "none";
    }
    else {
        tdName.style.display = "none"; tdFile.style.display = "block";
    }
}

// Files Field
// -----------
function SysFilesFieldAddFile(s) {
    // Get File
    var ctl = SysFilesFieldGetTopFile(s);
    // check for valid control and value
    if (ctl == null || ctl.value == null || ctl.value.length == 0) {
        return;
    }

    // Add to list
    SysFilesFieldAddToList(s);

    // Show File Number   
    var ctlfn = SysGetElement(s + '_fileNumber');
    if (ctlfn != null) {
        SysSetInnerText(ctlfn, SysFilesFieldGetFileNumber(s));
    }
}

function SysFilesFieldGetFileNumber(s) {
    var tblList = document.getElementById(s + '_List');

    if (tblList != null) {
        return tblList.rows.length;
    }
    else {
        return 0;
    }
}

function SysFilesFieldAddToList(s) {
    var tblList = document.getElementById(s + '_List');
    var ctl = SysFilesFieldGetTopFile(s);
    var iSize;
    var strSize;

    // Filename & Size
    var nSplit = ctl.value.split('\\');
    var nFilename = nSplit[nSplit.length - 1];
    var nFileCell = document.createElement('div');
    nFileCell.style.backgroundColor = '#ffffff';
    nFileCell.style.fontWeight = 'normal';
    nFileCell.style.textAlign = 'left';
    nFileCell.style.verticalAlign = 'middle';
    nFileCell.style.height = '16px';
    nFileCell.title = ctl.value;
    nFileCell.value = ctl.id;
    
    // BR 32.487.279 Start
    if (nFilename.length > 128){
		var divFiles = document.getElementById(s + '_divFile');
		divFiles.removeChild(ctl);
		var bFileNumber = SysFilesFieldCheckMaxFileNumber(s);
		var nFileUpload = SysFilesFieldCreateFile(s, bFileNumber);
		// BR 32.457.785 End
		SysAlert(0, SysTerm(409, 'Attachment filename') + ' : ' + SysTerm(18637, 'Exceeded') + ' - ' + SysTerm(33551, 'Max. number of characters') + '(128)');
		return false;
    }
    
    // BR 32.487.279 End

    // FC 30.027.297
    //BR 31.046.151 - adding th Try/Catch
    try {
        iSize = HTMLParser.GetFileSizeExt(ctl.value);
    } catch (e) {
        errMsg = e.message;
        if (e.number == -2146828235) {
            SysAlert(0, errMsg);
            return false;
        } else if (e.number == -2146827859) {
            SysAlert(0, errMsg);
            return false;
        } else if (e.number == -2147221472) {
				// BR 32.457.785 Start
            //ctl.value = "";
				 var divFiles = document.getElementById(s + '_divFile');
				 divFiles.removeChild(ctl);
				 var bFileNumber = SysFilesFieldCheckMaxFileNumber(s);
				 var nFileUpload = SysFilesFieldCreateFile(s, bFileNumber);
            // BR 32.457.785 End
            errMsg = HTMLParser.GetErrorMessage(e.number);
            SysAlert(0, SysGetElement("ErrMsgAttachment").value);
            return false;

        } else if (e.number == -2147221483 || e.number == -2147221501) {
            //Start: BR 32.155.321
            //- Add support for: When user only enter a Directory path for example, C:\ and click on Browse button, navigate the user to specified root directory instead show error message.
            //- "-2147221483" number will return when there are ONLY directory path entered in filefield inputfield control.
            return false;
            //End: BR 32.155.321          

        } else if (e.number == -2147221502) {
            //Start: BR 32.155.321
            //- Add support for: When user enter invalid filename, show specified error message to user.
            //- "-2147221502" number will return when the entered filename is invalid.
            SysAlert(30879, "Invalid file name");
            return false;
            //End: BR 32.155.321

        } else {
            //Start: BR 32.155.321
            //- Do not show alert popup windows if there are no error message returned.
            if (errMsg.length > 0) {
                SysAlert(0, errMsg);
            }
            //End: BR 32.155.321   
            return false;
        }
    }

    if (iSize < 1024) {
        strSize = String(iSize) + ' bytes';
    } else if (iSize < 1048576) {
        iSize = iSize / 1024;
        strSize = String(iSize.toFixed(2)) + ' KB';
    } else {
        iSize = iSize / 1048576;
        strSize = String(iSize.toFixed(2)) + ' MB';
    }

    nFileCell.innerHTML = nFilename + " (" + strSize + ")";

    // Delete Icon
    var nDeleteCell = document.createElement('div');
    nDeleteCell.style.backgroundColor = '#ffffff';
    nDeleteCell.style.fontWeight = 'normal';
    nDeleteCell.style.textAlign = 'center';
    nDeleteCell.style.verticalAlign = 'middle';
    nDeleteCell.style.height = '16px';
    //BR 28.711.311
    var RemoveMsg = SysTerm(26102, 'Remove') + ': ' + nFilename;
    //nDeleteCell.title = ctl.value;
    nDeleteCell.title = RemoveMsg;
    nDeleteCell.value = ctl.id;
    var nImage = document.createElement('img');
    nImage.src = 'images/delete.png';
    nImage.onclick = function() { SysFilesFieldRemoveRow(s, this) };
    nDeleteCell.appendChild(nImage);

    // Size BR28.709.036
    var errMsg;
    try {
        //	var nFileSize = SysFilesFieldGetFileSize(ctl.value); FC 30.027.297
        var nFileSize = HTMLParser.GetFileSizeExt(ctl.value);
    } catch (e) {
        errMsg = e.message;
        if (e.number == -2146828235) {
            nFileSize = -1
        } else if (e.number == -2146827859) {
            nFileSize = -2
        } else if (e.number == -2147221472) {
            //BR 31.046.151
				// BR 32.457.785 Start
            //ctl.value = "";
				 var divFiles = document.getElementById(s + '_divFile');
				 divFiles.removeChild(ctl);
				 var bFileNumber = SysFilesFieldCheckMaxFileNumber(s);
				 var nFileUpload = SysFilesFieldCreateFile(s, bFileNumber);
            // BR 32.457.785 End
            errMsg = HTMLParser.GetErrorMessage(e.number);
            SysAlert(0, SysGetElement("ErrMsgAttachment").value);
            return false;
        }
    }

    // Insert Cell
    var nRow = tblList.insertRow(0);
    nRow.style.borderBottom = 'thin solid #777777'
    var nCell0 = nRow.insertCell(0);
    nCell0.style.width = '90%';
    nCell0.appendChild(nFileCell);
    var nCell1 = nRow.insertCell(1);
    nCell1.style.textAlign = 'right';
    nCell1.appendChild(nDeleteCell);
    var nCell2 = nRow.insertCell(2);
    nCell2.value = nFileSize;
    nCell2.style.display = 'none';

    // BR28.709.036 Check invalid file size
    // BR 28.709.040 Check zero file size
    if (nFileSize == 0) {
        SysAlert(0, SysTerm(37, 'Attachment') + ': ' + SysTerm(5810, 'Size') + ' = 0 ' + SysTerm(309, 'Bytes'));
        SysFilesFieldRemoveRow(s, nImage);
    }

    if (nFileSize == -1) {
        SysAlert(16965, 'Invalid file');
        SysFilesFieldRemoveRow(s, nImage);
    }

    if (nFileSize == -2) {
        SysAlert(0, errMsg);
        SysFilesFieldRemoveRow(s, nImage);
    }

    // Check Extension
    var bFileFormat = SysFilesFieldCheckFileFormat(s, nFilename);
    if (!bFileFormat) {
        var msg = SysTerm(36174, 'has invalid file format.');
        SysAlert(0, nFilename + ' ' + msg);
        SysFilesFieldRemoveRow(s, nImage);
    }

    // Check FileSize
    var bFileSize = SysFilesFieldCheckMaxFileSize(s, nFileSize);
    if (!bFileSize) {
        var max = document.getElementById(s + '_MaxFileSize');
        //SysAlert(0, nFilename + ' exceeds ' + (max.value) + ' bytes');
        //FC 32.075.868
        SysAlert(0, nFilename + ' exceeds ' + SysConvertFileSizeFromBytes(max.value));
        SysFilesFieldRemoveRow(s, nImage);
    }
    // Check Total File Size
    var bTotalFileSize = SysFilesFieldCheckMaxTotalFileSize(s);
    if (!bTotalFileSize) {
        var max = document.getElementById(s + '_MaxTotalFileSize');
        //SysAlert(0, 'The size of your attachments should not exceed ' + (max.value) + ' bytes');
        // FC 32.075.868
        SysAlert(0, 'The size of your attachments should not exceed ' + SysConvertFileSizeFromBytes(max.value));
        SysFilesFieldRemoveRow(s, nImage);
    }
    // Check Maximum File
    var bFileNumber = SysFilesFieldCheckMaxFileNumber(s);

    // Create Next File Upload
    var nFileUpload = SysFilesFieldCreateFile(s, bFileNumber);
    return false;
}

//FC 32.075.868
function SysConvertFileSizeFromBytes(s) {
    var iSize;
    var strSize;
    
    if (s < 1024) {
        strSize = String(s) + ' bytes.';
    } else if (s < 1048576) {
        iSize = s / 1024;
        strSize = String(iSize.toFixed(2)) + ' KB.';
    } else {
        iSize = s / 1048576;
        strSize = String(iSize.toFixed(2)) + ' MB.';
    }
    return strSize;
}

function SysFilesFieldCreateFile(s, val) {
    var divFiles = document.getElementById(s + '_divFile');
    var fileCount = document.getElementById(s + '_FileCount');
    var tFile = SysFilesFieldGetTopFile(s);

    fileCount.value = parseInt(fileCount.value) + 1;
    var nFileId = s + '_File' + (fileCount.value);

    var nFile = document.createElement('Input');
    nFile.id = nFile.name = nFileId;
    nFile.type = 'file';
    nFile.style.width = '100%';
    nFile.style.display = ''
    nFile.onchange = function() { SysFilesFieldAddFile(s) };
    if (val == false) { nFile.disabled = 'true'; }
    divFiles.appendChild(nFile);

    if (tFile != null) { tFile.style.display = 'none'; }

    return nFile;
}

function SysFilesFieldGetTopFile(s) {
    var fileCount = document.getElementById(s + '_FileCount');
    var FileId = s + '_File' + fileCount.value;
    var topFile = document.getElementById(FileId);
    return topFile;
}

function SysFilesFieldRemoveRow(s, node) {
    var divFiles = document.getElementById(s + '_divFile');
    var tblList = document.getElementById(s + '_List');
    var divFile = document.getElementById(node.parentNode.value);
    divFiles.removeChild(divFile);
    tblList.deleteRow(node.parentNode.parentNode.parentNode.rowIndex);

    // Check Maximum File
    var bFileNumber = SysFilesFieldCheckMaxFileNumber(s);
    if (bFileNumber) {
        var tFile = SysFilesFieldGetTopFile(s);
        if (tFile != null) { tFile.disabled = ''; }
    }

    // Show File Number   
    var ctlfn = SysGetElement(s + '_fileNumber');
    if (ctlfn != null) {
        SysSetInnerText(ctlfn, SysFilesFieldGetFileNumber(s));
    }
}

function SysFilesFieldCheckFileFormat(s, fn) {

    var fileFormat = document.getElementById(s + '_FileFormat').value;
    if (fileFormat == "*" || fileFormat.length == 0) { return true; }

    var idxLast = fn.lastIndexOf('.');
    if (idxLast < 0) { return false; }

    var fe = fn.substr(idxLast + 1);
    var fileExt = fileFormat.split('|');
    for (i = 0; i < fileExt.length; i++) {
        if (fileExt[i].toUpperCase() == fe.toUpperCase()) {
            return true;
        }
    }

    return false;
}

function SysFilesFieldCheckMaxFileNumber(s) {
    var tblList = document.getElementById(s + '_List');
    var max = document.getElementById(s + '_MaxFileNumber');
    if (max.value <= 0) {
        return true;
    }
    if (tblList.rows.length >= max.value) {
        return false;
    }
    else {
        return true;
    }
}

function SysFilesFieldCheckMaxFileSize(s, val) {
    var max = document.getElementById(s + '_MaxFileSize');
    if (max.value <= 0) {
        return true;
    }
    else if (val > max.value) {
        return false;
    }
    else {
        return true;
    }
}

function SysFilesFieldCheckMaxTotalFileSize(s) {
    var tblList = document.getElementById(s + '_List');
    var max = document.getElementById(s + '_MaxTotalFileSize');

    if (max.value > 0) {
        var total = 0;
        for (var i = 0; i < tblList.rows.length; i++) {
            total = total + tblList.rows(i).children(2).value;
        }
        if (total > max.value) {
            return false;
        }
        else {
            return true;
        }
    }
    else {
        return true;
    }
}

// Combobox
function SysComboUp(id) {
    var ctl = document.getElementById(id);
    if (ctl != null) {
        if (ctl.selectedIndex > 0)
            ctl.selectedIndex -= 1;
    }
}
function SysComboDown(id) {
    var ctl = document.getElementById(id);
    if (ctl != null) {
        if (ctl.selectedIndex < (ctl.options.length - 1))
            ctl.selectedIndex += 1;
    }
}

// Memo Field
// ----------

// helpers for insert at the cursor
function SysGetCaretPosition(ctl) {
    var i = ctl.value.replace(/\n/g, '').length + 1;
    if (ctl.createTextRange) {
        var objCaret = document.selection.createRange().duplicate();
        while (objCaret.parentElement() == ctl &&
			objCaret.move("character", 1) == 1) --i;
    }
    return --i;
}

function SysSetCaretPosition(ctl, pos) {
    // Put the cursor in the correct position
    var objSelectedRange = ctl.createTextRange();
    objSelectedRange.move("character", pos)
    objSelectedRange.select();
}

function SysInsertAtCaret(ctl, text) {
    if (ctl.createTextRange && ctl.caretPos) {
        var caretPos = ctl.caretPos;
        caretPos.text = caretPos.text.charAt(caretPos.text.length - 1) == ' ' ? caretPos.text + text + ' ' : caretPos.text + text;
    }
    else {
        ctl.focus();
        if (ctl.value.length > 0)
            if (ctl.value.substring(ctl.value.length - 1, ctl.value.length) != '\n') {
            ctl.value = ctl.value + ' ' + text;
        }
        else {
            ctl.value = ctl.value + text;
        }
        else
            ctl.value = text;
    }
}

function SysStoreCaret(ctl) {
    if (ctl.createTextRange)
        ctl.caretPos = document.selection.createRange().duplicate();
}

function SysSetTimestamp(tag) {
    var d = new Date();
    //FC 22.467.573 - Start
    //var s = '[' + SysUserName() + ' ' + SysDateFormat(d) + ' ' + d.toTimeString().substr(0, 5) + ']'

    var intTimeZoneOffset = parseInt(d.getTimezoneOffset());
    var sTimezoneOffset = "(GMT ";

    if (intTimeZoneOffset <= 0) sTimezoneOffset += "+";
    else sTimezoneOffset += "-";

    if (Math.abs(intTimeZoneOffset) < 10 * 60) sTimezoneOffset += "0";
    sTimezoneOffset += Math.floor(Math.abs(intTimeZoneOffset) / 60) + ":";
    if (Math.abs(intTimeZoneOffset % 60) < 10) sTimezoneOffset += "0";
    sTimezoneOffset += Math.abs(intTimeZoneOffset) % 60;
    sTimezoneOffset += ")";

    var s = '[' + SysUserName() + ' ' + SysDateFormat(d) + ' ' + SysTimeFormat(d.toTimeString()) + ' ' + sTimezoneOffset + ']'
    //FC 22.467.573 - End
    var c = document.getElementById(tag);
    if (c != null) {
        SysInsertAtCaret(c, s);
        c.focus();
    }
}

//Memo
function SysPopupMemo(tag, buttonid, imgMemo, imgNoMemo, fullScreen, readOnly) {
    if (readOnly == null) readOnly = 0;
    var rc = document.getElementById(tag);
    var arglen = rc.value.length;
    var dlgargs = new Array();
    var block = 4096;
    if (arglen <= block) {
        dlgargs[0] = rc.value;
    }
    else {
        var nParts = Math.floor((arglen / block) + 1);
        dlgargs[0] = rc.value.substr(0, block);
        for (i = 2; i < nParts; i++) {
            dlgargs[i - 1] = rc.value.substr((i - 1) * block, block);
        }
        dlgargs[nParts - 1] = rc.value.substr((nParts - 1) * block);
    }
    var left;
    var top;
    var height;
    var width;
    if (fullScreen) {
        height = window.screen.availHeight;
        width = window.screen.availWidth;
        top = 0;
        left = 0;
    }
    else {
        height = 300;
        width = 500;
        left = window.screenLeft + 400;
        top = window.screenTop + 200;
    }
    var options = 'dialogTop:' + top + 'px;dialogLeft:' + left + 'px;dialogHeight:' + height + 'px;dialogWidth:' + width + 'px;status:yes;resizable:yes'
    var newtext = window.showModalDialog('SysPopupMemo.aspx?Mode=' + readOnly, dlgargs, options);
    if (readOnly == 0 && newtext != null) {
        rc.value = newtext;
        var button = SysGetElement(buttonid);
        if (button != null) {
            if (newtext.length > 160) {
                button.title = newtext.substr(0, 157) + ' ...';
            }
            else {
                button.title = newtext;
            }
            if ((arglen > 0 && newtext.length == 0) || (arglen == 0 && newtext.length > 0)) {
                var i1 = SysGetElement(imgMemo);
                var i2 = SysGetElement(imgNoMemo);
                if (newtext.length == 0) {
                    i1.style.display = "none";
                    i2.style.display = "block";
                }
                else {
                    i1.style.display = "block";
                    i2.style.display = "none";
                }
            }
        }
    }
}

function SysSetFullscreen(tag) {
    SysPopupMemo(tag, null, null, null, true);
}

// Image button lists
function SysImageRadioButton(ctl, n) {
    var v = document.getElementById(ctl).value;
    document.getElementById(ctl + v).className = 'unselected';
    document.getElementById(ctl + n).className = 'selected';
    document.getElementById(ctl).value = n;
}
function SysImageToggleButton(ctl, val, img, txt) {
    var c = document.getElementById(ctl);
    var i = 0;
    var ix;
    while (i < val.length) {
        if (val[i] == c.value) {
            ix = i;
            break
        }
        i++;
    }
    if (ix == val.length - 1)
    { ix = 0 }
    else
    { ix++ }
    c.value = val[ix];
    var im = document.getElementById(ctl + '_img');
    if (im != null) {
        im.src = img[ix];
        im.title = txt[ix];
    }
}
function SysImageToggleButtonReset(ctl, val, img, txt, value) {
    var c = document.getElementById(ctl);
    var i = 0;
    var ix;
    while (i < val.length) {
        if (val[i] == value) {
            ix = i;
            break
        }
        i++;
    }
    c.value = val[ix];
    var im = document.getElementById(ctl + '_img');
    if (im != null) {
        im.src = img[ix];
        im.title = txt[ix];
    }
}


// Security level control
// ----------------------
function SysSetSecurity(ctl) {
    SysSetValue(ctl, SysGetValue(ctl + '_select'));
}
function SysSetSecuritySelect(ctl) {

    var val = SysGetValue(ctl);

    if (val == null || val == "")
        return;
    if (val == 0 || val == 1 || val == 2 || val == 3 || val == 4 || val == 10 || val == 100 || val == 101)
        SysSetValue(ctl + '_select', val);
    else {
        SysSetValue(ctl + '_select', '10');
        if (!(val >= 10 && val < 100))
            SysSetValue(ctl, '10');
    }
}

// Description field
// -----------------
function SysBrowseTerm(ctl) {
    var t = document.getElementById(ctl + '_Term');
    var s = 'SysTerms.aspx';
    if (t.value != null)
        s += '?_ID=' + t.value;
    SysDialog.ctl = ctl;
    SysShowModal(s, "", "800px", "500px", "SysBrowseTermhandler()", true);
}
function SysBrowseTermhandler() {
    var v = SysDialog.returnValue;
    var ctl = SysDialog.ctl;
    var t = document.getElementById(ctl + '_Term');
    if (typeof (v) != "undefined") {
        var d = document.getElementById(ctl)
        var r = document.getElementById(ctl + '_Ref')
        if (v == null) {
            d.value = '';
            t.value = 0;
            SysSetInnerText(r, '');
        }
        else {
            d.value = v[1];
            t.value = v[0];
            r.href = 'SysTerm.aspx?_ID=' + v[0];
            var text = v[2]
            SysSetInnerText(r, text);
        }
    }
}

function SysSetReadOnly(el, readonly) {
    el.readOnly = readonly;
    el.style.backgroundColor = readonly ? '#e7e7e7' : '';
    el.tabIndex = readonly ? -1 : 0;
}

// Document Category
// -----------------
// Selectable: 0=Subcategories, 1=all
// DO NOT CHANGE: Category browser is a different logic
//BR 23.940.084
//Include extra parameter for differential that category view right
//function SysDocumentCategory(Ctl, script, selectable, browserwhereclause) {
//BR 30.317.465 - Added onChangeScript parameter
function SysDocumentCategory(Ctl, script, selectable, browserwhereclause, viewall, onChangeScript) {

    var catUrl = 'DocCategoryBrowser.aspx?dummy=0';

    var e = SysGetElement(Ctl);
    SysDialog.Ctl = e;

    if (browserwhereclause != 0) {
        catUrl = catUrl + '&browserwhereclause=' + browserwhereclause;
    }

    if (selectable != 0) {
        catUrl = catUrl + '&selectable=' + selectable;
    }

    //BR 23.940.084
    catUrl = catUrl + '&viewall=' + viewall;

    // Main Category
    var mce = SysGetElement(Ctl + '_MainCat');
    SysDialog.mcCtl = mce;
    if (mce.value != null && mce.value.length > 0) {
        catUrl = catUrl + '&MainCategory=' + mce.value;
    }

    // Category
    var ce = SysGetElement(Ctl + '_Cat');
    SysDialog.cCtl = ce;
    if (ce.value != null && ce.value.length > 0) {
        catUrl = catUrl + '&Category=' + ce.value;
    }

    // SubCategory
    var sce = SysGetElement(Ctl + '_SubCat');
    SysDialog.scCtl = sce;
    if (sce.value != null && sce.value.length > 0) {
        catUrl = catUrl + '&SubCategory=' + sce.value;
    }

    SysDialog.refCtl = SysGetElement(Ctl + '_ref');
    //BR 30.317.465
    SysDialog.onChangeScript = onChangeScript;

    SysShowModal(catUrl, "", "600px", "500px", "SysDocumentCategoryHandler();" + script, true);
}
function SysDocumentCategoryHandler() {
    var v = SysDialog.returnValue;
    if (typeof (v) != "undefined") {
        var mc = SysDialog.mcCtl;
        var c = SysDialog.cCtl;
        var sc = SysDialog.scCtl;
        var r = SysDialog.refCtl;
        var e = SysDialog.Ctl;

        if (v != null) {
            e.value = v[0];
            mc.value = v[1];
            c.value = v[2];
            sc.value = v[3];
            SysSetInnerText(r, v[4]);
        }
        else {
            e.value = '';
            mc.value = '';
            c.value = '';
            sc.value = '';
            SysSetInnerText(r, '');
        }
    }
    //BR 30.317.465 - Execute onChangeScript
    if (SysDialog.onChangeScript != null && SysDialog.onChangeScript != '') {
        var f = new Function(SysDialog.onChangeScript);
        f();
    }
}

// Multilevel grouping: FinancialLayoutField
function SysFinancialLayoutField(Ctl, script, selectable, browserwhereclause, onchangeScript, allowempty) {
    var catUrl = 'FinLayoutBrowser.aspx?dummy=0';

    var e = SysGetElement(Ctl);
    SysDialog.Ctl = e;

    if (browserwhereclause != 0) {
        catUrl = catUrl + '&browserwhereclause=' + browserwhereclause;
    }

    if (allowempty != 0) {
        catUrl = catUrl + '&allowempty=' + allowempty;
    }

    if (e.value.length > 0) {
        catUrl = catUrl + '&selectable=' + SysURLEncode(e.value);
    }

    // ClassID
    var mce = SysGetElement(Ctl + '_ClassID');
    SysDialog.mcCtl = mce;
    if (mce.value != null && mce.value.length > 0) {
        catUrl = catUrl + '&ClassID=' + SysURLEncode(mce.value);
    }

    SysDialog.refCtl = SysGetElement(Ctl + '_ref');
    SysDialog.onchangeScript = onchangeScript;
    SysShowModal(catUrl, "", "600px", "500px", "SysFinancialLayoutFieldHandler();" + script, true);
}
function SysFinancialLayoutFieldHandler() {
    var v = SysDialog.returnValue;
    if (typeof (v) != "undefined") {
        var r = SysDialog.refCtl;
        var e = SysDialog.Ctl;

        if (v != null) {
            e.value = v[0];
            SysSetInnerText(r, v[1]);
        }
        else {
            e.value = '';
            SysSetInnerText(r, '');
        }
        if (SysDialog.onchangeScript != null && SysDialog.onchangeScript != '') {
            var f = new Function(SysDialog.onchangeScript);
            f();
        }
    }
}

//BR 23.660.584
var onChangeTriggered = false;
var onFocusValue = '';
function SysCheckFocus(el) {
    onChangeTriggered = false;
    onFocusValue = SysGetValue(el.id);
}
function SysCheckOnChange(el) {
    if (onChangeTriggered == true) {
        onChangeTriggered = false;
        return;
    }
    var onBlurValue = el.value;
    if (SysTrim(onFocusValue) != SysTrim(onBlurValue) && SysTrim(onBlurValue) != '') {
        el.fireEvent("onchange");
    }
    onChangeTriggered = false;
}

// BR 26.199.594
function SetEmptyDate(el) {
    if (SysTrim(el.value) != '') return;
    {

        switch (sysFormatDate) {
            case '1':
            case '2':
                {
                    el.value = "  " + sysFormatDateSep + "  " + sysFormatDateSep + "    ";
                }
                break;
            case '3':
                {
                    el.value = "    " + sysFormatDateSep + "  " + sysFormatDateSep + "  ";
                }
                break;
        }
    }

}

function SysInputOnFocus(el) {
    if (el.className.indexOf('notValid') > 0)
        el.className = 'savehistory notValid selected';
    else
        el.className = 'savehistory selected';
}
function SysInputOnBlur(el) {
    if (el.className.indexOf('notValid') > 0)
        el.className = 'savehistory notValid';
    else
        el.className = 'savehistory';
}

var sysInputChanged = false;
function SysChangeOnBlur(el) {
    if (sysInputChanged) {
        el.fireEvent("onchange");
        sysInputChanged = false;
    }
}

// Dual ListBox
// ------------
// Transfer an item
function SysDualListTransfer(ctl, dir) {
    var f = document.getElementById(ctl + (dir ? '_list' : '_selected'));
    var t = document.getElementById(ctl + (dir ? '_selected' : '_list'));
    if (t == null || f == null)
        return;
    if (f.length <= 0)
        return;
    var i;
    var l;
    for (i = 0; f.options.length > i; i++) {
        var o = f.options[i];
        if (o.selected)
            l = SysDualListInsert(t, o.value, o.text);
    }
    for (i = f.options.length - 1; i >= 0; i--) {
        var o = f.options[i];
        if (o.selected)
            SysDualListRemove(f, i);
    }
    SysDualListOptions(ctl);
    if (l != null)
        t.selectedIndex = l.index;
    t.focus();
}
function SysDualReset(ctl, values) {
    var f = document.getElementById(ctl + '_list');
    var t = document.getElementById(ctl + '_selected');
    if (f == null || t == null)
        return;
    for (i = t.options.length - 1; i >= 0; i--) {
        var o = t.options[i];
        SysDualListInsert(f, o.value, o.text);
        SysDualListRemove(t, i);
    }
    if (values != null) {
        var vs = values.split(',');
        for (i = 0; vs.length > i; i++) {
            var val = vs[i];
            var j;
            for (j = 0; f.options.length > j; j++) {
                var o = f.options[j];
                if (o.value == val) {
                    SysDualListInsert(t, o.value, o.text);
                    SysDualListRemove(f, j);
                }
            }
        }
    }
    SysDualListOptions(ctl);
}
// Move items in the list up/down
function SysDualListMove(ctl, dir) {
    var el = document.getElementById(ctl + '_selected')
    if (el.length <= 0)
        return;

    //BR 23.472.037, disable move up for first item or move down for last item
    if ((el.selectedIndex == el.length - 1 && dir == 0) || (el.selectedIndex == 0 && dir == 1))
        return;

    var idx = el.selectedIndex;
    if (idx == -1)
        return;
    var nxidx = idx + (dir ? -1 : 1)
    if (nxidx < 0)
        nxidx = el.length - 1
    if (nxidx >= el.length)
        nxidx = 0
    var oldVal = el[idx].value
    var oldText = el[idx].text
    el[idx].value = el[nxidx].value
    el[idx].text = el[nxidx].text
    el[nxidx].value = oldVal
    el[nxidx].text = oldText
    el.selectedIndex = nxidx

    SysDualListOptions(ctl);
    return false;
}

// Insert in list
function SysDualListInsert(c, value, text) {
    var o = new Option(text, value);
    c.options[c.length] = o;
    return o;
}
// Remove from list
function SysDualListRemove(c, i) {
    if (c.length <= 0)
        return;
    //var i = c.selectedIndex;
    if (i != -1)
        c.options[i] = null;
}
// Build options list
function SysDualListOptions(ctl) {
    var c = document.getElementById(ctl + '_selected');
    var o = document.getElementById(ctl);
    var n = c.options.length;
    var s = '';
    for (var i = 0; i < n; i++) {
        s += c.options[i].value + ',';
    }
    o.value = s;
}

// Dual List Box with images
function SysDualImgUnSelect(me) {
    for (var i = 0; i < me.rows.length; i++) {
        var tr = me.rows[i];
        tr.className = "DataLight";
    }
}

function SysDualImgSelect(me) {
    var single = true;
    if (event.ctrlKey || event.ctrlLeft)
    { }
    else
        if (event.shiftKey || event.shiftLeft) {
        single = false;
    }
    else
        SysDualImgUnSelect(me);

    var tr = event.srcElement;
    while (tr != null && tr.tagName != 'TR')
        tr = tr.parentNode;
    if (tr == null)
        return;
    var tb = tr;
    while (tb != null && tb.tagName != 'TABLE')
        tb = tb.parentNode;
    if (tb == null || tb != me)
        return;

    //if (single)	
    //BR 23.675.146 - Perform this checking later
    //	var d = tr.getAttribute('dummy');
    //	if (d!='1')
    //		tr.className = "Selected";
    //End BR 23.675.146   
}

//BR 23.675.146
function SysDualImgMultipleHandler(me, ListBoxFirstSelection) {
    var single = true;
    if (event.shiftKey || event.shiftLeft)
        single = false;

    var tr = event.srcElement;
    while (tr != null && tr.tagName != 'TR')
        tr = tr.parentNode;
    if (tr == null)
        return ListBoxFirstSelection; ;
    var tb = tr;
    while (tb != null && tb.tagName != 'TABLE')
        tb = tb.parentNode;
    if (tb == null || tb != me)
        return ListBoxFirstSelection; ;

    if ((!single) && (ListBoxFirstSelection != null)) {
        SysDualImgSelectMulti(me, tb, tr, ListBoxFirstSelection);
        return ListBoxFirstSelection;
    }

    var d = tr.getAttribute('dummy');
    if (d != '1') {
        tr.className = "Selected";
        return tr;
    }
}

function SysDualImgSelectMulti(clickedListBox, clickedTable, currSelectedRow, ListBoxFirstSelection) {
    //Previous selected row
    var rows = clickedTable.getElementsByTagName('TR');
    var prevSelectedRow = ListBoxFirstSelection;

    //Determine which row come first
    var prevSelectionFirst = false;
    for (i = 0; i < rows.length - 1; i++) {
        if (rows[i].value == currSelectedRow.value) {
            break;
        }
        if (rows[i].value == prevSelectedRow.value) {
            prevSelectionFirst = true;
            break;
        }
    }

    //If mouse click on same row
    if (currSelectedRow.value == prevSelectedRow.value) {
        SysDualImgUnSelect(clickedListBox);
        prevSelectedRow.className = "Selected";
        return;
    }

    if ((prevSelectedRow != null)) {
        var selectionStarted = false;
        if (prevSelectionFirst) {
            //Action: Highlighted row from Top-to-Bottom
            for (i = 0; i < rows.length - 1; i++) {
                if (rows[i].value == prevSelectedRow.value)
                    selectionStarted = true;

                if (selectionStarted)
                    rows[i].className = "Selected";
                else
                    rows[i].className = "DataLight";

                if (rows[i].value == currSelectedRow.value)
                    selectionStarted = false;
            }
        } else {
            //Action: Highlighted row from Bottom-to-Top
            for (i = 0; i < rows.length - 1; i++) {
                if (rows[i].value == currSelectedRow.value)
                    selectionStarted = true;

                if (selectionStarted)
                    rows[i].className = "Selected";
                else
                    rows[i].className = "DataLight";

                if (rows[i].value == prevSelectedRow.value)
                    selectionStarted = false;
            }
        }
    }
}
//End BR 23.675.146


function SysDualImgListTransfer(ctl, dir) {
    var f = document.getElementById(ctl + (dir ? '_list' : '_selected'));
    var t = document.getElementById(ctl + (dir ? '_selected' : '_list'));
    if (t == null || f == null)
        return;
    if (f.rows.length <= 0)
        return;

    //BR 23.472.928, reset all the selected in target first
    for (i = t.rows.length - 1; i >= 0; i--) {
        var o = t.rows[i];
        if (o.className == "Selected")
            o.className = "DataLight";
    }


    for (i = f.rows.length - 1; i >= 0; i--) {
        var l = t.rows[t.rows.length - 1];
        var o = f.rows[i];
        if (o.className == 'Selected') {
            var d = o.getAttribute('dummy');
            if (d != '1')
                l.insertAdjacentElement("beforeBegin", o);
        }
    }
    SysDualImgListOptions(ctl);
}
// Move items in the list up/down
function SysDualImgListMove(ctl, dir) {

    var el = document.getElementById(ctl + '_selected')

    var tr = null;
    var i = 0;
    while (i < el.rows.length && tr == null) {
        var tr = el.rows[i];
        if (tr.className != 'Selected')
            tr = null;
        i++;
    }
    if (tr != null) {
        var d = tr.getAttribute('dummy');
        if (d != '1') {
            //BR 23.472.037, disallow up when index = 1 or down when index = length - 1
            if (dir && i != 1)
                SysDualImgListMoveUp(tr);
            else {
                if (!dir && i != el.rows.length - 1)
                    SysDualImgListMoveDown(tr);
            }
        }
        SysDualImgListOptions(ctl, dir);
    }
}
function SysDualImgListMoveDown(tr) {
    if (tr == null)
        return;
    var sib = tr.nextSibling;
    if (sib == null)
        return
    var sib = sib.nextSibling;
    var tab = tr.parentNode;
    if (sib == null)
        tab.insertBefore(tr);
    else
        tab.insertBefore(tr, sib);
}

function SysDualImgListMoveUp(tr) {
    if (tr == null)
        return;
    if (tr.fieldIndex == 1)
        return;
    var sib = tr.previousSibling;
    var tab = tr.parentNode;
    tab.insertBefore(tr, sib);
}

function SysDualImgListOptions(ctl, dir) {
    var el = document.getElementById(ctl + '_selected');
    var o = document.getElementById(ctl);
    var n = el.rows.length;
    var s = '';
    var i = 0;
    while (i < n) {
        var tr = el.rows[i];
        var d = tr.getAttribute('dummy');
        if (d != '1') {
            var a = tr.getAttribute('value')
            if (s != '') s += ',';
            s += a;
        }
        i++;
    }
    o.value = s;
}

//FC 21.580.310- Implement default button in customize menu
function SysDualImgListReset(ctl, values) {
    var f = document.getElementById(ctl + '_list');
    var t = document.getElementById(ctl + '_selected');
    if (f == null || t == null)
        return;
    for (i = t.rows.length - 1; i >= 0; i--) {
        var o = t.rows[i];
        var l = f.rows[f.rows.length - 1];
        var a = o.getAttribute('dummy');
        if (a != '1')
            l.insertAdjacentElement("beforeBegin", o);
    }
    if (values != null) {
        var vs = values.split(',');
        for (i = 0; vs.length > i; i++) {
            var val = vs[i];
            var j;
            for (j = 0; f.rows.length > j; j++) {
                var o = f.rows[j];
                var l = t.rows[t.rows.length - 1];
                if (o.value == val)
                    l.insertAdjacentElement("beforeBegin", o);
            }
        }
    }
    SysDualImgListOptions(ctl);
}

// Files
function SysFileName(doc) {
    var pn = doc.location.pathname;
    var li = pn.lastIndexOf('/')
    var dot = pn.lastIndexOf('.')
    if (li < 0 || dot < 0)
        return null;
    return pn.substring(li + 1, dot)
}
// Date Range
// ----------
function SysDateRangeSelect(ctl) {
    var dF, dT;
    var c = document.getElementById(ctl + '_Selection');
    var x = c[c.length - 1].value;
    if (x.substr(0, 2) == 'S_') {
        c.options[c.length - 1] = null;
        var v = document.getElementById(ctl + '_SelectionValue');
        if (v != null) {
            v.value = ''
        }
    }
    var i = c.selectedIndex - 1;
    if (i >= 0) {
        dF = SysDateRange[i][0]; dT = SysDateRange[i][1];
        var f = document.getElementById(ctl + '_From');
        if (f != null) {
            if (dF == null) {
                f.value = sysDateMask.replace(/9/g, ' ');
            }
            else {
                f.value = SysDateFormat(dF);
            }
        };
        var t = document.getElementById(ctl + '_To'); if (t != null) { if (dT == null) { t.value = sysDateMask.replace(/9/g, ' '); } else { t.value = SysDateFormat(dT); } };
        //var v = document.getElementById(ctl + '_SelectionValue'); if (v!=null) {v.value=c.options[i+1].value;}
    }
    var a = (c[i + 1].value >= 1000);
    var n = document.getElementById(ctl + '_More'); if (n != null) { n.disabled = a; };
    var b = document.getElementById(ctl + '_Less'); if (b != null) { b.disabled = a; };

    if (dF != null && dT != null) { return new Array(dF, dT); } else { return null; }
}

function SysDateRangeNavigate(ctl, d, dF, dT) {
    if (ctl == null || dF == null || dT == null)
        return;
    // set the navigation interval
    var c = document.getElementById(ctl + '_Selection');
    var x = c[c.length - 1].value;
    var i = c.selectedIndex - 1;
    if (x.substr(0, 2) != 'S_') {
        if (i >= 0) {
            c.options[c.length] = new Option('-- ' + SysDateRange[i][2] + ' --', 'S_' + c.options[i + 1].value);
            c.selectedIndex = c.length - 1;
            var v = document.getElementById(ctl + '_SelectionValue');
            if (v != null) {
                v.value = c.options[i + 1].value;
            }
        }
    }

    // based on interval, calculate next in range
    i = c.selectedIndex; x = c[i].value;
    if (x.substr(0, 2) == 'S_') {
        x = x.substr(2);
    }
    x = parseInt(x)
    if (x > 0) {
        switch (x) {
            case 1:
                dF = new Date(dF.getFullYear(), dF.getMonth(), dF.getDate() + d);
                dT = new Date(dF.getFullYear(), dF.getMonth(), dF.getDate());
                break;
            case 7:
                dF = new Date(dF.getFullYear(), dF.getMonth(), dF.getDate() + (7 * d));
                dT = new Date(dF.getFullYear(), dF.getMonth(), dF.getDate() + 6);
                break;
            case 30:
                dF = new Date(dF.getFullYear(), dF.getMonth() + d, 1);
                dT = new Date(dF.getFullYear(), dF.getMonth() + 1, 0);
                break;
            case 90:
                dF = new Date(dF.getFullYear(), dF.getMonth() + (3 * d), 1);
                dT = new Date(dF.getFullYear(), dF.getMonth() + 3, 0);
                break;
            case 365:
                dF = new Date(dF.getFullYear() + d, 0, 1);
                dT = new Date(dF.getFullYear(), 11, 31);
                break;
        }
    }
    else {
        x = -1 * x;
        dF = new Date(dF.getFullYear(), dF.getMonth(), dF.getDate() + (x * d));
        dT = new Date(dT.getFullYear(), dT.getMonth(), dT.getDate() + (x * d));
    }

    var f = document.getElementById(ctl + '_From');
    if (f != null) {
        if (dF == null)
            f.value = '';
        else
            f.value = SysDateFormat(dF);
    }
    var t = document.getElementById(ctl + '_To');
    if (t != null) {
        if (dT == null)
            t.value = '';
        else
            t.value = SysDateFormat(dT);
    }

    if (dF != null && dT != null) { return new Array(dF, dT); } else { return null; }
}

function SysDateRangeClearNavigator(ctl) {
    try {
        document.getElementById(ctl + '_Selection').value = 1000;
        document.getElementById(ctl + '_SelectionValue').value = '';
        document.getElementById(ctl + '_NLess').disabled = true;
        document.getElementById(ctl + '_NMore').disabled = true;
    }
    catch (e) { }
}

// Search framework
// ----------------
function SysSearchSubmit(search, action) {
    SysSet('SCAction', action);
    SysSubmit();
}

function SysCheckTemplateLength(tbid) {
    if (tbid.length == 0) return;
    var tb = document.getElementById(tbid);
    if (!tb) return;
    var max = 255;
    /* BR24.634.119: Allow Advanced Search > 255	
    var memoflds = tb.getElementsByTagName('textarea');
    for (var k=0; k < memoflds.length; k++){
    if (SysTrim(memoflds[k].value).length > max){
    return memoflds[k];
    }
    }*/
    var inps = tb.getElementsByTagName('input');
    for (var k = 0; k < inps.length; k++) {
        if ((inps[k].type != 'text') || (inps[k].disabled) || (inps[k].readOnly)) continue;
        if (SysTrim(inps[k].value).length > max) { return inps[k]; }
    }
}

function SysSearchSaveTemplate(search, key, template, tbid) {
    var inp = SysCheckTemplateLength(tbid);
    if (inp) {
        SysAlert(0, 'Unable to save template: one of the criteria exceeds maximum size of 255 characters.');
        if ((inp) && (inp.id != '')) SysFocus(inp.id);
        return;
    }

    SysDialog.search = search;
    var url = 'SysSearchSaveTemplate.aspx?Code=' + key + '&Template=' + template;
    SysShowModal(url, null, "360px", "240px", "SysSearchSaveTemplateHandler()");
}
function SysSearchSaveTemplateHandler() {
    var res = SysDialog.returnValue;
    var search = SysDialog.search;
    if (res != null) {
        document.getElementById(search + '_Template').value = res[1];
        document.getElementById(search + '_SaveName').value = res[2];
        document.getElementById(search + '_SavePrivate').value = res[0];
        SysSearchSubmit(search, 5);
    }
}

function SysSearchSelectAll(cb) {

    var el = cb;
    while (el != null && el.tagName != 'TR')
        el = el.parentNode;
    if (el == null)
        return;
    el = el.nextSibling;
    while (el != null && el.className != "SectionHeader") {
        var cbs = SysGetElementsByTagName(el, "INPUT");
        for (i = 0; i < cbs.length; i++) {
            var cbn = cbs[i];
            if (cbn.type == "checkbox")
                cbn.checked = cb.checked;
        }
        el = el.nextSibling;
    }
}


function SysSearchFieldSelect(cb, headerCbId) {
    var bCheckALL = true
    var elHeader = document.getElementById(headerCbId + "_CB");

    if (!cb.checked) {
        elHeader.checked = false
    }
    else {
        var el = elHeader;
        while (el != null && el.tagName != 'TR')
            el = el.parentNode;
        if (el == null)
            return;
        el = el.nextSibling;
        while (el != null && el.className != "SectionHeader") {
            var cbs = SysGetElementsByTagName(el, "INPUT");
            for (i = 0; i < cbs.length; i++) {
                var cbn = cbs[i];
                if (cbn.type == "checkbox")
                    if (!cbn.checked) {
                    bCheckALL = false;
                    break;
                }
            }
            if (!bCheckALL)
                break;
            el = el.nextSibling;
        }
        if (bCheckALL)
            elHeader.checked = true
    }
}

function SysSearchTemplateChange(action) {
    SysSet("SCAction", action);
    SysSubmit();
}
function SysSearchTempSwitch(ctl) {
    var s = document.getElementById(ctl + '_ShowTemp');
    var h = document.getElementById(ctl + '_HideTemp');
    var th = document.getElementById('SeaTemplateHide');
    if (s == null || h == null || th == null)
        return;
    var d = s.style.display;
    s.style.display = h.style.display;
    h.style.display = d;
    if (d == 'none')
        th.value = '1';
    else
        th.value = '0';
}

function SysSearchFldColEx(id, ctl, hid) {
    var TRs = document.getElementsByTagName('TR');

    if (TRs != null) {
        //Count total no of rows 
        var Count = 0;
        for (var no = 0; no < TRs.length; no++) {
            if (TRs[no].id.substring(0, id.length) == id) {
                Count = Count + 1;
            }
        }

        if (Count > 0) {
            var elID;
            var elNo = 0;

            var i = document.getElementById(ctl);
            for (var no = 0; no < Count; no++) {
                //Get each child row ID
                elNo = no + 1;
                if (elNo.toString().length == 1) {
                    elNo = '0' + elNo;
                }
                elID = id + elNo;

                el = document.getElementById(elID);
                if (el != null) {
                    if (el.style.display == 'block' || el.style.display == '') {
                        el.style.display = 'none';
                        i.src = 'images/webpart_expand.png';
                        SysSet(hid, '0');
                    } else {
                        el.style.display = 'block';
                        i.src = 'images/webpart_collapse.png';
                        SysSet(hid, '1');
                    }
                }
            } //End Loop
        } //End If   
    }
}

function SysSearchColExAll(Action, State) {
    //Collapse OR Expand all
    var TRs = document.getElementsByTagName('TR');

    for (var no = 0; no < TRs.length; no++) {
        if (TRs[no].id.substring(0, 5) == 'trSH_') {
            if (Action == '0') {
                //Expand  
                TRs[no].style.display = 'none';
            } else {
                //Collapse  
                TRs[no].style.display = 'block';
            }
        }
    }

    //Swap icon (+/-)
    var imgs = document.getElementsByTagName('IMG');

    for (var no = 0; no < imgs.length; no++) {
        if (imgs[no].id.substring(0, 5) == 'imgSC') {
            if (Action == '0') {
                //Expand    
                imgs[no].src = "images/webpart_expand.png";
            } else {
                //Collapse
                imgs[no].src = "images/webpart_collapse.png";
            }
        }
    }

    //Reset All CollapseExpand Hidden Field
    var inputs = document.getElementsByTagName('INPUT');

    for (var no = 0; no < inputs.length; no++) {

        if (inputs[no].id.substring(0, 5) == 'SFCE_') {
            if (Action == '0') {
                //Collapse                
                inputs[no].value = "0";
            } else {
                //Expand
                inputs[no].value = "1";
            }
        }
    }
}

function SysSearchHidePane(pane) {
    var d = document.getElementById(pane);
    if (d != null)
        d.style.display = "none";
}
function SysSearchShowPane(pane) {
    var d = document.getElementById(pane);
    if (d != null)
        d.style.display = "block";
}
function SysSearchSwitchTab(tab) {
    var t = document.getElementById(tab);
    if (t == null)
        return;
    SysSearchHidePane(sysSearchCurrent);
    SysSearchShowPane(t.value);
    sysSearchCurrent = t.value;
}
var sysSearchCurrent;

// ListBox
// ----------------
function LbxReset(ctl, values) {
    var c = document.getElementById(ctl);
    if (c == null)
        return;
    var i;
    for (i = 0; i < c.options.length; i++) {
        var o = c.options[i];
        o.selected = false;
    }

    var i;
    var vs = values.split(',');
    for (i = 0; vs.length > i; i++) {
        var val = vs[i];
        var i;
        for (i = 0; i < c.options.length; i++) {
            var o = c.options[i];
            if (o.value == val)
                o.selected = true;
        }
    }
}

function LbxMoveUp(boxId) {
    var box = document.getElementById(boxId);
    if (box == null || box.selectedIndex <= 0)
        return;
    var i = box.selectedIndex;
    var o = box.options[i];
    box.options.remove(i);
    LbxAdd(box, o, i - 1);
}
function LbxMoveDown(boxId) {
    var box = document.getElementById(boxId);
    if (box == null || box.selectedIndex < 0 || box.selectedIndex == (box.options.length - 1))
        return;
    var i = box.selectedIndex;
    var o = box.options[i];
    box.options.remove(i);
    LbxAdd(box, o, i + 1);
}
function LbxAdd(box, option, index) {
    if (index != null)
        box.options.add(option, index);
    else
        box.options.add(option);
    LbxStore(box);
}
function LbxRemove(boxId) {
    var box = document.getElementById(boxId);
    if (box == null || box.selectedIndex < 0)
        return;
    var i = box.selectedIndex;
    box.options.remove(i);
    LbxStore(box);
}
//
function LbxStore(box) {
    var boxlist = document.getElementById(box.id + "_List");
    if (boxlist == null)
        return;
    var val = "";
    for (i = 0; i < box.options.length; i++) {
        if (val != "")
            val += ",";
        val += box.options(i).value;
    }
    boxlist.value = val;
}

// DataList

function SysDataList(colFunc, val, url) {
    if (val == '666') {
        SysSet('BCAction', 10);
        SysSubmit();
        return;
    }
    if (SysColumnDirty(colFunc)) {
        SysSet('BCUrl', url);
        SysSet('BCAction', 9);
        SysSubmit();
    }
}
function SysDataListEdit(id, colFunc, val, url) {
    if (SysColumnDirty(colFunc)) {
        SysSet(id, val);
        SysSet('BCUrl', url);
        SysSet('BCAction', 1);
        SysSubmit();
    }
}
// ---- Context SysMenu ----------------------------------------------------------------

var sysCxMenu;
var sysCxMenuTable;
var sysCxMenuName;
var sysCxRowCurrent = 0;

function SysMenuHide() {
    if (sysCxMenu != null) {
        sysCxMenu.hide();
    }
}
function SysMenuShow(SysMenuName, func, ctlID) {
    SysMenuShowW(SysMenuName, func, ctlID, window.event)
}
function SysMenuShowW(SysMenuName, func, ctlID, e) {
    SysMenuHide();
    if (e == null)
        return;
    if (e.ctrlKey)
        return;
    if (sysCxMenu == null)
        sysCxMenu = createPopup();
    sysCxMenu.show(e.screenX, e.screenY, 200, 200);
    if (func != null) {
        var f = new Function('return ' + func);
        if (!f()) {
            SysMenuHide();
            return;
        }
    }
    var sysCmxBody = document.getElementById(SysMenuName + '_MenuDiv');
    if (sysCmxBody == null)
        return false;
    var s1 = '<html><head><link rel="stylesheet" type="text/css" href="' + sysCmxStyleSheet + '"></head>' +
	'<body scroll="auto" style="border-top-style: none; border-right-style: none; border-left-style: none; border-bottom-style: none" ' +
	'onkeydown=SysMenuOnKeyDown() onload="SysMenuOnload(' + SysMenuName + '_Menu)">' +
	'<script language="javascript" src="SysControls.js" ><' + '/script>';
    var s2 = '</body></html>';
    sysCxMenu.document.write(s1 + sysCmxBody.innerHTML + s2);
    sysCxMenu.document.close();

    var d = sysCxMenu.document.getElementById(SysMenuName + '_Menu');
    if (d != null) {
        var h = d.offsetHeight;
        var w = d.offsetWidth;
        var x;
        var y;
        if (ctlID == null) {
            x = e.screenX;
            y = e.screenY;
        }
        else {
            var par = SysGetElement(ctlID);
            if (w < par.offsetWidth) {
                w = par.offsetWidth;
                d.width = w;
            }
            x = window.screenLeft;
            y = window.screenTop + par.offsetHeight;
            while (par != null) {
                x += par.offsetLeft;
                y += par.offsetTop;
                par = par.offsetParent;
            }
        }
        sysCxMenu.show(x, y, w, h);
        d.setActive()
    }
    sysCxMenuName = SysMenuName;
    e.cancelBubble = true;
    e.returnValue = false;
    return true;
}

function SysMenuOnload(table) {
    try {
        if (parent.LastSelectedRow != null) {
            SysMenuHighlight(parent.LastSelectedRow, table);
        }
    } catch (e) { }
}

function SysMenuOnKeyDown() {
    var tbs = document.getElementsByTagName("TABLE");
    var i;

    if (tbs != null) {
        var tb = tbs[0];
        if (tb != null) {
            switch (window.event.keyCode) {
                case 38: //arrow up
                    if (sysCxRowCurrent >= 0) {
                        for (i = sysCxRowCurrent - 1; i >= 0; i--) {
                            if (tb.rows[i].className == "contextmenuitems") {
                                SysMenuHighlight(i, tb);
                                break;
                            }
                        }
                    }
                    break;
                case 40: //arrow down
                    if (sysCxRowCurrent < tb.rows.length - 1) {
                        for (i = sysCxRowCurrent + 1; i < tb.rows.length; i++) {
                            if (tb.rows[i].className == "contextmenuitems") {
                                SysMenuHighlight(i, tb);
                                break;
                            }
                        }
                    }
                    break;
                case 9: //tab
                case 13: //enter
                    tb.rows[sysCxRowCurrent].fireEvent('onclick');
                    break;
                case 35: //end
                    for (i = tb.rows.length - 1; i > 0; i--) {
                        if (tb.rows[i].className == "contextmenuitems") {
                            SysMenuHighlight(i, tb);
                            break;
                        }
                    }
                    break;
                case 36: //home
                    for (i = 0; i < tb.rows.length; i++) {
                        if (tb.rows[i].className == "contextmenuitems") {
                            SysMenuHighlight(i, tb);
                            break;
                        }
                    }
                    break;
                default: //find the one(s) beginning with typed character
                    var key;
                    var found = 0;
                    if (window.event.keyCode >= 96 && window.event.keyCode <= 105) {
                        // numbers on numeric keypad
                        key = window.event.keyCode - 48;
                    } else if (window.event.keyCode >= 106 && window.event.keyCode <= 111) {
                        // "*", "/", "-", "+", "." on numeric keypad
                        key = window.event.keyCode - 64;
                    } else {
                        key = window.event.keyCode;
                    }
                    for (i = sysCxRowCurrent + 1; i < tb.rows.length; i++) {
                        if (tb.rows[i].className == "contextmenuitems" &&
							 tb.rows[i].children[1].innerText.toUpperCase().substring(0, 1).charCodeAt(0) == key) {
                            SysMenuHighlight(i, tb);
                            found = 1;
                            break;
                        }
                    }
                    if (!found) {
                        for (i = 0; i < sysCxRowCurrent; i++) {
                            if (tb.rows[i].className == "contextmenuitems" &&
								 tb.rows[i].children[1].innerText.toUpperCase().substring(0, 1).charCodeAt(0) == key) {
                                SysMenuHighlight(i, tb);
                                break;
                            }
                        }
                    }
                    break;
            }
        }
    }
}

function SysMenuFindElement(el) {
    while (el != null && el.className != "contextmenuitems") {
        el = el.parentNode;
    }
    return el;
}

function SysMenuSwitchColor(item) {
    if (item != null) {
        var color = item.currentStyle.backgroundColor;
        item.runtimeStyle.backgroundColor = item.currentStyle.color;
        item.runtimeStyle.color = color;
    }
}

function SysMenuHighlight(row, table) {
    if (row == null || table == null) {
        var el = SysMenuFindElement(event.srcElement);
        if (el != null && el.className == "contextmenuitems") {
            el.parentElement.rows[sysCxRowCurrent].style.backgroundColor = "";
            el.parentElement.rows[sysCxRowCurrent].style.color = "";
            el.style.backgroundColor = "activecaption";
            el.style.color = "captiontext";
            sysCxRowCurrent = el.rowIndex;
        }
    } else if (table.rows[row].className == "contextmenuitems") {
        table.rows[sysCxRowCurrent].style.backgroundColor = "";
        table.rows[sysCxRowCurrent].style.color = "";
        table.rows[row].style.backgroundColor = "activecaption";
        table.rows[row].style.color = "captiontext";
        sysCxRowCurrent = row;
    }
}

function SysMenuLowlight() {
    var el = SysMenuFindElement(event.srcElement);
    if (el != null && el.className == "contextmenuitems") {
        el.style.backgroundColor = "";
        el.style.color = "";
    }
}

function SysMenuCmxClick(el, val, url) {
    window.alert(val);
    if (url != null && url != '') {
        SysLocation(url);
    }
}

function SysMenuClick(val, url) {
    window.alert(SysRowGetCellDescription(event));

    //var currentrow = sysRowCurrent;
    SysMenuHide();
    if (val != '')
        SysSetValue(sysCxMenuName, val);

    if (url != null && url != '') {
        var attValue = SysRowGetCellKey(event);
        SysLocation(url + attValue);
    }
}

function SysHideSelect() {
    var sels = document.all.tags('SELECT');
    for (i = 0; i < sels.length; i++) {
        var s = sels[i];
        s.style.visibility = "hidden";
    }
}
function SysShowSelect() {
    var sels = document.all.tags('SELECT');
    for (i = 0; i < sels.length; i++) {
        var s = sels[i];
        s.style.visibility = "visible";
    }
}
var sysCmxMenu;
function SysMenuStd() {
    sysCmxMenu = event.srcElement;

    if (sysCmxMenu.tagName == 'A') {
        var cmx = sysCmxMenu.getAttribute('cmx');
        if (cmx != null) {
            SysMenuShow('stdCmx' + cmx);
            return true;
        }
    }
    var p = sysCmxMenu;
    while (p != null && p.oncontextmenu == null) {
        p = p.parentElement;
    }

    SysMenuShow('pgCmx');

    return true;
}

function SysMenuStdCall(val, url) {
    SysMenuHide();
    if (sysCmxMenu.tagName == 'A') {
        var href = sysCmxMenu.href;
        var i = href.lastIndexOf("=");
        if (i > 0) {
            var key = href.substr(i + 1);
            window.location = url + key;
        }
    }
}

function SysMenuPage(val, url) {
    SysMenuHide();
    if (val == '1') {
        var txt = SysGetInnerText(sysCmxMenu);
        SysShowModal("HlpGlossaryPopUp.aspx?term=" + txt, "", "300px", "250px", null, 1)
    }
    else if (val == '2')
        SysPrint()
    else if (val == '3')
        SysExport(2)
    else if (val == '4')
        SysExport(1)
    else if (val == '5') {
        var txt = SysGetInnerText(sysCmxMenu);
        SysSearch(txt)
    }
}

function SysSearch(txt) {
    window.location = "SysSearch.aspx?txt=" + txt
}

// --- Selected Row ------------------------------------------
function SysRowGetCellKey(el) {
    if (el == null && event != null)
        el = event.srcElement;
    var SysMenuCurrentKey = null;
    while (el != null && SysMenuCurrentKey == null) {
        SysMenuCurrentKey = el.getAttribute("CmxKey");
        el = el.parentNode;
    }
    return SysMenuCurrentKey;
}
function SysRowGetCellDescription(el) {
    if (el == null && event != null)
        el = event.srcElement;
    var SysMenuCurrentKey = null;
    while (el != null && SysMenuCurrentKey == null) {
        SysMenuCurrentKey = el.innerText();
        el = el.parentNode;
    }
    return SysMenuCurrentKey;
}
function SysRowSelect() {
    sysRowCurrent = sysListPrevRow;
    return sysRowCurrent != null;
}

// TabPages
// Tab Strip
// ---------
function SysSetTab(me, ctl, tab) {
    var e = me;
    if (e.parentNode.className == 'tabClear') {
        var t = document.getElementById(ctl); t.value = tab;
        for (i = 0; i < e.parentNode.parentNode.childNodes.length; i++) {
            var el = e.parentNode.parentNode.childNodes[i]
            if (el.className == 'tabSelected') { el.className = 'tabClear' }
        }
        e.parentNode.className = 'tabSelected';
    }
}
function SysTabHide(pane) {
    var d = SysGetElement(pane);
    if (d != null) {
        d.style.display = "none";
    }
}
function SysTabShow(pane) {
    var d = SysGetElement(pane);
    if (d != null) d.style.display = "block";
}
function SysTabSwitch(tab) {
    var t = SysGetElement(tab);
    if (t == null) return;
    SysTabShow(t.value)
}

function SysWizNext(tab) {
    var t = SysGetElement(tab);
    if (t == null) return;
    var v = SysWizGetNext(tab, t.value);
    if (v != null) {
        t.value = v;
        SysTabShow(v);
    }
}
function SysWizGetNext(tab, value) {
    switch (t.value) {
        case "pane0": { return "pane1"; }
    }
}
function SysWizCheckFirst(tab, pane, first) {
    var b = SysGetElement(tab + '_Prev');

    if (b == null)
        return;
    b.disabled = pane == first;
}

function SysWizCheckLast(tab, pane, last) {
    var b = SysGetElement(tab + '_Next');

    if (b == null)
        return;
    b.disabled = pane == last;
}
function SysWizChkButton(tab, first, last) {
    var t = SysGetElement(tab);
    if (t == null) return;
    SysWizCheckFirst(tab, t.value, first);
    SysWizCheckLast(tab, t.value, last);
}

// Tree - DO NOT CHANGE
function SysTreeFindElement(el, tagName) {
    while (el != null && el.tagName != tagName)
        el = el.parentNode;
    return el;
}
function SysTreeCollapseOrExpand(ev, treeID) {
    var e = SysSrcElement(ev);
    var vID = e.getAttribute("treeid");
    var pTree = document.getElementById(vID);
    var bCollapse = (pTree.style.display == "block");
    var img = document.getElementById("i" + vID);
    if (bCollapse) {
        pTree.style.display = "none";
        e.style.backgroundImage = "url('Images/treeexpand.png')";
        if (img != null)
            img.src = img.getAttribute("collapsed");
        SysTreeRemoveExpandState(treeID, vID.substring(1));
    }
    else {
        pTree.style.display = "block";
        e.style.backgroundImage = "url('Images/treecollapse.png')";
        if (img != null)
            img.src = img.getAttribute("expanded");
        SysTreeAddExpandState(treeID, vID.substring(1));
    }
}
function SysTreeAddExpandState(treeID, id) {
    var val = SysGet(treeID + "_Expanded");
    if (val.length > 0) val += ":";
    val += id;
    SysSet(treeID + "_Expanded", val);
}
function SysTreeRemoveExpandState(treeID, id) {
    var val = SysGet(treeID + "_Expanded");
    var aStates = val.split(":");
    val = "";
    for (i = 0; i < aStates.length; i++) {
        if (aStates[i] != id) {
            val += ":" + aStates[i];
            if (i == 0) val = aStates[i];
        }
    }
    SysSet(treeID + "_Expanded", val);
}
function SysTreeMouseOver(ev) {
    var e = SysSrcElement(ev);
    var a = SysTreeFindElement(e, "A");
    if (a == null) return;
    if (a.className == "NoEvents") return;
    if (a.className == "Selected") {
        a.className = "SelectedMouseOver";
    }
    else {
        a.className = "MouseOver";
    }
}
function SysTreeMouseOut(ev) {
    var e = SysSrcElement(ev);
    var a = SysTreeFindElement(e, "A");
    if (a == null) return;
    if (a.className == "NoEvents") return;
    if (a.className == "SelectedMouseOver" || a.className == "Selected") {
        a.className = "Selected";
    }
    else {
        a.className = "";
    }
}

function SysTreeRuleOver(ev) {
    var e = SysSrcElement(ev);
    var td = SysTreeFindElement(e, "TD")
    if (td == null) return;
    if (td.className == "NoEvents") return;
    if (td.className == "MouseOver" || td.className == "Text") {
        td.className = "MouseOver";
        if (sysTreeLastSelected != null) {
            sysTreeLastSelected.className = "Text";
            sysTreeLastSelected = null;
        }
    }
}
function SysTreeRuleOut(ev) {
    var e = SysSrcElement(ev);
    var td = SysTreeFindElement(e, "TD");
    if (td == null) return;
    if (td.className == "NoEvents") return;
    if (td.className == "MouseOver" || td.className == "Text") {
        td.className = "Text";
    }
}

var sysTreeLastSelected;
function SysTreeSelect(ev, treeID) {
    var e = SysSrcElement(ev);

    if (e != null) {
        e = SysTreeFindElement(e, "A");
        if (e != null) {
            while (e.tagName != 'A' || (e.tagName == 'A' && e.name != 'Selected')) {
                e = e.parentNode;
                if (e == null)
                    break;
            }
        }
    }

    if (e != null) {
        if (e.tagName == "A") {
            if (e.className == "NoEvents") return;
            if (sysTreeLastSelected != null) {
                sysTreeLastSelected.className = "";
            }
            else {
                var t = document.getElementById(treeID + "_Tree");
                if (t != null)
                    SysTree_Clear(t.childNodes);
            }
            e.className = "SelectedMouseOver";
            sysTreeLastSelected = e;
            var tr = SysTreeFindElement(e, "TR");
            SysSet(treeID, tr.getAttribute('value'));
            var td = tr.cells[2];
            if (td != null)
                SysSet(treeID + '_text', SysGetInnerText(td));
            return true
        }
        if (e.tagName == "BUTTON") {
            SysTree_SaveNodes(treeID);
        }
    }
    return false;
}
function SysTree_Clear(nodes) {
    for (var i = 0; i < nodes.length; i++) {
        var n = nodes[i];
        if (n != null) {
            if (n.tagName == "A" && n.getAttribute("name") == "SelCat" && n.className != "NoEvents")
                n.className = "";
            SysTree_Clear(n.childNodes);
        }
    }
}
function SysTree_InitSelected(nodes, treeID) {
    if (nodes == null) {
        var t = document.getElementById(treeID + "_Tree");
        if (t != null)
            nodes = t.childNodes;
    }

    if (nodes == null) return;

    for (var i = 0; i < nodes.length; i++) {
        var n = nodes[i];
        if (n != null) {
            if ((n.tagName == "A" || n.tagName == "TD") && n.className == "Selected") {
                sysTreeLastSelected = n;
                //if(n.tagName == "TD")
                //n.className == "MouseOver"
            }
            SysTree_InitSelected(n.childNodes, treeID);
        }
    }
}
function SysTree_SaveNodes(treeID) {
    var t = document.getElementById(treeID);
    var v = "";
    v = SysTree_SaveNodes(t.childNodes, v);
    SysSet(treeID + "_Expanded", v.substr(0, (v.length - 1)));
}
function SysTree_SaveNodes(nodes, v) {
    if (nodes == null) return v;
    for (var i = 0; i < nodes.length; i++) {
        var n = nodes[i];
        if (n != null) {
            if (n.tagName == "TR" && n.name == "TableRow")
                if (n.style.display == "block")
                v += n.getAttribute("ID") + ":";
            v = SysTree_SaveNodes(n.childNodes, v);
        }
    }
    return v;
}

function SysTreeStartDrag() {
    var MoveID = window.event.srcElement.getAttribute("id");
    var dragData = window.event.dataTransfer;
    dragData.setData('Text', "@tree@-" + MoveID);
    dragData.effectAllowed = 'linkMove';
    dragData.dropEffect = 'move';
}
function SysTreeStopDrag() {
    window.event.dataTransfer.clearData();
}
function SysTreeOverDrag() {
    window.event.returnValue = false;
}
function SysTreeEnterDrag() {
    window.event.dataTransfer.getData('Text');
}
function SysTreeDrop(treeID, postback) {
    var MoveID = window.event.dataTransfer.getData("Text")
    // eliminate default action of ondrop so we can customize:
    window.event.returnValue = false;

    if (MoveID && MoveID.substr(0, 7) == "@tree@-") {
        var MoveID = MoveID.substr(7);
        var MoveValue;
        var t = window.event.srcElement;
        while (t.getAttribute("name") != (treeID + "_Tree"))
            t = t.parentNode;
        if (t != null) {
            for (i = 0; i < t.all.length; i++)
                if (t.all(i).tagName == "TR" && t.all(i).getAttribute("id") == MoveID)
                MoveValue = t.all(i).getAttribute("value");
        }
        var e = SysTreeFindElement(window.event.srcElement, "TR");
        SysSet(treeID + "_DropTarget", e.getAttribute("value"));
        SysSet(treeID + "_DropSource", MoveValue);
        SysSet("BCAction", 4);
        SysSubmit();
        return true;
    }
}
// Menu
function MnuActivate() {
    var me = SysSrcElement(event);
    if (me.tagName == 'A')
        me.setActive();
}
function MnuOnKeyDown() {
    var me = SysSrcElement(event);
    var td = me.parentNode;
    var tr = td.parentNode;
    var tbody = tr.parentNode;
    var table = tbody.parentNode;
    var rIndex = tr.rowIndex;
    var mainTableTD = table.parentNode;
    var mainTableRow = mainTableTD.parentNode;
    var mainTable = mainTableRow.parentNode;

    var tableColumnIndex = mainTableTD.cellIndex;
    var tableRowIndex = mainTableRow.rowIndex;


    var code = event.keyCode

    switch (code) {
        case 37: //arrowleft
            var result;
            if (tableColumnIndex == 0) {
                tableColumnIndex = mainTableRow.cells.length - 1;
                result = MnuActiveCell(mainTable, tableRowIndex, tableColumnIndex, rIndex);
            }
            else {
                tableColumnIndex--;
                result = MnuActiveCell(mainTable, tableRowIndex, tableColumnIndex, rIndex);
            }
            if (!result) {
                while (!MnuActiveCell(mainTable, tableRowIndex, tableColumnIndex, rIndex) && rIndex > 0) {
                    rIndex--;
                }
                if (rIndex == 0) {
                    rIndex = 1;
                    while (MnuActiveCell(mainTable, tableRowIndex - 1, tableColumnIndex, rIndex) && rIndex > 0) {
                        rIndex++;
                    }
                }
            }
            break
        case 38: //arrowup
            if (rIndex == 1) {
                tableRowIndex--;
                if (!MnuActiveCell(mainTable, tableRowIndex, tableColumnIndex, 1)) {
                    tableRowIndex = mainTable.rows.length - 1;
                    if (!MnuActiveCell(mainTable, tableRowIndex, tableColumnIndex, 1)) {
                        tableRowIndex--;
                        MnuActiveCell(mainTable, tableRowIndex, tableColumnIndex, 1);
                    }
                }
                //get last because of up
                while (MnuActiveCell(mainTable, tableRowIndex, tableColumnIndex, rIndex)) {
                    rIndex++;
                }
            }
            else {
                MnuActiveCell(mainTable, tableRowIndex, tableColumnIndex, rIndex - 1);
            }
            break
        case 39: //arrowright
            var result;
            if (tableColumnIndex == mainTableRow.cells.length - 1) {
                tableColumnIndex = 0;
                result = MnuActiveCell(mainTable, tableRowIndex, tableColumnIndex, rIndex);
            }
            else {
                tableColumnIndex++;
                result = MnuActiveCell(mainTable, tableRowIndex, tableColumnIndex, rIndex);
            }
            if (!result) {
                while (!MnuActiveCell(mainTable, tableRowIndex, tableColumnIndex, rIndex) && rIndex > 0) {
                    rIndex--;
                }
                if (rIndex == 0) {
                    rIndex = 1;
                    while (MnuActiveCell(mainTable, tableRowIndex - 1, tableColumnIndex, rIndex) && rIndex > 0) {
                        rIndex++;
                    }
                }
            }
            break
        case 40: //arrowdown
            if (!MnuActiveCell(mainTable, tableRowIndex, tableColumnIndex, rIndex + 1)) {
                if (!MnuActiveCell(mainTable, tableRowIndex + 1, tableColumnIndex, 1)) {
                    MnuActiveCell(mainTable, 0, tableColumnIndex, 1);
                }
            }
            break
        default:
            break
    }
}

function MnuActiveCell(Table, RowIndex, ColIndex, ItemIndex) {
    try {
        var a = Table.rows[RowIndex].childNodes[ColIndex].childNodes[0].rows[ItemIndex].childNodes[0].childNodes[0];
        if (a.tagName == 'A') {
            a.setActive();
            return true;
        }
        else {
            return false;
        }
    }
    catch (e) {
        return false;
    }

}


var menuCurrent;
var menuColor;
var menuBackColor;
function MnuMouseOver(e) {
    var me = SysSrcElement(e);
    MnuColorOff(menuCurrent)
    menuCurrent = me;
    MnuColorOn(me)
}
function MnuColorOn(me) {
    if (me == null) return;
    if (me.tagName == "A")
        me = me.parentElement;
    var a = me.firstChild;
    if (a == null) return;
    if (a.tagName != "A")
        return;

    var t = me.parentElement.parentElement.parentElement;
    var tr = t.rows[0].cells[0];
    if (menuColor == null) {
        menuColor = me.currentStyle.color;
        menuBackColor = me.currentStyle.backgroundColor;
    }
    me.runtimeStyle.backgroundColor = tr.currentStyle.backgroundColor;
    me.runtimeStyle.color = tr.currentStyle.color;

}
function MnuColorOff(me) {
    if (me == null) return;
    if (me.tagName == "A")
        me = me.parentElement;
    var a = me.firstChild;
    if (a == null) return;
    if (a.tagName != "A")
        return;
    me.runtimeStyle.backgroundColor = menuBackColor;
    me.runtimeStyle.color = menuColor;
}

//FC 24.848.171, Shortcut to appearance 08 menu
function SysKeyMenuLeft08(e) {
    var frame = top.MenuLeft;
    if (frame != null) {
        if ((frame.MenuKey) != null) {
            frame.MenuKey(e);
        }
    }
}

// retrieve XML data
function SysGetXMLData(topic, key) {
    var url = "SysXMLData.aspx";
    url = url + "?Topic=" + SysURLEncode(topic);
    url = url + "&Key=" + SysURLEncode(key);

    var xmlHttp;
    if (window.XMLHttpRequest) {
        xmlHttp = new XMLHttpRequest();
    }
    else if (window.ActiveXObject) {
        xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
    }

    if (xmlHttp) {
        // retrieve XML data
        xmlHttp.open("GET", url, false);
        xmlHttp.setRequestHeader("Content-Type", "text/xml");
        xmlHttp.send(null);
        // readyState
        //	 0 = uninitialized
        //	 1 = loading
        //	 2 = loaded
        //	 3 = interactive
        //	 4 = complete
        // status
        //	 200 = OK
        if (xmlHttp.readyState == 4 && xmlHttp.Status == 200) {
            return xmlHttp.responseXML;
        }
    }

    return null;
}




function SysSendPage(url, styleSheet, root) {
    var ok = false;
    var sOriBody;
    try {
        var myOlApp = new ActiveXObject("Outlook.Application");
        if (myOlApp != null) {
            ok = true;
            var myItem = myOlApp.CreateItem(0);
            var body = SysCallback(url);
            if (styleSheet != null) {
                var css = SysCallback(styleSheet);
                var i = body.indexOf('<head>');
                if (i > 0) {
                    body = body.substr(0, i + 6) + "<STYLE>" + css + "</STYLE>" + body.substr(i + 7);
                    //BR 26.627.152 - Added new param root and include it to header section
                    body = body.substr(0, i + 6) + "<base href='" + root + "' />" + body.substr(i + 6);
                }
            }

            body = SysParsePictures(body, myItem);

            if (myOlApp.Version.substring(0, 2) != "12") //for office 2007
            {
                myItem.Display();
                sOriBody = myItem.HtmlBody;
            }
            else {
                myItem.Display();
                sOriBody = myItem.HtmlBody;
            }

            var i, signature;

            if (myOlApp.Version.substring(0, 1) == "9") //for office 2000
            {
                if (sOriBody.length > 0) {
                    i = sOriBody.toLowerCase().indexOf("<body");
                    if (i > -1) i = sOriBody.indexOf(">", i);
                    if (i > -1) signature = sOriBody.substring(i, sOriBody.length);
                }
                else {
                    signature = myItem.Body;
                    if (signature.length > 0) {
                        signature.replace(/\r\n/g, "<BR>");
                    }
                }
            }
            else {
                i = sOriBody.toLowerCase().indexOf("<body");
                if (i > -1) i = sOriBody.indexOf(">", i);
                if (i > -1) signature = sOriBody.substring(i + 1, sOriBody.length);
            }

            if (signature.length > 0) {
                i = -1;
                do {
                    i = body.indexOf("</body>", i + 1);
                }
                while (body.indexOf("</body>", i + 1) > -1);

                body = body.substring(0, i - 1) + signature;
            }
            myItem.HTMLBody = body;
        }
    }
    catch (e) {
        ok = false;
    }
    if (!ok) {
        window.alert("Unable to e-mail. \r" +
		"Please ensure that the Microsoft Outlook is installed " +
		"and the option 'Initialize and script ActiveX controls not marked as safe' " +
		"is enabled in Internet Explorer Security options.");
    }
}
function SysParsePictures(body, myItem) {
    try {
        var fso = new ActiveXObject("Scripting.FileSystemObject");
        var pictures = new Array();
        var picDoc = window.createPopup();
        picDoc.document.write(body);
        picDoc.document.close();
        var doc = picDoc.document;
        var imgs = doc.images;
        for (var i = 0; i < imgs.length; i++) {
            var img = imgs[i];
            var src = img.src;
            var imgURL = img.nameProp;
            if (!SysFindPicture(pictures, src)) {
                pictures[pictures.length] = src;
                var fileName = SysAddPicture(fso, src, myItem, i);
                var rs = new RegExp(SysReplaceRegEx(src), "gim");
                var rs1 = new RegExp(SysReplaceRegEx('images/' + fileName), "gim");
                var rs2 = imgURL.replace(/&/g, "&amp;");
                body = body.replace(imgURL, fileName);
                body = body.replace(rs, fileName);
                body = body.replace(rs1, fileName);
                body = body.replace(rs2, fileName);
                body = body.replace(new RegExp(fileName, "g"), "cid:" + fileName); //BR 26.627.152
            }
        }
    }
    catch (e) {
        window.alert("Unable to add pictures. \r" +
			"Please ensure that the Microsoft Outlook is installed " +
			"and the option 'Initialize and script ActiveX controls not marked as safe' " +
			"is enabled in Internet Explorer Security options.");
    }
    return body;
}
function SysReplaceRegEx(r) {
    var rr = '';
    for (var i = 0; i < r.length; i++) {
        var c = r.charAt(i);
        switch (c) {
            case '\\':
                {
                    rr += '\\\\';
                    break;
                }
            case '.':
                {
                    rr += '\\.';
                    break;
                }
            case '$':
                {
                    rr += '\\$';
                    break;
                }
            default:
                {
                    rr += c;
                    break;
                }
        }
    }
    return rr;
}
function SysFindPicture(pictures, u) {
    for (var i = 0; i < pictures.length; i++) {
        if (u == pictures[i])
            return true;
    }
    return false;
}
function SysAddPicture(fso, pictureUrl, myItem, i) {
    var fileName;
    if (pictureUrl.indexOf('?') >= 0)
        fileName = 'picture' + i.toString();
    else {
        var p = 0;
        var l = pictureUrl.lastIndexOf('\\');
        var r = pictureUrl.lastIndexOf('/');
        if (l > p)
            p = l + 1;
        if (r > p)
            p = r + 1;
        fileName = pictureUrl.substr(p);
    }
    var sFile = fso.GetSpecialFolder(2) + "\\" + fileName;
    var picture = SysCallback(pictureUrl, null, null, true, true);
    var tf = fso.CreateTextFile(sFile, true);
    tf.Write(BinaryToString(picture));
    tf.Close();
    var colAttach = myItem.Attachments;
    colAttach.Add(sFile);
    var f = fso.GetFile(sFile);
    f.Delete();
    return fileName;
}

// Cookies
function SysSetCookie(name, value, expires, path, domain, secure) {
    var curCookie = name + "=" + escape(value) +
		((expires) ? "; expires=" + expires.toGMTString() : "") +
		((path) ? "; path=" + path : "") +
		((domain) ? "; domain=" + domain : "") +
		((secure) ? "; secure" : "");
    document.cookie = curCookie;
}
function SysGetCookie(name) {
    var dc = document.cookie;
    var prefix = name + "=";
    var begin = dc.indexOf("; " + prefix);
    if (begin == -1) {
        begin = dc.indexOf(prefix);
        if (begin != 0)
            return null;
    } else
        begin += 2;
    var end = document.cookie.indexOf(";", begin);
    if (end == -1)
        end = dc.length;
    return unescape(dc.substring(begin + prefix.length, end));
}
function SysDeleteCookie(name, path, domain) {
    if (SysGetCookie(name)) {
        document.cookie = name + "=" +
		((path) ? "; path=" + path : "") +
		((domain) ? "; domain=" + domain : "") +
		"; expires=Thu, 01-Jan-1970 00:00:01 GMT";
    }
}
function SysDiv(div) {
    var products = parent.document.getElementById('Products');
    if (products != null) {
        var d = products.contentWindow.document;
        var dd = d.getElementById('Division')
        if (dd != null && div != dd.value) {
            SysSwitchDivision(dd.value, 'Portal.aspx', true);
        }
    }
}

// ToolBox
function SysToolBoxClick(me, id, val) {
    SysSet(id, val);
    var t = me.parentElement.parentElement;
    for (i = 0; i < t.rows.length; i++) {
        //window.alert(tr.height);
        var tr = t.rows[i];
        if (tr.height == '100%') {
            tr.runtimeStyle.display = 'none';
            tr.height = '1';
        }
    }
    var n = me.nextSibling;
    n.runtimeStyle.display = 'block';
    n.height = '100%';

}
function SysToolBoxHide(id) {
    var n = SysGetElement(id);
    if (n != null)
        n.runtimeStyle.display = 'none';
}
// Animation - DO NOT REMOVE
var SysAnimationKey;
var SysAnimationTimer;
function SysAnimate(beat, valFrom, valTo, duration, callback) {
    var nDiff = Math.abs(valFrom - valTo);
    var nFDuration = duration / nDiff;
    var nStep = duration;
    var bDesc = valFrom > valTo;
    if (SysAnimationKey == null) SysAnimationKey = valFrom;
    if (bDesc) {
        SysAnimationTimer = setInterval(function() {
            if (SysAnimationKey > valTo) {
                SysAnimationKey -= nStep;
                if (SysAnimationKey < valTo) SysAnimationKey = valTo;
                beat();
            }
            else {
                clearInterval(SysAnimationTimer);
                SysAnimationKey = null;
                if (callback != null) callback();
            }
        }, 5);
    }
    else {
        SysAnimationTimer = setInterval(function() {
            if (SysAnimationKey < valTo) {
                SysAnimationKey += nStep;
                if (SysAnimationKey > valTo) SysAnimationKey = valTo;
                beat();
            }
            else {
                clearInterval(SysAnimationTimer);
                SysAnimationKey = null;
                if (callback != null) callback();
            }
        }, 5);
    }
}

function SysNumStrPaste(el) {
    event.cancelBubble = true;
    event.returnValue = false;
    var ch = window.clipboardData.getData("Text");
    var t = '';
    var s = '1234567890';

    for (var i = 0; i < ch.length; i++) {
        if (s.indexOf(ch.charAt(i)) >= 0) {
            t += ch.charAt(i);
        }
    }
    el.value = t;
}

function GetActiveXCode(filename, w, h, type, ExtraParams) {
    var clsid;
    var codebase;
    var fileparamname;
    switch (type) {
        case 0: 	//Flash
            {
                fileparamname = "movie";
                clsid = "D27CDB6E-AE6D-11cf-96B8-444553540000";
                codebase = "https://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,0,0"
                break;
            }
        case 1: 	//Media Player
            {
                fileparamname = "url";
                clsid = "6BF52A52-394A-11d3-B153-00C04F79FAA6";
                codebase = "http://activex.microsoft.com/activex/controls/mplayer/en/nsmp2inf.cab#Version=6,4,5,715"
                break;
            }
    }
    var activexcode = '';
    activexcode = '<object classid="clsid:' + clsid + '" codebase="' + codebase + '" width="' + w + '" height="' + h + '">';
    activexcode += '<param name="' + fileparamname + '" value="' + filename + '" />';
    if (ExtraParams != null) {
        for (var key in ExtraParams) {
            activexcode += '<param name="' + key + '" value="' + params[key] + '" />';
        }
    }

    activexcode += '<embed src="' + filename + '" width="' + w + '" height="' + h + '"';
    if (ExtraParams != null) {
        for (var key in ExtraParams) {
            activexcode += ' ' + key + '="' + params[key] + '"';
        }
    }
    activexcode += ">";
    activexcode += '</object>';
    document.write(activexcode);
}

// BR 26.114.861
function SysAddEvent(obj, evType, fn) {
    if (obj.attachEvent) {
        var r = obj.attachEvent("on" + evType, fn);
        return r;
    }
    else if (obj.addEventListener) {
        obj.addEventListener(evType, fn, true);
        return true;
    }
    else { return false; }
} 	
