				
				var W3CDOM = (document.createElement && document.getElementsByTagName);
				
				
				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];
				  }
				}
				
				
				var mouseOvers = new Array();
				var mouseOuts = new Array();
				
				var hasFocus = new Array();
				
				
				function initButton()
				{
					if (!W3CDOM) return;
						
						j = 0;
					
							var imgs = document.getElementsByTagName('img');
								for (var i=0;i < imgs.length;i++)
									{
											imgname = imgs[i].src;
																		
											if (imgname.indexOf( 'ISES_Button') != -1)
											{
												imgs[i].onmouseover = mouseEnter;
												imgs[i].onmouseout = mouseExit;	
												
												imgs[i].onfocus = focusEnter;
												imgs[i].onblur = focusExit;	
												
												
												var suffix = imgs[i].src.substring(imgs[i].src.lastIndexOf('.'));
												mouseOuts[j] = new Image();
												mouseOuts[j].src = imgs[i].src;
												mouseOvers[j] = new Image();
												mouseOvers[j].src = imgs[i].src.substring(0,imgs[i].src.lastIndexOf('.')) + "Hi" + suffix;
												
												imgs[i].number = j;
												hasFocus[j] = 0;
												j++;								
											}							
									}
									
							var inputs = document.getElementsByTagName('input');
							
								for (var i=0;i < inputs.length;i++)
									{
											if (inputs[i].type != 'image')
												continue;
											imgname = inputs[i].src;							
																		
											if (imgname.indexOf( 'ISES_Button') != -1)
											{
												inputs[i].onmouseover = mouseEnter;
												inputs[i].onmouseout = mouseExit;	
												
												inputs[i].onfocus = focusEnter;
												inputs[i].onblur  = focusExit;	
											
											
												var suffix = inputs[i].src.substring(inputs[i].src.lastIndexOf('.'));
												mouseOuts[j] = new Image();
												mouseOuts[j].src = inputs[i].src;
												mouseOvers[j] = new Image();
												mouseOvers[j].src = inputs[i].src.substring(0,inputs[i].src.lastIndexOf('.')) + "Hi" + suffix;
												
												inputs[i].number = j;
												
												hasFocus[j] = 0;
												j++;
											}
									}					
				}
				
				function mouseEnter()
				{
					if (hasFocus[this.number] == 1)
						return;
					this.src = mouseOvers[this.number].src;
				}
					
				function mouseExit()
				{
					if (hasFocus[this.number] == 1)
						return;
					this.src =	mouseOuts[this.number].src;
				}
	
				function focusEnter()
				{
					hasFocus[this.number] = 1;
					this.src = mouseOvers[this.number].src;
				}
					
				function focusExit()
				{
					hasFocus[this.number] = 0;
					this.src =	mouseOuts[this.number].src;
				}
										
		
				var    ocTrigger     = {};
				var    ocTriggerTable= {};
				var	   ocIndicator   = {};
				var    ocIndElement  = {};
				var    openClose     = {};
				
				var    ocContains    = {};
					
				var    openImgLo	 = {};
				var    openImgHi	 = {};
				var    closeImgLo	 = {};
				var    closeImgHi	 = {};								
											
				
				
				function initOcTriggers()
				{
					for (var n in ocTrigger)
					{
						var trigger = new getObj( n )
						{			
							trigger.obj.onclick		= triggerOcDiv;
							if (!openClose[n] == null)
								openClose[n] = true;  // If the calling page did not define, we assume that the section should be open
													  // This will happen on JS-less browsers in any case.			
							if (ocIndicator[n])
							{
								var img = new getObj( ocIndicator[n] );
								ocIndElement[n] = img.obj;		 
								if (img)
								{				
									setupOpenCloseImages( ocIndicator[n], img.obj.src );
									img.obj.onclick   = triggerOcIndicator;
									img.obj.triggerid = n;
								}
							}
							
							openCloseSections(n, openClose[n], false);			    
						}
					}
		
					for (var n in ocTriggerTable)
					{
						var trigger = new getObj( n );
		
						trigger.obj.onclick		= triggerOcTable;
						if (!openClose[n] == null)
							openClose[n] = true;  // If the calling page did not define, we assume that the section should be open
													  // This will happen on JS-less browsers in any case.								
						
						openCloseRows(n, openClose[n], false);
					}
				}
				
				
				function setOpenPic( element )
				{
					n       = element.id;
					number  = element.number;
						
					if (n)
					{
				//		alert( "Imag " + n + " : " + openImgLo[n].src + "  " + openImgHi[n].src );
						element.src			= openImgLo[n].src;		
						
						if (element.number)
						{
							mouseOvers[number]	= openImgHi[n];
							mouseOuts[number]	= openImgLo[n];
						}
					}
				}
				
				function setClosePic( element )
				{
					n       = element.id;
					number  = element.number;
					
					
					if (n)
					{
				//		alert( "Imag " + n + " : " + closeImgLo[n].src + "  " + closeImgHi[n].src );
						element.src			= closeImgLo[n].src;
						if (element.number)
						{
							mouseOvers[number]	= closeImgHi[n];
							mouseOuts[number]	= closeImgLo[n];
						}
					}
				}
				
				function setIndicator( name, element )
				{
						state = openClose[name];
						if (!state)
							setOpenPic( ocIndElement[name] );
						else
							setClosePic( ocIndElement[name] );				
				}
				
				
				function setupOpenCloseImages( name, imgName )
				{
					// Always use the closed image as the base
					imgName = imgName.replace( /ISES_Button_Close/, "ISES_Button_Open" );
				
					prefix = imgName.substring( 0, imgName.indexOf( 'ISES_Button_Open' ));
					suffix = imgName.substring(imgName.lastIndexOf('.'));
					middle = imgName.substring( prefix.length + 16, imgName.lastIndexOf('.') );
					
					openImgHi[name] = new Image();
					openImgHi[name].src = prefix + "ISES_Button_Open" + middle + "Hi" + suffix;
				
					openImgLo[name] = new Image();
					openImgLo[name].src = prefix + "ISES_Button_Open" + middle + suffix;
				
					closeImgHi[name] = new Image();
					closeImgHi[name].src = prefix + "ISES_Button_Close" + middle + "Hi" + suffix;
				
					closeImgLo[name] = new Image();
					closeImgLo[name].src = prefix + "ISES_Button_Close" + middle + suffix;
				}
				
				
				
				
				function triggerOcIndicator()
				{
					var n = this.triggerid;
					var state = flipOpenClose( n );
					openCloseSections( n, state, true );
				}

				function triggerOcTable()
				{
					var n = this.id;
					var state = flipOpenClose( n );
					openCloseRows( n, state, true );
				}
					
				
				function triggerOcDiv()
				{
					var n = this.id;
					var state = flipOpenClose( n );
					openCloseSections( n, state, true );
				}
				
				
				function flipOpenClose(n)
				{
					state = !openClose[n];
					openClose[n] = state;
					
					return state;
				}
		
				function openCloseRows( n, state, full )
				{	
					var i,j;
					var containsList;			
					var name;
					var thingToClose;
		
					var elements = ocTriggerTable[n];					
					for( i in elements)
					{
						name = elements[i];
						
						thingToClose = new getObj( name );			
						
						if (full && ocContains[name])
						{
							containsList = ocContains[name];
													
							for( j in containsList)
							{
								if (state)	
									openCloseRows( containsList[j], openClose[containsList[j]], true );
								else
									openCloseRows( containsList[j], false, true );
							}
						}
						
					//	alert( "Hiding " + state + "  " + thingToClose.obj.id );
				
						if (state)
							thingToClose.obj.style.display = "";
						else
							thingToClose.obj.style.display = "none";
					}
					
					if (ocIndicator[n])
						setIndicator(n, ocIndicator[n] );
				}
				
				
				
				function openCloseSections( n, state, full )
				{	
					var i,j;
					var containsList;			
					var name;
					var thingToClose;
					var elements = ocTrigger[n];		
						
					for( i in elements)
					{
						name = elements[i];
						
						thingToClose = new getObj( name );			
						
						if (full && ocContains[name])
						{
							containsList = ocContains[name];
													
							for( j in containsList)
							{
								if (state)	
									openCloseSections( containsList[j], openClose[containsList[j]], true );
								else
									openCloseSections( containsList[j], false, true );
							}
						}
						
					//	alert( "Hiding " + state + "  " + thingToClose.obj.id );
				
						if (state)
							thingToClose.obj.style.display = "";
						else
							thingToClose.obj.style.display = "none";
					}
					
					if (ocIndicator[n])
						setIndicator(n, ocIndicator[n] );
				}
				
				
				var clonecount   = 0;
				var cloneDivs    = {};
									
				
				function makeClonable( divid, clonerootid, counterid )
				{	
					this.cloneDiv   = divid;
					this.cloneRoot  = clonerootid;
					this.counterId  = counterid;
					this.clones     = [];
							
					cloneDivs[divid]    = this;
				}
				
					
				function setupCloneAdd( buttonid, divid )
				{
					var buttonToFire       = new getObj( buttonid ).obj;	
					buttonToFire.onclick   = addClone;	
					buttonToFire.div       = divid;	
				}
				
				
				function setupCloneDel( buttonid, divid )
				{
					var buttonToFire       = new getObj( buttonid ).obj;	
					buttonToFire.onclick   = deleteClone;		
					buttonToFire.div = divid;
				}
					
					
				function initCloner()
				{
					var multidiv = new makeClonable( "node", "cloneroot", "counter" );
					
					setupCloneAdd( "add", "node" );
					setupCloneDel( "sub", "node" );
				}
					
							
				function deleteClone()
				{
					var multi         = cloneDivs[this.div];	
					var thingToDrop   = multi.clones.pop();	
					thingToDrop.parentNode.removeChild(thingToDrop);
					
					var counter = new getObj( multi.counterId );
					if (counter)
						counter.obj.value = multi.clones.length;
				}	
				
					
						
				function addClone()
				{
					multi = cloneDivs[this.div];
					
					original = new getObj(multi.cloneDiv).obj;
					clone    = original.cloneNode( true );
					
					clonecount++;
									
					regexp = /_0/;
					var newField = clone.childNodes;
					for (var i=0; i < newField.length; i++)
					{
						var theName = newField[i].name;
						if (theName)
						{
/*							newField[i].name = theName.replace( regexp, "_".concat( clonecount );  */
							newField[i].name = theName.concat("_").concat( clonecount );
						}
					}
									
					var cloneroot  = new getObj( multi.cloneRoot ).obj;		
					cloneroot.appendChild( clone );
					
					multi.clones = multi.clones.concat( clone );
					
					var counter = new getObj( multi.counterId );
					if (counter)
						counter.obj.value = multi.clones.length;
				}
								
	
	
				function submitForm() 
				{												
					return true;
				}
				
				//Usage: initRTE(imagesPath, includesPath, cssFile, genXHTML)
				// initRTE("/ssf/include/images/", "", "", true);
				// var rteContents = '';
		
			
