// 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);
	}
}
var sysButtonClose=null;
function SysBackUrl(url)
{
	
	if (SysGetKey(event) == 27 && event!=null && !(event.altKey || event.altLeft))
	{
		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 (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;
		if ((maxlength > 0) && (dec > 0)) {
			if ((num.length + 1) > el.maxLength) return; 
		}

		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);
}

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;
	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);
	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)
{
	SysSendPage(SysAddUrl(sysPageUrl, 'SysDoPrinting=1&SysExporting=2'), ss)
}

// 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 SysTrim(val)
{
	if (val == null)
		return '';
	var t = '';
	var b = false;
	var i;
	for (i=0; i<val.length; i++)
	{
		var c = val.charAt(i);
		b = b || (c != ' ');
		if (b)
			t += c;
	}
	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;
}

// 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
function SysAlert(captionid, caption, width, height, explanation)
{
	return SysConfirm(5, captionid, caption, width, height, explanation)
}
// SysConfirm
function SysConfirm(mode, captionid, caption, width, height, explanation)
{
	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) + "&";
	}
	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)
{
	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;	
		
	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 = ''; }
			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) {
					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";
	}
}

// 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.855.980 (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.855.980 (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.855.980 (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;
}

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)
{
	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);
			}
			
			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);
			}
		}
	}
	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);
}

