[OpenLayers-Commits] r7503 - in sandbox/architect: . images scripts

commits at openlayers.org commits at openlayers.org
Mon Jul 14 10:44:09 EDT 2008


Author: architect
Date: 2008-07-14 10:44:09 -0400 (Mon, 14 Jul 2008)
New Revision: 7503

Added:
   sandbox/architect/images/
   sandbox/architect/images/close.png
   sandbox/architect/images/divmin.png
   sandbox/architect/images/divminup.png
   sandbox/architect/images/linkbarbg.png
   sandbox/architect/images/linkbgover.png
   sandbox/architect/images/logo.png
   sandbox/architect/index.php
   sandbox/architect/scripts/
   sandbox/architect/scripts/config.js
   sandbox/architect/scripts/controlConfig.js
   sandbox/architect/scripts/layerConfig.js
   sandbox/architect/scripts/mootools12.js
   sandbox/architect/scripts/panelConfig.js
   sandbox/architect/scripts/pngfix.js
   sandbox/architect/scripts/sortable.js
   sandbox/architect/scripts/util.js
   sandbox/architect/style.css
Log:


Added: sandbox/architect/images/close.png
===================================================================
(Binary files differ)


Property changes on: sandbox/architect/images/close.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: sandbox/architect/images/divmin.png
===================================================================
(Binary files differ)


Property changes on: sandbox/architect/images/divmin.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: sandbox/architect/images/divminup.png
===================================================================
(Binary files differ)


Property changes on: sandbox/architect/images/divminup.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: sandbox/architect/images/linkbarbg.png
===================================================================
(Binary files differ)


Property changes on: sandbox/architect/images/linkbarbg.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: sandbox/architect/images/linkbgover.png
===================================================================
(Binary files differ)


Property changes on: sandbox/architect/images/linkbgover.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: sandbox/architect/images/logo.png
===================================================================
(Binary files differ)


Property changes on: sandbox/architect/images/logo.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: sandbox/architect/index.php
===================================================================
--- sandbox/architect/index.php	                        (rev 0)
+++ sandbox/architect/index.php	2008-07-14 14:44:09 UTC (rev 7503)
@@ -0,0 +1,194 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" 
+"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+
+	<link href="style.css" type="text/css" rel="stylesheet" />
+	<!--[if lt IE 7]>
+		<script defer type="text/javascript" src="scripts/pngfix.js"></script>
+	<![endif]-->
+	
+	<script type="text/javascript" src="openlayers/OpenLayers.js"></script>
+	<script type="text/javascript" src="scripts/mootools12.js"></script>
+	<script type="text/javascript" src="scripts/sortable.js"></script>
+	<script type="text/javascript" src="scripts/util.js"></script>
+	<script type="text/javascript" src="scripts/config.js"></script>
+	<script type="text/javascript" src="scripts/layerConfig.js"></script>
+	<script type="text/javascript" src="scripts/panelConfig.js"></script>
+	<script type="text/javascript" src="scripts/controlConfig.js"></script>
+
+	<title>OL Architect - Open Layers Map Creation Application</title>
+	<meta name="description" content="OLArchitect - OpenLayers Architect - An OpenLayers based web application tool for developing online maps." />
+	<meta name="keywords" content="OLArchitect, OpenLayers Architect, OpenLayers, OLON, map toolkit, make a map, map frontend, mapping, gis software, free mapping tools, openlayers application" />
+	<script type="text/javascript">
+		var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
+		document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
+	</script>
+	<script type="text/javascript">
+		var pageTracker = _gat._getTracker("UA-2994714-8");
+		pageTracker._initData();
+		pageTracker._trackPageview();
+	</script>
+</head>
+<body>
+<div id="siteContainer">
+	<div id="topContainer">
+		<div id="logoContainer">
+			<h1><a href="index.php" alt="OLArchitect | OpenLayers Architect"><img src="images/logo.png" title="OpenLayers Architect" /></a></h1>
+		</div>
+		<div id="loginContainer">
+			Sign In
+		</div>
+	</div>
+	
+	<div id="navContainer">
+		<a href="#">Home</a> | My Account | New Map | Browse Maps | Community | <a href="http://vasir.net/blog/olarchitect">Blog</a>
+	</div>
+	
+	<div id="mainContentContainer">
+		<!--Start ToolBox Container-->
+		<div id="toolBoxenContainer">
+			<div id="toolBox1Container" class="toolBoxClass">
+				<div id="toolBox1Header" class="containerHeader">
+					General Configuration
+				</div>
+				<div id="toolBox1Content" class="toolBoxContent">
+					<!-- LAYERS -->
+					<div id="toolBox1LayerContainer">
+						<div class="tb1lcHeader">
+							Layer Configuration  
+							<div id="toggleLayerList">
+								<img id="toggleLayerListImg" src="images/divmin.png" alt="Toggle OLArchitect Layer List"/>
+							</div>
+						</div>
+						<div id="innerLayerListContent">
+							<!--list-->
+							<div id="tb1LayerListArea">
+								<ol id="layerListItems">
+								</ol>
+							</div>
+							<!-- end list -->
+							<div id="listData" class="displayInline"></div>
+							<div id="tb1NewLayer">
+								<input type="text" id="tb1NewLayerForm" value="Layer Name" size=13 />
+								<script type="text/javascript">
+									$('tb1NewLayer').innerHTML += createSelectList('tb1LayerListDropdown', 'Layer Picklist', ' ', getLayerListMenu());
+								</script>
+								<br />
+								<input type="button" id="tb1NewLayerButton" value="Create Layer" />
+							</div>
+						</div>
+					</div>
+					<!-- END LAYERS -->
+					
+					<br />
+					
+					<!-- Controls -->
+					<div id="toolBox1ControlContainer">
+						<div class="tb1lcHeader">
+							Control Configuration
+							<div id="toggleControlList">
+								<img id="toggleControlListImg" src="images/divmin.png" alt="Toggle OLArchitect Control List"/>
+							</div>
+						</div>
+						<div id="innerControlListContent">
+							<!--list-->
+							<div id="tb1ControlListArea">
+								<ol id="controlListItems">
+								</ol>
+							</div>
+							<!-- end list -->
+							<div id="controlListData" class="displayInline"></div>
+							<div id="tb1NewControl">
+								<script type="text/javascript">
+									$('tb1NewControl').innerHTML += createSelectList('tb1ControlListDropdown', 'Control Picklist', 'controlCheckForPanel(); ',getControlListMenu());
+								</script>
+								<div id="tb1NewControlSelects" class="displayInline">
+								</div>
+								<br />
+								<input type="button" id="tb1NewControlButton" value="Create Control" />
+							</div>
+														
+							<br />
+							
+							<!--Panel list-->
+							<div id="tb1Panels">
+								<!--
+								<div id="tb1PanelContainer">
+									<div id="tb1Panel0Header" class="tb1PanelHeader">
+									Default Panel
+										<div id="tbLayerEditDiv0Edit" class="tbLayerEditDiv">Edit</div>
+									</div>
+									<div id="tb1Panel0ListArea" class="tb1PanelListArea">
+										<ol class="PanelListItems">
+										</ol>
+									</div>
+								</div>
+								-->
+							</div>
+							<!-- end list -->
+							<div id="tb1NewPanel">
+								<br />
+								<input type="text" id="tb1NewPanelForm" value="Panel Name" size=13 />
+								<input type="button" id="tb1NewPanelButton" value="Create Panel" />
+							</div>
+							
+							
+						</div>
+					</div>
+					<!-- END CONTROLS -->
+				</div>
+			</div>
+			
+			<br />
+			<!-- TOOLBOX 2 -->
+			<div id="toolBox2Container" class="toolBoxClass">
+				<div id="toolBox2Header" class="containerHeader">
+					Settings
+				</div>
+				<div id="toolBox2Content" class="toolBoxContent"></div>
+			</div>
+		</div>
+		<!--End ToolBox Container-->
+		
+		<!--Start Map Container-->
+		<div id="mapContainer">
+		</div>	
+		<!--End Map Container-->
+	</div>
+	
+	<div class="clear"></div>
+</div>
+<div id="bottomContainer">
+<br class="clear" />
+OLArchitect
+</div>
+<script type="text/javascript">
+
+	
+	var layerToggle = new Fx.Slide('innerLayerListContent');
+	$('toggleLayerList').addEvent('click', function(e){
+		e.stop();
+		layerToggle.toggle();
+		/*Change the arrow image*/
+		if(layerToggle.open)
+			$('toggleLayerListImg').src = "images/divminup.png";
+		else
+			$('toggleLayerListImg').src = "images/divmin.png";
+	});
+	
+	var controlToggle = new Fx.Slide('innerControlListContent');
+	$('toggleControlList').addEvent('click', function(e){
+		e.stop();
+		controlToggle.toggle();
+		/*Change the arrow image*/
+		if(controlToggle.open)
+			$('toggleControlListImg').src = "images/divminup.png";
+		else
+			$('toggleControlListImg').src = "images/divmin.png";
+	});
+
+
+</script>
+</body>
+</html>

Added: sandbox/architect/scripts/config.js
===================================================================
--- sandbox/architect/scripts/config.js	                        (rev 0)
+++ sandbox/architect/scripts/config.js	2008-07-14 14:44:09 UTC (rev 7503)
@@ -0,0 +1,164 @@
+/* TO DO - SAVE CONFIG TO MAP */
+/*Map object
+	This is, essentially, the heart of the app.  Everything is stored here in JSON format, then saved to the server (later stored and organized in a DB), then used to create a map and generate HTML for the user*/
+var map = {
+	"layers": [],
+	"controls": []
+}
+
+/*LAYER LIST CONFIGURATION*/
+/*=======================
+|  getLayerListMenu
+=========================*/
+//id, name, value, text
+/*Contains all the values for the layer list select lists*/
+function getLayerListMenu(){
+//id, title, value, text
+	var layerList = [ [['layerSelect0'],['layerService0'],['Chose Layer'],['Chose Layer']], 
+				[['layerSelectWMS'],['WMS'],['WMS'],['WMS - Web Map Service']], 
+				[['layerSelectWFS'],['WFS'],['WFS'],['WFS - Web Feature Service']],
+				[['layerSelectTMS'],['TMS'],['TMS'],['TMS - Tile Map Serivce']],
+				[['layerSelectGoogle'],['Google'],['Google'],['Google Map']],
+				[['layerSelectYahoo'],['Yahoo'],['Yahoo'],['Yahoo Map']],
+				[['layerSelectVirtualEarth'],['Virtual Earth'],['VirtualEarth'],['Microsoft Virtual Earth']],
+				[['layerSelectMapServer'],['MapServer'],['MapServer'],['MapServer']],
+				[['layerSelectTileCache'],['TileCache'],['TileCache'],['TileCache']],
+				[['layerSelectVector'],['Vector'],['Vector'],['Vector Layer']],
+				[['layerSelectImage'],['Image'],['Image'],['Image Layer']]];
+	return layerList;
+}
+/*Control LIST CONFIGURATION*/
+/*=======================
+| getControlListMenu
+=========================*/
+//id, name, value, text
+/*Contains all the values for the layer list select lists*/
+function getControlListMenu(){
+//id, title, value, text
+/*
+Create the panel later......
+Panel
+*/
+var controlList = [ [['ControlSelect0'],['ControlService0'],['Chose Control'],['Chose Control']], 
+	[['ControlSelectButton'],['hasPanel'],['Button'],['Button']],
+	[['ControlSelectEditingToolbar'],['hasPanel'],['EditingToolbar'],['Editing Toolbar (Vector)']],
+	[['ControlSelectLayerSwitcher'],['LayerSwitcher'],['LayerSwitcher'],['Layer Switcher']],
+	[['ControlSelectMousePosition'],['MousePosition'],['MousePosition'],['Mouse Position']],
+	[['ControlSelectNavigationHistory'],['hasPanel'],['NavigationHistory'],['Navigation History']],
+	[['ControlSelectNavToolbar'],['hasPanel'],['NavToolbar'],['NavToolbar']],
+	[['ControlSelectOverviewMap'],['OverviewMap'],['OverviewMap'],['OverviewMap']],
+	[['ControlSelectPanZoom'],['PanZoom'],['PanZoom'],['PanZoom']],
+	[['ControlSelectPanZoomBar'],['PanZoomBar'],['PanZoomBar'],['PanZoomBar']], //Has zoom scale bar
+	[['ControlSelectPermalink'],['Permalink'],['Permalink'],['Permalink']],
+	[['ControlSelectScale'],['Scale'],['Scale'],['Scale']],
+	[['ControlSelectScaleLine'],['ScaleLine'],['ScaleLine'],['ScaleLine']]]
+	return controlList;
+}
+function getTrueMenu(){
+//id, name, value, text
+	var menu = [ 	[['layerTMTrue'],['True'],['True'],['True']],
+			[['layerTMFalse'],[],['False'],['False']]];
+	return menu;
+}
+function getFalseMenu(){
+//id, name, value, text
+	var menu = [ 	[['layerTMFalse'],[],['False'],['False']],
+			[['layerTMTrue'],['True'],['True'],['True']]];
+	return menu;
+}
+function getNullMenu(){
+//id, name, value, text
+	var menu = [ 	[['menuNMNull'],['Null'],['Null'],['Null']],
+			[['menuNMFalse'],['Null'],['False'],['False']],
+			[['menuNMTrue'],['True'],['True'],['True']]];
+	return menu;
+}
+function getImageFormatMenu(){
+//id, name, value, text
+	var menu = [ [['layerImgFormatJPEG'],['img/jpeg'],['image/jpeg'],['JPEG']],
+				[['layerImgFormatPNG'],['img/png'],['image/png'],['PNG']],
+				[['layerImgFormatGIF'],['img/gif'],['image/gif'],['GIF']]];
+	return menu;
+}
+
+
+function getUnits(){
+//id, name, value, text
+	var units = [ 	[['unitDegrees'],['degrees'],['degrees'],['degrees']],
+			[['unitM'],['meters'],['m'],['m']],
+			[['unitKm'],['kilometers'],['km'],['km']],
+			[['unitFt'],['feet'],['ft'],['ft']],
+			[['unitMi'],['miles'],['mi'],['mi']],
+			[['unitInches'],['inches'],['inches'],['inches']]
+			];
+	return units;
+}
+
+function getOpacityMenu(){
+//id, name, value, text
+	var menu = [ [['Opacity1'],['Opacity1'],['1'],['1']],
+				[['Opacity09'],['Opacity09'],['.9'],['.9']],
+				[['Opacity08'],['Opacity08'],['.8'],['.8']],
+				[['Opacity07'],['Opacity07'],['.7'],['.7']],
+				[['Opacity06'],['Opacity06'],['.6'],['.6']],
+				[['Opacity05'],['Opacity05'],['.5'],['.5']],
+				[['Opacity04'],['Opacity04'],['.4'],['.4']],
+				[['Opacity03'],['Opacity03'],['.3'],['.3']],
+				[['Opacity02'],['Opacity02'],['.2'],['.2']],
+				[['Opacity01'],['Opacity01'],['.1'],['.1']]];
+	return menu;
+}
+function getGoogleMapType(){
+//id, name, value, text
+//Google streets - nothing, if this is selected then do not pass in {type:..} ,G_PHYSICAL_MAP , G_HYBRID_MAP, or G_SATELLITE_MAP - DROPDOWN
+	var menu = [ [['googleConfigStreets'],['Street View'],[''],['Street View']],
+				[['googleConfigPhysical'],['Physical View'],['G_PHYSICAL_MAP'],['Physical Views']],
+				[['googleConfigHybrid'],['Hybrid View'],['G_HYBRID_MAP'],['Hybrid View']],
+				[['googleConfigSatellite'],['Satellite View'],['G_SATELLITE_MAP'],['Satellite View']]];
+	return menu;
+}
+function getYahooMapType(){
+//id, name, value, text
+//((Yahoo streets - nothing, if this is selected then do not pass in {type:..}, , or YAHOO_MAP_HYB or YAHOO_MAP_SAT- DROPDOWN )
+	var menu = [ [['yahooConfigStreets'],['Street View'],[''],['Street View']],
+				[['yahooConfigHybrid'],['Hybrid View'],['YAHOO_MAP_HYB'],['Hybrid Views']],
+				[['yahooConfigSatellite'],['Satellite View'],['YAHOO_MAP_SAT'],['Satellite View']]];
+	return menu;
+}
+function getVirtualEarthMapType(){
+//id, name, value, text
+//VEMapStyle.Road , VEMapStyle.Aerial, or VEMapStyle.Hybrid - 
+	var menu = [ [['virtualEarthConfigStreets'],['VEMapStyle.Road'],[''],['Road View']],
+				[['virtualEarthConfigPhysical'],['Hybrid View'],['VEMapStyle.Hybrid'],['Hybrid Views']],
+				[['virtualEarthConfigHybrid'],['Aerial View'],['VEMapStyle.Aerial'],['Aerial View']]];
+	return menu;
+}
+
+/*=======================
+|  getEmptyToolBox2HTML(display,type)
+|
+|sets up Toolbox 2's empty divs and sets the display to either none (hides the box) or block (shows the box)
+|
+|used to either set up toolbox2 or empty it
+=========================*/
+/*get empty html for toolbox2*/
+function getEmptyToolBox2HTML(display, type){
+	if(display == null || display == undefined)
+		display = 'none';
+	if(type == null || type == undefined)
+		type = 'Map';
+	$('toolBox2Header').innerHTML = type + ' Settings';
+	$('toolBox2Container').style.display = display;
+	var html = ""
+			+	"<div id='tb2blc'>"
+			+	"	<div id='tb2blcBase'>"
+			+	"	</div>"
+			+	"	<div id='tb2blcCommon'>"
+			+	"	</div>"
+			+	"	<div id='tb2blcAdvanced'>"
+			+	"	</div>"
+			+	"	<div id='tb2blcButtons'>"
+			+	"	</div>"
+			+	"</div>";
+	return html;
+}

