function isDefined(ckVar)
    {

		var sObject = findObject(ckVar)

		if (sObject)
			return 1;
		else
			{
			return 0;
			}

    }

		/*
		This function will keep a given text object lockec to a given length removing any extra characters they might have entered.
		*/
		function keepStringLength(srcObject,iMaxLen)
		{
			if (srcObject.value == '')
				return true;

			var invalidchars="";
			var ok = "yes";
			var temp = "";

			srcObject.value = parseInt(StripOutInvalidCharacters(srcObject.value,'0123456789'));

			if (srcObject.value.length >= iMaxLen)
			{
				for (var i=0; i<srcObject.value.length; i++)
				{
					if (i >= iMaxLen)
					{
						ok = "no";
						invalidchars = invalidchars + srcObject.value.substring(i, i+1);
					}
					else
						temp = temp + srcObject.value.substring(i, i+1);

				}


				if (ok == "no")
				{
					//alert("[" + invalidchars + "] is not a valid character for this field. Click OK to remove it.  \n\nValid Characters are:\n["+valid+"]");
					srcObject.value = temp;
					return false;
				}
			}

			return true;
		}

		function ignorethiskey(evt){
			evt = (evt) ? evt : ((window.event) ? event : null);
			    if (evt) {
			        switch (evt.keyCode) {
			            case 37:
		               return true;
			            case 38:
		               return true;
			            case 39:
		               return true;
			            case 40:
		               return true;
			         }
			    }		
			    
			return false;
		}

		function isValidEmail(emailAddress)
				{
					if (emailAddress.value == '')
						return true;

		var re = /^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;

					if (!re.test(emailAddress.value))
						{
						emailAddress.value='';
						emailAddress.select();
						emailAddress.focus();
						alert('['+emailAddress.value+'] NOT a valid email address');
						return false;
						}
					return true;
				}

			//	Review the current string and see if the characters in this string are valid
			//Written By Mark D.Fitzgerald (fitz) of Smart Realty Solutions Copyright 2003
				function validateStrings(evt,srcObject,valid)
				{
					if (ignorethiskey(evt)) return true;
				
					if (srcObject.value == '')
						return true;

					var invalidchars="";
					var ok = "yes";
					var temp;

					for (var i=0; i<srcObject.value.length; i++)
					{
						temp = "" + srcObject.value.substring(i, i+1);
						if (valid.indexOf(temp) == "-1")
						{
							ok = "no";
							invalidchars = invalidchars + srcObject.value.substring(i, i+1);
						}
					}

					if (ok == "no")
					{
						alert("[ " + invalidchars + " ] is not a valid character for this field. Click OK to remove it. \n\nValid Characters are:\n["+valid+"]");
						var szNewStr="";
						szNewStr = srcObject.value;
						szNewStr = StripOutInvalidCharacters(szNewStr,valid);
						srcObject.value = szNewStr;
//						srcObject.focus();
//						srcObject.select();
						return false;
				  }
					return true;
				}
			//	--------------------------------------------------------------------------------

			//Written By Mark D.Fitzgerald (fitz) of Smart Realty Solutions Copyright 2003
			function ValidateMultiSelection(srcObject,srcLengthMax)
			{
					var lvItembreakDown = srcObject.value.split(",");
					var lvLongMessage = "";
					var ok = "yes";
					

					//Here We will validate the strings and create a list of messages to the user.
					for (var iIndex = 0 ;iIndex < lvItembreakDown.length; iIndex ++)
					{

						if (lvItembreakDown[iIndex].length > srcLengthMax)
						{
//						alert("Invalid entry!  Following are not allowed!\n" + lvItembreakDown[iIndex]);
							lvLongMessage = lvLongMessage + "	Invalid Data Length on [" + lvItembreakDown[iIndex] + "]\n";
							ok = "no";
						}
					}

					if (ok == "no")
					{
						alert('The following character(s) are not allowed!\n' + lvLongMessage);
						srcObject.focus();
						srcObject.select();
						return false;
				  }

				return true;

			}

		//Written By Mark D.Fitzgerald (fitz) of Smart Realty Solutions Copyright 2003
		function confirmo(strText)
		{
			if (confirm(strText))
			{
				return true;
			}
			else
			{
				return false;
			}
		}

		//Written By Mark D.Fitzgerald (fitz) of Smart Realty Solutions Copyright 2003
		function confirmoSubmit(strText,TheForm)
		{
			if (confirm(strText))
			{
				document.forms[TheForm].submit();
				return true;
			}
			else
			{
				return false;
			}
		}


//Written By Mark D.Fitzgerald (fitz) of Smart Realty Solutions Copyright 2003
function StripOutInvalidCharacters(srcString,valid)
{
	if (srcString == '')
		return "";

	var invalidchars="";
	var validchars="";
	var temp;
	for (var i=0; i < srcString.length; i++)
	{
		temp = "" + srcString.substring(i, i+1);
		if (valid.indexOf(temp) == "-1")
		{
			invalidchars = invalidchars + srcString.substring(i, i+1);
		}
		else
		{
		validchars = validchars + srcString.substring(i, i+1);
		}
	}

	return validchars;
}

