var isIE4 = (document.all);
var isNS4 = (document.layers);
var isDHTML = (isIE4 || isNS4);

function exist(varg)
	{
	// November 22, 1999 - Code Dynamics (c) - Byron J. Curlee
	// Returns boolean value (true) if 'varg' contains a value.

	if (varg)
		{
		if (trim(varg).length == 0)
			{
			return false;
			}
		return true;
		}
	return false;
	}

function trim(arg)
	{
	// November 22, 1999 - Code Dynamics (c) - David Norwood
	// Returns 'arg' without spaces before or after.
	var argtemp = arg;

	while (left(argtemp, 1) == ' ')
		{
		argtemp = right(argtemp, argtemp.length - 1);
		}
	while (right(argtemp, 1) == ' ')
 		{
		argtemp = left(argtemp, argtemp.length - 1);
		}
	return argtemp;
	}

function left(varg, vlength)
	{
	// November 22, 1999 - Code Dynamics (c) - David Norwood
	// Returns the first 'vlength' characters in 'varg' from left to right.
	var vargtemp = '';
	
	if (varg.length > 0)
		{
		if (varg.length >= vlength)
			{
			if (vlength > 0)
				{
				return varg.substring(0, vlength);
				}
			return vargtemp;
			}
		return varg;
		}
	return vargtemp;
	}

function leftstrip(arg, token)
	{
    // November 11, 1999 - Code Dynamics (c) - David Norwood
    // Returns the text in 'arg' to the right of 'token' from left to right.
    // leftstrip('C:\Root\Sub-root\File.txt', '\') will return the string 'Root\Sub-root\File.txt'.

	if (arg.indexOf(token, 0) != -1)
		{
		return arg.substring(arg.indexOf(token, 0) + token.length, arg.length);
		}
	return arg;
	}

function lefttext(arg, token)
	{
    // November 9, 1999 - Code Dynamics (c) - Byron J. Curlee
    // Returns the text in 'arg' to the left of 'token' from left to right.
    // lefttext('C:\Root\Sub-root\File.txt', '\') will return the string 'C:'.

	if (isinstr(arg, token))
		{
		return arg.substring(0, arg.indexOf(token, 0));
		}
	return arg;
	}

function right(varg, vlength)
	{
	// November 22, 1999 - Code Dynamics (c) - David Norwood
	// Returns the last 'vlength' characters in 'varg' from left to right.
	var vargtemp ='';

	if ((varg.length > 0) && (vlength > 0))
		{
		if (varg.length >= vlength)
			{
			// var newvarg = varg.substring(varg.length - vlength, varg.length);
			// return newvarg;
			return varg.substring(varg.length - vlength, varg.length);
			}
		return varg;
		}
	return vargtemp;
	}

function rightstrip(arg, token)
	{
	// November 11, 1999 - Code Dynamics (c) - David Norwood
	// Returns the text in 'arg' to the left of 'token' from right to left.
	// rightstrip('C:\Root\Sub-root\File.txt', '\') will return the string 'C:\Root\Sub-root'.

	if (arg.indexOf(token, 0) != -1)
		{
		return arg.substring(0, arg.lastIndexOf(token));
		}
	return arg;
	}

function righttext(arg, token)
	{
	// November 9, 1999 - Code Dynamics (c) - Byron J. Curlee
	// Returns the text in 'arg' to the right of 'token' from right to left.
	// righttext('C:\Root\Sub-root\File.txt', '\') will return the string 'File.txt'.

	if (isinstr(arg, token))
		{
		// return arg.substring(arg.lastIndexOf(token) + 1, arg.length);
		return arg.substring(arg.lastIndexOf(token) + token.length, arg.length);
		}
	return arg;
	}

function prt(vtext)
	{
	document.writeln(vtext);
	}
	
function quote(text)
	{
	var temp = "'" + text + "'";
	return temp;
	}

function isinstr(arg, token, casesensitive)
	{
	// November 9, 1999 - Code Dynamics (c) - Byron J. Curlee
	// Returns True if 'token' is within 'arg'.

	if (casesensitive == true)
		{
		if (arg.indexOf(token, 0) > -1)
			{
			return true;
			}
		}
	else
		{
		var upperarg = arg.toUpperCase();
		if (upperarg.indexOf(token.toUpperCase(), 0) > -1)
			{
			return true;
			}
		}
	return false;
	}

function oldstrreplace(arg, oldstring, newstring, casesensitive, start, repeat)
	{
	// November 9, 1999 - Code Dynamics (c) - Byron J. Curlee
	// Returns a string where the sub-string 'oldstring' is replaced with the sub-string 'newstring'.
	// 'casesensitive' is True for case sensitivity.
	// 'start' is the starting position of 'arg' to begin the replacement(s).
	// 'repeat' is the number of times to replace 'oldstring' with 'newstring'.
	var pattern;
	var argtemp;
	var leftside = '';

	if (Number(start) > 0)
		{
		leftside = arg.substring(0, Number(start) - 1);
		argtemp = arg.substring(start - 1, arg.length);
		}
	else
		{
		argtemp = arg;
		}
	if (casesensitive == true)
		{
		pattern = new RegExp(oldstring)
		}
	else
		{
		pattern = new RegExp(oldstring, "i")
		}
	if (Number(repeat) > 0)
		{
		var i = 0;
		while (i < Number(repeat))
			{
			argtemp = argtemp.replace(pattern, newstring);
			i = i + 1;
			}
		}
	else
		{
		while (isinstr(argtemp, oldstring, casesensitive))
			{
			argtemp = argtemp.replace(pattern, newstring);
			}
		}
	return leftside + argtemp;
	}