Added: sandbox/architect/scripts/controlConfig.js
===================================================================
--- sandbox/architect/scripts/controlConfig.js	                        (rev 0)
+++ sandbox/architect/scripts/controlConfig.js	2008-07-14 14:44:09 UTC (rev 7503)
@@ -0,0 +1,489 @@
+/*
+
+
+Attribution
+Button
+DragFeature
+DragPan
+DrawFeature
+EditingToolbar
+LayerSwitcher
+ModifyFeature
+Nav Toolbar
+Navigation
+NavigationHistory
+OverviewMap
+PanZoom
+PanZoomBar
+Panel
+Permalink
+Scale
+ScaleLine
+SelectFeature
+ZoomBox
+ZoomToMaxExtent
+
+
+
+	/*
+	var properties = [];
+		var functions = [];
+		for(var name in OpenLayers.Control.prototype) {
+			if(!(OpenLayers.Control.prototype[name] instanceof Function))
+				functions.push(name);
+			else{
+				properties.push(name);
+					//if(name == desiredThing)
+			}
+		}
+		console.log(properties)
+		console.log(functions)	
+	*/
+
+/*=======================
+|  createBaseLayerConfig
+=========================*/
+/*
+Purpose - generate HTML for the layer configuration options that are shared by all layers
+Called when a layer is edited or when a new layer is created.  HTML goes in the second tool box*/
+
+
+/*Global object to store temporary values for the control*/
+var controlsLength = 0;
+var numActiveControls = 0;
+
+function controlCheckForPanel(){
+	/*Get the title of the selected index*/
+	var selTitle = $('tb1ControlListDropdown').options[$('tb1ControlListDropdown').selectedIndex].title
+	
+	/*If the control has a panel, list the current panels*/
+	if(selTitle == "hasPanel"){
+		/*create the dropdown*/
+		$('tb1NewControlSelects').innerHTML = createSelectList('tb1ControlListPanelDropdown', 'Control Picklist', '', getPanels());	
+	}
+	else{
+		$('tb1NewControlSelects').innerHTML = '';
+	}
+}
+
+
+/*When everything is loaded, attach events to elements*/
+window.addEvent('domready', function() {
+	/*control*/
+	$('tb1NewControlButton').addEvent('click', function(e) {
+		/*When the new control button is clicked, populate toolbox2.  When we run the if statement, the function is called and if it passes validation, it creates the HTML*/
+		/*If false is returned, then the validation in the function failed*/
+		if($('tb1ControlListDropdown').selectedIndex == 0){
+			alert("A control must be selected");
+			return;
+		}
+		//populate toolbox2
+		createBaseControlConfig();
+		
+		
+		/*When the save button is clicked when the layer is first added, add a list item to the layer list in toolbox1*/
+		
+	});
+});
+
+
+/*=======================
+|  createBaseControlConfig
+|
+|called when the dom is ready and the new layer button is clicked
+|
+|sets up a new layer in the global map object and populates toolbox 2 with empty input boxes
+=========================*/
+function createBaseControlConfig(){
+/*store the toolbox div in tbid (toolboxid)*/
+	var tbid = $('toolBox2Content');
+	var tb1SelectedControl = $('tb1ControlListDropdown');
+	var tb1SelectedPanel = $('tb1ControlListPanelDropdown');
+
+/*set the ID to the current current control*/
+	var ID = controlsLength;
+/*add the current layer id to the map.layer object*/
+	eval("var curControl = {'id':'" + ID + "'};");
+	map.controls.push(curControl); //add the current layer id to map.layers
+
+	map.controls[ID].CLASS_NAME = 'OpenLayers.Control.' + tb1SelectedControl.value	
+	
+	/*=======================
+	/*TOOL BOX 2*/
+	/*set up the toolbox*/
+	/*=======================*/
+	/*add the html to the toolbox*/
+		tbid.innerHTML = getEmptyToolBox2HTML("block", "Control"); 
+
+	/*Create the control list dropdown in Toolbox 2, called tb2controlListDropdown'*/
+		$('tb2blcBase').innerHTML += "Control Selected " + createSelectList('tb2ControlListDropdown', 'Control Picklist', 'changeControl(this, ' + ID + ',\"' +  tb1SelectedControl.value + '\", true );', getControlListMenu()); //Layer List Dropdown
+	/*Set the value of the controlList dropdown in toolbox2 to the value of the dropdown in toolbox1*/
+		$('tb2ControlListDropdown').value = tb1SelectedControl.value;
+	/*Create the save and reset buttons*/
+		$('tb2blcButtons').innerHTML += "<br /><br /><input id='resetButton' onclick='populateControlValues( " + ID + ", \"" + tb1SelectedControl.value + "\", true);'type='button' value='Reset'/><input id='saveButton' type='button' class='" + ID + "' value='Save'><br />"; //Save Button
+	
+	/*Populate ToolBox 2's layer options with the layer selected in ToolBox 1's layer list dropdown - call changeLayer and pass in the controlList from toolbox1*/
+		//controlListelement, id, name, isControlNew
+		changeControl(tb1SelectedControl, ID, tb1SelectedControl.value, true);
+		
+		/*set the Delete div's name to newMode, which means don't delete toolbox 2's content if the layer delete button has been pressed*/
+		$('controlListItems').set('title', 'newMode');
+			
+
+}
+
+
+/*=======================
+|  changeLayer(controlList, ID, controlName, isControlNew)
+|
+|Called when the layer list drop down menu is changed and also when a new layer is created to populate toolbox2
+|
+|controlList is the name of the dropdown list element
+|ID is the id of the current layer - an integer
+|isControlNew determines if the layer is a newly created one or already exists
+|controlName is the name of the layer service which coresponds with OpenLayers.Layer.controlName.prototype
+=========================*/
+function changeControl(controlList, ID, controlName, isControlNew){
+/* NEW LAYER - 
+if the user selects a layer service that is different from the one defined in map.layers.CLASS_NAME, then each time a config is loaded, populate the forms with default values.  If the user selects the same layer service that is defined in the map opject, after it has intially been populated, do nothing
+
+EDIT LAYER -
+if the user modifies a layer, populate the fields from the settings stored in the map object.  once the layer is changed, populate the layer with default values
+
+if the layer is new, populate it with default values
+
+if the layer is edited, populate it with map values
+
+
+*/
+	
+	/*Clear any previous HTML*/
+	$('tb2blcCommon').innerHTML = "";
+	$('tb2blcAdvanced').innerHTML = "";	
+	
+	if($(controlList).selectedIndex == 1){
+		loadControlButtonConfig();
+	}	
+	if($(controlList).selectedIndex == 2){
+		loadControlEditingToolbar();
+	}
+	if($(controlList).selectedIndex == 3){	
+		loadControlLayerSwitcherConfig();
+	}
+	if($(controlList).selectedIndex == 4){
+		loadControlMousePositionConfig();
+	}
+	if($(controlList).selectedIndex == 5){
+		loadControlNavigationHistory();
+	}
+	if($(controlList).selectedIndex == 6){
+		loadControlNavToolbar();
+	}
+	if($(controlList).selectedIndex == 7){
+		loadControlOverviewMap();
+	}
+	if($(controlList).selectedIndex == 8){
+		loadControlPanZoom();
+	}
+	if($(controlList).selectedIndex == 9){
+		loadControlPanZoomBar();
+	}
+	if($(controlList).selectedIndex == 10){
+		loadControlPermalink();
+	}
+	if($(controlList).selectedIndex == 11){
+		loadControlScale();
+	}
+	if($(controlList).selectedIndex == 12){
+		loadControlScaleLine();
+	}
+	
+	/*Fill in default values*/
+	//populateControlValues(ID, controlName, isControlNew);
+	
+	/*if the layer service in the drop down matches the passed in name, do not populate the fields with the default values
+	if($('tb2controlListDropdown').value == controlName){
+			populateLayerValues(ID, controlName false);
+	}*/
+}
+
+/*The button control
+	-Belongs to a panel
+	-Has a trigger...provide the ability to input a function?
+*/
+function loadControlButtonConfig(){
+	/*Check to see if the control has a panel*/
+	var selTitle = $('tb2ControlListDropdown').options[$('tb2ControlListDropdown').selectedIndex].title
+	
+	/*If the control has a panel, list the current panels*/
+	if(selTitle == "hasPanel"){
+		$('tb2blcCommon').innerHTML += "<br />Belongs to Panel " + createSelectList('tb2ControlListPanelDropdown', 'Control Picklist', '', getPanels());getPanels();
+	}
+	
+	$('tb2blcCommon').innerHTML += "<br /><br /> Active " + createSelectList('layoutControlConfigActive', 'active', '', getNullMenu());
+	$('tb2blcCommon').innerHTML += "<br /> Allow Selection " +  createSelectList('layoutControlConfigAllowSelection', 'allowSelection', '', getFalseMenu());
+	$('tb2blcCommon').innerHTML += "<br />Title " +  createInputTextBox('layoutControlConfigTitle','title', "", 30);
+	$('tb2blcCommon').innerHTML += "<br />Trigger " +  createInputTextBox('layoutControlConfigTrigger','trigger', "", 30);
+}
+/*The editting toolbar
+	-Belongs to a panel
+	TODO - controls
+*/
+function loadControlEditingToolbar(){
+	/*Check to see if the control has a panel*/
+	var selTitle = $('tb2ControlListDropdown').options[$('tb2ControlListDropdown').selectedIndex].title
+	
+	/*If the control has a panel, list the current panels*/
+	if(selTitle == "hasPanel"){
+		$('tb2blcCommon').innerHTML += "<br />Belongs to Panel " + createSelectList('tb2ControlListPanelDropdown', 'Control Picklist', '', getPanels());getPanels();
+	}
+	
+	$('tb2blcCommon').innerHTML += "<br /><br /> Active " + createSelectList('layoutControlConfigActive', 'active', '', getNullMenu());
+	$('tb2blcCommon').innerHTML += "<br /> Allow Selection " +  createSelectList('layoutControlConfigAllowSelection', 'allowSelection', '', getFalseMenu());
+	$('tb2blcCommon').innerHTML += "<br />Vector Layer " + createSelectList('layoutControlConfigLayer', 'layer', '', getMapLayers('Vector'));
+	$('tb2blcCommon').innerHTML += "<br />Title " +  createInputTextBox('layoutControlConfigTitle','title', "", 30);
+	$('tb2blcCommon').innerHTML += "<br />Trigger " +  createInputTextBox('layoutControlConfigTrigger','trigger', "", 30);
+}
+
+/*The editting toolbar
+	-Belongs to a panel
+	TODO - controls
+*/
+
+function loadControlLayerSwitcherConfig(){
+	/*Check to see if the control has a panel*/
+	var selTitle = $('tb2ControlListDropdown').options[$('tb2ControlListDropdown').selectedIndex].title
+	
+	/*If the control has a panel, list the current panels*/
+	if(selTitle == "hasPanel"){
+		$('tb2blcCommon').innerHTML += "<br />Belongs to Panel " + createSelectList('tb2ControlListPanelDropdown', 'Control Picklist', '', getPanels());getPanels();
+	}
+	
+	$('tb2blcCommon').innerHTML += "<br /><br /> Active " + createSelectList('layoutControlConfigActive', 'active', '', getNullMenu());
+	$('tb2blcCommon').innerHTML += "<br />Active Color " +  createInputTextBox('layoutControlConfigActiveColor','activeColor', "", 25);
+	$('tb2blcCommon').innerHTML += "<br /> Allow Selection " +  createSelectList('layoutControlConfigAllowSelection', 'allowSelection', '', getFalseMenu());
+	$('tb2blcCommon').innerHTML += "<br /> Ascending " +  createSelectList('layoutControlConfigAscending', 'ascending', '', getTrueMenu());
+	$('tb2blcCommon').innerHTML += "<br />Title " +  createInputTextBox('layoutControlConfigTitle','title', "", 30);
+}
+
+/*Mouse Position
+	TODO - Change Color?
+*/
+
+function loadControlMousePositionConfig(){
+	/*Check to see if the control has a panel*/
+	var selTitle = $('tb2ControlListDropdown').options[$('tb2ControlListDropdown').selectedIndex].title
+	
+	/*If the control has a panel, list the current panels*/
+	if(selTitle == "hasPanel"){
+		$('tb2blcCommon').innerHTML += "<br />Belongs to Panel " + createSelectList('tb2ControlListPanelDropdown', 'Control Picklist', '', getPanels());getPanels();
+	}
+	
+	$('tb2blcCommon').innerHTML += "<br /><br /> Active " + createSelectList('layoutControlConfigActive', 'active', '', getNullMenu());
+	$('tb2blcCommon').innerHTML += "<br /> Allow Selection " +  createSelectList('layoutControlConfigAllowSelection', 'allowSelection', '', getFalseMenu());
+	$('tb2blcCommon').innerHTML += "<br />Granularity " +  createInputTextBox('layoutControlGranularity','granularity', "", 2);
+	$('tb2blcCommon').innerHTML += "<br />Number of Digits " +  createInputTextBox('layoutControlNumDigits','numdigits', "", 2);
+	$('tb2blcCommon').innerHTML += "<br />Prefix " +  createInputTextBox('layoutControlPrefix','prefix', "", 25);
+	$('tb2blcCommon').innerHTML += "<br />Seperator " +  createInputTextBox('layoutControlSeperator','seperator', "", 2);
+	$('tb2blcCommon').innerHTML += "<br />Suffix " +  createInputTextBox('layoutControlSuffix','suffix', "", 25);
+	$('tb2blcCommon').innerHTML += "<br />Title " +  createInputTextBox('layoutControlConfigTitle','title', "", 30);	
+}
+
+
+/*Navigation
+	Only used to disable,,,
+	figure out a good way to include / exclude this
+*/
+
+function loadControlNavigation(){
+	/*Check to see if the control has a panel*/
+	var selTitle = $('tb2ControlListDropdown').options[$('tb2ControlListDropdown').selectedIndex].title
+	
+	/*If the control has a panel, list the current panels*/
+	if(selTitle == "hasPanel"){
+		$('tb2blcCommon').innerHTML += "<br />Belongs to Panel " + createSelectList('tb2ControlListPanelDropdown', 'Control Picklist', '', getPanels());getPanels();
+	}
+	
+	$('tb2blcCommon').innerHTML += "<br /><br /> Disable navigation? " + createSelectList('layoutControlConfigNavigation', 'navigation', '', getFalseMenu());
+}
+
+
+
+/*Navigation History
+	TODO 
+	nav = new OpenLayers.Control.NavigationHistory();
+      	map1.addControl(nav);
+  	panel = new OpenLayers.Control.Panel();
+        panel.addControls([nav.next, nav.previous]);
+        map1.addControl(panel);
+*/
+
+function loadControlNavigationHistory(){
+	/*Check to see if the control has a panel*/
+	var selTitle = $('tb2ControlListDropdown').options[$('tb2ControlListDropdown').selectedIndex].title
+	
+	/*If the control has a panel, list the current panels*/
+	if(selTitle == "hasPanel"){
+		$('tb2blcCommon').innerHTML += "<br />Belongs to Panel " + createSelectList('tb2ControlListPanelDropdown', 'Control Picklist', '', getPanels());getPanels();
+	}
+	
+	$('tb2blcCommon').innerHTML += "<br /><br /> Activate on Draw " + createSelectList('layoutControlConfigActivateonDrag', 'activateOnDraw', '', getTrueMenu());
+	$('tb2blcCommon').innerHTML += "<br /> Active " + createSelectList('layoutControlConfigActive', 'active', '', getNullMenu());
+	$('tb2blcCommon').innerHTML += "<br /> Allow Selection " +  createSelectList('layoutControlConfigAllowSelection', 'allowSelection', '', getFalseMenu());
+	$('tb2blcCommon').innerHTML += "<br /> Clear on Deactivate " + createSelectList('layoutControlConfigClearonDeactivate', 'clearOnDeactivate', '', getTrueMenu());
+	$('tb2blcCommon').innerHTML += "<br />Limit " +  createInputTextBox('layoutControlLimit','limit', "", 2);
+	$('tb2blcCommon').innerHTML += "<br />Restoring " +  createSelectList('layoutControlConfigRestoring', 'restoring', '', getFalseMenu());	
+	$('tb2blcCommon').innerHTML += "<br />Title " +  createInputTextBox('layoutControlConfigTitle','title', "", 30);
+}
+
+
+
+/*NavToolbar
+	TODO 
+*/
+
+function loadControlNavToolbar(){
+	/*Check to see if the control has a panel*/
+	var selTitle = $('tb2ControlListDropdown').options[$('tb2ControlListDropdown').selectedIndex].title
+	
+	/*If the control has a panel, list the current panels*/
+	if(selTitle == "hasPanel"){
+		$('tb2blcCommon').innerHTML += "<br />Belongs to Panel " + createSelectList('tb2ControlListPanelDropdown', 'Control Picklist', '', getPanels());getPanels();
+	}
+	
+	$('tb2blcCommon').innerHTML += "<br /><br /> Active " + createSelectList('layoutControlConfigActive', 'active', '', getNullMenu());
+	$('tb2blcCommon').innerHTML += "<br /> Allow Selection " +  createSelectList('layoutControlConfigAllowSelection', 'allowSelection', '', getFalseMenu());
+	$('tb2blcCommon').innerHTML += "<br />Title " +  createInputTextBox('layoutControlConfigTitle','title', "", 30);
+}
+
+
+/*Overview Map
+	TODO 
+	SIZE, W / H
+	MapOptions
+*/
+
+function loadControlOverviewMap(){
+	/*Check to see if the control has a panel*/
+	var selTitle = $('tb2ControlListDropdown').options[$('tb2ControlListDropdown').selectedIndex].title
+	
+	/*If the control has a panel, list the current panels*/
+	if(selTitle == "hasPanel"){
+		$('tb2blcCommon').innerHTML += "<br />Belongs to Panel " + createSelectList('tb2ControlListPanelDropdown', 'Control Picklist', '', getPanels());getPanels();
+	}
+	
+	$('tb2blcCommon').innerHTML += "<br /><br /> Active " + createSelectList('layoutControlConfigActive', 'active', '', getNullMenu());
+	$('tb2blcCommon').innerHTML += "<br /> Allow Selection " +  createSelectList('layoutControlConfigAllowSelection', 'allowSelection', '', getFalseMenu());
+	$('tb2blcCommon').innerHTML += "<br />Map Options " +  createInputTextBox('layoutControlConfigMapOptions','mapOptions', "", 25);
+	$('tb2blcCommon').innerHTML += "<br />Max Ratio " +  createInputTextBox('layoutControlConfigMaxRatio','maxRatio', "", 2);
+	$('tb2blcCommon').innerHTML += "Min Ratio " +  createInputTextBox('layoutControlConfigMinRatio','minRatio', "", 2);
+	$('tb2blcCommon').innerHTML += "<br />Min Rect Size " +  createInputTextBox('layoutControlConfigMinRectSize','minRectSize', "", 2);
+	$('tb2blcCommon').innerHTML += "<br /><strong>Overview Map Size:</strong>";
+	$('tb2blcCommon').innerHTML += " Width " +  createInputTextBox('layoutControlConfigSizeWidth','sizeWidth', "", 2);
+	$('tb2blcCommon').innerHTML += " Height " +  createInputTextBox('layoutControlConfigSizeHeight','sizeHeight', "", 2);
+	$('tb2blcCommon').innerHTML += "<br />Title " +  createInputTextBox('layoutControlConfigTitle','title', "", 30);
+}
+
+/*PanZoom
+	TODO 
+	X, Y determined by placement of draggable div on map
+*/
+
+function loadControlPanZoom(){
+	/*Check to see if the control has a panel*/
+	var selTitle = $('tb2ControlListDropdown').options[$('tb2ControlListDropdown').selectedIndex].title
+	
+	/*If the control has a panel, list the current panels*/
+	if(selTitle == "hasPanel"){
+		$('tb2blcCommon').innerHTML += "<br />Belongs to Panel " + createSelectList('tb2ControlListPanelDropdown', 'Control Picklist', '', getPanels());getPanels();
+	}
+	
+	$('tb2blcCommon').innerHTML += "<br /><br /> Active " + createSelectList('layoutControlConfigActive', 'active', '', getNullMenu());
+	$('tb2blcCommon').innerHTML += "<br /> Allow Selection " +  createSelectList('layoutControlConfigAllowSelection', 'allowSelection', '', getFalseMenu());
+	$('tb2blcCommon').innerHTML += "<br />Slide Factor " +  createInputTextBox('layoutControlConfigSlideFactor','slideFactor', "", 2);
+	$('tb2blcCommon').innerHTML += "<br />Title " +  createInputTextBox('layoutControlConfigTitle','title', "", 30);
+}
+
+/*PanZoomBar
+	TODO 
+	X, Y determined by placement of draggable div on map
+*/
+
+function loadControlPanZoomBar(){
+	/*Check to see if the control has a panel*/
+	var selTitle = $('tb2ControlListDropdown').options[$('tb2ControlListDropdown').selectedIndex].title
+	
+	/*If the control has a panel, list the current panels*/
+	if(selTitle == "hasPanel"){
+		$('tb2blcCommon').innerHTML += "<br />Belongs to Panel " + createSelectList('tb2ControlListPanelDropdown', 'Control Picklist', '', getPanels());getPanels();
+	}
+	
+	$('tb2blcCommon').innerHTML += "<br /><br /> Active " + createSelectList('layoutControlConfigActive', 'active', '', getNullMenu());
+	$('tb2blcCommon').innerHTML += "<br /> Allow Selection " +  createSelectList('layoutControlConfigAllowSelection', 'allowSelection', '', getFalseMenu());
+	$('tb2blcCommon').innerHTML += "<br />Slide Factor " +  createInputTextBox('layoutControlConfigSlideFactor','slideFactor', "", 2);
+	$('tb2blcCommon').innerHTML += "<br />Title " +  createInputTextBox('layoutControlConfigTitle','title', "", 30);
+	$('tb2blcCommon').innerHTML += "<br />Zoom Stop Height " +  createInputTextBox('layoutControlConfigTitle','zoomStopHeight', "", 2);
+	$('tb2blcCommon').innerHTML += " Zoom Stop Width " +  createInputTextBox('layoutControlConfigzoomStopWidth','zoomStopWidth', "",2);
+	$('tb2blcCommon').innerHTML += "<br />Zoom World Icon " +  createSelectList('layoutControlConfigZoomWorldIcon', 'zoomWorldIcon', '', getFalseMenu());
+}
+
+/*Permalink
+	TODO 
+	
+*/
+function loadControlPermalink(){
+	/*Check to see if the control has a panel*/
+	var selTitle = $('tb2ControlListDropdown').options[$('tb2ControlListDropdown').selectedIndex].title
+	
+	/*If the control has a panel, list the current panels*/
+	if(selTitle == "hasPanel"){
+		$('tb2blcCommon').innerHTML += "<br />Belongs to Panel " + createSelectList('tb2ControlListPanelDropdown', 'Control Picklist', '', getPanels());getPanels();
+	}
+	
+	$('tb2blcCommon').innerHTML += "<br /><br /> Active " + createSelectList('layoutControlConfigActive', 'active', '', getNullMenu());
+	$('tb2blcCommon').innerHTML += "<br /> Allow Selection " +  createSelectList('layoutControlConfigAllowSelection', 'allowSelection', '', getFalseMenu());
+	$('tb2blcCommon').innerHTML += "<br />Base " +  createInputTextBox('layoutControlConfigBase','base', "", 30);
+	$('tb2blcCommon').innerHTML += "<br />Title " +  createInputTextBox('layoutControlConfigTitle','title', "", 30);
+}
+
+/*Scale
+	TODO 
+	
+*/
+function loadControlScale(){
+	/*Check to see if the control has a panel*/
+	var selTitle = $('tb2ControlListDropdown').options[$('tb2ControlListDropdown').selectedIndex].title
+	
+	/*If the control has a panel, list the current panels*/
+	if(selTitle == "hasPanel"){
+		$('tb2blcCommon').innerHTML += "<br />Belongs to Panel " + createSelectList('tb2ControlListPanelDropdown', 'Control Picklist', '', getPanels());getPanels();
+	}
+	
+	$('tb2blcCommon').innerHTML += "<br /><br /> Active " + createSelectList('layoutControlConfigActive', 'active', '', getNullMenu());
+	$('tb2blcCommon').innerHTML += "<br /> Allow Selection " +  createSelectList('layoutControlConfigAllowSelection', 'allowSelection', '', getFalseMenu());
+	$('tb2blcCommon').innerHTML += "<br />Title " +  createInputTextBox('layoutControlConfigTitle','title', "", 30);
+}
+
+
+/*Scaleline
+	TODO 
+	
+*/
+function loadControlScaleLine(){
+	/*Check to see if the control has a panel*/
+	var selTitle = $('tb2ControlListDropdown').options[$('tb2ControlListDropdown').selectedIndex].title
+	
+	/*If the control has a panel, list the current panels*/
+	if(selTitle == "hasPanel"){
+		$('tb2blcCommon').innerHTML += "<br />Belongs to Panel " + createSelectList('tb2ControlListPanelDropdown', 'Control Picklist', '', getPanels());getPanels();
+	}
+	
+	$('tb2blcCommon').innerHTML += "<br /><br /> Active " + createSelectList('layoutControlConfigActive', 'active', '', getNullMenu());
+	$('tb2blcCommon').innerHTML += "<br /> Allow Selection " +  createSelectList('layoutControlConfigAllowSelection', 'allowSelection', '', getFalseMenu());
+	$('tb2blcCommon').innerHTML += "<br />Bottom In Units " +  createSelectList('layoutControlConfigBottomInUnits','bottomInUnits', "",  getUnits());
+	$('tb2blcCommon').innerHTML += "<br />Bottom Out Units " +  createSelectList('layoutControlConfigBottomOutUnits','bottomOutUnits', "", getUnits());
+	$('tb2blcCommon').innerHTML += "<br />Max Width " +  createInputTextBox('layoutControlConfigMaxWidth','maxWidth', "", 3);
+	$('tb2blcCommon').innerHTML += "<br />Title " +  createInputTextBox('layoutControlConfigTitle','title', "", 30);
+	$('tb2blcCommon').innerHTML += "<br />Top In Units " +  createInputTextBox('layoutControlTopInUnits','topInUnits', "", 2);
+	$('tb2blcCommon').innerHTML += "Top Out Units " +  createInputTextBox('layoutControlConfigTopOutUnits','topOutUnits', "", 2);
+}

