function getObj(name)
{
	if (document.getElementById)
	{
		this.obj = document.getElementById(name);
		this.style = document.getElementById(name).style;
	}
	else if (document.all)
	{
		this.obj = document.all[name];
		this.style = document.all[name].style;
	}
		else if (document.layers)
	{
		this.obj = document.layers[name];
		this.style = document.layers[name];
	}
}

function openCalendar(sDate,sCallback,sCallbackForm,sCallbackField,nTop,nLeft)
{
	var oWindow;
	oWindow = window.open("GUI/calendar.asp?date=" + sDate + "&callback=" + sCallback + "" + "&callbackform=" + sCallbackForm + "" + "&callbackfield=" + sCallbackField + "","calendar","top=" + nTop + ",left=" + nLeft + ",height=180,width=160,status=no,resizable=no,toolbar=no,menubar=no,scrollbars=no,location=no");
	oWindow.focus();
	return true;
}

function Date_Change(sNewValue,sForm,sField)
{
	eval('document.' + sForm + '.' + sField + '.value = sNewValue;');
}

function incDate( obj ) 
{
	// Construct a date object to utilize Date methods.
	var dat = new Date( obj.value );
	
	// If shift is down, modify by a week, else only 1 day.
	if (isNaN( dat ))
	{
		dat = new Date();
	}
	else
	{
		event.shiftKey ? dat.setDate( dat.getDate() + 7) : dat.setDate( dat.getDate() + 1);
	}
		
	obj.value = formatDate( dat, "MM/dd/yyyy" );
}

function decDate( obj ) 
{
	// Construct a date object to utilize Date methods.
	var dat = new Date( obj.value );
	
	// If shift is down, modify by a week, else only 1 day.
	if (isNaN( dat ))
	{
		dat = new Date();
	}
	else
	{
		event.shiftKey ? dat.setDate( dat.getDate() - 7) : dat.setDate( dat.getDate() - 1);
	}
		
	obj.value = formatDate( dat, "MM/dd/yyyy" );
}

function decTime( obj ) {
	var fltParsed = parseFloat( obj.value );
	var Shift;
	
	if (arguments[1]) Shift = true;
	else Shift = event.shiftKey;
	
	if (isNaN(fltParsed)) {
		obj.value = 0;
	} else {
		if (fltParsed < .25) {
			// Do nothing!
		} else {
			obj.value = Shift ? fltParsed - 1 : fltParsed - .25;
		}
	}
}

function incTime( obj ) {
	var fltParsed = parseFloat( obj.value );
	var Shift;
	
	if (arguments[1]) Shift = true;
	else Shift = event.shiftKey;
	
	if (event.button == 2) event.cancelBubble = true;
	if (isNaN(fltParsed)) {
		obj.value = 0;
	} else {
		if (fltParsed > 50) {
			// Do nothing!
		} else {
			obj.value = Shift ? fltParsed + 1 : fltParsed + .25;
		}
	}
}
function decNum( obj ) {
	var fltParsed = parseFloat( obj.value );
	
	if (isNaN(fltParsed)) {
		obj.value = 0;
	} else {
		obj.value =  fltParsed - 1;
	}
}

function incNum( obj ) {
	var fltParsed = parseFloat( obj.value );
	
	if (event.button == 2) event.cancelBubble = true;
	if (isNaN(fltParsed)) {
		obj.value = 0;
	} else {
		obj.value = fltParsed + 1;
	}
}

function keyCheck( intType ) 
{
	// TAB = 9					up=38
	// + = 187			lft=37		rght=39
	// - = 189					dn=40
	// Shift = 17  
	// CRLF = 13
	// BKSPC = 8
	switch (intType) 
	{
		case 0: // Floating point field
			if (event.keyCode == 38) {
				incTime( event.srcElement );
			} else if (event.keyCode == 40) {
				decTime( event.srcElement );
			} else if (event.keyCode == 32) {
				incTime( event.srcElement );
			} else if (event.keyCode == 39) {
				incTime( event.srcElement, true );
			} else if (event.keyCode == 37) {
				decTime( event.srcElement, true );
			} else if (event.keyCode == 8) {
				event.srcElement.value = "";
			} else if (event.keyCode == 9 || event.keyCode == 13) {
				return;
			}
			break;
		case 1:
			if (event.keyCode == 38) {
				incDate( event.srcElement );
			} else if (event.keyCode == 40) {
				decDate( event.srcElement );
			} else if (event.keyCode == 32) {
				incDate( event.srcElement );
			} else if (event.keyCode == 39) {
				incDate( event.srcElement, true );
			} else if (event.keyCode == 37) {
				decDate( event.srcElement, true );
			} else if (event.keyCode == 8) {
				event.srcElement.value = "";
			} else if (event.keyCode == 9 || event.keyCode == 13) {
				return;
			}
			break;
		case 2: // Integer
			if (event.keyCode == 38) {
				incNum( event.srcElement );
			} else if (event.keyCode == 40) {
				decNum( event.srcElement );
			} else if (event.keyCode == 32) {
				incNum( event.srcElement );
			} else if (event.keyCode == 39) {
				incNum( event.srcElement, true );
			} else if (event.keyCode == 37) {
				decNum( event.srcElement, true );
			} else if (event.keyCode == 8) {
				event.srcElement.value = "";
			} else if (event.keyCode == 9 || event.keyCode == 13) {
				return;
			}
			break;
	}
	event.returnValue = false;
}

