function SwapEndian(x)
{
	x =
		(x << 24 & 0xFF000000) |
		(x << 8 & 0x00FF0000) |
		(x >> 8 & 0x0000FF00) |
		(x >> 24 & 0x000000FF);
	if (x < 0) x = (x & 0x7FFFFFFF) + 0x80000000;
	return x;
}

function GetValue(what,base,limit,swapendian)
{
	what = document.getElementById(what);
	var s = what.value;
	var x = parseInt(s, base);
	if (isNaN(x) || (x < 0) || (x > limit)) { what.className = "field_error"; return NaN; }
	if (swapendian) x = SwapEndian(x);
	if (isNaN(x) || (x < 0) || (x > limit)) { what.className = "field_error"; return NaN; }
	what.className = "field";
	return x;
}

function GetIntValue(cur)
{
	var val, val2 = NaN;
	val = GetValue('DLong', 10, 0xFFFFFFFF, false); if (cur == 'DLong') val2 = val;
	val = GetValue('DLong_BE', 10, 0xFFFFFFFF, true); if (cur == 'DLong_BE') val2 = val;
	val = GetValue('HLong', 16, 0xFFFFFFFF, false); if (cur == 'HLong') val2 = val;
	val = GetValue('HLong_BE', 16, 0xFFFFFFFF, true); if (cur == 'HLong_BE') val2 = val;
	val = 0; for (var i=0; i<4; i++) val += GetValue('DByte'+i, 10, 0xFF, false) << (8*i); if (cur == 'DByte') val2 = val;
	val = 0; for (var i=0; i<4; i++) val += GetValue('HByte'+i, 16, 0xFF, false) << (8*i); if (cur == 'HByte') val2 = val;
	if (val2 < 0) val2 = (val2 & 0x7FFFFFFF) + 0x80000000;
	return val2;
}

function OnIntChanged(event,cur)
{
	var val = GetIntValue(cur);
	if (val == NaN) return;
	var hex = "0123456789ABCDEF";
	if (cur != 'DLong') document.getElementById('DLong').value = val;
	if (cur != 'DLong_BE') document.getElementById('DLong_BE').value = SwapEndian(val);
	if (cur != 'HLong') { var s = ""; for (var i=7; i>=0; i--) s += hex[val >> (4*i) & 0xF]; document.getElementById('HLong').value = s; }
	if (cur != 'HLong_BE') { var s = ""; for (var i=0; i<8; i++) s += hex[val >> (4*(i^1)) & 0xF]; document.getElementById('HLong_BE').value = s; }
	if (cur != 'DByte') for (var i=0; i<4; i++) document.getElementById('DByte'+i).value = val >> (8*i) & 0xFF;
	if (cur != 'HByte') for (var i=0; i<4; i++) document.getElementById('HByte'+i).value = hex[val >> (8*i+4) & 0xF] + hex[val >> (8*i) & 0xF];
	GetIntValue();
}

function OnIntKeyDown(event,cur,num)
{
	if (event.keyCode == 190)	//'.'.charCodeAt(0))
	{
		if (++num == 4) num = 0;
		var elem = document.getElementById(cur+num);
		elem.focus();
		elem.select();
		return false;
	}
	return true;
}

function InitIntegerUI()
{
}