Added: sandbox/architect/scripts/layerConfig.js
===================================================================
--- sandbox/architect/scripts/layerConfig.js	                        (rev 0)
+++ sandbox/architect/scripts/layerConfig.js	2008-07-14 14:44:09 UTC (rev 7503)
@@ -0,0 +1,884 @@
+/*=======================
+|  createBaseLayerConfig
+=========================*/
+/*
+Purpose - generate HTML for the layer configuration options that are shared by all layers
+Called when a layer is edited or when a new layer is created.  HTML goes in the second tool box*/
+
+
+/*Global object to store temporary values for the layer*/
+var layersLength = 0;
+var numActiveLayers = 0;
+/*When everything is loaded, attach events to elements*/
+window.addEvent('domready', function() {
+	$('tb1NewLayerButton').addEvent('click', function(e) {
+		/*When the new layer button is clicked, populate toolbox2.  When we run the if statement, the function is called and if it passes validation, it creates the HTML*/
+		/*If false is returned, then the validation in the function failed*/
+		if ($('tb1LayerListDropdown').selectedIndex == 0){
+			alert("A layer service must be selected");
+			return;
+		}
+		if ($('tb1NewLayerForm').value == ""){
+			alert("A valid name must be entered");
+			return;
+		}
+		createBaseLayerConfig();
+		/*When the save button is clicked when the layer is first added, add a list item to the layer list in toolbox1*/
+		$('saveButton').addEvent('click', function(e) {
+			e.stop();
+			saveLayerConfig(layersLength,true); //Only used when first created.  When in edit mode, this function is attached to the save button in the editLayer function
+		});
+	});
+});
+/*=======================
+|  addDelEditOptionsToLayerListItem
+=========================*/
+function addDelEditOptionsToLayerListItem(ID){
+	
+	/*edit function*/
+	$('tb1Layer' + ID).innerHTML += "<div id='tbLayerOptionContainer'>"
+				+" <div id='tbLayerEditDiv" + ID + "Edit' class='tbLayerEditDiv' >Edit</div>"
+				+" <div class='tbLayerDeleteDiv' ><img id='tb1Layer" + ID + "Delete' src='images/close.png' alt='Delete Layer'/></div>"
+				+" </div>";
+	var curEdit = 'tbLayerEditDiv' + ID + 'Edit';
+	var curListItem = "tb1Layer" + ID;
+	$(curEdit).addEvent('click', function(e) {				
+		$('tb1Layer' + ID).highlight('#bcb8ad');
+		editLayer(ID); //The title contains the value of layersLength, i.e. the number used in the Element's ID to uniquly identify it
+	});
+	
+	/*delete function*/
+	var curDelete = 'tb1Layer' + ID + 'Delete';
+	var curListItem = "tb1Layer" + ID;
+	$(curDelete).addEvent('click', function(e) {	
+		var elName = $('layerListItems').get('title')
+		if(elName == "editMode")
+			$('toolBox2Content').innerHTML = getEmptyToolBox2HTML("none", "Layer"); //hide the toolbox
+		$(curListItem).dispose(); //Remove the current LI element
+		numActiveLayers--; //Decrease the number of active layers by 1
+		map.layers[ID] = null; // empty the current layer object
+		layerToggle.show(); //update the height
+	});
+}
+
+/*=======================
+|  getMapLayers()
+|
+|returns all the layers on the map
+=========================*/
+function getMapLayers(type){
+	if(type == undefined || type == null)
+		type = "all";
+	
+	var layersvar = [];	
+	
+	for(i = 0; i < map.layers.length; i++){
+		if(map.layers[i] != null){
+			var layerService = map.layers[i].CLASS_NAME.replace("OpenLayers.Layer.", "");
+			if(type != "all"){
+				if(type == layerService){
+					console.log(map.layers[i].id);
+					console.log(layerService);
+					console.log(map.layers[i].name);
+					layersvar.push([['Layer'],[layerService],[map.layers[i].name],[map.layers[i].name]]);
+				}
+			}
+			else
+				layersvar.push([['Layer' + map.layers[i].id],[layerService],[map.layers[i].name],[map.layers[i].name]]);
+		}
+	}
+	if (layersvar.length < 1){
+		layersvar = [[['LayerEmpty'],['NoLayers'],['No Matching Layers Found'],['No Matching Layers Found']]];
+	}
+	return layersvar;
+}
+
+
+/*=======================
+|  createBaseLayerConfig
+|
+|called when the dom is ready and the new layer button is clicked
+|
+|sets up a new layer in the global map object and populates toolbox 2 with empty input boxes
+=========================*/
+function createBaseLayerConfig(){
+/*store the toolbox div in tbid (toolboxid)*/
+	var tbid = $('toolBox2Content');
+	var tb1formName = $('tb1NewLayerForm');
+	var tb1LayerList = $('tb1LayerListDropdown');
+	
+
+		
+/* Add set the ID to the layersLength*/
+	var ID = layersLength;
+	
+
+	
+/*add the current layer id to the map.layer object*/
+	eval("var curLayer = {'id':'" + ID + "'};");
+	map.layers.push(curLayer); //add the current layer id to map.layers
+
+	map.layers[ID].name = tb1formName.value
+	map.layers[ID].CLASS_NAME = 'OpenLayers.Layer.' + tb1LayerList.value	
+	
+	/*=======================
+	/*TOOL BOX 2*/
+	/*set up the toolbox*/
+	/*=======================*/
+	/*add the html to the toolbox*/
+		tbid.innerHTML = getEmptyToolBox2HTML("block", "Layer"); 
+		
+	/*Create input boxes and select lists*/
+		$('tb2blcBase').innerHTML += "Layer Name | Layer Service<br />";
+		
+	/*Layer List Dropdown - When changed, update the toolbox content*/
+		$('tb2blcBase').innerHTML += createInputTextBox('tb2blcCommonLayerName','name', map.layers[ID].name); //Layer Name
+	/*Create the layer list dropdown in Toolbox 2, called tb2LayerListDropdown'*/
+		$('tb2blcBase').innerHTML += " " + createSelectList('tb2LayerListDropdown', 'Layer Picklist', 'changeLayer(this, ' + ID + ',\"' +  tb1LayerList.value + '\", true );', getLayerListMenu()); //Layer List Dropdown
+	/*Set the value of the layerlist dropdown in toolbox2 to the value of the dropdown in toolbox1*/
+		$('tb2LayerListDropdown').value = tb1LayerList.value;
+	/*Create the save and reset buttons*/
+		$('tb2blcButtons').innerHTML += "<br /><br /><input id='resetButton' onclick='populateLayerValues( " + ID + ", \"" + tb1LayerList.value + "\", true);'type='button' value='Reset'/><input id='saveButton' type='button' class='" + ID + "' value='Save'><br />"; //Save Button
+	
+	/*Populate ToolBox 2's layer options with the layer selected in ToolBox 1's layer list dropdown - call changeLayer and pass in the layerlist from toolbox1*/
+		//layerlistelement, id, name, isLayerNew
+		changeLayer(tb1LayerList, ID, tb1LayerList.value, true);
+		
+		/*set the Delete div's name to newMode, which means don't delete toolbox 2's content if the layer delete button has been pressed*/
+		$('layerListItems').set('title', 'newMode');
+		
+	/*make a div that covers up ToolBox 1 so nothing is clickable until the layer is saved ? */
+}
+
+
+/*=======================
+|  saveLayerConfig(ID, isLayerNew)
+|
+|called when the save button is pressed
+|
+|ID is the id of the current layer - an integer - an integer
+|isLayerNew is either "new" or "edit" - new, if the new layer button has been clicked; edit, if a layer is going to be modified
+=========================*/
+function saveLayerConfig(ID, isLayerNew){
+	if ($('tb2LayerListDropdown').selectedIndex == 0)
+		return; //If the layer type is empty, return.  We can't have an empty layer service
+		
+	/*if no isLayerNew is defined, assume it is a new layer*/
+	if ( isLayerNew == null || isLayerNew == undefined)
+		isLayerNew = true;
+		
+		
+	//Get the value of the text input.
+	var val = $('tb2blcCommonLayerName').get('value');
+	if (val == ''){
+		alert("A valid name must be entered");
+		return;
+	}
+	/*The code here will execute if the input is empty.
+	Create a new <li> to hold all our content.
+	Set the title of the LI to the current layersLength value*/ 
+	if(isLayerNew == true){
+		var li = new Element('li', {id: 'tb1Layer'+ID, title:'Layer ' + val,'class':'drag'}); //onclick=\"editLayer('" + ID + "')\"
+		
+		//Add the <li> to our list.
+		$('layerListItems').adopt(li);
+		//We have to add the list item to our Sortable object so it's sortable.
+		sort.addItems(li);
+		//We put the new order inside of the data div. Function defined in sortable.js
+		showNewOrder();	
+	}
+	/*loop through options, get by class listValueUpdated and valueUpdated
+	saved all the changed class options*/
+	map.layers[ID].name = $('tb2blcCommonLayerName').value; //Set the name in the map object to the value of toolbox 2's name form
+	var updatedLists = $$('.listValueUpdated, .valueUpdated') //Get all the elements that have been updated
+	for (var i = 0; i < updatedLists.length; i++){
+		var list = updatedLists[i].name; //The name attribute of the element
+		if(updatedLists[i].selectedIndex != undefined) //If the current item is a select list
+			var val = updatedLists[i].options[updatedLists[i].selectedIndex].value; //The value attribute of the element
+		else if(updatedLists[i].value != undefined)
+			var val = updatedLists[i].value; //The current item is a text box
+		map.layers[ID][list] = val //Add the properties to the current map layer
+	}
+	
+	/*Update the name and layer type*/
+	map.layers[ID].name = $('tb2blcCommonLayerName').value
+	map.layers[ID].CLASS_NAME = 'OpenLayers.Layer.' + $('tb2LayerListDropdown').value	
+	
+		
+	/*Clear the layer editing options*/
+	//add the empty html to the toolbox
+	$('toolBox2Content').innerHTML = getEmptyToolBox2HTML("none", "Layer"); 
+	
+	/*Highlist the layer in the layer list that was saved*/
+	$('tb1Layer' + ID).highlight('#bcb8ad');
+	
+	/*Update the layer name in the layer list*/
+	$('tb1Layer' + ID).set('text',map.layers[ID].name);
+	$('tb1Layer' + ID).set('title','Layer - ' + map.layers[ID].name);
+	
+	if(isLayerNew == true){
+	/*If a new layer is being added, do not clear the HTML when the delete button is pressed*/		
+		layersLength++; //A layer has been created, so add 1 to the layersLength (global var to keep track of number of layers
+		numActiveLayers++; //Add one to the number of active layers
+	}
+	
+	/*Create the delete text and edit button*/
+	addDelEditOptionsToLayerListItem(ID);	
+	
+	/*Update the height*/
+	layerToggle.show();
+}
+/*=======================
+|  editLayer(ID)
+|
+|called when the edit button on a layer list item is clicked
+|
+|ID is the id of the current layer - an integer - an integer
+=========================*/
+function editLayer(ID){
+/*TOOL BOX 2*/
+	/*Get the layer name*/
+	var layerName = map.layers[ID].CLASS_NAME;
+	layerName = layerName.replace("OpenLayers.Layer.", "");
+	
+	/*If there was previously any data, clear it - add the html to the toolbox and show the toolbox*/
+	$('toolBox2Content').innerHTML = getEmptyToolBox2HTML("block", "Layer"); 
+
+/*Create input boxes and select lists*/
+	$('tb2blcBase').innerHTML += "Layer Name | Layer Service<br />";
+	/*Layer List Dropdown - When changed, update the toolbox content*/
+	$('tb2blcBase').innerHTML += createInputTextBox('tb2blcCommonLayerName','name', map.layers[ID].name); //Layer Name
+	$('tb2blcBase').innerHTML += " " + createSelectList('tb2LayerListDropdown', 'Layer Picklist', 'changeLayer(this, ' + ID + ',\"' +  layerName + '\", true);', getLayerListMenu()); //Layer List Dropdown
+/*Create the layer list dropdown in Toolbox 2, called tb2LayerListDropdown'*/
+	/*Set the dropdown value to equal the current layername*/
+	$('tb2LayerListDropdown').value =  layerName; 
+
+/*Populate the toolbox with the corresponding config*/
+	eval("load" + layerName + "Config();"); //Call the loadLayerConfig function;
+	//pass in the ID and false (don't get values from openlayers)
+	populateLayerValues(ID, layerName, false); //get data from the map object and fill in the input boxes
+	
+/*Create the save and reset buttons*/
+	$('tb2blcButtons').innerHTML += "<br /><br /><input type='button' value='Reset' onclick='populateLayerValues(" + ID + ",\"" + layerName + "\", true, \"edit\");' id='resetButton'/>" //Reset Button
+								+	"<input id='saveButton' type='button' onclick='saveLayerConfig(" + ID + ", false);' value='Save'><br />"; //Save Button
+								
+	/*Set the the name to "editMode", this allows us to determine if we should clear toolbox2's content or not.  If the name = editMode, then we should clear toolbox2 once the layer delete button has been pressed*/
+	$('layerListItems').set('title', 'editMode');
+}
+
+
+/*=======================
+|  populateLayerValues(ID, layerName, isLayerNew)
+|
+|used to fill in default values from OpenLayers.prototype or values stored in the map object, if the layer already exists
+|
+|ID is the id of the current layer - an integer
+|layerName is the name of the layer service which coresponds with OpenLayers.Layer.LAYERNAME.prototype
+|isLayerNew determines if the layer is a newly created one or already exists
+=========================*/
+/*Warning:Confusion follows*/
+/*Because some values in OL are set as 'false' by default we check to see if the prototype != null*/
+function populateLayerValues(ID, layerName, isLayerNew,type){
+	/*by default, we assuse the isLayerNew is "new"*/
+	if(isLayerNew == undefined || isLayerNew == null)
+		isLayerNew = true;
+		
+		
+	var elName = $('layerListItems').get('title')
+	if(elName == "editMode"){
+		if($('tb2LayerListDropdown').value ==  layerName)
+			isLayerNew = false;
+	}
+	/*pull values from OpenLayers*/
+	if(isLayerNew == true){
+		/*Loop through the common values*/
+		var curDropDownVal = $('tb2LayerListDropdown').value;
+		for (var i = 0; i < $('tb2blcCommon').childNodes.length; i++){
+			/*set a variable equal to the current node*/
+			var tempNode = $('tb2blcCommon').childNodes[i];
+			/*if the childnode has an ID, then it is an input which we will get a value from to put in the map object*/
+			if (tempNode.type == "text"){
+			//By default, set the value to nothing.  If something exists, override the null value
+				tempNode.value = '';
+				/*Get the map name value*/
+				/*Check the DEFAULT_PARAMS and everything else*/
+				if (OpenLayers.Layer[curDropDownVal].prototype.DEFAULT_PARAMS != null){
+					if(OpenLayers.Layer[curDropDownVal].prototype.DEFAULT_PARAMS[tempNode.name] != null)
+						tempNode.value = OpenLayers.Layer[curDropDownVal].prototype.DEFAULT_PARAMS[tempNode.name];
+				}
+				if(OpenLayers.Layer[curDropDownVal].prototype[tempNode.name] != null){
+					tempNode.value = OpenLayers.Layer[curDropDownVal].prototype[tempNode.name];
+				}
+				$(tempNode).erase('class'); //clear the ValueUpdated class - it won't think the value is updated	
+			}	
+			/* SELECT LIST*/
+			else if(tempNode.type == "select-one" ){
+				//By default, set the value to 0.  Override the value is necessary
+				tempNode.selectedIndex = 0;	
+				if (OpenLayers.Layer[curDropDownVal].prototype.DEFAULT_PARAMS != null || OpenLayers.Layer[curDropDownVal].prototype.DEFAULT_PARAMS != undefined){
+					if(OpenLayers.Layer[curDropDownVal].prototype.DEFAULT_PARAMS[tempNode.name] != null){
+						var olVal = OpenLayers.Layer[curDropDownVal].prototype.DEFAULT_PARAMS[tempNode.name];
+						/*check for True / False lists*/
+						if(tempNode.options[0].value == "True" || tempNode.options[0].value == "False"){
+							if( Boolean(tempNode.options[0].name) == olVal)
+								tempNode.selectedIndex = 0;
+							if( Boolean(tempNode.options[1].name) == olVal)
+								tempNode.selectedIndex = 1;
+						}
+						/*check for Jpg / Gif / Png, and other type of lists*/
+						else{
+							if(tempNode.options[0].value == olVal)
+									tempNode.selectedIndex = 0;
+							if(tempNode.options[1].value == olVal)
+									tempNode.selectedIndex = 1;
+							if(tempNode.options[2]){
+								if(tempNode.options[2].value == olVal)
+									tempNode.selectedIndex = 2;
+							}
+							if(tempNode.options[3]){
+								if(tempNode.options[3].value == olVal)
+									tempNode.selectedIndex = 3;
+							}
+						}
+					}
+				}
+				if(OpenLayers.Layer[curDropDownVal].prototype[tempNode.name] != null){
+					var olVal = OpenLayers.Layer[curDropDownVal].prototype[tempNode.name];
+					/*check for True / False lists*/
+					if(tempNode.options[0].value == "True" || tempNode.options[0].value == ''){
+						if( Boolean(tempNode.options[0].name) == olVal){
+							tempNode.selectedIndex = 0;
+							}
+						if( Boolean(tempNode.options[1].name) == olVal){
+							tempNode.selectedIndex = 1;
+							}
+					}
+					/*check for Jpg / Gif / Png, and other type of lists*/
+					else{
+						if(tempNode.options[0].value == olVal)
+								tempNode.selectedIndex = 0;
+						if(tempNode.options[1].value == olVal)
+								tempNode.selectedIndex = 1;
+						if(tempNode.options[2]){
+							if(tempNode.options[2].value == olVal)
+								tempNode.selectedIndex = 2;
+						}
+						if(tempNode.options[3]){
+							if(tempNode.options[3].value == olVal)
+								tempNode.selectedIndex = 3;
+						}
+					}
+					$(tempNode).erase('class'); //clear the ValueUpdated class - it won't think the value is updated	
+				}
+			}
+		}
+		
+		/*CHECK ADVANCED*/
+		for (var i = 0; i < $('tb2blcAdvanced').childNodes.length; i++){
+			/*set a variable equal to the current node*/
+			var tempNode = $('tb2blcAdvanced').childNodes[i];
+			/*if the childnode has an ID, then it is an input which we will get a value from to put in the map object*/
+			if (tempNode.type == "text"){
+			//By default, set the value to nothing.  If something exists, override the null value
+				tempNode.value = '';
+				/*Get the map name value*/
+				/*Check the DEFAULT_PARAMS and everything else*/
+				if (OpenLayers.Layer[curDropDownVal].prototype.DEFAULT_PARAMS != null){
+					if(OpenLayers.Layer[curDropDownVal].prototype.DEFAULT_PARAMS[tempNode.name] != null)
+						tempNode.value = OpenLayers.Layer[curDropDownVal].prototype.DEFAULT_PARAMS[tempNode.name];
+				}
+				if(OpenLayers.Layer[curDropDownVal].prototype[tempNode.name] != null){
+					tempNode.value = OpenLayers.Layer[curDropDownVal].prototype[tempNode.name];
+					
+				}
+				$(tempNode).erase('class'); //clear the ValueUpdated class - it won't think the value is updated	
+			}	
+			
+			/* SELECT LIST*/
+			else if(tempNode.type == "select-one" ){
+				//By default, set the value to 0.  Override the value is necessary
+				tempNode.selectedIndex = 0;	
+				if (OpenLayers.Layer[curDropDownVal].prototype.DEFAULT_PARAMS != null || OpenLayers.Layer[curDropDownVal].prototype.DEFAULT_PARAMS != undefined){
+					if(OpenLayers.Layer[curDropDownVal].prototype.DEFAULT_PARAMS[tempNode.name] != null){
+						var olVal = OpenLayers.Layer[curDropDownVal].prototype.DEFAULT_PARAMS[tempNode.name];
+						/*check for True / False lists*/
+						if(tempNode.options[0].value == "True" || tempNode.options[0].value == "False"){
+							if( Boolean(tempNode.options[0].name) == olVal)
+								tempNode.selectedIndex = 0;
+							if( Boolean(tempNode.options[1].name) == olVal)
+								tempNode.selectedIndex = 1;
+						}
+						/*check for Jpg / Gif / Png, and other type of lists*/
+						else{
+							if(tempNode.options[0].value == olVal)
+									tempNode.selectedIndex = 0;
+							if(tempNode.options[1].value == olVal)
+									tempNode.selectedIndex = 1;
+							if(tempNode.options[2]){
+								if(tempNode.options[2].value == olVal)
+									tempNode.selectedIndex = 2;
+							}
+							if(tempNode.options[3]){
+								if(tempNode.options[3].value == olVal)
+									tempNode.selectedIndex = 3;
+							}
+						}
+					}
+				}
+				if(OpenLayers.Layer[curDropDownVal].prototype[tempNode.name] != null){
+					var olVal = OpenLayers.Layer[curDropDownVal].prototype[tempNode.name];
+					/*check for True / False lists*/
+					if(tempNode.options[0].value == "True" || tempNode.options[0].value == ''){
+						if( Boolean(tempNode.options[0].name) == olVal){
+							tempNode.selectedIndex = 0;
+							}
+						if( Boolean(tempNode.options[1].name) == olVal){
+							tempNode.selectedIndex = 1;
+							}
+					}
+					/*check for Jpg / Gif / Png, and other type of lists*/
+					else{
+						if(tempNode.options[0].value == olVal)
+								tempNode.selectedIndex = 0;
+						if(tempNode.options[1].value == olVal)
+								tempNode.selectedIndex = 1;
+						if(tempNode.options[2]){
+							if(tempNode.options[2].value == olVal)
+								tempNode.selectedIndex = 2;
+						}
+						if(tempNode.options[3]){
+							if(tempNode.options[3].value == olVal)
+								tempNode.selectedIndex = 3;
+						}
+					}
+					$(tempNode).erase('class'); //clear the ValueUpdated class - it won't think the value is updated	
+				}
+			}
+		}
+		
+		
+		
+	}
+	
+	/*If the layer is not new, grab values from the map object*/
+	if(isLayerNew == false){
+		/*Loop through the common values*/
+		for (var i = 0; i < $('tb2blcCommon').childNodes.length; i++){
+			/*set a variable equal to the current node*/
+			var tempNode = $('tb2blcCommon').childNodes[i];
+			/*if the childnode has an ID, then it is an input which we will get a value from to put in the map object*/
+			if (tempNode.type == "text" || tempNode.type == "select-one" ){
+					/*Get the map name value*/
+					var mapLayerVal = map.layers[ID][tempNode.name];
+					/*If there is valid data, fill in the current form*/
+					if(mapLayerVal != undefined || mapLayerVal != null){
+						tempNode.value = map.layers[ID][tempNode.name];
+					}
+					else{
+						tempNode.value = '';
+						if(tempNode.type == "select-one" )
+							tempNode.selectedIndex = 0;
+						$(tempNode).erase('class'); //clear the class - it won't think the value is updated
+					}
+			}
+		}
+		/*Loop through the advanced values*/
+		for (var i = 0; i < $('tb2blcAdvanced').childNodes.length; i++){
+			/*set a variable equal to the current node*/
+			var tempNode = $('tb2blcAdvanced').childNodes[i];
+			/*if the childnode has an ID, then it is an input which we will get a value from to put in the map object*/
+			if (tempNode.type == "text" || tempNode.type == "select-one"){
+				/*Get the map name value*/
+				var mapLayerVal = map.layers[ID][tempNode.name];
+				/*If there is valid data, fill in the current form*/
+				if(mapLayerVal != undefined || mapLayerVal != null){
+					tempNode.value = map.layers[ID][tempNode.name];
+				}
+				else{
+					tempNode.value = '';
+					if(tempNode.type == "select-one" )
+						tempNode.selectedIndex = 0;
+					$(tempNode).erase('class'); //clear the class - it won't think the value is updated
+				}
+			}
+		}
+	}
+}
+
+/*=======================
+|  changeLayer(layerList, ID, layerName, isLayerNew)
+|
+|Called when the layer list drop down menu is changed and also when a new layer is created to populate toolbox2
+|
+|layerList is the name of the dropdown list element
+|ID is the id of the current layer - an integer
+|isLayerNew determines if the layer is a newly created one or already exists
+|layerName is the name of the layer service which coresponds with OpenLayers.Layer.LAYERNAME.prototype
+=========================*/
+function changeLayer(layerList, ID, layerName, isLayerNew){
+/* NEW LAYER - 
+if the user selects a layer service that is different from the one defined in map.layers.CLASS_NAME, then each time a config is loaded, populate the forms with default values.  If the user selects the same layer service that is defined in the map opject, after it has intially been populated, do nothing
+
+EDIT LAYER -
+if the user modifies a layer, populate the fields from the settings stored in the map object.  once the layer is changed, populate the layer with default values
+
+if the layer is new, populate it with default values
+
+if the layer is edited, populate it with map values
+
+
+*/
+	
+	/*Clear any previous HTML*/
+	$('tb2blcCommon').innerHTML = "";
+	$('tb2blcAdvanced').innerHTML = "";	
+	
+	if($(layerList).selectedIndex == 1){
+		loadWMSConfig();
+	}	
+	if($(layerList).selectedIndex == 2){
+		loadWFSConfig();
+	}
+	if($(layerList).selectedIndex == 3){
+		loadTMSConfig();
+	}
+	if($(layerList).selectedIndex == 4){
+		loadGoogleConfig();
+	}
+	if($(layerList).selectedIndex == 5){
+		loadYahooConfig();
+	}
+	if($(layerList).selectedIndex == 6){
+		loadVirtualEarthConfig();
+	}
+	if($(layerList).selectedIndex == 7){
+		loadMapServerConfig();
+	}
+	if($(layerList).selectedIndex == 8){
+		loadTileCacheConfig();
+	}
+	if($(layerList).selectedIndex == 9){
+		loadVectorConfig();
+	}
+	if($(layerList).selectedIndex == 10){
+		loadImageConfig();
+	}
+	
+	/*Fill in default values*/
+	populateLayerValues(ID, layerName, isLayerNew);
+	
+	/*if the layer service in the drop down matches the passed in name, do not populate the fields with the default values
+	if($('tb2LayerListDropdown').value == layerName){
+			populateLayerValues(ID, layerName false);
+	}*/
+}
+
+/*-iseBase (Sets if the layer is a base layer)
+		-wrapDateLine (If layer is a base layer, wrap the dateline - Default FALSE)
+
+	-alpha (Does the layer's image have an alpha channel - Default FALSE)
+	-displayInLayerSwitcher (Show the layer in the layer switcher - Default TRUE)
+	-visibility (Display the layer? Default TRUE)
+	-attribution (Text displayed over the layer when the attribution control is added - Default NULL)
+	-inRange ( The current map resolution is within the layer's min/max range. Set in map.setCenter whenever the zoom changes.- Default FALSE) 
+	-gutter (Set the width, in pixels, of the gutter around image tiles to ignore. Images will be requested that are wider and taller than the tile size by a value of (2 * gutterValue). Set a gutter value that is equal to half the size of the widest symbol that needs to be displayed.   Non tiled images have a gutter of 0 -  Default NULL)
+		-imageSize (If the layer has a gutter, the image is larger than the tile by twice the gutter in each dimension - Default NULL)
+		-imageOffset (If the layer has a gutter, Set the image displacement due to the gutter - Default NULL)
+	-opacity (Set the layer opacity - DEFAULT - 1.0 )
+	-projection (Overrides the default projection)
+	-unit (Set the units.  Default - null( Defaults to'degrees' - Possible values are 'degrees' (or 'dd'), 'm', 'ft', 'km', 'mi', 'inches' - Inherited)
+	-resolutions (List of resolutions, in map units per pixel, from high to low - Default NULL - Inherited)
+	-maxExtent (Set the max extent - Default NULL - Inherited)
+	-minExtent (Set the min extent - Default NULL - Inherited)
+	-maxResolution (Specify a value if the layer is showing the entire world and does not use a geographic projection. Default - NULL (360 degree / 250px) - Inherited)
+	-minResolution (Set the min resolution to use - Default NULL - Inherited)
+	-numZoomLevels (The number of zoom levels the layer has - Default NULL - Inherited)
+	-minScale (The minimum scale the layer uses - Default NULL - Inherited)
+	-maxScale (The maximum scale the layer uses - Default NULL - Inherited)
+	-displayOutsideMaxExtent (Get map tiles are outside this layer's max extent - Default - FALSE)
+*/
+function loadWMSConfig(){
+/*NAME,URL,PARAMS,OPTIONS*/
+	/*To do - on every input onchange, save the value to a global variabe / object (i.e. var wms = new object(); */
+	/*Add some basic, universal layer config options*/
+	$('tb2blcCommon').innerHTML += "<br />Base Layer " + createSelectList('layoutConfigisBase', 'isBase', '', getTrueMenu());
+	$('tb2blcCommon').innerHTML += " Number of Zoom Levels " +  createInputTextBox('layoutConfigNumZoom','numZoomLevels', "10", 1);
+	$('tb2blcCommon').innerHTML += "<br /> URL (required)" +  createInputTextBox('layoutConfigCommonURL','url', "", 52);
+	$('tb2blcCommon').innerHTML += "<br /> Layers " +  createInputTextBox('layoutConfigLayers','layers', "", 45);	
+	$('tb2blcCommon').innerHTML += "<br /> Exceptions " +  createInputTextBox('layoutConfigCommonExceptions','exceptions', "", 45);	
+	$('tb2blcCommon').innerHTML += "<br / >Display in Layer List " + createSelectList('layoutConfigDsplayInLS', 'displayInLayerSwitcher', '', getTrueMenu());
+	$('tb2blcCommon').innerHTML += " Visibility " + createSelectList('layoutConfigVisibility', 'visibility', '', getTrueMenu());
+	$('tb2blcCommon').innerHTML += "<br /> Image Format " + createSelectList('layoutConfigIMGFormat', 'format', '', getImageFormatMenu());
+	$('tb2blcCommon').innerHTML += " Transparent " + createSelectList('layoutConfigTransparent', 'transparent', '', getTrueMenu());
+	$('tb2blcCommon').innerHTML += "<br / >Layer Opacity " + createSelectList('layoutConfigOpacity', 'opacity', '', getOpacityMenu());
+	$('tb2blcCommon').innerHTML += " Contains Alpha Layer " + createSelectList('layoutConfigAlpha', 'alpha', '', getFalseMenu());
+	$('tb2blcCommon').innerHTML += "Reproject " + createSelectList('layoutConfigReproject', 'reproject', '', getFalseMenu());
+	$('tb2blcCommon').innerHTML += " Wrap Date Line " + createSelectList('layoutConfigWrapDateLine', 'wrapDateLine', '', getFalseMenu());
+	$('tb2blcCommon').innerHTML += "<br />Attribution " +  createInputTextBox('layoutConfigAttribution','attribution', "", 40);	
+
+	/*Advanced Settings*/
+	$('tb2blcAdvanced').innerHTML += "<br />SRS - EPSG:" +  createInputTextBox('layoutConfigSRS','srs', "", 10);
+	$('tb2blcAdvanced').innerHTML += " Map Unit " +  createInputTextBox('layoutConfigUnit','unit', "", 10);
+	$('tb2blcAdvanced').innerHTML += "<br />Resolutions " +  createInputTextBox('layoutConfigResolutions','resolutions', "", 40);
+	$('tb2blcAdvanced').innerHTML += "<br />Min Resolution " +  createInputTextBox('layoutConfigMinResolution','minResolution', "", 10);
+	$('tb2blcAdvanced').innerHTML += " Max Resolution " +  createInputTextBox('layoutConfigMaxResolution','maxResolution', "", 10);	
+	$('tb2blcAdvanced').innerHTML += "<br />Min Extent " +  createInputTextBox('layoutConfigMinExtent','maxExtent', "", 10);
+	$('tb2blcAdvanced').innerHTML += " Max Extent " +  createInputTextBox('layoutConfigMaxExtent','maxExtent', "", 10);
+	$('tb2blcAdvanced').innerHTML += "<br />Min Scale " +  createInputTextBox('layoutConfigMinScale','minScale', "", 10);
+	$('tb2blcAdvanced').innerHTML += " Max Scale " +  createInputTextBox('layoutConfigMaxScale','maxScale', "", 10);
+	$('tb2blcAdvanced').innerHTML += "<br />Display Outside Extents " + createSelectList('layoutConfigDisplayOutsideMaxExtent', 'displayOutsideMaxExtent', '', getFalseMenu());
+	$('tb2blcAdvanced').innerHTML += "In Range " + createSelectList('layoutConfiginRange', 'inRange', '', getFalseMenu());
+	$('tb2blcAdvanced').innerHTML += "<br />Num Loading Tiles " +  createInputTextBox('layoutConfigNumLoadingTiles','numLoadingTiles', "", 2);
+	
+	$('tb2blcAdvanced').innerHTML += "<br /> Single Tile " + createSelectList('layoutConfigSingleTile', 'singleTile', '', getTrueMenu());
+		$('tb2blcAdvanced').innerHTML += "Ratio  " +  createInputTextBox('layoutConfigRatio','ratio', "1", 2); /*Hide if not single tile*/
+			$('tb2blcAdvanced').innerHTML += "<br /> Buffer  " +  createInputTextBox('layoutConfigBuffer','buffer', "1", 2); /*Show if not single tile*/
+			
+	$('tb2blcAdvanced').innerHTML += " Gutter " +  createInputTextBox('layoutConfigGutter','gutter', "1", 2); /*Show if not single tile*/
+				$('tb2blcAdvanced').innerHTML += "<br />Image Size " +  createInputTextBox('layoutConfigImageSize','imageSize', "", 10);
+				$('tb2blcAdvanced').innerHTML += "Image Offset " +  createInputTextBox('layoutConfigOffset','imageOffset', "", 10);
+}
+function loadWFSConfig(){
+/*NAME,URL,PARAMS,OPTIONS*/
+	$('tb2blcCommon').innerHTML += "<br />Base Layer " + createSelectList('layoutConfigisBase', 'isBase', '', getTrueMenu());
+		$('tb2blcCommon').innerHTML += " Number of Zoom Levels " +  createInputTextBox('layoutConfigNumZoom','numZoomLevels', "10", 1);
+	$('tb2blcCommon').innerHTML += "<br /> URL (required)" +  createInputTextBox('layoutConfigCommonURL','url', "", 52);
+	$('tb2blcCommon').innerHTML += "<br /> Layers " +  createInputTextBox('layoutConfigLayers','layers', "", 45);
+	$('tb2blcCommon').innerHTML += "<br /> Namespace URL " +  createInputTextBox('layoutConfigFeatureNs','featureNS', "Feature Namespace", 30);
+	$('tb2blcCommon').innerHTML += "<br /> Type Name (Parameter) " +  createInputTextBox('layoutConfigtypeNameParam','typeName', "application/vnd.ogc.se_inimage", 30);
+	$('tb2blcCommon').innerHTML += "<br /> Type Name (Option)" +  createInputTextBox('layoutConfigtypeNameOption','typeName', "application/vnd.ogc.se_inimage", 30);		
+	$('tb2blcCommon').innerHTML += "<br /> Max features " +  createInputTextBox('layoutConfigNumZoom','numZoomLevels', "10", 1);
+	$('tb2blcCommon').innerHTML += " Extract Attributes " + createSelectList('layoutConfigExtractAttributes', 'extractAttributes', '', getFalseMenu());
+	$('tb2blcCommon').innerHTML += "<br / >Display in Layer List " + createSelectList('layoutConfigDsplayInLS', 'displayInLayerSwitcher', '', getTrueMenu());
+		$('tb2blcCommon').innerHTML += " Visibility " + createSelectList('layoutConfigVisibility', 'visibility', '', getTrueMenu());
+	$('tb2blcCommon').innerHTML += "<br /> Image Format " + createSelectList('layoutConfigIMGFormat', 'format', '', getImageFormatMenu());
+		$('tb2blcCommon').innerHTML += " Transparent " + createSelectList('layoutConfigTransparent', 'transparent', '', getTrueMenu());
+	$('tb2blcCommon').innerHTML += "<br / >Layer Opacity " + createSelectList('layoutConfigOpacity', 'opacity', '', getOpacityMenu());
+		$('tb2blcCommon').innerHTML += " Contains Alpha Layer " + createSelectList('layoutConfigAlpha', 'alpha', '', getFalseMenu());
+	$('tb2blcCommon').innerHTML += "<br />Attribution " +  createInputTextBox('layoutConfigAttribution','attribution', "", 40);
+	
+	/*Advanced Settings*/
+	$('tb2blcAdvanced').innerHTML += "<br />SRS - EPSG:" +  createInputTextBox('layoutConfigSRS','srs', "", 10);
+		$('tb2blcAdvanced').innerHTML += " Map Unit " +  createInputTextBox('layoutConfigUnit','unit', "", 10);
+	$('tb2blcAdvanced').innerHTML += "<br />Resolutions " +  createInputTextBox('layoutConfigResolutions','resolutions', "", 40);
+	$('tb2blcAdvanced').innerHTML += "<br />Min Resolution " +  createInputTextBox('layoutConfigMinResolution','minResolution', "", 10);
+		$('tb2blcAdvanced').innerHTML += " Max Resolution " +  createInputTextBox('layoutConfigMaxResolution','maxResolution', "", 10);	
+	$('tb2blcAdvanced').innerHTML += "<br />Min Extent " +  createInputTextBox('layoutConfigMinExtent','maxExtent', "", 10);
+		$('tb2blcAdvanced').innerHTML += " Max Extent " +  createInputTextBox('layoutConfigMaxExtent','maxExtent', "", 10);
+	$('tb2blcAdvanced').innerHTML += "<br />Min Scale " +  createInputTextBox('layoutConfigMinScale','minScale', "", 10);
+		$('tb2blcAdvanced').innerHTML += " Max Scale " +  createInputTextBox('layoutConfigMaxScale','maxScale', "", 10);
+	$('tb2blcAdvanced').innerHTML += "<br />Display Outside Extents " + createSelectList('layoutConfigDisplayOutsideMaxExtent', 'displayOutsideMaxExtent', '', getFalseMenu());
+		$('tb2blcAdvanced').innerHTML += "In Range " + createSelectList('layoutConfiginRange', 'inRange', '', getFalseMenu());
+	$('tb2blcAdvanced').innerHTML += "<br />Report Error " + createSelectList('layoutConfigReportError','reportError', '', getFalseMenu());
+	$('tb2blcAdvanced').innerHTML += "Fixed " + createSelectList('layoutConfigisFixed','isFixed', '', getFalseMenu());
+	$('tb2blcAdvanced').innerHTML += "Encode BBox " + createSelectList('layoutConfigencodeBBox','encodeBBox', '', getFalseMenu());
+}
+
+function loadTMSConfig(){
+/*NAME,URL,OPTIONS*/
+
+	$('tb2blcCommon').innerHTML += "<br />Base Layer " + createSelectList('layoutConfigisBase', 'isBase', '', getTrueMenu());
+		$('tb2blcCommon').innerHTML += " Number of Zoom Levels " +  createInputTextBox('layoutConfigNumZoom','numZoomLevels', "10", 1);
+	$('tb2blcCommon').innerHTML += "<br /> URL (required)" +  createInputTextBox('layoutConfigCommonURL','url', "", 52);
+	//$('tb2blcCommon').innerHTML += "<br /> Get URL " +  createInputTextBox('layoutConfiggetURL','getURL', "Get URL", 30);
+	$('tb2blcCommon').innerHTML += "<br /> Layer Name " +  createInputTextBox('layoutConfigLayerName','layerName', "", 45);	
+	$('tb2blcCommon').innerHTML += "<br />Tiles Origin" +  createInputTextBox('layoutConfigTilesOrigin','tilesOrigin', "", 40);
+	$('tb2blcCommon').innerHTML += "<br / >Display in Layer List " + createSelectList('layoutConfigDsplayInLS', 'displayInLayerSwitcher', '', getTrueMenu());
+		$('tb2blcCommon').innerHTML += " Visibility " + createSelectList('layoutConfigVisibility', 'visibility', '', getTrueMenu());
+	$('tb2blcCommon').innerHTML += "<br /> Image Format " + createSelectList('layoutConfigIMGFormat', 'format', '', getImageFormatMenu());
+		$('tb2blcCommon').innerHTML += " Transparent " + createSelectList('layoutConfigTransparent', 'transparent', '', getTrueMenu());
+	$('tb2blcCommon').innerHTML += "<br / >Layer Opacity " + createSelectList('layoutConfigOpacity', 'opacity', '', getOpacityMenu());
+		$('tb2blcCommon').innerHTML += " Contains Alpha Layer " + createSelectList('layoutConfigAlpha', 'alpha', '', getFalseMenu());
+	$('tb2blcCommon').innerHTML += "<br />Attribution " +  createInputTextBox('layoutConfigAttribution','attribution', "", 40);
+	
+	/*Advanced Settings*/
+	$('tb2blcAdvanced').innerHTML += "<br />SRS - EPSG:" +  createInputTextBox('layoutConfigSRS','srs', "", 10);
+		$('tb2blcAdvanced').innerHTML += " Map Unit " +  createInputTextBox('layoutConfigUnit','unit', "", 10);
+	$('tb2blcAdvanced').innerHTML += "<br />Resolutions " +  createInputTextBox('layoutConfigResolutions','resolutions', "", 40);
+	$('tb2blcAdvanced').innerHTML += "<br />Min Resolution " +  createInputTextBox('layoutConfigMinResolution','minResolution', "", 10);
+		$('tb2blcAdvanced').innerHTML += " Max Resolution " +  createInputTextBox('layoutConfigMaxResolution','maxResolution', "", 10);	
+	$('tb2blcAdvanced').innerHTML += "<br />Min Extent " +  createInputTextBox('layoutConfigMinExtent','maxExtent', "", 10);
+		$('tb2blcAdvanced').innerHTML += " Max Extent " +  createInputTextBox('layoutConfigMaxExtent','maxExtent', "", 10);
+	$('tb2blcAdvanced').innerHTML += "<br />Min Scale " +  createInputTextBox('layoutConfigMinScale','minScale', "", 10);
+		$('tb2blcAdvanced').innerHTML += " Max Scale " +  createInputTextBox('layoutConfigMaxScale','maxScale', "", 10);
+	$('tb2blcAdvanced').innerHTML += "<br />Display Outside Extents " + createSelectList('layoutConfigDisplayOutsideMaxExtent', 'displayOutsideMaxExtent', '', getFalseMenu());
+		$('tb2blcAdvanced').innerHTML += "In Range " + createSelectList('layoutConfiginRange', 'inRange', '', getFalseMenu());
+	$('tb2blcAdvanced').innerHTML += "<br />Num Loading Tiles " +  createInputTextBox('layoutConfigNumLoadingTiles','numLoadingTiles', "", 2);
+	
+	$('tb2blcAdvanced').innerHTML += "<br /> Single Tile " + createSelectList('layoutConfigSingleTile', 'singleTile', '', getTrueMenu());
+			$('tb2blcAdvanced').innerHTML += "Ratio  " +  createInputTextBox('layoutConfigRatio','ratio', "1", 2); /*Hide if not single tile*/
+				$('tb2blcAdvanced').innerHTML += "<br /> Buffer  " +  createInputTextBox('layoutConfigBuffer','buffer', "1", 2); /*Show if not single tile*/
+			
+	$('tb2blcAdvanced').innerHTML += " Gutter " +  createInputTextBox('layoutConfigGutter','gutter', "1", 2); /*Show if not single tile*/
+				$('tb2blcAdvanced').innerHTML += "<br />Image Size " +  createInputTextBox('layoutConfigImageSize','imageSize', "", 10);
+				$('tb2blcAdvanced').innerHTML += "Image Offset " +  createInputTextBox('layoutConfigOffset','imageOffset', "", 10);
+
+}
+
+function loadGoogleConfig(){
+/*NAME,URL,OPTIONS*/
+	$('tb2blcCommon').innerHTML += "<br /> Map Type" + createSelectList('layoutConfigMapType', 'type', '', getGoogleMapType());
+	$('tb2blcCommon').innerHTML += "<br />Must be a base layer";
+		$('tb2blcCommon').innerHTML += " Number of Zoom Levels " +  createInputTextBox('layoutConfigNumZoom','numZoomLevels', "10", 1);
+	$('tb2blcCommon').innerHTML += "<br />Min Zoom Level " +  createInputTextBox('layoutConfigMinZoomLevel','MIN_ZOOM_LEVEL', "", 2);
+		$('tb2blcCommon').innerHTML += " Max Zoom Level " +  createInputTextBox('layoutConfigMaxZoomLevel','MAX_ZOOM_LEVEL', "", 2);	
+	$('tb2blcCommon').innerHTML += "<br / >Spherical Mercator " + createSelectList('layoutConfigSphericalMercator', 'sphericalMercator', '', getFalseMenu());
+	$('tb2blcCommon').innerHTML += "<br / >Display in Layer List " + createSelectList('layoutConfigDsplayInLS', 'displayInLayerSwitcher', '', getTrueMenu());
+	$('tb2blcCommon').innerHTML += "<br />Attribution " +  createInputTextBox('layoutConfigAttribution','attribution', "", 40);
+	$('tb2blcAdvanced').innerHTML += "<br />Display Outside Extents " + createSelectList('layoutConfigDisplayOutsideMaxExtent', 'displayOutsideMaxExtent', '', getFalseMenu());
+}
+function loadYahooConfig(){
+/*NAME,URL,OPTIONS*/
+	$('tb2blcCommon').innerHTML += "<br /> Map Type" + createSelectList('layoutConfigMapType', 'type', '', getYahooMapType());
+	$('tb2blcCommon').innerHTML += "<br />Must be a base layer";
+		$('tb2blcCommon').innerHTML += " Number of Zoom Levels " +  createInputTextBox('layoutConfigNumZoom','numZoomLevels', "10", 1);
+	$('tb2blcCommon').innerHTML += "<br />Min Zoom Level " +  createInputTextBox('layoutConfigMinZoomLevel','MIN_ZOOM_LEVEL', "", 2);
+		$('tb2blcCommon').innerHTML += " Max Zoom Level " +  createInputTextBox('layoutConfigMaxZoomLevel','MAX_ZOOM_LEVEL', "", 2);	
+	$('tb2blcCommon').innerHTML += "<br / >Spherical Mercator " + createSelectList('layoutConfigSphericalMercator', 'sphericalMercator', '', getFalseMenu());
+	$('tb2blcCommon').innerHTML += "<br / >Display in Layer List " + createSelectList('layoutConfigDsplayInLS', 'displayInLayerSwitcher', '', getTrueMenu());
+	$('tb2blcCommon').innerHTML += "<br />Attribution " +  createInputTextBox('layoutConfigAttribution','attribution', "", 40);
+	$('tb2blcAdvanced').innerHTML += "<br />Display Outside Extents " + createSelectList('layoutConfigDisplayOutsideMaxExtent', 'displayOutsideMaxExtent', '', getFalseMenu());
+}
+function loadVirtualEarthConfig(){
+/*NAME,URL,OPTIONS*/
+	$('tb2blcCommon').innerHTML += "<br /> Map Type" + createSelectList('layoutConfigMapType', 'type', '', getVirtualEarthMapType());
+	$('tb2blcCommon').innerHTML += "<br />Must be a base layer";
+		$('tb2blcCommon').innerHTML += " Number of Zoom Levels " +  createInputTextBox('layoutConfigNumZoom','numZoomLevels', "10", 1);
+	$('tb2blcCommon').innerHTML += "<br />Min Zoom Level " +  createInputTextBox('layoutConfigMinZoomLevel','MIN_ZOOM_LEVEL', "", 2);
+		$('tb2blcCommon').innerHTML += " Max Zoom Level " +  createInputTextBox('layoutConfigMaxZoomLevel','MAX_ZOOM_LEVEL', "", 2);	
+	$('tb2blcCommon').innerHTML += "<br / >Spherical Mercator " + createSelectList('layoutConfigSphericalMercator', 'sphericalMercator', '', getFalseMenu());
+	$('tb2blcCommon').innerHTML += "<br / >Display in Layer List " + createSelectList('layoutConfigDsplayInLS', 'displayInLayerSwitcher', '', getTrueMenu());
+	$('tb2blcCommon').innerHTML += "<br />Attribution " +  createInputTextBox('layoutConfigAttribution','attribution', "", 40);
+	$('tb2blcAdvanced').innerHTML += "<br />Display Outside Extents " + createSelectList('layoutConfigDisplayOutsideMaxExtent', 'displayOutsideMaxExtent', '', getFalseMenu());
+}
+
+function loadMapServerConfig(){
+/*NAME,URL,PARAMS,OPTIONS*/
+	/*To do - on every input onchange, save the value to a global variabe / object (i.e. var wms = new object(); */
+	/*Add some basic, universal layer config options*/
+	$('tb2blcCommon').innerHTML += "<br />Base Layer " + createSelectList('layoutConfigisBase', 'isBase', '', getTrueMenu());
+	$('tb2blcCommon').innerHTML += " Number of Zoom Levels " +  createInputTextBox('layoutConfigNumZoom','numZoomLevels', "10", 1);
+	$('tb2blcCommon').innerHTML += "<br /> URL (required)" +  createInputTextBox('layoutConfigCommonURL','url', "", 52);
+	$('tb2blcCommon').innerHTML += "<br /> Layers " +  createInputTextBox('layoutConfigLayers','layers', "", 45);	
+	$('tb2blcCommon').innerHTML += "<br /> Exceptions " +  createInputTextBox('layoutConfigCommonExceptions','exceptions', "application/vnd.ogc.se_inimage", 45);	
+	$('tb2blcCommon').innerHTML += "<br / >Display in Layer List " + createSelectList('layoutConfigDsplayInLS', 'displayInLayerSwitcher', '', getTrueMenu());
+	$('tb2blcCommon').innerHTML += " Visibility " + createSelectList('layoutConfigVisibility', 'visibility', '', getTrueMenu());
+	$('tb2blcCommon').innerHTML += "<br /> Image Format " + createSelectList('layoutConfigIMGFormat', 'format', '', getImageFormatMenu());
+	$('tb2blcCommon').innerHTML += " Transparent " + createSelectList('layoutConfigTransparent', 'transparent', '', getTrueMenu());
+	$('tb2blcCommon').innerHTML += "<br / >Layer Opacity " + createSelectList('layoutConfigOpacity', 'opacity', '', getOpacityMenu());
+	$('tb2blcCommon').innerHTML += " Contains Alpha Layer " + createSelectList('layoutConfigAlpha', 'alpha', '', getFalseMenu());
+	$('tb2blcCommon').innerHTML += "Reproject " + createSelectList('layoutConfigReproject', 'reproject', '', getFalseMenu());
+	$('tb2blcCommon').innerHTML += " Wrap Date Line " + createSelectList('layoutConfigWrapDateLine', 'wrapDateLine', '', getFalseMenu());
+	$('tb2blcCommon').innerHTML += "<br />Attribution " +  createInputTextBox('layoutConfigAttribution','attribution', "", 40);	
+	
+	/*Advanced Settings*/
+	$('tb2blcAdvanced').innerHTML += "<br />SRS - EPSG:" +  createInputTextBox('layoutConfigSRS','srs', "", 10);
+	$('tb2blcAdvanced').innerHTML += " Map Unit " +  createInputTextBox('layoutConfigUnit','unit', "", 10);
+	$('tb2blcAdvanced').innerHTML += "<br />Resolutions " +  createInputTextBox('layoutConfigResolutions','resolutions', "", 40);
+	$('tb2blcAdvanced').innerHTML += "<br />Min Resolution " +  createInputTextBox('layoutConfigMinResolution','minResolution', "", 10);
+	$('tb2blcAdvanced').innerHTML += " Max Resolution " +  createInputTextBox('layoutConfigMaxResolution','maxResolution', "", 10);	
+	$('tb2blcAdvanced').innerHTML += "<br />Min Extent " +  createInputTextBox('layoutConfigMinExtent','maxExtent', "", 10);
+	$('tb2blcAdvanced').innerHTML += " Max Extent " +  createInputTextBox('layoutConfigMaxExtent','maxExtent', "", 10);
+	$('tb2blcAdvanced').innerHTML += "<br />Min Scale " +  createInputTextBox('layoutConfigMinScale','minScale', "", 10);
+	$('tb2blcAdvanced').innerHTML += " Max Scale " +  createInputTextBox('layoutConfigMaxScale','maxScale', "", 10);
+	$('tb2blcAdvanced').innerHTML += "<br />Display Outside Extents " + createSelectList('layoutConfigDisplayOutsideMaxExtent', 'displayOutsideMaxExtent', '', getFalseMenu());
+	$('tb2blcAdvanced').innerHTML += "In Range " + createSelectList('layoutConfiginRange', 'inRange', '', getFalseMenu());
+	$('tb2blcAdvanced').innerHTML += "<br />Num Loading Tiles " +  createInputTextBox('layoutConfigNumLoadingTiles','numLoadingTiles', "", 2);
+	
+	$('tb2blcAdvanced').innerHTML += "<br /> Single Tile " + createSelectList('layoutConfigSingleTile', 'singleTile', '', getTrueMenu());
+			$('tb2blcAdvanced').innerHTML += "Ratio  " +  createInputTextBox('layoutConfigRatio','ratio', "1", 2); /*Hide if not single tile*/
+				$('tb2blcAdvanced').innerHTML += "<br /> Buffer  " +  createInputTextBox('layoutConfigBuffer','buffer', "1", 2); /*Show if not single tile*/
+	
+	$('tb2blcAdvanced').innerHTML += " Gutter " +  createInputTextBox('layoutConfigGutter','gutter', "1", 2);
+			$('tb2blcAdvanced').innerHTML += "<br />Image Size " +  createInputTextBox('layoutConfigImageSize','imageSize', "", 10);
+			$('tb2blcAdvanced').innerHTML += "Image Offset " +  createInputTextBox('layoutConfigOffset','imageOffset', "", 10);
+
+}
+
+function loadTileCacheConfig(){
+/*NAME,URL, LAYERNAME, OPTIONS*/
+
+	$('tb2blcCommon').innerHTML += "<br />Base Layer " + createSelectList('layoutConfigisBase', 'isBase', '', getTrueMenu());
+		$('tb2blcCommon').innerHTML += " Number of Zoom Levels " +  createInputTextBox('layoutConfigNumZoom','numZoomLevels', "10", 1);
+	$('tb2blcCommon').innerHTML += "<br /> URL (required)" +  createInputTextBox('layoutConfigCommonURL','url', "Tile Cache URL", 52);
+	$('tb2blcCommon').innerHTML += "<br /> Layer Name " +  createInputTextBox('layoutConfigLayerName','layerName', "", 45);	
+	$('tb2blcCommon').innerHTML += "<br />Tiles Origin" +  createInputTextBox('layoutConfigTilesOrigin','tilesOrigin', "", 40);
+	$('tb2blcCommon').innerHTML += "<br / >Display in Layer List " + createSelectList('layoutConfigDsplayInLS', 'displayInLayerSwitcher', '', getTrueMenu());
+		$('tb2blcCommon').innerHTML += " Visibility " + createSelectList('layoutConfigVisibility', 'visibility', '', getTrueMenu());
+	$('tb2blcCommon').innerHTML += "<br /> Image Format " + createSelectList('layoutConfigIMGFormat', 'format', '', getImageFormatMenu());
+		$('tb2blcCommon').innerHTML += " Transparent " + createSelectList('layoutConfigTransparent', 'transparent', '', getTrueMenu());
+	$('tb2blcCommon').innerHTML += "<br / >Layer Opacity " + createSelectList('layoutConfigOpacity', 'opacity', '', getOpacityMenu());
+		$('tb2blcCommon').innerHTML += " Contains Alpha Layer " + createSelectList('layoutConfigAlpha', 'alpha', '', getFalseMenu());
+	$('tb2blcCommon').innerHTML += "<br />Attribution " +  createInputTextBox('layoutConfigAttribution','attribution', "", 40);
+	
+	/*Advanced Settings*/
+	$('tb2blcAdvanced').innerHTML += "<br />SRS - EPSG:" +  createInputTextBox('layoutConfigSRS','srs', "", 10);
+		$('tb2blcAdvanced').innerHTML += " Map Unit " +  createInputTextBox('layoutConfigUnit','unit', "", 10);
+	$('tb2blcAdvanced').innerHTML += "<br />Resolutions " +  createInputTextBox('layoutConfigResolutions','resolutions', "", 40);
+	$('tb2blcAdvanced').innerHTML += "<br />Min Resolution " +  createInputTextBox('layoutConfigMinResolution','minResolution', "", 10);
+		$('tb2blcAdvanced').innerHTML += " Max Resolution " +  createInputTextBox('layoutConfigMaxResolution','maxResolution', "", 10);	
+	$('tb2blcAdvanced').innerHTML += "<br />Min Extent " +  createInputTextBox('layoutConfigMinExtent','maxExtent', "", 10);
+		$('tb2blcAdvanced').innerHTML += " Max Extent " +  createInputTextBox('layoutConfigMaxExtent','maxExtent', "", 10);
+	$('tb2blcAdvanced').innerHTML += "<br />Min Scale " +  createInputTextBox('layoutConfigMinScale','minScale', "", 10);
+		$('tb2blcAdvanced').innerHTML += " Max Scale " +  createInputTextBox('layoutConfigMaxScale','maxScale', "", 10);
+	$('tb2blcAdvanced').innerHTML += "<br />Display Outside Extents " + createSelectList('layoutConfigDisplayOutsideMaxExtent', 'displayOutsideMaxExtent', '', getFalseMenu());
+		$('tb2blcAdvanced').innerHTML += "In Range " + createSelectList('layoutConfiginRange', 'inRange', '', getFalseMenu());
+	$('tb2blcAdvanced').innerHTML += "<br />Num Loading Tiles " +  createInputTextBox('layoutConfigNumLoadingTiles','numLoadingTiles', "", 2);
+	
+	$('tb2blcAdvanced').innerHTML += "<br /> Single Tile " + createSelectList('layoutConfigSingleTile', 'singleTile', '', getTrueMenu());
+			$('tb2blcAdvanced').innerHTML += "Ratio  " +  createInputTextBox('layoutConfigRatio','ratio', "1", 2); /*Hide if not single tile*/
+				$('tb2blcAdvanced').innerHTML += "<br /> Buffer  " +  createInputTextBox('layoutConfigBuffer','buffer', "1", 2); /*Show if not single tile*/
+			
+	$('tb2blcAdvanced').innerHTML += " Gutter " +  createInputTextBox('layoutConfigGutter','gutter', "1", 2); /*Show if not single tile*/
+		$('tb2blcAdvanced').innerHTML += "<br />Image Size " +  createInputTextBox('layoutConfigImageSize','imageSize', "", 10);
+		$('tb2blcAdvanced').innerHTML += "Image Offset " +  createInputTextBox('layoutConfigOffset','imageOffset', "", 10);
+}
+function loadVectorConfig(){
+/*NAME,OPTIONS*/
+	$('tb2blcCommon').innerHTML += "<br />Base Layer " + createSelectList('layoutConfigisBase', 'isBase', '', getFalseMenu());
+	$('tb2blcCommon').innerHTML += "<br / >Display in Layer List " + createSelectList('layoutConfigDsplayInLS', 'displayInLayerSwitcher', '', getFalseMenu());
+	$('tb2blcCommon').innerHTML += "<br />Fixed Position " + createSelectList('layoutConfigIsFixed', 'isFixed', '', getFalseMenu());
+	$('tb2blcCommon').innerHTML += "Drawn " + createSelectList('layoutConfigDrawn', 'drawn', '', getFalseMenu());
+	$('tb2blcCommon').innerHTML += "<br />Vector " + createSelectList('layoutConfigisVector', 'isVector', '', getFalseMenu());
+	$('tb2blcCommon').innerHTML += "Report Errors " + createSelectList('layoutConfigReportError', 'reportError', '', getTrueMenu());
+	$('tb2blcCommon').innerHTML += "<br />Features " +  createInputTextBox('layoutConfigFeatures','features', "", 30);
+	$('tb2blcCommon').innerHTML += "<br />Selected Features " +  createInputTextBox('layoutConfigSelectedFeatures','selectedFeatures', "", 30);
+	$('tb2blcCommon').innerHTML += "<br />Attribution " +  createInputTextBox('layoutConfigAttribution','attribution', "", 40);
+	
+	$('tb2blcAdvanced').innerHTML += "<br />Style " +  createInputTextBox('layoutConfigStyle','style', "", 30);
+	$('tb2blcAdvanced').innerHTML += "<br />Renderes " +  createInputTextBox('layoutConfigStyle','style', "'SVG', 'VML'", 30); // in the form of ['SVG', 'VML'] 
+	$('tb2blcAdvanced').innerHTML += "<br />Renderer " +  createInputTextBox('layoutConfigRenderer','renderer', "", 30);
+	$('tb2blcAdvanced').innerHTML += "<br />Geometry Type " +  createInputTextBox('layoutConfigGeometryType','geometryType', "", 30);	
+}
+function loadImageConfig(){
+/*NAME,URL,EXTENT,SIZE,OPTIONS*/
+/*
+  new OpenLayers.Bounds(-180, -88.759, 180, 88.759),
+                                new OpenLayers.Size(580, 288),
+								*/
+	$('tb2blcCommon').innerHTML += "<br />Base Layer " + createSelectList('layoutConfigisBase', 'isBase', '', getTrueMenu());
+	$('tb2blcCommon').innerHTML += " Number of Zoom Levels " +  createInputTextBox('layoutConfigNumZoom','numZoomLevels', "10", 1);
+	$('tb2blcCommon').innerHTML += "<br /> URL (required)" +  createInputTextBox('layoutConfigCommonURL','url', "", 52);
+	$('tb2blcCommon').innerHTML += "<br /> Extent " +  createInputTextBox('layoutConfigExtent','extent', "", 45);	
+	$('tb2blcCommon').innerHTML += "<br /> Image Width" +  createInputTextBox('layoutConfigSizeW','size', "", 5);
+		$('tb2blcCommon').innerHTML += " Image Height" +  createInputTextBox('layoutConfigSizeH','size', "", 5);		
+	$('tb2blcCommon').innerHTML += "<br / >Display in Layer List " + createSelectList('layoutConfigDsplayInLS', 'displayInLayerSwitcher', '', getTrueMenu());
+	$('tb2blcCommon').innerHTML += " Visibility " + createSelectList('layoutConfigVisibility', 'visibility', '', getTrueMenu());
+	$('tb2blcCommon').innerHTML += " Transparent " + createSelectList('layoutConfigTransparent', 'transparent', '', getTrueMenu());
+	$('tb2blcCommon').innerHTML += "<br / >Layer Opacity " + createSelectList('layoutConfigOpacity', 'opacity', '', getOpacityMenu());
+	$('tb2blcCommon').innerHTML += " Contains Alpha Layer " + createSelectList('layoutConfigAlpha', 'alpha', '', getFalseMenu());
+	$('tb2blcCommon').innerHTML += "Reproject " + createSelectList('layoutConfigReproject', 'reproject', '', getFalseMenu());
+	$('tb2blcCommon').innerHTML += " Wrap Date Line " + createSelectList('layoutConfigWrapDateLine', 'wrapDateLine', '', getFalseMenu());
+	$('tb2blcCommon').innerHTML += "<br />Attribution " +  createInputTextBox('layoutConfigAttribution','attribution', "", 40);	
+	
+	/*Advanced Settings*/
+	$('tb2blcAdvanced').innerHTML += "<br />SRS - EPSG:" +  createInputTextBox('layoutConfigSRS','srs', "", 10);
+	$('tb2blcAdvanced').innerHTML += " Map Unit " +  createInputTextBox('layoutConfigUnit','unit', "", 10);
+	$('tb2blcAdvanced').innerHTML += "<br />Resolutions " +  createInputTextBox('layoutConfigResolutions','resolutions', "", 40);
+	$('tb2blcAdvanced').innerHTML += "<br />Min Resolution " +  createInputTextBox('layoutConfigMinResolution','minResolution', "", 10);
+	$('tb2blcAdvanced').innerHTML += " Max Resolution " +  createInputTextBox('layoutConfigMaxResolution','maxResolution', "", 10);	
+	$('tb2blcAdvanced').innerHTML += "<br />Min Scale " +  createInputTextBox('layoutConfigMinScale','minScale', "", 10);
+	$('tb2blcAdvanced').innerHTML += " Max Scale " +  createInputTextBox('layoutConfigMaxScale','maxScale', "", 10);
+	$('tb2blcAdvanced').innerHTML += "<br />Display Outside Extents " + createSelectList('layoutConfigDisplayOutsideMaxExtent', 'displayOutsideMaxExtent', '', getFalseMenu());
+	$('tb2blcAdvanced').innerHTML += "In Range " + createSelectList('layoutConfiginRange', 'inRange', '', getFalseMenu());
+}