function doNothing(){}

// Below was taken and slightly reformatted from mattkruse.com
// ------------------------------------------------------------------
// formatDate (date_object, format)
// Returns a date in the output format specified.
// The format string uses the same abbreviations as in getDateFromFormat()
// ------------------------------------------------------------------
var MONTH_NAMES=new Array('January','February','March','April','May','June','July','August','September','October','November','December','Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec');
function LZ(x) {return(x<0||x>9?"":"0")+x}
function formatDate(date,format) 
{
	format=format+"";
	var result="";
	var i_format=0;
	var c="";
	var token="";
	var y=date.getYear()+"";
	var M=date.getMonth()+1;
	var d=date.getDate();
	var H=date.getHours();
	var m=date.getMinutes();
	var s=date.getSeconds();
	var yyyy,yy,MMM,MM,dd,hh,h,mm,ss,ampm,HH,H,KK,K,kk,k;
	// Convert real date parts into formatted versions
	var value=new Object();
	if (y.length < 4) {y=""+(y-0+1900);}
	value["y"]=""+y;
	value["yyyy"]=y;
	value["yy"]=y.substring(2,4);
	value["M"]=M;
	value["MM"]=LZ(M);
	value["MMM"]=MONTH_NAMES[M-1];
	value["d"]=d;
	value["dd"]=LZ(d);
	value["H"]=H;
	value["HH"]=LZ(H);
	if (H==0){value["h"]=12;}
	else if (H>12){value["h"]=H-12;}
	else {value["h"]=H;}
	value["hh"]=LZ(value["h"]);
	if (H>11){value["K"]=H-12;} else {value["K"]=H;}
	value["k"]=H+1;
	value["KK"]=LZ(value["K"]);
	value["kk"]=LZ(value["k"]);
	if (H > 11) { value["a"]="PM"; }
	else { value["a"]="AM"; }
	value["m"]=m;
	value["mm"]=LZ(m);
	value["s"]=s;
	value["ss"]=LZ(s);
	while (i_format < format.length) {
		c=format.charAt(i_format);
		token="";
		while ((format.charAt(i_format)==c) && (i_format < format.length)) {
			token += format.charAt(i_format++);
		}
		if (value[token] != null) { result=result + value[token]; }
		else { result=result + token; }
	}
	return result;
}


var timerid     = null;
var matchString = "";
var mseconds    = 1000;	// Length of time before search string is reset
function shiftHighlight(keyCode,targ)
{
	keyVal      = String.fromCharCode(keyCode); // Convert ASCII Code to a string
	matchString = matchString + keyVal; // Add to previously typed characters
	elementCnt  = targ.length - 1;	// Calculate length of array -1
	for (i = elementCnt; i > 0; i--)
	{
		selectText = targ.options[i].text.toLowerCase(); // convert text in SELECT to lower case
		if (selectText.substr(0,matchString.length) == 	matchString.toLowerCase())
		{
			targ.options[i].selected = true; // Make the relevant OPTION selected
		}
	}
	clearTimeout(timerid); // Clear the timeout
	timerid = setTimeout('matchString = ""',mseconds); // Set a new timeout to reset the key press string
	
	return false; // to prevent IE from doing its own highlight switching
}

function DecodeEmail(theText) {
  output = new String;
  Temp = new Array();
  Temp2 = new Array();
  TextSize = theText.length;
  for (i = 0; i < TextSize; i++) {
    Temp[i] = theText.charCodeAt(i);
    Temp2[i] = theText.charCodeAt(i + 1);
  }

  for (i = 0; i < TextSize; i = i+2) {
    output += String.fromCharCode(Temp[i] - Temp2[i]);
  }
  return output;
}




