//timeSpinner
var gStrAm = new Array("am","pm");
var gTTret;
var gTTmsec;
var gTmFmtTmp=1;
var TmItemPos = {Year:0, Month:1, Day:2, Hour:3, Minute:4, Second:5, AmPm:6, btnUp:7, btnDown:8, nFocus:9, mfCtrlName:10};
var gTmp = "";
function ddigit(n) {return (n>9)? ""+n : "0"+n;}
function TT2D(ctrlName, pos)
{
	var obj = document.getElementsByName(ctrlName);
	if(obj[pos].value == "")
	{
		obj[pos].focus();
		return;
	}
	obj[pos].value = ddigit(parseInt(obj[pos].value, 10));
}

function TTDN(ctrlName)
{
	var code = event.keyCode;
	if(code == 38 || code == 40) // up
	{
		TTChange(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 TTUP(ctrlName,pos)
{
	var obj = document.getElementsByName(ctrlName);
	var num = obj[pos].value;

	if(num == "")
	{
		gTmp = "";
		return;
	}

	if(pos == TmItemPos.Hour)
	{
		if(gTmFmtTmp == 1) //12hr
		{
			if(num < 1 || num > 12)
			{
				obj[pos].value = gTmp;
				return;
			}
		}
		else
		{
			if(num < 0 || num > 23)
			{
				obj[pos].value = gTmp;
				return;
			}
		}
	}
	else //if(pos==1 || pos==2)
	{	
		if(num < 0 || num > 59)
		{
			obj[pos].value = gTmp;
			return;
		}
	}
	gTmp = num;
	if(obj[TmItemPos.mfCtrlName].value != "")
		document.getElementById(obj[TmItemPos.mfCtrlName].value).value = 1;
}

function TTDNam(ctrlName)
{
	var str;
	var obj;

	if(event.keyCode == 38 || event.keyCode == 40) // up
	{
		TTChange(ctrlName, (event.keyCode == 40) ? 1 : 0);
		event.returnValue = false;
		return;
	}
	if(event.keyCode == 9)
	  return; //tab

	if(gTmFmtTmp == 1)
	{
		if(event.keyCode == 65)//'a'
			str = gStrAm[0];
		else if(event.keyCode == 80)//'p'
			str = gStrAm[1];
		else
		{
			event.returnValue = false;
			return;
		}
		obj = document.getElementsByName(ctrlName);
		if(obj[TmItemPos.AmPm].value != str)
		{
			obj[TmItemPos.AmPm].value = str;
		  gNew = 1;
		}
		obj[TmItemPos.AmPm].select();
		event.returnValue = false;
		return;
	}
	else
		event.returnValue = false;
}

function TTChange(ctrlName, isDown)
{
	var obj = document.getElementsByName(ctrlName);
	var pos = obj[TmItemPos.nFocus].value;

	if(pos == -1)
	{
		obj[TmItemPos.nFocus].value = TmItemPos.Hour;
		obj[TmItemPos.Hour].select();
		return;
	}

	var tmp = obj[pos].value;
	if(pos == TmItemPos.AmPm)
	{
		if(gTmFmtTmp == 0)
			return;

		if(tmp == gStrAm[0])
		  tmp = 1;
		else
			tmp = 0;

		obj[pos].value = gStrAm[tmp];
	}
	else
	{
		if(pos == TmItemPos.Hour)
		{
			if(isDown == 0)
			{
				tmp++;
				if(gTmFmtTmp == 1 && tmp > 12)
				  tmp = 1;
				else if(gTmFmtTmp == 0 && tmp > 23)
					tmp = 0;
			}
			else
			{
				tmp--;
				if(gTmFmtTmp == 1 && tmp < 1)
				  tmp = 12;
				else if(gTmFmtTmp == 0 && tmp < 0)
					tmp = 23;
			}
		}
		else //if(pos== TmItemPos.Minute || pos==TmItemPos.Second)
		{
			if(isDown == 0)
			{
				tmp++;
				if(tmp > 59)
				  tmp=0;
			}
			else
			{
				tmp--;
				if(tmp < 0)
				  tmp = 59;
			}
		}
		obj[pos].value = ddigit(tmp);
	}
	obj[pos].select();
	if(obj[TmItemPos.mfCtrlName].value != "")
		document.getElementById(obj[TmItemPos.mfCtrlName].value).value = 1;
}

function SetTTpos(ctrlName, pos)
{
	var obj = document.getElementsByName(ctrlName);
	obj[TmItemPos.nFocus].value = pos;
	gTmp = obj[pos].value;
	obj[pos].select();
}

function TTLoop(ctrlName, isDown)
{
	TTChange(ctrlName, isDown);
	gTTret = setTimeout('TTLoop("'+ctrlName+'",'+isDown+')', gTTmsec);
	gTTmsec = 100;
}

function SetHourOnTimeFmt12(obj, nHour)
{
	obj[TmItemPos.AmPm].value = gStrAm[0];
	if(nHour == 0)
	  nHour = 12;
	else if(nHour >= 12)
	{
		if(nHour != 12)
		  nHour -= 12;
		obj[TmItemPos.AmPm].value = gStrAm[1];
	}
	return nHour;
}
function TmGetHour(obj, nHour)
{
	if(obj[TmItemPos.AmPm].value == gStrAm[0] && nHour == 12)
	  nHour = 0;
	else if(obj[TmItemPos.AmPm].value == gStrAm[1])
	{
		if(nHour != 12)
			nHour += 12;
	}
	return nHour;
}
function SetTmDT(ctrlName, dt)
{
	var obj=document.getElementsByName(ctrlName);
	obj[TmItemPos.Minute].value = ddigit(dt.getUTCMinutes());
	obj[TmItemPos.Second].value = ddigit(dt.getUTCSeconds());
	var hr = dt.getUTCHours();
	obj[TmItemPos.AmPm].value = " ";
	if(gTmFmtTmp == 1)//12hr
		hr = SetHourOnTimeFmt12(obj, hr);

	obj[TmItemPos.Hour].value = ddigit(hr);
	obj[TmItemPos.Year].value =  ddigit(dt.getUTCFullYear());
	obj[TmItemPos.Month].value =  ddigit(dt.getUTCMonth()+1);
	obj[TmItemPos.Day].value =  ddigit(dt.getUTCDate());
}

function SetTmTText(ctrlName, nHour, nMin, nSec)
{
	var obj = document.getElementsByName(ctrlName)
		
	obj[TmItemPos.Minute].value = ddigit(nMin);
	obj[TmItemPos.Second].value = ddigit(nSec);
	
	var hr = nHour;
	obj[TmItemPos.AmPm].value = " ";
	if(gTmFmtTmp == 1)//12hr
		hr = SetHourOnTimeFmt12(obj, hr);

	obj[TmItemPos.Hour].value = ddigit(hr);
	var dt = new Date();
	dt.getTime();
	obj[TmItemPos.Year].value =  ddigit(dt.getUTCFullYear());
	obj[TmItemPos.Month].value =  ddigit(dt.getUTCMonth()+1);
	obj[TmItemPos.Day].value =  ddigit(dt.getUTCDate());
}
function UpdateTmText(ctrlName)
{
	var obj = document.getElementsByName(ctrlName)
	var nHour = parseInt(obj[TmItemPos.Hour].value, 10);
	if(gTmFmtTmp == 1)//12hr
	{
		if(obj[TmItemPos.AmPm].value != " ") // preview time format is not 24
			return;
		nHour =	SetHourOnTimeFmt12(obj, nHour)
	}
	else // 24Hr
	{
		if(obj[TmItemPos.AmPm].value == " ") // preview time format is not 12
		  return;
		nHour = TmGetHour(obj, parseInt(nHour, 10));
		obj[TmItemPos.AmPm].value = " "
	}
	obj[TmItemPos.Hour].value = ddigit(parseInt(nHour, 10));
	obj[TmItemPos.AmPm].disabled = (gTmFmtTmp == 0) ? true : false;
}

function SetTmDTText(ctrlName, nYear, nMonth, nDay, nHour, nMin, nSec)
{
	var obj = document.getElementsByName(ctrlName)

	obj[TmItemPos.Minute].value = ddigit(nMin);
	obj[TmItemPos.Second].value = ddigit(nSec);
	
	var hr = nHour;
	obj[TmItemPos.AmPm].value = " ";
	if(gTmFmtTmp == 1)//12hr
		hr = SetHourOnTimeFmt12(obj, hr);

	obj[TmItemPos.Hour].value = ddigit(hr);
	obj[TmItemPos.Year].value  = ddigit(nYear);
	obj[TmItemPos.Month].value = ddigit(nMonth);
	obj[TmItemPos.Day].value   = ddigit(nDay);
}

document.onmouseup=function()
{
	ClearTmTimer();
}

function ClearTmTimer()
{
	clearTimeout(gTTret);
}

function GetTmYear(ctrlName)
{
	var obj=document.getElementsByName(ctrlName);
	return obj[TmItemPos.Year].value;
}

function GetTmMonth(ctrlName)
{
	var obj=document.getElementsByName(ctrlName);
	return parseInt(obj[TmItemPos.Month].value, 10);
}

function GetTmDay(ctrlName)
{
	var obj=document.getElementsByName(ctrlName);
	return parseInt(obj[TmItemPos.Day].value, 10);
}

function GetTmHour(ctrlName)
{
	var obj=document.getElementsByName(ctrlName);
	var nHours = obj[TmItemPos.Hour].value;
	nHours = TmGetHour(obj, parseInt(nHours, 10));
	return parseInt(nHours, 10);
}

function GetTmMinute(ctrlName)
{
	var obj=document.getElementsByName(ctrlName);
	return parseInt(obj[TmItemPos.Minute].value, 10);
}

function GetTmSecond(ctrlName)
{
	var obj=document.getElementsByName(ctrlName); 
	return parseInt(obj[TmItemPos.Second].value, 10);
}

function SetTimeFormat(nTmFmt)
{
	gTmFmtTmp = nTmFmt;
}

function GetTmDT(ctrlName)
{
	var obj = document.getElementsByName(ctrlName);
	var dt = new Date();
	var nHours = obj[TmItemPos.Hour].value;
	nHours = TmGetHour(obj, parseInt(nHours, 10));
	dt.setTime(Date.UTC(obj[TmItemPos.Year].value, obj[TmItemPos.Month].value-1, obj[TmItemPos.Day].value, nHours, obj[TmItemPos.Minute].value, obj[TmItemPos.Second].value));
	return dt;
}
function HideTmCtrl(ctrlName, bHide)
{
	var obj = document.getElementById("tbl"+ctrlName);
	obj.style.visibility = bHide ? "hidden" : "visible";
}

function disableTmCtrl(ctrlName, bDisable)
{
	var obj = document.getElementsByName(ctrlName);
	for(i=0;i<=TmItemPos.nFocus;i++)
	{
		obj[i].disabled = bDisable;
	}
}

function AddTmCtrl(ctrlName, bHasSec, mfCtrl)
{
	var tblName = "tbl"+ctrlName;
  var tmHtml = '<table cellspacing="0" id='+tblName+' cellpadding="0" style="border:1px ridge"><tr><td>';
  tmHtml += '<table border="0" cellspacing="0" cellpadding="0" style="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><tr>';
  tmHtml += '<td rowspan=2><input name='+ctrlName+' type=text style="font-size: 12px; font-family: Arial; width: 18px; border-width:0px;" onblur="TT2D(\''+ctrlName+'\',3)" onfocus="SetTTpos(\''+ctrlName+'\',3)" onkeydown="gNewSysTime=0;gNew=1;TTDN(\''+ctrlName+'\')" onkeyup="TTUP(\''+ctrlName+'\',3)"></td>';
  tmHtml += '<td rowspan="2">:</td>';
  tmHtml += '<td rowspan=2><input name='+ctrlName+' type=text style="font-size: 12px; font-family: Arial; width: 18px; border-width:0px;" onblur="TT2D(\''+ctrlName+'\',4)" onfocus="SetTTpos(\''+ctrlName+'\',4)" onkeydown="gNewSysTime=0;gNew=1;TTDN(\''+ctrlName+'\')" onkeyup="TTUP(\''+ctrlName+'\',4)"></td>';
	if(bHasSec == 1)
	{
    tmHtml += '<td rowspan="2">:</td>';
    tmHtml += '<td rowspan=2><input name='+ctrlName+' type=text style="font-size: 12px; font-family: Arial; width: 18px; border-width:0px;" onblur="TT2D(\''+ctrlName+'\',5)" onfocus="SetTTpos(\''+ctrlName+'\',5)" onkeydown="gNewSysTime=0;gNew=1;TTDN(\''+ctrlName+'\')" onkeyup="TTUP(\''+ctrlName+'\',5)"></td>';
  }
  else
  {
  	tmHtml += '<input id='+ctrlName+' type=hidden value="0"></td>';
  }
  tmHtml += '<td rowspan="2"><input name='+ctrlName+' type=text style="font-size: 12px; font-family: Arial; width: 22px; border-width:0px" onfocus="SetTTpos(\''+ctrlName+'\', 6)" onkeydown="gNewSysTime=0; TTDNam(\''+ctrlName+'\');"></td>';
  tmHtml += '<td height="50%"><input name='+ctrlName+' type=image src=up.gif onmousedown="gTTmsec=500;TTLoop(\''+ctrlName+'\', 0);"></td>';
  tmHtml += '<tr><td height="50%"><input name='+ctrlName+' type=image src=down.gif onmousedown="gTTmsec=500;TTLoop(\''+ctrlName+'\', 1);"></td></tr>';
  tmHtml += '<td><input name='+ctrlName+' type=hidden value="3"></td>';
  tmHtml += '<td><input name='+ctrlName+' type=hidden value="' + mfCtrl + '"></td>';
  tmHtml += '</tr></table>';
  tmHtml += '</td></tr></table>';
  document.write(tmHtml);
}
