var gIntTimer=0;
var IntItemPos = {MinNum:0, MaxNum:1, PreValue:2, mfCtrlName:3, CurValue:4, btnUp:5, btnDown:6};
function IntKeyDN(ctrlName)
{
	var code = event.keyCode;
	if(code == 38 || code == 40) // up
	{
		IntChange(ctrlName, (code == 40) ? 1 : 0);
		event.returnValue = false;
		return;
	}

	if(code == 8 || //back
		code == 9 ||  //tab
		code == 46 || //delete
		code == 37 || //left
		code == 39 //right
		)
		return;
	if(!((code >= 48 && code <= 57) || (code >= 96 && code <= 105)))
	{
		event.returnValue = false;
		return;
	}
}

function IntKeyUP(ctrlName)
{
	var obj  = document.getElementsByName(ctrlName);
	var num  = parseInt(obj[IntItemPos.CurValue].value);
	var nMax = parseInt(obj[IntItemPos.MaxNum].value);
	if(num == "")
		return;

	if(num > nMax)
	{
	  obj[IntItemPos.CurValue].value = nMax;
	  obj[IntItemPos.PreValue].value = nMax;
	}
	else
	  obj[IntItemPos.PreValue].value = num;
	if(obj[IntItemPos.mfCtrlName].value != "")
		document.getElementById(obj[IntItemPos.mfCtrlName].value).value = 1;
}

function Int2D(ctrlName)
{
	var obj = document.getElementsByName(ctrlName);
	var nValue = parseInt(obj[IntItemPos.CurValue].value);
	var nMin   = parseInt(obj[IntItemPos.MinNum].value);
	var nMax   = parseInt(obj[IntItemPos.MaxNum].value);
	if(obj[IntItemPos.CurValue].value == "" || nValue > nMax || nValue < nMin)
	{
		if(nValue > nMax)
		  obj[IntItemPos.CurValue].value = nMax;
		else if(nValue < nMin || obj[IntItemPos.CurValue].value == "")
		  obj[IntItemPos.CurValue].value = nMin;
		obj[IntItemPos.CurValue].focus();
		obj[IntItemPos.CurValue].select();
		return;
	}
	obj[IntItemPos.CurValue].value = parseInt(obj[IntItemPos.CurValue].value);
}

function IntChange(ctrlName, isDown)
{
	var obj = document.getElementsByName(ctrlName);
	var tmp = parseInt(obj[IntItemPos.CurValue].value);
	if(isDown == 0)
	{
		if(tmp < obj[IntItemPos.MaxNum].value)
			tmp++;
		else
			tmp = parseInt(obj[IntItemPos.MaxNum].value);
	}
	else
	{
		if(tmp > obj[IntItemPos.MinNum].value)
		  tmp--;
		else
			tmp = parseInt(obj[IntItemPos.MinNum].value);
	}
	obj[IntItemPos.CurValue].value = tmp;
	obj[IntItemPos.PreValue].value = tmp;
	obj[IntItemPos.CurValue].select();
	if(obj[IntItemPos.mfCtrlName].value != "")
		document.getElementById(obj[IntItemPos.mfCtrlName].value).value = 1;
}

function IntLoop(ctrlName, isDown)
{
	IntChange(ctrlName, isDown);
	gTTret = setTimeout('IntLoop("'+ctrlName+'",'+isDown+')', gIntTimer);
	gIntTimer = 100;
}

function SetIntValue(ctrlName, nValue)
{
	var obj = document.getElementsByName(ctrlName);
	var nMin   = parseInt(obj[IntItemPos.MinNum].value);
	var nMax   = parseInt(obj[IntItemPos.MaxNum].value);
	nValue = (nValue < nMin) ? nMin : ((nValue > nMax) ? nMax : nValue);
	obj[IntItemPos.CurValue].value = nValue;
	obj[IntItemPos.PreValue].value = nValue;	
}

function GetIntValue(ctrlName)
{
	var obj = document.getElementsByName(ctrlName);
	return parseInt(obj[IntItemPos.CurValue].value);
}

function SetMinValue(ctrlName, nMin)
{
	var obj = document.getElementsByName(ctrlName);
	obj[IntItemPos.MinNum].value = parseInt(nMin);
}

function SetMaxValue(ctrlName, nMax)
{
	var obj = document.getElementsByName(ctrlName);
	obj[IntItemPos.MaxNum].value = parseInt(nMax);
}

document.onmouseup=function()
{
	ClearIntTimer();
}

function ClearIntTimer()
{
	clearTimeout(gIntTimer);
}

function disableIntCtrl(ctrlName, bDisable)
{
	var obj = document.getElementsByName(ctrlName);
	for(i=0;i<obj.length;i++)
		obj[i].disabled = bDisable;
}

function HideIntCtrl(ctrlName, bHide)
{
	var obj = document.getElementById("tbl"+ctrlName);
	obj.style.visibility = bHide ? "hidden" : "visible";
}

function AddIntCtrl(ctrlName, nMin, nMax, nSize, bHasBtn, strMsg, mfCtrl) // ctrlName, Min Value, Max Value, Edit width with nSize digit
{
	var tblName = "tbl"+ctrlName;
  var tmHtml = '<table cellspacing="0" id='+tblName+' cellpadding="0" style="border:0px ridge"><tr><td>';
  tmHtml += '<table cellspacing="0" cellpadding="0" bordercolor=#B5CBD0 style="border:1px ridge; font-weight: bold; font-size: 12px; font-family: Arial; height: 18px">';
  tmHtml += '<td><input name='+ctrlName+' type=hidden value="0"></td>';
  tmHtml += '<td><input name='+ctrlName+' type=hidden value="0"></td>';
  tmHtml += '<td><input name='+ctrlName+' type=hidden value="0"></td>';
  tmHtml += '<td><input name='+ctrlName+' type=hidden value="' + mfCtrl + '"></td><tr>';
  tmHtml += '<td rowspan=2><input name='+ctrlName+' type=text value="0" style="font-size: 12px; font-family: Arial; width:'+nSize*8+'px; border-width:0px;" onblur="Int2D(\''+ctrlName+'\')" onkeydown="IntKeyDN(\''+ctrlName+'\')" onkeyup="IntKeyUP(\''+ctrlName+'\')"></td>';
  if(bHasBtn == 1)
  {
	  tmHtml += '<td height="50%"><input name='+ctrlName+' type=image src=up.gif onmousedown="gIntTimer=500;IntLoop(\''+ctrlName+'\', 0);"></td>';
	  tmHtml += '<tr><td height="50%"><input name='+ctrlName+' type=image src=down.gif onmousedown="gIntTimer=500;IntLoop(\''+ctrlName+'\', 1);"></td></tr>';
	}
  tmHtml += '</tr></table>';
  tmHtml += '</td><td>'+strMsg+'</td></tr></table>';
  document.write(tmHtml);
	var obj = document.getElementsByName(ctrlName);
	obj[IntItemPos.MinNum].value = nMin;
	obj[IntItemPos.MaxNum].value = nMax;
	obj[IntItemPos.CurValue].maxLength = obj[IntItemPos.MaxNum].value.length;
	obj[IntItemPos.CurValue].value = nMin;
	obj[IntItemPos.PreValue].value = nMin;
}