//Written By Mark D.Fitzgerald (fitz) of Smart Realty Solutions Copyright 2003
function ValidateHighPriceLowPrice(srcLow,srcHigh)
{
	errmsg = '';

	//Parse these variables so we can work with numbers only.
	var minimumValue = parseInt(StripOutInvalidCharacters(srcLow.value,'0123456789'));
	var maximumValue = parseInt(StripOutInvalidCharacters(srcHigh.value,'0123456789'));

	if (!isNaN(minimumValue) && (!isNaN(maximumValue)))
	{
		if (minimumValue > 99999999)
		{
			errmsg += '- \'Low Price\' Value of ('+minimumValue+') is out of range. Please lower value.\n';
		}

		if (maximumValue > 99999999)
		{
			errmsg += '- \'High Price\' Value of ('+maximumValue+') is out of range. Please lower value.\n';
		}

		if (minimumValue > maximumValue)
		{
			errmsg += '- \'Low Price\' must have a lower numeric value than \'High Price\'.\n';
		}
	}

	if (errmsg != '')
	{
		alert('Please correct the following errors to continue:\n_____________________________________\n\n' + errmsg + '_____________________________________');
		srcHigh.focus();
		srcHigh.select();
		return false;
	}
	else
	{
		return true;
	}

}


//Written By Mark D.Fitzgerald (fitz) of Smart Realty Solutions Copyright 2003
function FrameFind_Object(szObjectName)
{
	var oSrcObject;

	if (document.getElementById(szObjectName))
		return document.getElementById(szObjectName);

	if (parent.frames.display.document.getElementById(szObjectName))
		return parent.frames.display.document.getElementById(szObjectName);

	if (parent.frames.search.document.getElementById(szObjectName))
		return parent.frames.search.document.getElementById(szObjectName);


	oSrcObject = findObject(szObjectName);
	if (!oSrcObject)
	{
		D = parent.frames.display.document;
		oSrcObject = findObject(szObjectName,D);
		if (!oSrcObject)
		{
			D = parent.frames.search.document;
			oSrcObject = findObject(szObjectName,D);
		}
	}

	return oSrcObject;
}

//Written By Mark D.Fitzgerald (fitz) of Smart Realty Solutions Copyright 2003
function findObject(n, d)
{
    // this is a generic function that will work in Netscape and IE browsers to find
    // the object reference within a given document object model.

	if (document.getElementById(n))
		return document.getElementById(n);

     var p,i,x;
//	x = NULL;
    if(!d) {
     d=document;
     }
    if((p=n.indexOf("?"))>0 && parent.frames.length) {
         d=parent.frames[n.substring(p+1)].document;
          n=n.substring(0,p);
    }

     if(!(x=d[n])&&d.all) {
         x=d.all[n];
     }

     for (i=0; !x && i < d.forms.length; i++) {
         x=d.forms[i][n];
    }

     for(i=0; !x && d.layers && i < d.layers.length; i++) {
         x=findObject(n,d.layers[i].document);
    }

     if(!x && document.getElementById) {
         x=document.getElementById(n);
     }

     return x;
}

//Written By Mark D.Fitzgerald (fitz) of Smart Realty Solutions Copyright 2003
function FlashField(oField,szFormname) {
		var intBeat = 275;
		var strStylePath = 'document.'+szFormname+'.'+ oField.name + '.style' + '.backgroundColor';

		setTimeout(strStylePath + ' = "#ECFF00";', 1);
		setTimeout(strStylePath + ' = "#FFFFFF";', intBeat);
		setTimeout(strStylePath + ' = "#ECFF00";', intBeat*2);
		setTimeout(strStylePath + ' = "#FFFFFF";', intBeat*3);
		setTimeout(strStylePath + ' = "#ECFF00";', intBeat*4);
		setTimeout(strStylePath + ' = "#FFFFFF";', intBeat*5);
}

//Written By Mark D.Fitzgerald (fitz) of Smart Realty Solutions Copyright 2003
function StripMoneyField(field) {
	var str = field;
	if(str.charAt(0) == "$")
		str = str.substring(1, str.length);
	var pos = str.lastIndexOf(",");
	while(pos != -1) {
		str = str.substring(0,pos) + str.substring(pos+1, str.length);
		pos = str.lastIndexOf(",", pos);
	}
	return parseFloat(str);
}

//Written By Mark D.Fitzgerald (fitz) of Smart Realty Solutions Copyright 2003
function FloatToMoneyString(flt)
{
	var szWorkBoard = "";
	szWorkBoard = "" + flt;
	var str = "" + Math.floor(flt)

	var szDec = ".00";

	//Lets get the two decimal places to show.
	var iIndex = szWorkBoard.lastIndexOf(".");

	if (iIndex == -1)
		szDec = ".00";
	else{
		szDec = szWorkBoard.substring(iIndex,iIndex+3);
		if (szDec.length <= 2)
			szDec += '0';
		}

	pos = str.length;
	pos -= 4;
	while(pos >= 0) {
		str = str.substring(0,pos+1) + "," + str.substring(pos+1, str.length);
		pos -= 3;
	}

	str = str + szDec

	return str;
}