Added: sandbox/architect/scripts/mootools12.js
===================================================================
--- sandbox/architect/scripts/mootools12.js	                        (rev 0)
+++ sandbox/architect/scripts/mootools12.js	2008-07-14 14:44:09 UTC (rev 7503)
@@ -0,0 +1 @@
+eval(function(p,a,c,k,e,r){e=function(c){return(c<a?'':e(parseInt(c/a)))+((c=c%a)>35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--)r[e(c)]=k[c]||e(c);k=[function(e){return r[e]}];e=function(){return'\\w+'};c=1};while(c--)if(k[c])p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c]);return p}('v cH={4d:"1.2.0",9V:""};v 1J=m(J){J=J||{};v F=J.6H||m(){};v G=J.9W;G=(G!==1a);v H=J.6I;v E=J.1C;v B=J.9X;v A=J.1A;v C=E||H;C.6J=1J;C.$3A={1A:"6K"};12(H&&E){C.29=H.29}C.29.6J=C;12(A){v D=A.2X();C.29.$3A={1A:D};1J.8g(C,D)}v I=m(M,K,N,L){12(!B||L||!M.29[K]){M.29[K]=N}12(G){1J.8h(M,K,B)}F.1F(M,K,N);o M};C.1x=m(L,K,N){12(2y L=="2c"){o I(k,L,K,N)}1b(v M 1l L){I(k,M,L[M],K)}o k};C.4t=m(M,K,N){12(2y M=="2c"){M=k.29[M];12(M){I(k,K,M,N)}}1r{1b(v L 1l M){k.4t(L,M[L],K)}}o k};o C};1J.1x=m(D,C){1b(v B=0,A=D.1f;B<A;B++){D[B].1x(C)}};1J.8h=m(B,C,A){12((!A||!B[C])&&2y B.29[C]=="m"){B[C]=m(){v D=1v.29.2s.1F(1d);o B.29[C].2N(D.63(),D)}}};1J.8g=m(A,B){12(!A.1i){A.1i=m(C){o($1i(C)===B)}}};1J.4t=m(E,B,A,F){1b(v D=0,C=E.1f;D<C;D++){E[D].4t(B,A,F)}};(m(B){1b(v A 1l B){1J.8g(B[A],A)}})({"9Y":cI,"6K":1J,2t:4N});(m(B){1b(v A 1l B){15 1J({1A:A,1C:B[A],9X:1c})}})({2k:2k,6L:6L,3T:3T,1v:1v,64:64,65:65});(m(B,A){1b(v C=A.1f;C--;C){1J.8h(B,A[C],1c)}o 1d.2O})(1v,["9Z","1G","cJ","63","a0","6M","cK","4u","4O","2s","6N","a1","3o","a2"])(2k,["6O","8i","4u","3o","a2","1O","2d","5n","2s","4P","6P","cL","2X","6Q","a1"]);m $2e(A){o!!(A||A===0)}m $5o(A){cM(A);cN(A);o 1h}m $3b(A){o(A!=3c)}m $1M(){}m $1d(A){o m(){o 1d[A]}}m $5p(A){o(2y A=="m")?A:m(){o A}}m $1H(C,A){1b(v B 1l(A||{})){C[B]=A[B]}o C}m $4Q(C){v B;1X($1i(C)){1g"2t":B={};1b(v E 1l C){B[E]=$4Q(C[E])}1B;1g"4v":B=$4Q(C.8j());1B;1g"4R":B=[];1b(v D=0,A=C.1f;D<A;D++){B[D]=$4Q(C[D])}1B;4S:o C}o B}m $3U(){v E={};1b(v D=0,A=1d.1f;D<A;D++){v B=1d[D];12($1i(B)!="2t"){2P}1b(v C 1l B){v G=B[C],F=E[C];E[C]=(F&&$1i(G)=="2t"&&$1i(F)=="2t")?$3U(F,G):$4Q(G)}}o E}m $66(){1b(v B=0,A=1d.1f;B<A;B++){12(1d[B]!=3c){o 1d[B]}}o 1h}m $8k(B,A){o 1m.6R(1m.8k()*(A-B+1)+B)}m $4e(B){v A=$1i(B);o(A)?((A!="4R"&&A!="1d")?[B]:B):[]}v $3d=65.1Z||m(){o 15 65().a3()};m $3e(){1b(v B=0,A=1d.1f;B<A;B++){3e{o 1d[B]()}cO(C){}}o 1h}m $1i(A){12(A==3c){o 1a}12(A.$3A){o(A.$3A.1A=="4w"&&!cP(A))?1a:A.$3A.1A}12(A.8l){1X(A.3B){1g 1:o"1e";1g 3:o(/\\S/).2u(A.8m)?"8n":"a4"}}1r{12(2y A.1f=="4w"){12(A.2O){o"1d"}1r{12(A.6S){o"6T"}}}}o 2y A}v 1s=15 1J({1A:"1s",1C:m(A){12($1i(A)=="4v"){A=$4Q(A.8j())}1b(v B 1l A){k[B]=A[B]}o k}});1s.1x({cQ:m(){v B=0;1b(v A 1l k){12(k.3V(A)){B++}}o B},6U:m(B,C){1b(v A 1l k){12(k.3V(A)){B.1F(C,k[A],A,k)}}},8j:m(){v B={};1b(v A 1l k){12(k.3V(A)){B[A]=k[A]}}o B}});1s.4t("6U","1k");m $H(A){o 15 1s(A)}1v.1x({6U:m(C,D){1b(v B=0,A=k.1f;B<A;B++){C.1F(D,k[B],B,k)}}});1v.4t("6U","1k");m $A(C){12(C.6S){v D=[];1b(v B=0,A=C.1f;B<A;B++){D[B]=C[B]}o D}o 1v.29.2s.1F(C)}m $1k(C,B,D){v A=$1i(C);((A=="1d"||A=="6T"||A=="4R")?1v:1s).1k(C,B,D)}v 1j=15 1s({1y:{1A:"cR",4d:""},6V:{1A:(8o.cS.1O(/cT|6W|cU/i)||["cV"])[0].2X()},8p:{a5:!!(1n.cW),cX:!!(1P.cY)},a6:{}});12(1P.cZ){1j.1y={1A:"6X",4d:(1n.a7)?d0:d1}}1r{12(1P.6Y){1j.1y={1A:"2f",4d:(1P.8q)?5:4}}1r{12(!8o.d2){1j.1y={1A:"5q",4d:(1j.8p.a5)?d3:d4}}1r{12(1n.d5!=1h){1j.1y={1A:"67",4d:(1n.a7)?19:18}}}}}1j.1y[1j.1y.1A]=1j.1y[1j.1y.1A+1j.1y.4d]=1c;12(1P.d6!=3c){1j.6V.1A="d7"}1j.6V[1j.6V.1A]=1c;1j.3f=m(){o $3e(m(){o 15 8q()},m(){o 15 6Y("d8.d9")})};1j.8p.2D=!!(1j.3f());1j.a6.a8=(m(){v A=($3e(m(){o 8o.da["db a8"].dc},m(){o 15 6Y("a9.a9").dd("$4d")})||"0 de").1O(/\\d+/g);o{4d:4T(A[0]||0+"."+A[1]||0),9V:4T(A[2]||0)}})();m $68(B){12(!B){o B}12(1P.aa){1P.aa(B)}1r{v A=1n.6Z("69");A.ab("1i","2Q/4x");A.2Q=B;1n.5r.5s(A);1n.5r.ac(A)}o B}1J.8r=1;v $2l=(1j.1y.2f)?m(A){o(A.2l||(A.2l=[1J.8r++]))[0]}:m(A){o A.2l||(A.2l=1J.8r++)};v 3g=15 1J({1A:"3g",6I:(1j.1y.2f)?1h:1P.3g,1C:m(A){$2l(A);12(!A.17){A.17=$1M;12(1j.1y.5q){A.1n.6Z("70")}A.17.29=(1j.1y.5q)?1P["[[df.29]]"]:{}}o $1H(A,3g.3W)},6H:m(B,A){1P[B]=3g.3W[B]=A}});3g.3W={$3A:{1A:"1P"}};15 3g(1P);v 2R=15 1J({1A:"2R",6I:(1j.1y.2f)?1h:1P.2R,1C:m(A){$2l(A);A.5r=A.4y("5r")[0];A.2S=A.4y("2S")[0];A.1P=A.ad||A.ae;12(1j.1y.dg){$3e(m(){A.dh("di",1a,1c)})}o $1H(A,2R.3W)},6H:m(B,A){1n[B]=2R.3W[B]=A}});2R.3W={$3A:{1A:"1n"}};15 2R(1n);1v.1x({8s:m(C,D){1b(v B=0,A=k.1f;B<A;B++){12(!C.1F(D,k[B],B,k)){o 1a}}o 1c},2E:m(D,E){v C=[];1b(v B=0,A=k.1f;B<A;B++){12(D.1F(E,k[B],B,k)){C.1G(k[B])}}o C},71:m(){o k.2E($3b)},3o:m(C,D){v A=k.1f;1b(v B=(D<0)?1m.3X(0,A+D):D||0;B<A;B++){12(k[B]===C){o B}}o-1},2T:m(D,E){v C=[];1b(v B=0,A=k.1f;B<A;B++){C[B]=D.1F(E,k[B],B,k)}o C},af:m(C,D){1b(v B=0,A=k.1f;B<A;B++){12(C.1F(D,k[B],B,k)){o 1c}}o 1a},72:m(C){v D={},B=1m.2Y(k.1f,C.1f);1b(v A=0;A<B;A++){D[C[A]]=k[A]}o D},2g:m(C){v A={};1b(v E=0,B=k.1f;E<B;E++){1b(v D 1l C){12(C[D](k[E])){A[D]=k[E];2h C[D];1B}}}o A},1W:m(A,B){o k.3o(A,B)!=-1},1H:m(C){1b(v B=0,A=C.1f;B<A;B++){k.1G(C[B])}o k},73:m(){o(k.1f)?k[k.1f-1]:1h},dj:m(){o(k.1f)?k[$8k(0,k.1f-1)]:1h},4U:m(A){12(!k.1W(A)){k.1G(A)}o k},8t:m(C){1b(v B=0,A=C.1f;B<A;B++){k.4U(C[B])}o k},2Z:m(B){1b(v A=k.1f;A--;A){12(k[A]===B){k.6M(A,1)}}o k},1M:m(){k.1f=0;o k},3p:m(){v D=[];1b(v B=0,A=k.1f;B<A;B++){v C=$1i(k[B]);12(!C){2P}D=D.4u((C=="4R"||C=="6T"||C=="1d")?1v.3p(k[B]):k[B])}o D},4V:m(B){12(k.1f!=3){o 1h}v A=k.2T(m(C){12(C.1f==1){C+=C}o C.3q(16)});o(B)?A:"2m("+A+")"},4W:m(D){12(k.1f<3){o 1h}12(k.1f==4&&k[3]==0&&!D){o"8u"}v B=[];1b(v A=0;A<3;A++){v C=(k[A]-0).6N(16);B.1G((C.1f==1)?"0"+C:C)}o(D)?B:"#"+B.4O("")}});6L.1x({1H:m(A){1b(v B 1l A){k[B]=A[B]}o k},3Y:m(B){v A=k;B=B||{};o m(D){v C=B.1d;C=(C!=3c)?$4e(C):1v.2s(1d,(B.3r)?1:0);12(B.3r){C=[D||1P.3r].1H(C)}v E=m(){o A.2N(B.1D||1h,C)};12(B.3s){o dk(E,B.3s)}12(B.4X){o dl(E,B.4X)}12(B.74){o $3e(E)}o E()}},dm:m(A,B){o k.3Y({1d:A,1D:B})},74:m(A,B){o k.3Y({1d:A,1D:B,74:1c})()},1D:m(B,A){o k.3Y({1D:B,1d:A})},5t:m(B,A){o k.3Y({1D:B,3r:1c,1d:A})},3s:m(B,C,A){o k.3Y({3s:B,1D:C,1d:A})()},4X:m(A,C,B){o k.3Y({4X:A,1D:C,1d:B})()},ag:m(A,B){o k.2N(B,$4e(A))}});3T.1x({21:m(B,A){o 1m.2Y(A,1m.3X(B,k))},2o:m(A){A=1m.3Z(10,A||0);o 1m.2o(k*A)/A},6a:m(B,C){1b(v A=0;A<k;A++){B.1F(C,A,k)}},ah:m(){o 75(k)},3q:m(A){o 4T(k,A||10)}});3T.4t("6a","1k");(m(B){v A={};B.1k(m(C){12(!3T[C]){A[C]=m(){o 1m[C].2N(1h,[k].4u($A(1d)))}}});3T.1x(A)})(["76","ai","dn","do","dp","aj","8v","dq","6R","dr","3X","2Y","3Z","8w","ak","ds"]);2k.1x({2u:m(A,B){o((2y A=="2c")?15 64(A,B):A).2u(k)},1W:m(A,B){o(B)?(B+k+B).3o(B+A+B)>-1:k.3o(A)>-1},77:m(){o k.2d(/^\\s+|\\s+$/g,"")},71:m(){o k.2d(/\\s+/g," ").77()},78:m(){o k.2d(/-\\D/g,m(A){o A.6O(1).6Q()})},al:m(){o k.2d(/[A-Z]/g,m(A){o("-"+A.6O(0).2X())})},4z:m(){o k.2d(/\\b[a-z]/g,m(A){o A.6Q()})},am:m(){o k.2d(/([-.*+?^${}()|[\\]\\/\\\\])/g,"\\\\$1")},3q:m(A){o 4T(k,A||10)},ah:m(){o 75(k)},4V:m(B){v A=k.1O(/^#?(\\w{1,2})(\\w{1,2})(\\w{1,2})$/);o(A)?A.2s(1).4V(B):1h},4W:m(B){v A=k.1O(/\\d{1,3}/g);o(A)?A.4W(B):1h},8x:m(B){v A="";v C=k.2d(/<69[^>]*>([\\s\\S]*?)<\\/69>/gi,m(){A+=1d[1]+"\\n";o""});12(B===1c){$68(A)}1r{12($1i(B)=="m"){B(A,C)}}o C},dt:m(A,B){o k.2d(B||(/\\\\?\\{([^}]+)\\}/g),m(D,C){12(D.6O(0)=="\\\\"){o D.2s(1)}o(A[C]!=3c)?A[C]:""})}});1s.1x({du:4N.29.3V,79:m(B){1b(v A 1l k){12(k.3V(A)&&k[A]===B){o A}}o 1h},an:m(A){o(1s.79(k,A)!==1h)},1H:m(A){1s.1k(A,m(C,B){1s.1o(k,B,C)},k);o k},8t:m(A){1s.1k(A,m(C,B){1s.4U(k,B,C)},k);o k},2Z:m(A){12(k.3V(A)){2h k[A]}o k},1p:m(A){o(k.3V(A))?k[A]:1h},1o:m(A,B){12(!k[A]||k.3V(A)){k[A]=B}o k},1M:m(){1s.1k(k,m(B,A){2h k[A]},k);o k},4U:m(B,C){v A=k[B];12(A==3c){k[B]=C}o k},2T:m(B,C){v A=15 1s;1s.1k(k,m(E,D){A.1o(D,B.1F(C,E,D,k))},k);o A},2E:m(B,C){v A=15 1s;1s.1k(k,m(E,D){12(B.1F(C,E,D,k)){A.1o(D,E)}},k);o A},8s:m(B,C){1b(v A 1l k){12(k.3V(A)&&!B.1F(C,k[A],A)){o 1a}}o 1c},af:m(B,C){1b(v A 1l k){12(k.3V(A)&&B.1F(C,k[A],A)){o 1c}}o 1a},dv:m(){v A=[];1s.1k(k,m(C,B){A.1G(B)});o A},dw:m(){v A=[];1s.1k(k,m(B){A.1G(B)});o A},4Y:m(A){v B=[];1s.1k(k,m(F,E){12(A){E=A+"["+E+"]"}v D;1X($1i(F)){1g"2t":D=1s.4Y(F,E);1B;1g"4R":v C={};F.1k(m(H,G){C[G]=H});D=1s.4Y(C,E);1B;4S:D=E+"="+8y(F)}12(F!=3c){B.1G(D)}});o B.4O("&")}});1s.4t({79:"3o",an:"1W"});v 5u=15 1J({1A:"5u",1C:m(A,F){F=F||1P;v K=F.1n;A=A||F.3r;12(A.$ao){o A}k.$ao=1c;v J=A.1i;v G=A.ap||A.dx;2v(G&&G.3B==3){G=G.2i}12(J.2u(/5v/)){v B=A.aq||A.dy;v M=5u.ar.79(B);12(J=="as"){v D=B-dz;12(D>0&&D<13){M="f"+D}}M=M||2k.dA(B).2X()}1r{12(J.1O(/(7a|41|dB)/i)){K=(!K.7b||K.7b=="at")?K.2S:K.3t;v I={x:A.8z||A.au+K.6b,y:A.8A||A.av+K.6c};v C={x:(A.8z)?A.8z-F.aw:A.au,y:(A.8A)?A.8A-F.ax:A.av};12(J.1O(/8B|4Z/)){v H=(A.ay)?A.ay/dC:-(A.dD||0)/3}v E=(A.aq==3)||(A.dE==2);v L=1h;12(J.1O(/dF|7c/)){1X(J){1g"8C":L=A.7d||A.dG;1B;1g"8D":L=A.7d||A.4f}12(!(m(){2v(L&&L.3B==3){L=L.2i}o 1c}).3Y({74:1j.1y.67})()){L=1a}}}}o $1H(k,{3r:A,1i:J,2z:I,az:C,dH:E,6d:H,7d:L,ap:G,dI:B,5v:M,63:A.dJ,dK:A.dL,dM:A.dN,dO:A.dP})}});5u.ar=15 1s({6e:13,dQ:38,dR:40,1S:37,3h:39,dS:27,dT:32,dU:8,dV:9,"2h":46});5u.1x({3u:m(){o k.7e().3C()},7e:m(){12(k.3r.7e){k.3r.7e()}1r{k.3r.dW=1c}o k},3C:m(){12(k.3r.3C){k.3r.3C()}1r{k.3r.dX=1a}o k}});v 1I=15 1J({1A:"1I",1C:m(B){B=B||{};v A=m(E){1b(v D 1l k){k[D]=$4Q(k[D])}1b(v F 1l 1I.7f){12(!k[F]){2P}1I.7f[F](k,k[F]);2h k[F]}k.6J=A;12(E===$1M){o k}v C=(k.1C)?k.1C.2N(k,1d):k;12(k.14&&k.14.1C){k.14.1C.1F(k)}o C};$1H(A,k);A.6J=1I;A.29=B;o A}});1I.1x({1x:m(){1I.7f.3D(k.29,1v.2s(1d));o k}});1I.7f={3D:m(A,B){$4e(B).1k(m(C){$1H(A,($1i(C)=="51")?15 C($1M):C)})},3i:m(c,d){v e=15 d($1M);2h e.1Y;2h e.aA;1b(v f 1l e){v g=c[f],4g=e[f];12(g==3c){c[f]=4g;2P}v h=$1i(g),aB=$1i(4g);12(h!=aB){2P}1X(h){1g"m":12(!1d.2O.aC){c[f]=8E("("+2k(g).2d(/\\dY\\.1Y\\(\\s*(\\))?/g,m(a,b){o"1d.2O.7g.1F(k"+(b||", ")})+")")}c[f].7g=4g;1B;1g"2t":c[f]=$3U(4g,g)}}c.1Y=m(){o 1d.2O.aC.7g.2N(k,1d)};c.aA=m(a){o a.7g.2N(k,1v.2s(1d,1))}}};v 8F=15 1I({30:m(){k.$30=(k.$30||[]).1H(1d);o k},7h:m(){o(k.$30&&k.$30.1f)?k.$30.63().2N(k,1d):1a},aD:m(){12(k.$30){k.$30.1M()}o k}});v 2F=15 1I({1Q:m(C,B,A){C=2F.7i(C);12(B!=$1M){k.$1T=k.$1T||{};k.$1T[C]=k.$1T[C]||[];k.$1T[C].4U(B);12(A){B.aE=1c}}o k},52:m(A){1b(v B 1l A){k.1Q(B,A[B])}o k},1E:m(C,B,A){C=2F.7i(C);12(!k.$1T||!k.$1T[C]){o k}k.$1T[C].1k(m(D){D.3Y({1D:k,3s:A,"1d":B})()},k);o k},2A:m(B,A){B=2F.7i(B);12(!k.$1T||!k.$1T[B]){o k}12(!A.aE){k.$1T[B].2Z(A)}o k},6f:m(C){1b(v D 1l k.$1T){12(C&&C!=D){2P}v B=k.$1T[D];1b(v A=B.1f;A--;A){k.2A(D,B[A])}}o k}});2F.7i=m(A){o A.2d(/^6g([A-Z])/,m(B,C){o C.2X()})};v 42=15 1I({43:m(){k.14=$3U.ag([k.14].1H(1d));12(!k.1Q){o k}1b(v A 1l k.14){12($1i(k.14[A])!="m"||!(/^6g[A-Z]/).2u(A)){2P}k.1Q(A,k.14[A]);2h k.14[A]}o k}});2R.1x({aF:m(A,B){12(1j.1y.2f&&B){["1A","1i","7j"].1k(m(C){12(!B[C]){o}A+=" "+C+\'="\'+B[C]+\'"\';12(C!="7j"){2h B[C]}});A="<"+A+">"}o $.1e(k.6Z(A)).1o(B)},8G:m(A){o k.dZ(A)},44:m(){o k},31:m(){o k.ad||k.ae},aG:m(){v C=k.4y("*");1b(v B=0,A=C.1f;B<A;B++){1j.7k(C[B])}}});v 17=15 1J({1A:"17",6I:1P.17,1C:m(A,B){v C=17.aH.1p(A);12(C){o C(B)}12(2y A=="2c"){o 1n.aF(A,B)}o $(A).1o(B)},6H:m(A,B){12(!1v[A]){2U.1x(A,2U.aI(A))}17.3W[A]=B}});17.3W={$3A:{1A:"1e"}};17.aH=15 1s;v aJ=15 1J({1A:"aJ",9W:1a,1C:m(){v E=1v.2g(1d,{7l:4N.1i,70:$3b});v C=E.7l||{};v B=$(E.70)||1a;v D=C.4h||$1M;2h C.4h;C.33=C.1A=$66(C.33,C.1A,B.33,B.1A,"e0"+$3d());B=15 17(B||"70",C);v A=m(){v F=$3e(m(){o B.6h.5w.8H});12(F&&F==1P.5w.8H){v H=15 3g(B.6h);v G=15 2R(B.6h.1n);$1H(H.17.29,17.3W)}D.1F(B.6h,B.6h.1n)};(!1P.e1[C.33])?B.7m("2p",A):A();o B}});v 2U=15 1J({1C:m(F,B){B=$1H({5x:1c,53:1c},B);F=F||[];12(B.5x||B.53){v G={},E=[];1b(v C=0,A=F.1f;C<A;C++){v D=$.1e(F[C],!B.53);12(B.5x){12(G[D.2l]){2P}G[D.2l]=1c}E.1G(D)}F=E}o(B.53)?$1H(F,k):F}});2U.1x({2E:m(A,B){12(!A){o k}o 15 2U(1v.2E(k,(2y A=="2c")?m(C){o C.1O(A)}:A,B))}});2U.aI=m(A){o m(){v B=[];v F=1c;1b(v D=0,C=k.1f;D<C;D++){v E=k[D][A].2N(k[D],1d);B.1G(E);12(F){F=($1i(E)=="1e")}}o(F)?15 2U(B):B}};3g.1x({$:m(B,C){12(B&&B.$3A&&B.2l){o B}v A=$1i(B);o($[A])?$[A](B,C,k.1n):1h},$$:m(A){12(1d.1f==1&&2y A=="2c"){o k.1n.54(A)}v F=[];v C=1v.3p(1d);1b(v D=0,B=C.1f;D<B;D++){v E=C[D];1X($1i(E)){1g"1e":E=[E];1B;1g"2c":E=k.1n.54(E,1c);1B;4S:E=1a}12(E){F.1H(E)}}o 15 2U(F)},44:m(){o k.1n},31:m(){o k}});$.2c=m(C,B,A){C=A.5y(C);o(C)?$.1e(C,B):1h};$.1e=m(A,D){$2l(A);12(!D&&!A.$3A&&!(/^2t|e2$/i).2u(A.4i)){v B=17.3W;1b(v C 1l B){A[C]=B[C]}}o A};$.2t=m(B,C,A){12(B.4f){o $.1e(B.4f(A),C)}o 1h};$.8n=$.a4=$.1P=$.1n=$1d(0);1J.1x([17,2R],{8I:m(A,B){o $(k.54(A,1c)[0]||1h,B)},54:m(A,D){A=A.4P(",");v C=[];v B=(A.1f>1);A.1k(m(E){v F=k.4y(E.77());(B)?C.1H(F):C=F},k);o 15 2U(C,{5x:B,53:!D})}});17.7n={1p:m(A){o(k[A]||(k[A]={}))}};17.5z=15 1s({7o:m(B,A){12(A.2i){A.2i.8J(B,A)}},8K:m(B,A){12(!A.2i){o}v C=A.4j;(C)?A.2i.8J(B,C):A.2i.5s(B)},2B:m(B,A){A.5s(B)},1U:m(B,A){v C=A.7p;(C)?A.8J(B,C):A.5s(B)}});17.5z.aK=17.5z.2B;17.5z.1k(m(C,B){v A=B.4z();17.1x("2a"+A,m(D){C(k,$(D,1c));o k});17.1x("5A"+A,m(D){C($(D,1c),k);o k})});17.1x({44:m(){o k.8L},31:m(){o k.8L.31()},5y:m(D,C){v B=k.8L.5y(D);12(!B){o 1h}1b(v A=B.2i;A!=k;A=A.2i){12(!A){o 1h}}o $.1e(B,C)},1o:m(D,B){1X($1i(D)){1g"2t":1b(v C 1l D){k.1o(C,D[C])}1B;1g"2c":v A=17.2G.1p(D);(A&&A.1o)?A.1o.2N(k,1v.2s(1d,1)):k.8M(D,B)}o k},1p:m(B){v A=17.2G.1p(B);o(A&&A.1p)?A.1p.2N(k,1v.2s(1d,1)):k.7q(B)},2Z:m(B){v A=17.2G.1p(B);(A&&A.2Z)?A.2Z.2N(k,1v.2s(1d,1)):k.7r(B);o k},1O:m(A){o(!A||17.1p(k,"6i")==A)},2a:m(B,A){17.5z.1p(A||"2B")(k,$(B,1c));o k},aL:m(B,A){B=$(B,1c);o k.8N(B).5A(B,A)},5A:m(B,A){17.5z.1p(A||"2B")($(B,1c),k);o k},e3:m(B,A){o k.5A(k.44().8G(B),A)},8O:m(){1v.3p(1d).1k(m(A){A=$(A,1c);12(A){k.5s(A)}},k);o k},3E:m(){o(k.2i)?k.2i.ac(k):k},2j:m(D,C){1X($1i(k)){1g"1e":v H={};1b(v G=0,E=k.3F.1f;G<E;G++){v B=k.3F[G],L=B.8l.2X();12(1j.1y.2f&&(/aM/i).2u(k.4i)&&(/1R|22/).2u(L)){2P}v K=(L=="23"&&k.23)?k.23.7s:B.8m;12(!$2e(K)||L=="2l"||(L=="33"&&!C)){2P}12(K!="e4"&&["2c","4w"].1W($1i(K))){H[L]=K}}v J=15 17(k.8l.2X(),H);12(D!==1a){1b(v I=0,F=k.55.1f;I<F;I++){v A=17.2j(k.55[I],1c,C);12(A){J.5A(A)}}}o J;1g"8n":o 1n.8G(k.8m)}o 1h},8N:m(A){A=$(A,1c);A.2i.aN(k,A);o k},8P:m(A){o k.3G.1W(A," ")},8Q:m(A){12(!k.8P(A)){k.3G=(k.3G+" "+A).71()}o k},aO:m(A){k.3G=k.3G.2d(15 64("(^|\\\\s)"+A+"(?:\\\\s|$)"),"$1").71();o k},e5:m(A){o k.8P(A)?k.aO(A):k.8Q(A)},7t:m(B){12(k.6j){o k.6j[B.78()]}v A=k.31().7t(k,1h);o(A)?A.e6([B.al()]):1h},1M:m(){$A(k.55).1k(m(A){1j.7k(A);17.1M(A);17.3E(A)},k);o k},aP:m(){1j.7k(k.1M().3E());o 1h},aQ:m(){o 15 2U($A(k.14).2E(m(A){o A.aR}))},4Y:m(){v A=[];k.54("aM, 8R, e7").1k(m(B){12(!B.1A||B.aS){o}v C=(B.4i.2X()=="8R")?17.aQ(B).2T(m(D){o D.1K}):((B.1i=="e8"||B.1i=="e9")&&!B.7j)?1h:B.1K;$4e(C).1k(m(D){12(D){A.1G(B.1A+"="+8y(D))}})});o A.4O("&")},7q:m(C){v B=17.6k,A=B.6l[C];v D=(A)?k[A]:k.ea(C,2);o(B.5B[C])?!!D:(A)?D:D||1h},eb:m(){v A=$A(1d);o A.2T(m(B){o k.7q(B)},k).72(A)},8M:m(D,E){v C=17.6k,B=C.6l[D],A=$3b(E);12(B&&C.5B[D]){E=(E||!A)?1c:1a}1r{12(!A){o k.7r(D)}}(B)?k[B]=E:k.ab(D,E);o k},8S:m(A){1b(v B 1l A){k.8M(B,A[B])}o k},7r:m(D){v C=17.6k,B=C.6l[D],A=(B&&C.5B[D]);(B)?k[B]=(A)?1a:"":k.ec(D);o k},ed:m(){1v.1k(1d,k.7r,k);o k}});(m(){v A=m(D,B,I,C,F,H){v E=D[I||B];v G=[];2v(E){12(E.3B==1&&(!C||17.1O(E,C))){G.1G(E);12(!F){1B}}E=E[B]}o(F)?15 2U(G,{5x:1a,53:!H}):$(G[0],H)};17.1x({ee:m(B,C){o A(k,"5C",1h,B,1a,C)},aT:m(B,C){o A(k,"5C",1h,B,1c,C)},ef:m(B,C){o A(k,"4j",1h,B,1a,C)},eg:m(B,C){o A(k,"4j",1h,B,1c,C)},eh:m(B,C){o A(k,"4j","7p",B,1a,C)},73:m(B,C){o A(k,"5C","ei",B,1a,C)},8T:m(B,C){o A(k,"2i",1h,B,1a,C)},ej:m(B,C){o A(k,"2i",1h,B,1c,C)},6m:m(B,C){o A(k,"4j","7p",B,1c,C)},aU:m(B){B=$(B,1c);o(!!B&&$A(k.4y(B.4i)).1W(B))}})})();17.2G=15 1s;17.2G.23={1o:m(A){k.23.7s=A},1p:m(){o k.23.7s},2Z:m(){k.23.7s=""}};17.2G.6i={1p:m(){o k.4i.2X()}};17.2G.4k={1p:m(){o(!k.4k)?1h:k.4k.2d(15 64("^"+1n.5w.ek+"//"+1n.5w.8H),"")}};17.2G.2S={1o:m(){o k.aV=1v.3p(1d).4O("")}};1J.1x([17,3g,2R],{7m:m(B,A){12(k.aW){k.aW(B,A,1a)}1r{k.el("6g"+B,A)}o k},8U:m(B,A){12(k.aX){k.aX(B,A,1a)}1r{k.em("6g"+B,A)}o k},1q:m(B,A){v D=17.7n.1p(k.2l);v C=D[B];12($3b(A)&&!$3b(C)){C=D[B]=A}o $66(C)},2H:m(B,A){v C=17.7n.1p(k.2l);C[B]=A;o k},3H:m(A){v B=17.7n.1p(k.2l);2h B[A];o k}});17.6k=15 1s({6l:{2S:"aV","51":"3G","1b":"en",2Q:(1j.1y.2f)?"8V":"8W"},5B:["eo","ep","eq","er","es","7j","aS","et","eu","aR","ev","ew"],8X:["1K","ex","ey","ez","eA","eB","eC","eD","eE","eF","eG"]});1j.7k=m(A){12(!A){o}12(1j.1y.2f&&(/2t/i).2u(A.4i)){1b(v B 1l A){12(2y A[B]=="m"){A[B]=$1M}}17.3E(A)}12(A.2l&&A.6f){A.6f()}};(m(B){v C=B.5B,A=B.8X;B.5B=C=C.72(C);1s.1H(1s.8t(B.6l,C),A.72(A.2T(m(D){o D.2X()})));B.2Z("8X")})(17.6k);1P.7m("8Y",m(){1P.8U("8Y",1d.2O);1n.aG();12(1j.1y.2f){eH()}});17.2G.1T={1o:m(A){k.52(A)}};1J.1x([17,3g,2R],{1Q:m(E,G){v H=k.1q("1T",{});H[E]=H[E]||{4l:[],3j:[]};12(H[E].4l.1W(G)){o k}H[E].4l.1G(G);v F=E,A=17.2F.1p(E),C=G,I=k;12(A){12(A.8Z){A.8Z.1F(k,G)}12(A.7u){C=m(J){12(A.7u.1F(k,J)){o G.1F(k,J)}o 1a}}F=A.6n||F}v D=m(){o G.1F(I)};v B=17.90[F]||0;12(B){12(B==2){D=m(J){J=15 5u(J,I.31());12(C.1F(I,J)===1a){J.3u()}}}k.7m(F,D)}H[E].3j.1G(D);o k},2A:m(D,C){v B=k.1q("1T");12(!B||!B[D]){o k}v G=B[D].4l.3o(C);12(G==-1){o k}v A=B[D].4l.6M(G,1)[0];v F=B[D].3j.6M(G,1)[0];v E=17.2F.1p(D);12(E){12(E.aY){E.aY.1F(k,C)}D=E.6n||D}o(17.90[D])?k.8U(D,F):k},52:m(A){1b(v B 1l A){k.1Q(B,A[B])}o k},6f:m(B){v A=k.1q("1T");12(!A){o k}12(!B){1b(v C 1l A){k.6f(C)}A=1h}1r{12(A[B]){2v(A[B].4l[0]){k.2A(B,A[B].4l[0])}A[B]=1h}}o k},1E:m(D,B,A){v C=k.1q("1T");12(!C||!C[D]){o k}C[D].4l.1k(m(E){E.3Y({1D:k,3s:A,"1d":B})()},k);o k},aZ:m(D,A){D=$(D);v C=D.1q("1T");12(!C){o k}12(!A){1b(v B 1l C){k.aZ(D,B)}}1r{12(C[A]){C[A].4l.1k(m(E){k.1Q(A,E)},k)}}o k}});17.90={7a:2,eI:2,6o:2,56:2,eJ:2,4Z:2,8B:2,8C:2,8D:2,4m:2,b0:2,eK:2,as:2,eL:2,eM:2,eN:2,eO:2,45:2,6p:2,8R:2,eP:2,2p:1,8Y:1,eQ:2,eR:1,7v:1,b1:1,b2:1,b3:1,91:1,47:1};(m(){v A=m(B){v C=B.7d;12(C==3c){o 1c}12(C===1a){o 1a}o($1i(k)!="1n"&&C!=k&&C.eS!="eT"&&!k.aU(C))};17.2F=15 1s({92:{6n:"8C",7u:A},93:{6n:"8D",7u:A},4Z:{6n:(1j.1y.67)?"8B":"4Z"}})})();17.2G.b4={1o:m(A){k.57(A)}};17.2G.1V={1o:m(A,B){12(!B){12(A==0){12(k.23.4n!="58"){k.23.4n="58"}}1r{12(k.23.4n!="6q"){k.23.4n="6q"}}}12(!k.6j||!k.6j.b5){k.23.b6=1}12(1j.1y.2f){k.23.2E=(A==1)?"":"eU(1V="+A*3I+")"}k.23.1V=A;k.2H("1V",A)},1p:m(){o k.1q("1V",1)}};17.1x({eV:m(A){o k.1o("1V",A,1c)},eW:m(){o k.1p("1V")},2q:m(B,A){1X(B){1g"1V":o k.1o("1V",75(A));1g"b7":B=(1j.1y.2f)?"b8":"b9"}B=B.78();12($1i(A)!="2c"){v C=(17.7w.1p(B)||"@").4P(" ");A=$4e(A).2T(m(E,D){12(!C[D]){o""}o($1i(E)=="4w")?C[D].2d("@",1m.2o(E)):E}).4O(" ")}1r{12(A==2k(3T(A))){A=1m.2o(A)}}k.23[B]=A;o k},2I:m(G){1X(G){1g"1V":o k.1p("1V");1g"b7":G=(1j.1y.2f)?"b8":"b9"}G=G.78();v A=k.23[G];12(!$2e(A)){A=[];1b(v F 1l 17.6r){12(G!=F){2P}1b(v E 1l 17.6r[F]){A.1G(k.2I(E))}o A.4O(" ")}A=k.7t(G)}12(A){A=2k(A);v C=A.1O(/eX?\\([\\d\\s,]+\\)/);12(C){A=A.2d(C[0],C[0].4W())}}12(1j.1y.6X||(1j.1y.2f&&!$2e(4T(A)))){12(G.2u(/^(22|1R)$/)){v B=(G=="1R")?["1S","3h"]:["1U","2B"],D=0;B.1k(m(H){D+=k.2I("3k-"+H+"-1R").3q()+k.2I("48-"+H).3q()},k);o k["26"+G.4z()]-D+"1z"}12(1j.1y.6X&&2k(A).2u("1z")){o A}12(G.2u(/(3k(.+)ba|2J|48)/)){o"bb"}}o A},57:m(B){1b(v A 1l B){k.2q(A,B[A])}o k},94:m(){v A={};1v.1k(1d,m(B){A[B]=k.2I(B)},k);o A}});17.7w=15 1s({1S:"@1z",1U:"@1z",2B:"@1z",3h:"@1z",1R:"@1z",22:"@1z",eY:"@1z",eZ:"@1z",f0:"@1z",f1:"@1z",f2:"2m(@, @, @)",f3:"@1z @1z",7x:"2m(@, @, @)",f4:"@1z",f5:"@1z",f6:"@1z",f7:"f8(@1z @1z @1z @1z)",2J:"@1z @1z @1z @1z",48:"@1z @1z @1z @1z",3k:"@1z @ 2m(@, @, @) @1z @ 2m(@, @, @) @1z @ 2m(@, @, @)",95:"@1z @1z @1z @1z",96:"@ @ @ @",97:"2m(@, @, @) 2m(@, @, @) 2m(@, @, @) 2m(@, @, @)",f9:"@",b6:"@",fa:"@",fb:"@1z",1V:"@"});17.6r={2J:{},48:{},3k:{},95:{},96:{},97:{}};["fc",&quo