﻿// JScript File

var field_length=0;
var numericCheck = "0123456789";
var	dotPos;
var	PrevValue;

function TabNext (obj, evt, len, next_field)
{
	if (evt.keyCode == 9 || evt.keyCode == 13)
		return;
		
	var vallen = obj.value;
	var retval = 0;
	for (var i = 0; i < vallen.length; i++) {
		var fval = obj.value.substr (i,1);	
		if (! (numericCheck.indexOf(fval) >= 0)) {
			if (i == 0) {
				obj.value = "";
				obj.focus ();
				obj.select ();
			}
			else {
				obj.value = retval;
				obj.focus ();
			}
			return;	
		} else { 
		    if (i == 0)
				retval = fval;
			else
				retval += fval;
		}
	}

	if (evt.type == "keydown") {
		field_length=obj.value.length;
	}
	else if (evt.type == "keyup") {
		if (obj.value.length != field_length) {
			field_length=obj.value.length;
			if (field_length == len) {
				if (next_field.value.length == next_field.getAttribute ("MaxLength"))
					next_field.select ();
				else
					next_field.focus();
			}
		}
	}
}

function setFocus ()
{
	var indx;
	var grid_elem = document.getElementById ("Grid1");
	if (grid_elem) 
		indx = grid_elem.attributes ["curCk"].value
	var item = Number (indx) + Number ("3");
	var ctrl;
	if (Number (item) > 9)
	    ctrl = "Grid1_ctl" + item + "_RateGrid_ctl02_RegularHours";
	else
		ctrl = "Grid1_ctl0" + item + "_RateGrid_ctl02_RegularHours";
	var elem = document.getElementById (String (ctrl));
	if (elem) {
	    elem.select ();
	    elem.focus ();
	}
}
function KeyDownHandler (obj, e, CheckType)
{
	if (e.keyCode == 13 || e.keyCode == 9) {
		if (obj.NextField != null) {
			var NextBox = FindNextField (obj);
			if (NextBox == null)
				return;
			if (NextBox.type == "text")
				NextBox.select ();
			else
				NextBox.focus ();
			event.returnValue = 0;
		}
		return;
	}
	if (obj.type != "text")
		return;

	dotPos = -1;		// no dot
	var pVal = obj.value;
	for (var i = 0; i < obj.value.length; i++) {
		var ch = obj.value.substr (i,1);
		if (! KeyValidCheck (ch, CheckType, i)) {
			obj.value = 0;
			obj.focus ();
			return;
		}
		if (ch == '.')
			dotPos = i;
	}

	field_length = obj.value.length;
	PrevValue = pVal;
}

function KeyUpHandler (obj, e, CheckType)
{
	if (e.keyCode == 13 || e.keyCode == 9)
		return;

	var	val  = obj.value;
	var len1 = PrevValue.length;
	var len2 = val.length;
	
	for (i=0; i < len1 && i < len2; ++i) {
		if (val.substr (i,1) != PrevValue.substr (i,1))
			break;
	}
	
	if (len1 == len2 && i > len1)
		return;

	if (! KeyValidCheck (val, CheckType, i)) {
		obj.value = PrevValue;
		if (obj.createTextRange ()) {
			var FieldRange = obj.createTextRange ();
			FieldRange.moveStart ('character', i);
			FieldRange.collapse ();
			FieldRange.select ();
		}
		return;
	}

	var	NextBox = FindNextField (obj);

	if (NextBox != null) {
		if (obj.value.length != field_length) {
			field_length = obj.value.length;
			if (field_length == obj.maxLength) {
				if (NextBox.value.length == NextBox.maxLength)
					NextBox.select ();
				else
					NextBox.focus ();
			}
		}
	}
}

function FindNextField (obj)
{
	return document.getElementById (obj.NextField);
}