//Written By Mark D.Fitzgerald (fitz) of Smart Realty Solutions Copyright 2003
function ASCheckPhoneNumber(szWhatName)
{
	var oObject = findObject(szWhatName);

	if (oObject.value.length != 0 && oObject.value.length != 13 &&
		 oObject.value.length != 16 && oObject.value.length != 17 && oObject.value.length != 18 &&
		 oObject.value.length != 19 && oObject.value.length != 20 && oObject.value.length != 21)
	 {
		 return 1;
	}

	//Everyting is good continue on.
	return 0;
}

//Written By Mark D.Fitzgerald (fitz) of Smart Realty Solutions Copyright 2003
function ASCheckPhoneNumberRequired(szWhatName)
{
	var oObject = findObject(szWhatName);

	if (oObject.value.length != 13 &&
		 oObject.value.length != 16 && oObject.value.length != 17 && oObject.value.length != 18 &&
		 oObject.value.length != 19 && oObject.value.length != 20 && oObject.value.length != 21)
	 {
		 return 1;
	}

	//Everyting is good continue on.
	return 0;
}


//Written By Mark D.Fitzgerald (fitz) of Smart Realty Solutions Copyright 2003
function AutoValidatePhone(m)
{
	var srcValue = m.value;
	var dstValue = m.value;
	var srcLength = m.length;
	var dstLength = 0;
	var withspaceLength = 0;
	var szCharEleven = "";
	var szNewStringWithSpace = "";
	var szNewString = "";

	//Strip out all Non Numeric
	szNewString = StripOutInvalidCharacters(dstValue,'0123456789');
	var dstLength = szNewString.length;

	//We are going to allow spaces after the first 10 digets so here it goes.
	if (m.value.length > 13){
		szNewStringWithSpace = StripOutInvalidCharacters(srcValue,' 0123456789');
		//If character 11 has a space then will will now add that space such that not to have more than one space
		szCharEleven = szNewStringWithSpace.substring(10,11);
	}


	if (szNewString == '')
		{
		m.value = szNewString;
		return;
		}

	var dstLength = szNewString.length;
	var szReturnString = "";

	if (dstLength > 3 && dstLength <=7){
		szReturnString = szReturnString + szNewString.substring(0, 3);
		szReturnString = szReturnString + '-';
		szReturnString = szReturnString + szNewString.substring(3, dstLength);
	}
	else if (dstLength > 7){
		szReturnString = szReturnString + '(';
		szReturnString = szReturnString + szNewString.substring(0, 3);
		szReturnString = szReturnString + ')';
		szReturnString = szReturnString + szNewString.substring(3, 6);
		szReturnString = szReturnString + '-';

		if (dstLength > 10){
			szReturnString = szReturnString + szNewString.substring(6,10);
			}
		else
			szReturnString = szReturnString + szNewString.substring(6,dstLength);

		if (szNewStringWithSpace.length >= 11 && szCharEleven == ' '){
				//Did they add the space?
				szReturnString = szReturnString + ' ';
			}

		if (dstLength > 10){
			if (szCharEleven == ' ')
				szReturnString = szReturnString + 'x';
			else
				szReturnString = szReturnString + ' x';

			szReturnString = szReturnString + szNewString.substring(10, dstLength);
		}
	}
	else{
		szReturnString = szNewString;
	}

	m.value = szReturnString;

	return true;
}

//Written By Mark D.Fitzgerald (fitz) of Smart Realty Solutions Copyright 2003
function AutoValidatePrice(oPrice)
{
	var dstValue = oPrice.value;
	var szNewString = "";

	//Strip out all Non Numeric
	szNewString = StripOutInvalidCharacters(dstValue,'0123456789');

	if (szNewString == '')
		{
		oPrice.value = szNewString;
		return;
		}

	var iStartCounter = szNewString.length;
	if (iStartCounter > 3)
	{
		var iNrCommas = parseInt((iStartCounter-1)/3);
	}
	else
		var iNrCommas = 0

	var iPositionCounter = szNewString.length;
	if (iNrCommas < 1)
	{
		oPrice.value = szNewString;
		return;
	}

	var szReturnString = '';
	var iTempCommas = iNrCommas
	for (var i=0; i < iStartCounter; i++)
	{
		temp = szNewString.substring(i, i+1);
		iCommaPos = iPositionCounter%3;
		//alert(iPositionCounter+' mod 3 = '+iCommaPos);
		if (iTempCommas > 0 && iCommaPos == 0 && iPositionCounter <= ((iNrCommas*3)+1))
		{
			szReturnString = szReturnString + ',';
			iTempCommas;
		}

		szReturnString = szReturnString + temp;
		iPositionCounter--;
	}

	oPrice.value = szReturnString;

	return true;
}

//iDIrectoin = 1... Increase
//IDirection = 2... Decrease
//Written By Mark D.Fitzgerald (fitz) of Smart Realty Solutions Copyright 2003
function SpinnerCheck(oTheObjectName,iMin,iMax)
{
	var oObject = oTheObjectName;
	var iValue = parseInt(oObject.value);


	 if (iValue > iMax){
		alert('A value of '+iValue+' Exceeds the Max value of '+iMax);
		oObject.value = iMax;
		return false;
	}

	 if (iValue < iMin){
		alert('A value of '+iValue+' is below the Min value of '+iMin);
		oObject.value = iMin;
		return false;
	}

	 if (iValue == ''){
		alert('Numeric value is reqiured for this field.');
		oObject.value = iMin;
		return false;
	}

	return true;
}

