
	var oPopup = window.createPopup();
	var oLastFunctionControl;
	var CatchContextMenu=false;
	var clickX;
	var clickY;

	document.oncontextmenu = PageContextMenu;
	
	String.prototype.Decode = function () { return UnencodeHTML(this);}
	String.prototype.Encode = function () {	return EncodeHTML(this);}

// Object - Encapsulates the entire pages controls

	function PageControls() {
		this.AutoInstantiate = false;					// Automatically Instantiate all objects
	
		this.TargetPage = document;
		
		
		
		if (PageControls.arguments.length) {
			
			if (PageControls.arguments[0] != null && PageControls.arguments[0] != '') {
				this.TargetPage = PageControls.arguments[0];
			}
			
		}
		
		if (PageControls.arguments.length == 1) { oTargetPage = PageControls.arguments[0];}
	
		this.Controls = function(Index) {
			
			switch (this.Controls.arguments.length) {
				case 0:
					return null;
					break;
					
				case 1:
					return GetPageControlByIndex(this.Controls.arguments[0], "", this.AutoInstantiate, this.TargetPage);
					break;
					
				case 2:
					return GetPageControlByIndex(this.Controls.arguments[0], this.Controls.arguments[1], this.AutoInstantiate, this.TargetPage);
					break;
					
				case 3: 
					return GetPageControlByIndex(this.Controls.arguments[0], this.Controls.arguments[1], this.Controls.arguments[2], this.TargetPage);
					break;
			}
			
		}
	
	
		this.Disable = function() {
			if (this.Disable.arguments.length) {
				SetPageControlsDisabled(this.Disable.arguments[0]);
			} else {
				SetPageControlsDisabled(true);
			}
		}
		
		
		this.Encode = function() {
			if (this.Encode.arguments.length) {
				
				if (this.Encode.arguments[0]) {
					EncodePageControls();
				} else {
					UnencodePageControls();
				}	
				
			} else {
				EncodePageControls();
			}
		}
		
		
		this.Show = function() {
			SetPageControlsInvisible(false);
		}
		
		
		this.Hide = function() {
			SetPageControlsInvisible();
		}
		
		
		this.Count = function() { return PageControls_Count(this.Count.arguments) } 
	}


	function PageControls_Count() {
		var o = document.getElementsByTagName('div');
		var cnt = 0;
			
		for (var i = 0; i < o.length; i++) {
			if (o[i].ObjectType == undefined) continue;		//ignore non controls

			if (PageControls_Count.arguments[0].length == 0) {	// no filter
				cnt++;
			} else {
				
				for (var ii = 0; ii < PageControls_Count.arguments[0].length; ii++)
				{
					if (o[i].ObjectType == PageControls_Count.arguments[0][ii])
					{
						cnt++;
						break;
					}
				}
			}
		}
		
		return cnt;
	}


	
	function CreateControl(o, Index) {
		var oCtl = "";
		
		switch (typeof(o)) {
			case "string":
				oCtl = document.all[sCtl];
				if (oCtl == undefined) {
					alert("Control [" + sCtl + "] was unable to be found on the current document");
					return null;
				}
				
				if (oCtl.length != undefined) {
					if (Index != undefined && !isNaN(Index)) {
						oCtl = oCtl[Index];							// Return the passed in control Index
					} else {
						oCtl = oCtl[0];								// return default 1st control
					} 
				}
				 
				break;
				
			case "object":
				if (oCtl.ObjectType == undefined) {
					alert("Invalid object type passed to CreateControl(" + o.toString() + ")");
					return null;
				}
				break;
				
			default:
				alert("Improper variable type passed to CreateControl(" + o.toString() + ")");
				return null;
				break;
		}

		
		
		

	}


	function GetPageControlByIndex(Index, Filter, ReturnInstantiated, TargetPage) {
	
		var o = TargetPage.getElementsByTagName('div');
		var oCtl;
		var cnt = -1;
		
		
			
		if (parseInt(Index,10).toString() == "NaN") {
		
			if (Index.substr(0,3).toUpperCase() == "CTL") {
				oCtl = o[Index];
			} else {
				oCtl = o['ctl' + Index];
			}
			

			
			if (oCtl == undefined || oCtl == null) {
				alert("The control you have requested [" + Index + "] failed to be found");
				return null;
			}
		
			
		
			if (ReturnInstantiated == true) {
				switch (oCtl.ObjectType) {
					case "TEXTCONTROL":
						return new TextControl(oCtl);
						break;
					
					case "TEXTAREACONTROL":
						return new TextAreaControl(oCtl);
						break;
						
					case "MULTIOPTIONCONTROL":
						return new MultiOptionControl(oCtl);
						break;
						
					case "LISTCONTROL":
						return new ListControl(oCtl);
						break;
						
					case "LABELCONTROL":
						return new LabelControl(oCtl);
						break;
						
					case "MULTILINETEXTCONTROL":
						return new MultiLineControl(oCtl);
						break;
						
					case "TABCONTROL":
						return new TabControl(oCtl);
						break;
						
					case "TABSTRIPCONTROL":
						return new TabStripControl(oCtl);
						break;
				
					case "TOOLBARCONTROL":
						return new ToolbarControl(oCtl);
						break;
						
					case "TREEVIEWCONTROL":
						return new TreeviewControl(oCtl);
						break;
				}
				
			} else {
				
				return oCtl;
			}
		}
		
		if (Filter == "-1" || Filter == undefined || Filter == null) Filter = "";

		for (var i = 0; i < o.length; i++)
		{
			if (o[i].ObjectType == undefined || o[i].ObjectType == null) continue;
			
			if (Filter.length) {
				if (Filter == o[i].ObjectType) {
					cnt++;
				} else {
					continue;
				}
			} else {
				cnt++;
			}
			
			if (cnt == Index) {
				oCtl = o[i];
				
				if (ReturnInstantiated == true) {
					switch (oCtl.ObjectType) {
						case "TEXTCONTROL":
							return new TextControl(oCtl);
							break;
						
						case "TEXTAREACONTROL":
							return new TextAreaControl(oCtl);
							break;
							
						case "MULTIOPTIONCONTROL":
							return new MultiOptionControl(oCtl);
							break;
							
						case "LISTCONTROL":
							return new ListControl(oCtl);
							break;
							
						case "LABELCONTROL":
							return new LabelControl(oCtl);
							break;
							
						case "MULTILINECONTROL":
							return new MultiLineControl(oCtl);
							break;
							
						case "TABCONTROL":
							return new TabControl(oCtl);
							break;
							
						case "TABSTRIPCONTROL":
							return new TabStripControl(oCtl);
							break;
					}
					
				} else {
					
					return oCtl;
				}
			}
		}
		
		return null;
	}




	function PageContextMenu(e) {
	
		if (CatchContextMenu) {
			// Show a right click menu instead...
			CatchContextMenu = false;
			return false;
		} else {
			CatchContextMenu = false;
			return true;
		} 

	}

	
	
	function SetControlInvisible(oCtl) {
		
		switch(oCtl.ObjectType)
		{
			case "TEXTCONTROL":
			case "TEXTAREACONTROL":
			case "MULTIOPTIONCONTROL":
			case "MULTILINETEXTCONTROL":
			case "LISTCONTROL":
			case "LABELCONTROL":
			case "TOOLBARCONTROL":
			case "TREEVIEW":
			case "TABSTRIPCONTROL":
			case "BUTTONCONTROL":
			default:	
				if (SetControlInvisible.arguments.length > 1) {
					
					if (SetControlInvisible.arguments[1] == true) {
						oCtl.style.visibility = "hidden";	
					} else {
						oCtl.style.visibility = "visible";
					}
					
				} else {
					oCtl.style.visibility = "hidden";
				}
				
				break;
		}
	}
	
	
	
	function SetPageControlsInvisible() {
		var o = document.getElementsByTagName('div');
		var val;
		
		if (SetPageControlsInvisible.arguments.length) {
			val = SetPageControlsInvisible.arguments[0];
		} else {
			val = true;
		}
		
		
		for (var i = 0; i < o.length; i++) {
			if (o[i].ObjectType == undefined) continue;		//ignore non controls
		
			SetControlInvisible(o[i], val);	// set each control disabled/enabled
		}
	}
	
	
	
	function SetControlDisable(oCtl) {
		if (oCtl.tagName != "DIV" || oCtl.ObjectType == "undefined") {
			alert("invalid object type passed to disable");
			return;
		} else {
			//nothing
		}
		
		var oInput;
		var oInputRow;
		var oFuncButton;
		var ChildCtls;
		var val;
		
		if (SetControlDisable.arguments.length > 1) {
			val = SetControlDisable.arguments[1];
		} else {
			val = true;
		}
		
		
		
		switch(oCtl.ObjectType)
		{
			case "TEXTCONTROL":
				oInput = oCtl.children[0].children[0].children[1].children[1].children[0];
				oFuncButton =  oCtl.children[0].children[0].children[1].children[2].children[0];
				
				oCtl.disabled = val;
				oInput.disabled = val;
				oFuncButton.disabled = val;
				
				TC_CtlMouseOut(oCtl);
				TC_InputMouseOut(oInput);
				break;
				
			case "TEXTAREACONTROL":
				oInput = oCtl.children[0].children[0].children[1].children[1].children[0];
				
				oCtl.disabled = val;
				oInput.disabled = val;
				
				TA_CtlMouseOut(oCtl);
				TA_InputMouseOut(oInput);
				
				break;
				
			case "MULTIOPTIONCONTROL":
				ChildCtls = oCtl.children[0].children[0].children;
				
				MOC_CtlMouseOut(oCtl);
				oCtl.disabled = val;
				
				for(var i = 1; i < ChildCtls.length; i++)
				{
					oInputRow = ChildCtls[i];
					oInputRow.disabled = val;
					
					oInput = oInputRow.children[0].children[0];
					oInput.disabled = val;
				}
				
				break;
				
			case "MULTILINETEXTCONTROL":
				ChildCtls = oCtl.children[0].children[0].children;
				
				MOC_CtlMouseOut(oCtl);
				oCtl.disabled = val;
				
				for (var i = 1; i < ChildCtls.length; i++)
				{
					oInputRow = ChildCtls[i];
					oInputRow.disabled = val;
					
					oInput = oInputRow.children[1].children[0];
					oInput.disabled = val;
				}
				
				break;
				
			case "LISTCONTROL":
				var oCtlList = new ListControl(oCtl);
				
				for (var i = 0; i < oCtlList.List.Count(); i++) {
					try {
						oCtlList.Rows(i).disabled = val;
					} catch (e) {}
				}
				
				oCtl.disabled = val;
			
				break;
			
			case "TABCONTROL":
				var oCtlTab = new TabControl(oCtl);
				
				//for (var i = 0; i < 
				
				break;
				
			case "TREEVIEWCONTROL":
				var oJSCtl = oCtl.JSControl;
				oCtl.Disabled = 'true'; 
				
			case "LABELCONTROL":
				oCtl.children[0].children[0].children[0].children[0].disabled = val;
					
			case "BUTTONCONTROL2":
				oCtl.disabled = val;
				return;
													
			default:		
				oCtl.disabled = val;
				//unhandled
				return;
		}
		
	}
	
	
	function SetPageControlsDisabled() {
		var o = document.getElementsByTagName('div');
		var val;
		
		if (SetPageControlsDisabled.arguments.length) {
			val = SetPageControlsDisabled.arguments[0];
		} else {
			val = true;
		}
		
		for (var i = 0; i < o.length; i++) {
			if (o[i].tagName != "DIV" || o[i].ObjectType == undefined) continue;
		
			SetControlDisable(o[i], val);	// set each control disabled/enabled
		}
	}
	
	
	function FieldListDownloadComplete(src) {
		var oInput = oLastFunctionControl;
		var oInputTable = oInput.offsetParent.offsetParent;
		var iStart = 0;
		var iEnd = 0;
		var iListCount = 0;
		var ListHeight = 0;
		var w=0;
		var refObject;
		var iTop=0;
		
		
		oPopup = window.createPopup();
		oPopup.document.innerHTML = "";
		oPopup.document.write(src);
		
		iStart = src.indexOf("<LISTCOUNT Count=") + 17;
		iEnd = src.indexOf(" ",iStart);
		
		iListCount = parseInt(Mid(src,iStart, iEnd - iStart),10);
				
		if (iListCount <= 10) {
			ListHeight = (iListCount * 17) + 2
		} else if (iListCount > 10) {
			ListHeight = 170 + 2;
		}
	
		if (oInput.parentElement.parentElement.children[0].style.display == "block")
		{
			// Side Caption
			w = parseInt(oInputTable.style.width,10);
			
			refObject = oInput.parentElement.parentElement.children[0];
			iTop = 20;
		} else {
			// Top Caption
			w = parseInt(oInput.style.width,10) + 22;
			
			refObject = oInput;
			iTop = 19;
		}
		
				
		oPopup.show(-1,iTop,w,ListHeight,refObject);
	}
	
	
	function DatePickerDownloadComplete(src) {
		var oInput = oLastFunctionControl;
		var x = (parseInt(oInput.style.width) + 18);
		var y = 20;
		
		//center the calendar
		if (x > 239) {
			x = (x - 239) / 2;
		} else {
			x = ((239 - x) / 2) * -1;
		}
		
		oPopup = window.createPopup();
		oPopup.document.innerHTML = "";
		oPopup.document.write(src);
		
		oPopup.show(x,y,238,217,oInput);
	}
	
	
	function CaptionPopupDownloadComplete(src) {		
		oPopup = window.createPopup();
		oPopup.document.innerHTML = "";
		oPopup.document.write(src);
		
		//164 width
		// 65 height
		oPopup.show(clickX,clickY,160,80);
	}
	
		
	
	function SetFieldValue(s) {	
		if (SetFieldValue.arguments.length == 1) {
			oLastFunctionControl.value = s;
		}
		
		oLastFunctionControl.fireEvent('onchange');
		
		oPopup.hide();
	}
	
	
	function OpenSearchDialog(sObject, sField, sOwner, uSearchType) {
		oPopup.hide();
		
		var SearchType = (uSearchType == undefined) ? 'SEARCH' : uSearchType; 
		
		if (sObject == "COMPOSITE" && sField == "CONTACTFULLNAME") {
			sObject = "CONTACT";
			sField  = "LASTNAME"; 
		}
		
		var addrType = "";
		var addrOwner = (sOwner == undefined) ? "" : sOwner;
		
		switch (sObject.toUpperCase())
		{
			case "STREET":
			case "POSTAL":
			case "HOME":
				addrType = sObject;
				sObject = "ADDRESSES"
				break;
		}
		
		var url="";
		url = "/CTWebControls/Additional/searchpopup.asp?object=" + sObject + "&field=" + sField + "&AddressType=" + addrType + "&Owner=" + sOwner + "&SearchType=" + SearchType;
		
		newDialog(url, 600, 100);	
	}
	
	
	function OpenEmailDialog(sSelectedEmail) {
	    var sURL = '/EmailRecipientInterface.asp' + ( ApplicationObjects != null ? '?CompanyID=' + ApplicationObjects.UserForm.CompanyID : '' ) + '&InitialSelectedEmail=' + escape(sSelectedEmail);
	    
		newDialog(sURL,825,575);
	}
	
	
	function OpenChangeFieldNameDialog(sObject, sField) {
		var oInput = oLastFunctionControl;
		var oCtl = oInput.offsetParent.offsetParent.offsetParent;
		var s="";
		var url="";
		
		oPopup.hide();
		
		switch(sObject)
		{
			case "STREET":
				s = "ADDRESS";
				break;
				
			case "POSTAL":
				s = "POSTADDR";
				break;
				
			case "HOME":
				s = "HOMEADDR";
				break;
				
			case "CONTACT":
			case "COMPANY":
				if (sField.substring(0,4) == "DATE")
				{
					//Date fields need to be changed to remove 0's
					sField = sField.replace('0','');
				}
				break;
		}
		
		// if sObject was caught as an address field
		if (s.length) {
			if (oCtl.ControlType == "Contact") {
				s = "CONTACT" + s;
			} else {
				s = "COMPANY" + s;
			}
			
			sObject = "COMPOSITE";
			sField = s;
		}
		
		
		url = "/FieldNames.asp?object=" + sObject + "&field=" + sField;
		newDialog(url, 450, 500);
	}
	
	
	function OpenChangeFieldListDialog(sObject, sField) {
		oPopup.hide();
		
		var url="/fieldlists.asp?belongsto=" + sObject + "&fieldid=" + sField;
		
		newDialog(url, 340, 360);
	}
	
	
	function OpenPostcodesStateDialog(sObject,sType) {
		var url = '/PostcoderUI.asp?Action=ShowStates&object=' + sObject + '&type=' + sType;
		
		newDialog(url, 250, 255);
	}
	
	function OpenPostcodeDialog(sObject,sType) {
		var url = '/PostcoderUI.asp?object=' + sObject + '&type=' + sType;
		
		newDialog(url, 450, 300);
	}
	
	
	function loadNextPage() {
		// called when the page is finished loading to trigger
		// the loading of the next frame...
		window.top.frames['tabframe'].location.href = '/tabbar.asp';
	}
	
	
	function GetParentControl(o, ObjectType) {
		var i = 0;
		var oParent = o.parentElement;
		if (ObjectType == undefined) ObjectType = "";
		
		
		
		if (o.ObjectType != undefined && (o.ObjectType == ObjectType || ObjectType == "")) return o;
		
		while (oParent != undefined )
		{
			if (oParent.ObjectType != undefined) {
				if (ObjectType == "") {
					return oParent;
				} else if(ObjectType == oParent.ObjectType) {
					return oParent;
				}
			}
			
			i++;
			oParent = oParent.parentElement;
		}
		
		return oParent;
	}
	
	function GetParentJSControl(o, ObjectType) {
		var oCtl = GetParentControl(o, ObjectType);
		if (oCtl == null) { return null } else { return oCtl.JSControl } 
	}


	function IndexAvailableControls(oCmb) {
		//Function is called off page by the toolbar on the companies 
		//tab to get the available controls on the form...
		
		// Allowed to pass an optional argument "document" which will have its
		// controls indexed.  Otherwise function assumes you mean the local document.
		var oCtl;
		var oCaption;
		var j=0;
		var sClass="";
		var oDoc;
		
		if (IndexAvailableControls.arguments.length == 2) 
		{ 
			oDoc = IndexAvailableControls.arguments[1]; 
		} else { 
			oDoc = document;
		}
		
		oDoc = oDoc.getElementsByTagName('div')
		
		for(var i=0; i < oDoc.length; i++) {
			oCtl = oDoc[i];
						
			//Check if we've found a control...
			if (oCtl.tagName == "DIV" && ((oCtl.ObjectType == "TEXTCONTROL") || (oCtl.ObjectType == "TEXTAREACONTROL"))) {
				
				if (oCtl.ControlDataObject == "CONTACT" || oCtl.ControlDataObject == "COMPANY" || oCtl.ControlDataObject == "COMPOSITE")
				{
				} else {
					// Skip Address fields...
					continue;
				}
				
				var sObject = oCtl.ControlDataObject;
				var sField = oCtl.ControlDataField;
				var bCreateDefault = true;
				
				
				// Create Name Fields...
				if (sObject == "COMPOSITE" && sField == "CONTACTFULLNAME") {
					bCreateDefault = false;
					
					// First Name
					var oNewOpt = new Option("First Name");
					oNewOpt.object = "CONTACT";
					oNewOpt.fieldid = "FIRSTNAME";
					oCmb.options[oCmb.options.length] = oNewOpt;
					
					// Middles Names
					oNewOpt = new Option("Middle Names");
					oNewOpt.object = "CONTACT";
					oNewOpt.fieldid = "MIDDLENAMES";
					oCmb.options[oCmb.options.length] = oNewOpt;
					
					// Last Name
					oNewOpt = new Option("Last Name");
					oNewOpt.object = "CONTACT";
					oNewOpt.fieldid = "LASTNAME";
					oCmb.options[oCmb.options.length] = oNewOpt;
					
					// Suffix
					oNewOpt = new Option("Suffix");
					oNewOpt.object = "CONTACT";
					oNewOpt.fieldid = "SUFFIX";
					oCmb.options[oCmb.options.length] = oNewOpt;
					
				}
	
	
				// Create default entry (handles most fields)
				if (bCreateDefault) {		
					oCaption = oCtl.children[0].children[0].children[0].children[0];

					if (oCaption.innerText.length == 0) continue;
									
					var oNewOpt = new Option(oCaption.innerText);
					
					oNewOpt.object = sObject;
					oNewOpt.fieldid = sField;
					oCmb.options[oCmb.options.length] = oNewOpt;
				}
			}
		}
		
				
		var myArray = new Array(oCmb.options.length);

		for (var i = 0; i < myArray.length; i++)
		{
			var oOption = oCmb.options[i];
			
			myArray[i]    = new Array();							  
			myArray[i][0] = oOption.text;			// return value
			myArray[i][1] = oOption.fieldid;		//
			myArray[i][2] = oOption.object;			//
			myArray[i][3] = oOption.text;			// display text
			myArray[i][4] = oOption.className;
			myArray[i][5] = oOption.style.color;			
		}

		myArray.sort();	 
	 
		for (var i = 0; i < myArray.length; i++)
		{
			oCmb.options[i] = null;
			var option = new Option();
			
			option.object	   = myArray[i][4];
			
			option.value	   = myArray[i][0];
			option.fieldid	   = myArray[i][1];
			option.object      = myArray[i][2]
			option.text        = myArray[i][0];
			option.className   = myArray[i][4];
			option.style.color = myArray[i][5];		
			 
			if (i % 2 == 0)
			{
				option.className = 'AltItem';			
			}
			else
			{
				option.className = 'Item';			
			}
			
		
			// ** Add the option
			oCmb.options[i] = option;				
		}
		
	}	
	
	
	function ForceInputMask(oInput) {
		var mask="";
		var oCtl; 
		var s = oInput.value;
		var max=0;
		var sout="";
		var lastmaskpos=-1;
		var maxusedchars=-1;
		var curPos=-1;
		
		
		
		s = s.replace(" ","");
		
		if (s.length == 0) return "";												// return if a string isnt passed
	
		// expect the mask to be either passed as another argument
		// or if not, to be read from the parent control.
		if (ForceInputMask.arguments.length > 1) {									// check to see whether the mask was passed into the function
			mask = ForceInputMask.arguments[1];
		} else {																	// if not try extract it from the control
			oCtl = oInput.offsetParent.offsetParent.offsetParent;
			mask = oCtl.InputMask;
		}
		
		
		if (mask.length == 0) { return oInput.value }								// return if a mask isnt found
		
		
		
		// get the last position in the mask we're allowed to check up to
		for (var i = 0; i < mask.length; i++) 
		{
			if (mask.charCodeAt(i) != 32) {
				maxusedchars++;
				
				if (maxusedchars == s.length) { 
					lastmaskpos = i;
					break;
				}
			}
		}
		
		
		if (lastmaskpos == -1) { lastmaskpos = mask.length } 
		
				
		for (var i = 0; i < lastmaskpos; i++) 
		{
		
			if (mask.charCodeAt(i) == 32) {
				sout = sout + " ";
			} else {
				curPos++;
				sout = sout + s.substr(curPos, 1);
			}
			
		}

		return sout; 
	}
	
	
	
	function CheckContactName(oInput) {
		var oCtl = oInput.parentElement.parentElement.parentElement.parentElement.parentElement;		
		var oCtlHiddens = oCtl.children[1];
		var sName = oInput.value;
		var Names;
		var origName = oCtlHiddens.children[5].value;
	
		if (sName == origName) { 
			return;
		} 
			
		names = sName.split(" ");
			
		oCtlHiddens.children[0].value = "";		//contact fname
		oCtlHiddens.children[1].value = "";		//contact lname
		oCtlHiddens.children[2].value = "";		//contact mnames
		oCtlHiddens.children[3].value = "";		//contact suffix
		
		
		switch (names.length)
		{
			case 0:
				break;
				
			case 1:
				oCtlHiddens.children[0].value = Trim(names[0]);
				break;
			
			case 2:
				oCtlHiddens.children[0].value = Trim(names[0]);
				oCtlHiddens.children[1].value = Trim(names[1]);
				break;
			
			case 3:
				oCtlHiddens.children[0].value = Trim(names[0]);
				oCtlHiddens.children[1].value = Trim(names[2]);
				oCtlHiddens.children[2].value = Trim(names[1]);
				break;
				
			case 4:
				oCtlHiddens.children[0].value = Trim(names[0]);
				oCtlHiddens.children[1].value = Trim(names[2]);
				oCtlHiddens.children[2].value = Trim(names[1]);
				oCtlHiddens.children[3].value = Trim(names[3]);
				break;
				
			case 5:
				oCtlHiddens.children[0].value = Trim(names[0]);
				oCtlHiddens.children[1].value = Trim(names[3]);
				oCtlHiddens.children[2].value = Trim(names[1] + " " + names[2]);
				oCtlHiddens.children[3].value = Trim(names[4]);
				break;
				
			default:
				break;
		}
		

		oCtlHiddens.children[4].value = "True";
		oCtlHiddens.children[5].value = sName;

		//window.parent.frames.menutoolbar.SelectMenuItem("SaveCompany");

	}
	
	
	
	function Mid(str, start, len)
        {
                // bounds check
                if (start < 0 || len < 0) return "";

                var iEnd, iLen = String(str).length;
                if (start + len > iLen)
                        iEnd = iLen;
                else
                        iEnd = start + len;

                return String(str).substring(start,iEnd);
        }
     
        
    function Trim(str) {
		var iStart=0;
		var iEnd=0;
		str = str.toString();
		
		iStart = -1;
		
		
		for(var i = 0; i < str.length; i++)
		{
			if(str.charCodeAt(i) != 32) {
				iStart = i;
				break;
			}
		}
		
		
		if (iStart != -1) { str = Mid(str, iStart, str.length - iStart) }
		
		
		iEnd = str.length - 1;
		for(var i = str.length - 1; i > -1; i--)
		{
			if(str.charCodeAt(i) != 32) {
				iEnd = i - 1;
				break;
			}
		}
		
		if (iEnd != str.length) { Mid(str, 0, iEnd) } 
		
		return str;
    }    

	
	
	var hD="0123456789ABCDEF";
	
	function IntToHex(d) {
		var h = hD.substr(d&15,1);
		
		while(d>15) 
		{
			d >>= 4;
			h=hD.substr(d&15,1)+h 
		}
	
		//make sure it returns a double digit hex number
		if (h.toString().length == 1) h = "0" + h;
		
		return h;
	}
	
	
	function HexToInt(h) { return parseInt(h,16) } 
	
	



	function EncodeControl(oCtl) {
		var oInput;
				
		switch (oCtl.ObjectType)
		{
			case "TEXTCONTROL":
				oInput = oCtl.children[0].children[0].children[1].children[1].children[0];
				oInput.value = EncodeHTML(oInput.value);		
				break;
				
			case "MULTILINETEXTCONTROL":
				for (var i = 1; i <= oCtl.LineCount; i++)
				{
					oInput = oCtl.children[0].children[0].children[i].children[1].children[0];
					oInput.value = EncodeHTML(oInput.value);
				}
				break;
				
			case "TEXTAREACONTROL":
				oInput = oCtl.children[0].children[0].children[1].children[1].children[0];
				oInput.value = EncodeHTML(oInput.value);
				break;
				
				
			case "LISTCONTROL":
				var oListCache = oCtl.children[2];
				var sListCache = oListCache.innerText;
				var oInput = oCtl.children[3];
				var aData = sListCache.split(",");
				var ColCount = parseInt(oCtl.ColumnCount,10);
				var RowCount = 0;
				var SelectedIndex = -1;
				sListCache = "";
							
				
								
				switch (oCtl.PostBack)
				{
					case "NONE":
						oInput.value = "";
						return;
						break;
						
						
					case "ALL":
						SelectedIndex = parseInt(oCtl.SelectedIndex,10);
						
						if (oListCache.innerText.length == 0)  
						{
							oInput.value = "";
							return;
						}

						
						RowCount = (aData.length) / ColCount; 
						
						for (var i = 0; i < RowCount; i++)
						{
							var sRow = "";
							
							for (var j = 0; j < ColCount; j++)
								sRow += ',' + aData[(i * ColCount) + j];
							
							sListCache += "#" + sRow.substr(1);
						}
						
						oInput.value = sListCache.substr(1);
						return;
						break;
						
						
					case "SELECTED":
						SelectedIndex = oCtl.SelectedIndex.toString();
					
						if (SelectedIndex == "-1") {
							oInput.value = "";
							return;
						} 
						
						var Indexs = SelectedIndex.split(",");
						
						for (var i = 0; i < Indexs.length; i++) {
							var StartIndex = parseInt(Indexs[i]) * ColCount;
							var sRow = "";
							
							for (var j = 0; j < ColCount; j++) {
								sRow += ',' + aData[StartIndex + j];
							}
						
							sListCache += "#" + sRow.substr(1);
						}
						
						oInput.value = sListCache.substr(1);
						
						return;
						break;
				
				
			default:
				//unhandled type
				return;
			}
		}
	}
	
	
	
	function UnencodeControl(oCtl) {
		var oInput;
				
		switch (oCtl.ObjectType)
		{
			case "TEXTCONTROL":
				oInput = oCtl.children[0].children[0].children[1].children[1].children[0];
				oInput.value = UnencodeHTML(oInput.value);		
				break;
				
			case "MULTILINECONTROL":
				for (var i = 1; i <= oCtl.LineCount; i++)
				{
					oInput = oCtl.children[0].children[0].children[i].children[0].children[0];
					oInput.value = UnencodeHTML(oInput.value);
				}
				break;
				
			case "TEXTAREACONTROL":
				oInput = oCtl.children[0].children[0].children[1].children[1].children[0];
				oInput.value = UnencodeHTML(oInput.value);
				break;
								
			default:
				//unhandled type
				return;
		}
	
	}
	


	function EncodePageControls() {
		var da = document.getElementsByTagName('div');
		
		for (var i = 0; i < da.length; i++)
		{
			if (da[i].ObjectType == undefined) continue;
		
			EncodeControl(da[i]);
		}
	}
	
	
	
	function UnencodePageControls() {
		var da = document.getElementsByTagName('div');
		
		for (var i = 0; i < da.length; i++)
		{
			if (da[i].ObjectType == undefined) continue;
		
			UnencodeControl(da[i]);
		}
	}