function strreplace(arg, oldtoken, newtoken, casesensitive)
	{
	var newarg = '';
	var oldarg = arg;
	var pointer = 0;

	if (casesensitive == true)
		{
		if (oldarg.indexOf(oldtoken, 0) > -1)
			{
			while (exist(oldarg))
				{
				if (oldarg.indexOf(oldtoken, 0) > -1)
					{
					newarg = newarg + lefttext(oldarg, oldtoken) + newtoken;
					oldarg = leftstrip(oldarg, oldtoken);
					}
				else
					{
					newarg = newarg + oldarg;
					return newarg;
					}
				}
			return newarg;
			}
		return oldarg;
		}
	else
		{
		var upperarg = arg.toUpperCase();
		if (upperarg.indexOf(oldtoken.toUpperCase(), 0) > -1)
			{
			while (exist(oldarg))
				{
				pointer = upperarg.indexOf(oldtoken.toUpperCase(), 0)
				if (pointer > -1)
					{
					newarg = newarg + left(oldarg, pointer) + newtoken;
					oldarg = right(oldarg, oldarg.length - (pointer + oldtoken.length)) + '';
					upperarg = oldarg.toUpperCase();
					}
				else
					{
					replace = newarg + oldarg;
					return replace;
					}
				}
			return newarg;
			}
		return oldarg;
		}
	}

//function returns the available content width space in browser window
function getInsideWindowWidth()
	{
	if (isNS4)
		{
		return window.innerWidth;
		}
	else
		{
		return document.body.clientWidth;
		}
	}

//function returns the available content height space in browser window
function getInsideWindowHeight()
	{
	if (isNS4)
		{
		return window.innerHeight;
		}
	else
		{
		return document.body.clientHeight;
		}
	}

//function returns rendered height of object content in pixels
function getObjHeight(obj)
	{
	if (isNS4)
		{
		return obj.clip.height;
		}
	else
		{
		return obj.clientHeight;
		}
	}

//function returns rendered width of object content in pixels
function getObjWidth(obj)
	{
	if (isNS4)
		{
		return obj.clip.width;
		}
	else
		{
		alert(obj);
		return obj.clientWidth;
		}
	}

// Convert object name string or object reference
// into a valid object reference
function getObject(obj)
	{
	var theObj
	if (typeof obj == "string")
		{
		theObj = eval("document." + coll + obj + styleObj)
		}
	else
		{
		if (isNS4)
			{
			theObj = eval('document.' + obj);
			}
		else
			{
			theObj = eval('document.all.' + obj);
			}
		}
	return theObj
	}

// Positioning an object at a specific pixel coordinate
function shiftTo(obj, x, y)
	{
	var theObj = getObject(obj)
	if (isNS4)
		{
		theObj.moveTo(x,y)
		}
	else
		{
		theObj.pixelLeft = x
		theObj.pixelTop = y
		}
	}

// Moving an object by x and/or y pixels
function shiftBy(obj, deltaX, deltaY)
	{
	var theObj = getObject(obj)
	if (isNS4)
		{
		theObj.moveBy(deltaX, deltaY)
		}
	else
		{
		theObj.pixelLeft += deltaX
		theObj.pixelTop += deltaY
		}
	}

// Setting the z-order of an object
function setZIndex(obj, zOrder)
	{
	var theObj = getObject(obj)
	theObj.zIndex = zOrder
	}

// Setting the visibility of an object to visible
function show(obj)
	{
	var theObj = getObject(obj)
	if (isNS4)
		{
		theObj.visibility='show';
		}
	else
		{
		theObj.visibility='visible';
		}
	}

// Setting the visibility of an object to hidden
function hide(obj)
	{
	var theObj = getObject(obj)
	if (isNS4)
		{
		theObj.visibility='hide';
		}
	else
		{
		theObj.visibility='hidden';
		}
	}

// Retrieving the x coordinate of a positionable object
function getObjectLeft(obj)
	{
	var posL
	var theObj = getObject(obj)
	if (isNS4)
		{
		posL = theObj.left
		}
	else
		{
		posL = theObj.pixelLeft
		}
	alert(posL);
	return false;
	}

// Retrieving the y coordinate of a positionable object
function getObjectTop(obj)
	{
	var theObj = getObject(obj)
	if (isNS4)
		{
		return theObj.top
		}
	else
		{
		return theObj.pixelTop
		}
	}

//This centers an element named banner in the current window/frame and shows it
function centerIt(obj)
	{
	var Obj = getObject(obj);
	var x = Math.round((getInsideWindowWidth()/2) - (getObjWidth(Obj)/2))
	var y = Math.round((getInsideWindowHeight()/2) - (getObjHeight(Obj)/2))
	shiftTo(Obj, x, y)
	Obj.visibility = "show"
	}    

//Returns the list of properties for the object
function showProps(o)
	{
	var result = "";
	count = 0;
	for (var i in o)
		{
		result += o + "." + i + "=" + o[i] + "\n";
		count++;
		if (count == 25)
			{
			alert(result);
			result = "";
			count = 0;
			}
		}
		alert(result);
	}

//Returns the selected text of a selectbox
//when the form and object name are passed: eg.(MainForm.SelectBox1)
function selectedText(obj)
	{
	var x = document.obj.options[document.obj.selectedIndex].text;
	return x;
	}

//Returns the selected value of a selectbox
//when the form and object name are passed: eg.(MainForm.SelectBox1)
function selectedText(obj)
	{
	var x = document.obj.options[document.obj.selectedIndex].value; 
	return x;
	}