//iDIrectoin = 1... Increase
//IDirection = 2... Decrease
//Written By Mark D.Fitzgerald (fitz) of Smart Realty Solutions Copyright 2003
function Spinner(oTheObjectName,iMin,iMax,iStep,iTheDirection)
{
	var oObject = findObject(oTheObjectName);
	var iValue = parseInt(oObject.value);
	var iStepBy = iStep;
	var iDirection = iTheDirection;
	var iNewValue = iValue;


	if (iDirection < 0 || iDirection > 1)
		iDirection = 1;

	if (iStepBy < 0 || iStepBy == "")
		iStepBy = 1;

	if (iDirection == 1)
		iNewValue = iValue + iStepBy;
	else if (iDirection == 0)
		{
		iNewValue = iValue - iStepBy;
		}

	//Set the objects value to the min.
	if (oObject.value == "")
		oObject.value = iMin;
	else if (iDirection == 1 && iNewValue <= iMax)
		oObject.value = iNewValue;
	else if (iDirection == 0 && iNewValue >= iMin)
		oObject.value = iNewValue;
	else if (iDirection == 0 && iNewValue < iMin){
		alert('A value of '+iNewValue+' Is Less than the Min value of '+iMin);
		oObject.value = iMin;
	}
	else if (iDirection == 1 && iNewValue > iMax){
		alert('A value of '+iNewValue+' Exceeds the Max value of '+iMax);
		oObject.value = iMax;
	}

	return;
}




//Written By Mark D.Fitzgerald (fitz) of Smart Realty Solutions Copyright 2003
function ClearField(oSrcObject)
{
	oSrcObject.value = "";
	return true;

}

//Written By Mark D.Fitzgerald (fitz) of Smart Realty Solutions Copyright 2003
function AssignToField(oSrcObject,szValue)
{
	oSrcObject.value = szValue;
	return true;

}

//Written By Mark D.Fitzgerald (fitz) of Smart Realty Solutions Copyright 2003
function AutoFill_SelectBox(oSrcObject,szListBoxName)
{

	var oObject = findObject(szListBoxName);

	var iWildFront
	var iWildEnd

	iWildFront = '';
	iWildEnd = '';
	iWildFront = oSrcObject.value.substring(0, 1);
	if (oSrcObject.value.length > 1)
		iWildEnd = oSrcObject.value.substring(oSrcObject.value.length-1, oSrcObject.value.length);

	iLookingFor = oSrcObject.value
	iLookingFor = iLookingFor.replace("*","")
	iLookingFor = iLookingFor.replace("*","")
	iLookingFor = iLookingFor.replace("*","")
	iLookingFor = iLookingFor.replace("*","")

	if (oSrcObject && oObject)
	{
		if (iLookingFor.length > 0)
		{
				 if (iWildFront == '*' && iWildEnd == '*')
			 	 {
					for(var x=0; x<oObject.length; x++)
					{
					 	iItemToLookInside = oObject.options[x].text.toLowerCase()
					 	iItemAfterReplace = iItemToLookInside
						iLookingFor = iLookingFor.toLowerCase()

						iItemAfterReplace = iItemAfterReplace.replace(iLookingFor,"")
						//alert(iItemToLookInside+' '+iItemAfterReplace+' Remove:'+iLookingFor);
						 if(iItemToLookInside != iItemAfterReplace)
						 {
							oObject.selectedIndex = x;
							return true;
						 }
					}
				 }
				 else if (iWildFront == '*')
			 	 {
					for(var x=0; x<oObject.length; x++)
					{
						iTestLength = oObject.options[x].text.length - iLookingFor.length;
						if (iTestLength >  -1)
						{
						 	iItemToLookInside = oObject.options[x].text.substring(iTestLength,oObject.options[x].text.length);
							iItemToLookInside = iItemToLookInside.toLowerCase()
							//alert(iItemToLookInside);
							 if(iItemToLookInside == iLookingFor)
							 {
								oObject.selectedIndex = x;
								return true;
							 }
						}
					}
				 }
				 else
				 {
					for(var x=0; x<oObject.length; x++)
					 {
						 var name = oObject.options[x].text;
						 name = name.substring(0, iLookingFor.length);
						 if(name.toLowerCase() == iLookingFor.toLowerCase())
						 	{
							oObject.selectedIndex = x;
							return true;
							}
					 }
				 }
		 }
		 else
		 {
			oObject.selectedIndex = 0;
		 }
	}
	 return false;

}

/*
				 else if (iWildEnd == '*')
			 	 {
					for(var x=0; x<oObject.length; x++)
					{
					 	iItemToLookInside = oObject.options[x].text.substring(0, iLookingFor.length);
						iItemToLookInside = iItemToLookInside.toLowerCase()
						//alert(iItemToLookInside);
						 if(iItemToLookInside == iLookingFor)
						 {
							oObject.selectedIndex = x;
							return true;
						 }
					}
				 }

*/