function KeyValidCheck (val, CheckType, i)
{
	var ch = val.substr (i,1);

	switch (CheckType) {
	  case 4:				// allow all
	    return true;
	  case 3:
	  if (ch == '-' && i == 0)
		return true;
	  if (ch == '.')
		return dotTest (val, i);
	  break;
	  
	  case 2:
	  if (ch == '-' && i == 0)
		return true;
	  break;
	  
	  case 1:
	  if (ch == '.')
		return dotTest (val, i);
	}
	    
	return numericCheck.indexOf (ch) >= 0;
}

function dotTest (val, i)
{
	if (dotPos == -1)
		return true;				// this is only dot, OK
	// ok, there are two dots, find pos of each and adjust dotPos in case it's position has changed
	i1 = val.indexOf (".");
	i2 = val.indexOf (".", i1 + 1);
	if (i2 == -1)
		return true;				// user deleted the dot, so ok to add a new one
	dotPos = (i1 == i) ? i2 : i1;
	
	return i == dotPos;
}


function FixContents (obj)
{
	if (obj.value == 0)
		obj.value = 0;			// believe it or not, this works!
	var num = parseFloat (obj.value);
	obj.value = num.toFixed (2);
}

function RequiredFieldLength (obj, inst, len, FName)
{
	if (obj.value.length < len) {
		if (document.activeElement.id == "CancelButton" || document.activeElement.id == "TabCtrl1_TS")
			return;
			
		alert (FName + " must be at least " + len + " characters");
		obj.focus ();
	}
}

// This function is used for the Employee Deductions page, but could be used
// by any page that needs to enable/disble a TextBox based on changes to a CheckBox.
function EnableField (obj, inst, FName)
{
	field = document.getElementById (FName + inst);
	checked = obj.document.activeElement.checked;
	
	if (field != null) {
		field.readOnly = ! checked;
		field.style.backgroundColor = checked ? "white" : "lightgrey";
	}
}

function FixCheckBox (BoxFName, CkBoxFName)
{
	var box = document.getElementById (BoxFName);
	var cb = document.getElementById (CkBoxFName);
	if (box.value != box.defaultValue) {
		cb.checked = true;
		cb.parentNode.disabled = false;
		cb.disabled = false;
		box.readOnly = true;
		box.style.backgroundColor = "lightgrey";
	}
}

function HandleUnlock (BoxFName, CkBoxFName)
{
	var box = document.getElementById (BoxFName);
	var cb = document.getElementById (CkBoxFName);

	cb.parentNode.disabled = true;
	cb.disabled = true;
	if (box.value != box.defaultValue) {
		box.readOnly = false;
		box.style.backgroundColor = "white";
		box.value = box.defaultValue;
	}
	alert ("Warning: The amount associated with this check box was locked.\n" +
			"By unlocking it the amount will be recalculated when you update the check.");
}


// This function is used by the EnterChecks page.
function FixContext ()
{
	var ParentElement = event.srcElement.parentElement.parentElement;

	if (! ParentElement || ParentElement.tagName != "TR")
		return;
		
	var tip = "This is an empty check that you may enter data for";
	var color = "#000000";
	var hcolor = "#000000";

	if (ParentElement.loaded == "true") {
		hcolor = "#8B008B";
		tip = "This Check has been calculated and saved";
	}
	for (i=1; i < 9; ++i) {
		var SrcElement = ParentElement.children [i].children [0];

		if (SrcElement && SrcElement.value != SrcElement.OrigText) {
			color = "#FF0000";
			hcolor = "#FF0000";
			if (ParentElement.loaded == "true")
				tip = "This Check has been modified and is not yet saved";
			else
				tip = "This Check has been entered and is not yet saved";
			break;
		}
	}
	for (i=1; i < 9; ++i) {
		var SrcElement = ParentElement.children [i].all [0];
		if (SrcElement)
			SrcElement.style.color = color;
	}

	ParentElement.style.color = hcolor;
	ParentElement.children [0].title = tip;
}