//Lets have 1 be start and 0 be Stop
//Written By Mark D.Fitzgerald (fitz) of Smart Realty Solutions Copyright 2003
function Scrolling_StartStop(bValue,id)
{
	var iIndexToItem = Scrolling_LocateEvent(aScrollingEvents,id);
	if (iIndexToItem >= 0)
	{
		aScrollingActive[iIndexToItem] = bValue
//		aScrollingEvents.splice(iIndexToItem,1);
//		aScrollingActive.splice(iIndexToItem,1);

	}
}


//Written By Mark D.Fitzgerald (fitz) of Smart Realty Solutions Copyright 2003
function Scrolling_LocateEvent(aTheArray,iEventID)
{
	var iLocatedIndex = -1;

	if (aTheArray)
	{
		//Look at all the itmes in the Not in list object
		 for (var i=0; i<aTheArray.length; i++)
		 {
			if (aTheArray[i] == iEventID)
			{
				return i;
			}
		 }
	}

	return -1;
}

//iDir = 1 Forward
//iDir = 0 Backwards
var aScrollingEvents = new Array();
var aScrollingActive = new Array();
var gbScrolling_Lock = 0

//Written By Mark D.Fitzgerald (fitz) of Smart Realty Solutions Copyright 2003
function TextBoxScrolling(iDir,szSrcObjectName,iSpeed,iCurrentLoop,szString,szDefaultMsg,id,iPosition,ipadding)
{
	if (!ipadding)
		ipadding = 50;

	if (!gbScrolling_Lock)
	{
		gbScrolling_Lock = id;

		oSrcObject = findObject(szSrcObjectName);

	    if (oSrcObject)
		{
			var iIndexToItem = Scrolling_LocateEvent(aScrollingEvents,id);
			if (iIndexToItem >= 0)
			{
				var isActive = aScrollingActive[iIndexToItem]
			}
			else
				var isActive = 0

			//First Time
			if (iIndexToItem == -1)
			{
				szTempString = ""
				for (var i=0; i<ipadding; i++)
					szTempString = szTempString + " ";
				szString = szTempString + szString + "  ";

				//Add This Item to the event system.
				aScrollingEvents[aScrollingEvents.length] = id;
				aScrollingActive[aScrollingActive.length] = 1;
				iPosition = 0;
				isActive = 1;
			}
			else if (iPosition == -1) //We do not process more than one of the same event
			{
				gbScrolling_Lock = 0;
				return false;
			}

			if (isActive)
			{
				var iStrLen = szString.length;

		        oSrcObject.value = szString;
		        if (iDir == 1)
		            szString = szString.substring(1) + szString.substring(0,1);
		        else
		            szString =  szString.substring(szString.length-1,szString.length) + szString.substring(0,szString.length-1);

				iPosition++;
				if (iPosition >= iStrLen && iCurrentLoop > 0)
				{
					iCurrentLoop--;
					iPosition =  0;
				}

				if (iCurrentLoop > 0 || iCurrentLoop < 0)
				{
				    setTimeout('TextBoxScrolling('+iDir+',\''+szSrcObjectName+'\','+iSpeed+','+iCurrentLoop+',\''+szString+'\',\''+szDefaultMsg+'\','+id+','+iPosition+')',iSpeed);
				}
				else
				{
					aScrollingEvents.splice(iIndexToItem,1);
					aScrollingActive.splice(iIndexToItem,1);
					if (szDefaultMsg != '')
					oSrcObject.value=szDefaultMsg;
				}
			} //end if (isActive)
			else
			{
			    setTimeout('TextBoxScrolling('+iDir+',\''+szSrcObjectName+'\','+iSpeed+','+iCurrentLoop+',\''+szString+'\',\''+szDefaultMsg+'\','+id+','+iPosition+')',iSpeed);
			}
	    }  //if (oSrcObject)

		gbScrolling_Lock = 0;

	} //Locked
	else
	{
		if (gbScrolling_Lock != id)
		    setTimeout('TextBoxScrolling('+iDir+',\''+szSrcObjectName+'\','+iSpeed+','+iCurrentLoop+',\''+szString+'\',\''+szDefaultMsg+'\','+id+','+iPosition+')',10);
	}
}


//Written By Mark D.Fitzgerald (fitz) of Smart Realty Solutions Copyright 2003
function Delay(Amount)
{
d = new Date() //today's date
while (1)
{
mill=new Date() // Date Now
diff = mill-d //difference in milliseconds
if( diff > Amount ) {break;}
}
}


//Written By Mark D.Fitzgerald (fitz) of Smart Realty Solutions Copyright 2003
	function CheckUncheckAll(oSrcObject,szLookingForName,oForm)
	{
		var oDstObject = findObject(szLookingForName);


		if (oSrcObject && oDstObject)
		{
			bSrcValue = oSrcObject.checked;
			bSrcValue = !bSrcValue;

			for (var i = 0; i < oForm.elements.length; i++)
			{
				 if (oForm.elements[i].type == 'checkbox' && oForm.elements[i].name == szLookingForName)
				 {
				 	oForm.elements[i].checked = bSrcValue
				 }
			}

		}
	}

// ------------------------------------------------------------------------------
// from AsComplexDataEntry ------------------------------------------------------
// ------------------------------------------------------------------------------
				function Complex_MoveItem(sBox, bDirection)
				{
					var iSelectedIndex = -1;
					var iTotalSelected = 0;
					var bCanMove = false;

					for(var i=0; i < sBox.options.length; i++)
					{
						if (sBox.options[i].selected && sBox.options[i].value !="")
						{
							iTotalSelected++;
							iSelectedIndex = i;
						}
					}

					//Now see if this Item can be moved up or down pending on what they want
					if (iTotalSelected == 1 && bDirection == kMoveItemUp && iSelectedIndex != 0)
					{
						bCanMove = true;
						iIndexToSwapWith = iSelectedIndex - 1;
					}
					else if (iTotalSelected == 1 && bDirection == kMoveItemDown && iSelectedIndex != sBox.options.length)
					{
						bCanMove = true;
						iIndexToSwapWith = iSelectedIndex + 1;
					}
					else
					{
						return false;
					}

					//The Item can be moved so lets swap
					if (bCanMove)
					{
						var tempText = new Object();
						var tempValue = new Object();
						tempText = sBox.options[iSelectedIndex].text;
						tempValue = sBox.options[iSelectedIndex].value;

						sBox.options[iSelectedIndex].text = sBox.options[iIndexToSwapWith].text;
						sBox.options[iSelectedIndex].value = sBox.options[iIndexToSwapWith].value;

						sBox.options[iIndexToSwapWith].text = tempText;
						sBox.options[iIndexToSwapWith].value = tempValue;
						sBox.selectedIndex = iIndexToSwapWith;

						return false;
					}

					return false;
				}


				function RemoveItemFromList(szPrimaryObj,szSecondaryObj)
				{

					var oSrcObject;
					var oSecondaryObject;

					oSrcObject = findObject(szPrimaryObj);

					if (szSecondaryObj != '')
					{
						oSecondaryObject = findObject(szSecondaryObj);
					}

					if (oSrcObject)
					{
					for(var i=oSrcObject.options.length-1; i>=0; i--)
						{
							//If an item is selected we need to move that item to the on the list box
							if(oSrcObject.options[i].selected)
							{
								oSrcObject.remove(i);
								if (oSecondaryObject)
									{
									oSecondaryObject.remove(i);
									}
							}
						}
					}
				}

				//Please note this is a 0 based array.
				function FindNthSelectedItem(oSrcObject,iPosition)
				{
					var iCounter;

					if (!oSrcObject)
						return 0;

					if (!oSrcObject.options)
						return -1;

					//alert('Length: '+oSrcObject.options.length);
					iCounter = 0;

					for(var i=oSrcObject.options.length-1; i>=0; i--)
						{
							//If an item is selected we need to move that item to the on the list box
							if(oSrcObject.options[i].selected)
							{
								iCounter++;

								if (iCounter == iPosition)
									return i;
							}
						}

					return -1;
				}


				function EditItemFromList(szListName,szPrimaryDataField,szSecondaryObj,szSecondaryDataField)
				{

					var oSrcObject;
					var oPrimaryDataObject;
					var oSecondaryObject;
					var iCounterHowManySelected;
					var iIndexToItemToEdit;

					var szPrimaryData;

					oSrcObject = findObject(szListName);
					oPrimaryDataObject = findObject(szPrimaryDataField);

					if (!oPrimaryDataObject)
						return false;

					if (szSecondaryObj != '')
					{
						oSecondaryObject = findObject(szSecondaryObj);
						oSecondaryDataObject = findObject(szSecondaryDataField);
					}

					iIndexToItemToEdit = -1;
					if (oSrcObject)
					{
						iIndexToItemToEdit = FindNthSelectedItem(oSrcObject,1);
					}

					if (iIndexToItemToEdit < 0)
						alert('Please Select an item to edit.');
					else
					{
						var szValue;
						var szText;
						var oNewItem = new Option();

						oNewItem = oSrcObject.options[iIndexToItemToEdit]

						szValue = oNewItem.value;
						szText = oNewItem.text;
						oPrimaryDataObject.value = szText;

						//Secondary Object
						if (oSecondaryObject)
						{
							var szValue_Second;
							var szText_Second;
							var oNewItem_Second = new Option();

							oNewItem_Second = oSecondaryObject.options[iIndexToItemToEdit]
							szValue_Second = oNewItem_Second.value;


							//locate this item in the list and select it
								for(var i=oSecondaryDataObject.options.length-1; i>=0; i--)
								{
									if (oSecondaryDataObject.options[i].text == szValue_Second)
										oSecondaryDataObject.options[i].selected = 1;
								}
						}

						RemoveItemFromList(szListName,szSecondaryObj);

						return true;
					}

					return false;

				}
// ------------------------------------------------------------------------------
// from AsInput -----------------------------------------------------------------
// ------------------------------------------------------------------------------
		if (self.ASINPUTAutoValidatePhone)
		{
		//testing
		}
		else
		{

			//Written By Mark D.Fitzgerald (fitz) of Smart Realty Solutions Copyright 2003
			function ASINPUTfindObject(n, d)
			{
			    // this is a generic function that will work in Netscape and IE browsers to find
			    // the object reference within a given document object model.

				if (document.getElementById(n))
					return document.getElementById(n);

			     var p,i,x;
			//	x = NULL;
			    if(!d) {
			     d=document;
			     }
			    if((p=n.indexOf("?"))>0 && parent.frames.length) {
			         d=parent.frames[n.substring(p+1)].document;
			          n=n.substring(0,p);
			    }

			     if(!(x=d[n])&&d.all) {
			         x=d.all[n];
			     }

			     for (i=0; !x && i < d.forms.length; i++) {
			         x=d.forms[i][n];
			    }

			     for(i=0; !x && d.layers && i < d.layers.length; i++) {
			         x=findObject(n,d.layers[i].document);
			    }

			     if(!x && document.getElementById) {
			         x=document.getElementById(n);
			     }

			     return x;
			}


			//Written By Mark D.Fitzgerald (fitz) of Smart Realty Solutions Copyright 2003
			function ASINPUTStripOutInvalidCharacters(srcString,valid)
			{
				if (srcString == '')
					return "";

				var invalidchars="";
				var validchars="";
				var temp;
				for (var i=0; i < srcString.length; i++)
				{
					temp = "" + srcString.substring(i, i+1);
					if (valid.indexOf(temp) == "-1")
					{
						invalidchars = invalidchars + srcString.substring(i, i+1);
					}
					else
					{
					validchars = validchars + srcString.substring(i, i+1);
					}
				}

				return validchars;
			}

			//Written By Mark D.Fitzgerald (fitz) of Smart Realty Solutions Copyright 2003
			function ASINPUTAutoValidatePhone(m)
			{
				var srcValue = m.value;
				var dstValue = m.value;
				var srcLength = m.length;
				var dstLength = 0;
				var withspaceLength = 0;
				var szCharEleven = "";
				var szNewStringWithSpace = "";
				var szNewString = "";

				//Strip out all Non Numeric
				szNewString = ASINPUTStripOutInvalidCharacters(dstValue,'0123456789');
				var dstLength = szNewString.length;

				//We are going to allow spaces after the first 10 digets so here it goes.
				if (m.value.length > 13){
					szNewStringWithSpace = ASINPUTStripOutInvalidCharacters(srcValue,' 0123456789');
					//If character 11 has a space then will will now add that space such that not to have more than one space
					szCharEleven = szNewStringWithSpace.substring(10,11);
				}


				if (szNewString == '')
					{
					m.value = szNewString;
					return;
					}

				var dstLength = szNewString.length;
				var szReturnString = "";

				if (dstLength > 3 && dstLength <=7){
					szReturnString = szReturnString + szNewString.substring(0, 3);
					szReturnString = szReturnString + '-';
					szReturnString = szReturnString + szNewString.substring(3, dstLength);
				}
				else if (dstLength > 7){
					szReturnString = szReturnString + '(';
					szReturnString = szReturnString + szNewString.substring(0, 3);
					szReturnString = szReturnString + ')';
					szReturnString = szReturnString + szNewString.substring(3, 6);
					szReturnString = szReturnString + '-';

					if (dstLength > 10){
						szReturnString = szReturnString + szNewString.substring(6,10);
						}
					else
						szReturnString = szReturnString + szNewString.substring(6,dstLength);

					if (szNewStringWithSpace.length >= 11 && szCharEleven == ' '){
							//Did they add the space?
							szReturnString = szReturnString + ' ';
						}

					if (dstLength > 10){
						if (szCharEleven == ' ')
							szReturnString = szReturnString + 'x';
						else
							szReturnString = szReturnString + ' x';

						szReturnString = szReturnString + szNewString.substring(10, dstLength);
					}
				}
				else{
					szReturnString = szNewString;
				}

				m.value = szReturnString;

				return true;
			}

			//iDIrectoin = 1... Increase
			//IDirection = 2... Decrease
			//Written By Mark D.Fitzgerald (fitz) of Smart Realty Solutions Copyright 2003
			function ASINPUTSpinnerCheck(oTheObjectName,iMin,iMax)
			{
				var oObject = oTheObjectName;
				var iValue = parseInt(oObject.value);


				 if (iValue > iMax){
					alert('A value of '+iValue+' Exceeds the Max value of '+iMax);
					oObject.value = iMax;
					return false;
				}

				 if (iValue < iMin){
					alert('A value of '+iValue+' is below the Min value of '+iMin);
					oObject.value = iMin;
					return false;
				}

				 if (iValue == ''){
					alert('Numeric value is reqiured for this field.');
					oObject.value = iMin;
					return false;
				}

				return true;
			}

			//iDIrectoin = 1... Increase
			//IDirection = 2... Decrease
			//Written By Mark D.Fitzgerald (fitz) of Smart Realty Solutions Copyright 2003
			function ASINPUTSpinner(oTheObjectName,iMin,iMax,iStep,iTheDirection)
			{
				var oObject = ASINPUTfindObject(oTheObjectName);
				var iValue = parseInt(oObject.value);
				var iStepBy = iStep;
				var iDirection = iTheDirection;
				var iNewValue = iValue;


				if (iDirection < 0 || iDirection > 1)
					iDirection = 1;

				if (iStepBy < 0 || iStepBy == "")
					iStepBy = 1;

				if (iDirection == 1)
					iNewValue = iValue + iStepBy;
				else if (iDirection == 0)
					{
					iNewValue = iValue - iStepBy;
					}

				//Set the objects value to the min.
				if (oObject.value == "")
					oObject.value = iMin;
				else if (iDirection == 1 && iNewValue <= iMax)
					oObject.value = iNewValue;
				else if (iDirection == 0 && iNewValue >= iMin)
					oObject.value = iNewValue;
				else if (iDirection == 0 && iNewValue < iMin){
					alert('A value of '+iNewValue+' Is Less than the Min value of '+iMin);
					oObject.value = iMin;
				}
				else if (iDirection == 1 && iNewValue > iMax){
					alert('A value of '+iNewValue+' Exceeds the Max value of '+iMax);
					oObject.value = iMax;
				}

				return;
			}

		} //if (self.ASINPUTAutoValidatePhone)
		

		function AddItemToList(szListName,szPrimaryDataField,szSecondaryObj,szSecondaryDataField,szType,szCharList,iMaxChar,iMaxEntries)
			{
				var oSrcObject;
				var oPrimaryDataObject;
				var oSecondaryObject;
				var oSecondaryDataObject;
				
				var szPrimaryData;
				
				
				oSrcObject = findObject(szListName);
				oPrimaryDataObject = findObject(szPrimaryDataField);
				
				
				if (oPrimaryDataObject)
					szPrimaryData = oPrimaryDataObject.value
				else
					return false;

				//make sure is valid.
				if (szType == 'email')	
				{
					if (oPrimaryDataObject.value == '')
					{
						alert('Invalid E-mail address');
						return false;
					}
					
					if (isValidEmail(oPrimaryDataObject) == 0)
						return false;
				}	
				else if (szType == 'phone')	
				{
					if (validateStrings(oPrimaryDataObject,'x()- 0123456789') == 0)
						return false;
				}
				else if (szType == 'char')	
				{
					if (validateStrings(oPrimaryDataObject,szCharList) == 0)
						return false;
				}
				else if (szType == 'length')	
				{
					if (ValidateMultiSelection(oPrimaryDataObject,iMaxChar) == 0)
						return false;
				}
				
				if (oSrcObject.options.length >= iMaxEntries)
				{
					alert('reached limit');
					return;
				}
				
				if (szSecondaryObj != '')
				{
					oSecondaryObject = findObject(szSecondaryObj);
					if (oSecondaryObject && szSecondaryDataField != '')
					{
						oSecondaryDataObject = findObject(szSecondaryDataField);
						if (oSecondaryDataObject)
							szSecondaryData = oSecondaryDataObject.value;
					}
				}
				
				if (oSrcObject)
				{
				
					oPrimaryDataObject.value = '';
				
					var oNewItem = new Option();
					//Make this object the same as
					oNewItem.value = szPrimaryData;
					oNewItem.text = szPrimaryData;
					oSrcObject.options[oSrcObject.options.length] = oNewItem;
					
					//Get Secondary Object and get the selected item
						if (oSecondaryObject)
						{
						var oNewItemSecondary = new Option();
						//Make this object the same as
						oNewItemSecondary.value = szSecondaryData;
						oNewItemSecondary.text = szSecondaryData;
						oSecondaryObject.options[oSecondaryObject.options.length] = oNewItemSecondary;
						}						
					
					oPrimaryDataObject.value = '';
					
				}
				else
					return false;				
			}		
		

	function GetCookie() {
			var strName = "varCook";
			if (document.cookie.indexOf(strName) == -1)
			{
					alert("Cookies ARE NOT currently enabled!\nPlease read below on this page for information on how to enable cookies.");
					return false;
			}
			else
			{
			cookieStart = document.cookie.indexOf(strName);
			cookieValStart = (document.cookie.indexOf("=", cookieStart) + 1);
			cookieValEnd = document.cookie.indexOf(";", cookieStart);
			if (cookieValEnd == -1)
					{
					cookieValEnd = document.cookie.length;
					}
			cookieValue = document.cookie.substring(cookieValStart, cookieValEnd);
			}
			if (cookieValue = "True")
			{
					return ("True");
			}
	}

	function SetCookie(name,value,expires,path,domain,secure)
	{
			var strDNS = GetDNS();
			document.cookie = name + "=" +escape(value) +
			( (expires) ? ";expires=" + expires.toGMTString() + 1000*60*20 : "") +
			( (path) ? ";path=" + path : "") +
			//( (domain) ? ";domain=" + domain : "") +
			( (domain) ? ";domain=" + strDNS : "") +
			( (secure) ? ";secure" : "");
				return true
	}

	function GetDNS()
	{
			cookieDomain = document.location.hostname;
	}

	function CheckCookiesEnabled()
	{
			SetCookie('varCook','True','','/','','');
			if (GetCookie() == "True"){
					alert('Cookies are enabled!');
			} else {
					return false;
			}
	}


//---------------------------------------------------------
//String Methods Added
//---------------------------------------------------------

String.prototype.trim = function() {
	return this.replace(/^\s+|\s+$/g,"");
}
String.prototype.ltrim = function() {
	return this.replace(/^\s+/,"");
}
String.prototype.rtrim = function() {
	return this.replace(/\s+$/,"");
}			
