var __Layout__ = new (function () {
// 私有字段
	var _GUID = '__TemplateLayout_GUID_';//'__TemplateLayout_GUID_' + Math.random() + '__';
	var _selectedItem = null;
	var _dataStruct = ({'Top' : [], 'Middle' : {}, 'Bottom' : []});
	var _ref = '__Layout__';
	var _caller = this;

// 构造函数
	function _Initialize()
	{
		_dataStruct = ({
		// 顶部
			'TopContainer' : { 'Count' : 1, 'Items' : {} },
		// 中部
			//	一列
				// {'Count' : 1, 'Items' : {_GUID + 'Container_0' : {'Items' : {'0' : {'Text' : '', 'Value' : '', 'LabelType' : 0}}}}}
			'OneCol' : { 'Count' : 1, 'Items' : {} },

			//	两列对称
			'SymmetricTwoCol' : { 'Count' : 2, 'Items' : {} },

			//	三列，中间宽
			'ClassicThreeCol' : { 'Count' : 3, 'Items' : {} },

			//	两列，左列窄
			'ClassicTwoCol' : { 'Count' : 2, 'Items' : {} },

			//	两列，右列窄
			'BackwardsTwoCol' : { 'Count' : 2, 'Items' : {} },

			//	三列，左列窄
			'RightHeavyThreeCol' : { 'Count' : 3, 'Items' : {} },

			//	四个对称列
			'SymmetricFourCol' : { 'Count' : 4, 'Items' : {} },

		// 底部
			'BottomContainer' : { 'Count' : 1, 'Items' : {} },
			
		// 已选择的类型
			'SelectedLayout' : 'BackwardsTwoCol'
		});

	// 顶部
		_dataStruct.TopContainer.Items[_GUID + 'TopContainer'] = {
			'Width' : '100%',
			'Items' : {},
			'TopContainer' : ' ',
			'LeftContainer' : ' ',
			'RightContainer' : ' ',
			'BottomContainer' : _GUID + 'Container_0'
		};
		
	// 中部
		//	一列
		_dataStruct.OneCol.Items[_GUID + 'Container_0'] = {
			'Width' : '100%',
			'Items' : {},
			'TopContainer' : _GUID + 'TopContainer',
			'LeftContainer' : ' ',
			'RightContainer' : ' ',
			'BottomContainer' : _GUID + 'BottomContainer'
		};

		// 两列对称
		_dataStruct.SymmetricTwoCol.Items[_GUID + 'Container_0'] = {
			'Width' : '50%',
			'Items' : {},
			'TopContainer' : _GUID + 'TopContainer',
			'LeftContainer' : ' ',
			'RightContainer' : _GUID + 'Container_1',
			'BottomContainer' : _GUID + 'BottomContainer'
		};
		_dataStruct.SymmetricTwoCol.Items[_GUID + 'Container_1'] = {
			'Width' : '50%',
			'Items' : {},
			'TopContainer' : _GUID + 'TopContainer',
			'LeftContainer' : _GUID + 'Container_0',
			'RightContainer' : ' ',
			'BottomContainer' : _GUID + 'BottomContainer'
		};

		// 三列，中间宽
		_dataStruct.ClassicThreeCol.Items[_GUID + 'Container_0'] = {
			'Width' : '25%',
			'Items' : {},
			'TopContainer' : _GUID + 'TopContainer',
			'LeftContainer' : ' ',
			'RightContainer' : _GUID + 'Container_1',
			'BottomContainer' : _GUID + 'BottomContainer'
		};
		_dataStruct.ClassicThreeCol.Items[_GUID + 'Container_1'] = {
			'Width' : '50%',
			'Items' : {},
			'TopContainer' : _GUID + 'TopContainer',
			'LeftContainer' : _GUID + 'Container_0',
			'RightContainer' : _GUID + 'Container_2',
			'BottomContainer' : _GUID + 'BottomContainer'
		};
		_dataStruct.ClassicThreeCol.Items[_GUID + 'Container_2'] = {
			'Width' : '25%',
			'Items' : {},
			'TopContainer' : _GUID + 'TopContainer',
			'LeftContainer' : _GUID + 'Container_1',
			'RightContainer' : ' ',
			'BottomContainer' : _GUID + 'BottomContainer'
		};

		// 两列，左列窄		
		_dataStruct.ClassicTwoCol.Items[_GUID + 'Container_0'] = {
			'Width' : '30%',
			'Items' : {},
			'TopContainer' : _GUID + 'TopContainer',
			'LeftContainer' : ' ',
			'RightContainer' : _GUID + 'Container_1',
			'BottomContainer' : _GUID + 'BottomContainer'
		};
		_dataStruct.ClassicTwoCol.Items[_GUID + 'Container_1'] = {
			'Width' : '70%',
			'Items' : {},
			'TopContainer' : _GUID + 'TopContainer',
			'LeftContainer' : _GUID + 'Container_0',
			'RightContainer' : ' ',
			'BottomContainer' : _GUID + 'BottomContainer'
		};

		// 两列，右列窄		
		_dataStruct.BackwardsTwoCol.Items[_GUID + 'Container_0'] = {
			'Width' : '70%',
			'Items' : {},
			'TopContainer' : _GUID + 'TopContainer',
			'LeftContainer' :  ' ',
			'RightContainer' : _GUID + 'Container_1',
			'BottomContainer' : _GUID + 'BottomContainer'
		};
		_dataStruct.BackwardsTwoCol.Items[_GUID + 'Container_1'] = {
			'Width' : '30%',
			'Items' : {},
			'TopContainer' : _GUID + 'TopContainer',
			'LeftContainer' : _GUID + 'Container_0',
			'RightContainer' :  ' ',
			'BottomContainer' : _GUID + 'BottomContainer'
		};

		// 三列，左列窄		
		_dataStruct.RightHeavyThreeCol.Items[_GUID + 'Container_0'] = {
			'Width' : '20%',
			'Items' : {},
			'TopContainer' : _GUID + 'TopContainer',
			'LeftContainer' :  ' ',
			'RightContainer' : _GUID + 'Container_1',
			'BottomContainer' : _GUID + 'BottomContainer'
		};
		_dataStruct.RightHeavyThreeCol.Items[_GUID + 'Container_1'] = {
			'Width' : '40%',
			'Items' : {},
			'TopContainer' : _GUID + 'TopContainer',
			'LeftContainer' : _GUID + 'Container_0',
			'RightContainer' : _GUID + 'Container_2',
			'BottomContainer' : _GUID + 'BottomContainer'
		};
		_dataStruct.RightHeavyThreeCol.Items[_GUID + 'Container_2'] = {
			'Width' : '40%',
			'Items' : {},
			'TopContainer' : _GUID + 'TopContainer',
			'LeftContainer' : _GUID + 'Container_1',
			'RightContainer' : ' ',
			'BottomContainer' : _GUID + 'BottomContainer'
		};

		// 四个对称列
		_dataStruct.SymmetricFourCol.Items[_GUID + 'Container_0'] = {
			'Width' : '25%',
			'Items' : {},
			'TopContainer' : _GUID + 'TopContainer',
			'LeftContainer' : ' ',
			'RightContainer' : _GUID + 'Container_1',
			'BottomContainer' : _GUID + 'BottomContainer'
		};
		_dataStruct.SymmetricFourCol.Items[_GUID + 'Container_1'] = {
			'Width' : '25%',
			'Items' : {},
			'TopContainer' : _GUID + 'TopContainer',
			'LeftContainer' : _GUID + 'Container_0',
			'RightContainer' :  _GUID + 'Container_2',
			'BottomContainer' : _GUID + 'BottomContainer'
		};
		_dataStruct.SymmetricFourCol.Items[_GUID + 'Container_2'] = {
			'Width' : '25%',
			'Items' : {},
			'TopContainer' : _GUID + 'TopContainer',
			'LeftContainer' : _GUID + 'Container_1',
			'RightContainer' :  _GUID + 'Container_3',
			'BottomContainer' : _GUID + 'BottomContainer'
		};
		_dataStruct.SymmetricFourCol.Items[_GUID + 'Container_3'] = {
			'Width' : '25%',
			'Items' : {},
			'TopContainer' : _GUID + 'TopContainer',
			'LeftContainer' : _GUID + 'Container_2',
			'RightContainer' : ' ',
			'BottomContainer' : _GUID + 'BottomContainer'
		};

	// 底部
		_dataStruct.BottomContainer.Items[_GUID + 'BottomContainer'] = {
			'Width' : '100%',
			'Items' : {},
			'TopContainer' : _GUID + 'Container_' + (_dataStruct[_dataStruct.SelectedLayout].Count - 1),
			'LeftContainer' : ' ',
			'RightContainer' : ' ',
			'BottomContainer' : ' '
		};
	}
	// 执行构造函数
	_Initialize();

// 方法	
	this.parseJSON = function (jsonData) {
		if (!jsonData || 'string' !== typeof(jsonData))
		{
			alert('参数jsonData不是合法的JSON格式的字符串！');
			return false;
		}
		_dataStruct = jsonData.parseJSON();
	};
	
	/**
	 * 修复 _dataStruct
	 */
	function _FixDataStruct()
	{
		var raw_data_struct = _dataStruct;
		_Initialize();
		_dataStruct.SelectedLayout = raw_data_struct.SelectedLayout;
		var oselect = null, option = null, current = null;
		
		// 处理顶部区域
		for (var key in raw_data_struct.TopContainer.Items)
		{
			oselect = document.getElementById(key);
			if (!oselect || 'undefined' === typeof(oselect.options))
			{
				continue;
			}
			for (var i = 0; i < oselect.options.length; i++)
			{
				current = _dataStruct.TopContainer.Items[key];
				option = oselect.options[i];
				current.Items[i + ''] = {'Text' : option.text, 'Value' : option.value, 'LabelType' : option._label_type};
			}
		}
		
		// 处理中部区域
		for (var key in raw_data_struct[raw_data_struct.SelectedLayout].Items)
		{
			oselect = document.getElementById(key);
			if (!oselect || 'undefined' === typeof(oselect.options))
			{
				continue;
			}
			for (var i = 0; i < oselect.options.length; i++)
			{
				current = _dataStruct[_dataStruct.SelectedLayout].Items[key];
				option = oselect.options[i];
				current.Items[i + ''] = {'Text' : option.text, 'Value' : option.value, 'LabelType' : option._label_type}
			}
		}
		
		// 处理底部区域
		for (var key in raw_data_struct.BottomContainer.Items)
		{
			oselect = document.getElementById(key);
			if (!oselect || 'undefined' === typeof(oselect.options))
			{
				continue;
			}
			for (var i = 0; i < oselect.options.length; i++)
			{
				current = _dataStruct.BottomContainer.Items[key];
				option = oselect.options[i];
				current.Items[i + ''] = {'Text' : option.text, 'Value' : option.value, 'LabelType' : option._label_type}
			}
		}
		
		raw_data_struct = oselect = option = current = null;
		return;
	}
	
	/**
	 * Description 添加标签到版式列表中
	 * @author 阿杜(lfow@163.com)
	 * @param string 要添加的标签的中文描述
	 * @param string 要添加的标签的名称
	 * @return void
	 */
	this.addLabel = function (srcOption) {
		if (!srcOption)
		{
			return;
		}
		var top_container = document.getElementById(_GUID + 'TopContainer');
		if (!top_container)
		{
			return false;
		}
		if (0 == top_container.options.length)
		{
			top_container.insertBefore(srcOption);
		}
		else
		{
			var option = top_container.options[top_container.options.length - 1];
			top_container.insertBefore(srcOption, option);
			top_container.insertBefore(option, srcOption);
		}
		_selectedItem = srcOption;
		top_container.selectedIndex = -1;
		top_container.selectedIndex = top_container.options.length - 1;
		return true;
	};

	// 从版式列表中移除标签，并移动到目标 destSelect ； 此函数会自动判断当前被选中的标签，因此无需传递参数
	// 需要同步 _dataStruct
	this.cutTo = function (destSelect) {
		if (!_selectedItem)
		{
			return false;
		}
		if (!destSelect)
		{
			return false;
		}

		var dest_container = _selectedItem.parentNode;
		var raw_item = _selectedItem;

		if (0 == destSelect.options.length)
		{
			destSelect.insertBefore(_selectedItem);
		}
		else
		{
			var option = destSelect.options[destSelect.options.length - 1];
			destSelect.insertBefore(_selectedItem, option);
			destSelect.insertBefore(option, _selectedItem);
		}
		if (0 == dest_container.options.length)
		{
			_selectedItem = null;
		}
		else
		{
			_selectedItem = dest_container.options[dest_container.options.length - 1];
			dest_container.selectedIndex = dest_container.options.length - 1;
		}
		return true;
	};

	// 设置版式布局 
	this.setLayout = function (layout) {
		if ('string' !== typeof(layout))
		{
			return;
		}
		if (!(layout in _dataStruct))
		{
			return;
		}
		
		var data_struct = _dataStruct;
		// 重置数据结构
		_Initialize();

		// 设置布局
		_dataStruct.SelectedLayout = layout;
		_dataStruct.TopContainer = data_struct.TopContainer;
		_dataStruct.BottomContainer = data_struct.BottomContainer;
		
		var dest = data_struct[data_struct.SelectedLayout];
		var arr = [], id = null, option = null;;
		for (var key in dest.Items)
		{
			id = document.getElementById(key);
			if (!id)
			{
				continue;
			}
			for (var i = 0; i < id.options.length; i++)
			{
				option = id.options[i];
				arr[arr.length] = {'text' : option.text, 'value' : option.value, '_label_type' : option._label_type};
			}
		}
		if (arr.length > 0)
		{
			var ds = _dataStruct[_dataStruct.SelectedLayout];
			var index = 0, count = Math.ceil(arr.length / ds.Count);
			for (var key in ds.Items)
			{
				for (var i = 0; i < count; i++)
				{
					if ('undefined' === typeof(ds.Items[key].Width))
					{
						continue;
					}
					if ('undefined' === typeof(arr[index]))
					{
						break;
					}
					option = arr[index++];
					ds.Items[key].Items['' + i] = {'Text' : option.text, 'Value' : option.value, 'LabelType' : option._label_type};
				}
			}
		}

		// 
		//_dataStruct.BottomContainer.Items[_GUID + 'BottomContainer'].TopContainer = _GUID + 'Container_' + (_dataStruct[_dataStruct.SelectedLayout].Count - 1);
		
		// 显示版式布局
		_showUI();
	};

	// 此方法由 this.setLayout 调用，用于在网页中显示版式布局
	function _showUI()
	{
		var id = document.getElementById(_GUID + 'container');
		if (!id)
		{
			document.write(_caller.toHtmlString());
		}
		else
		{
			id.outerHTML = _caller.toHtmlString();
		}
	}

	// 返回用于在网页中显示的HTML字符串
	this.toHtmlString = function (fixDataStruct) {
		function _toHtmlString(destObj, parentContainer)
		{
			if (0 == destObj.Count)
			{
				return '';
			}
			var retvl = '<table cellpadding="3" cellspacing="3" border="0" width="100%"><tr>';
			for (var key in destObj.Items)
			{
				if ('undefined' === typeof(destObj.Items[key].Width))
				{
					continue;
				}
				retvl += '<td width="' + destObj.Items[key].Width + '"><select id="' + key + '" size="10" style="width: 100%;" onclick="' + _ref + '._ItemClick(this)" _parentContainer="' + parentContainer + '" _topContainer="' + destObj.Items[key].TopContainer + '" _leftContainer="' + destObj.Items[key].LeftContainer + '" _rightContainer="' + destObj.Items[key].RightContainer + '" _bottomContainer="' + destObj.Items[key].BottomContainer + '">';
				for (var key2 in destObj.Items[key].Items)
				{
					if ('undefined' === typeof(destObj.Items[key].Items[key2].LabelType))
					{
						continue;
					}
					retvl += '<option value="' + destObj.Items[key].Items[key2].Value + '" _label_type="' + destObj.Items[key].Items[key2].LabelType + '">' + destObj.Items[key].Items[key2].Text + '</option>';
				}
				retvl += '</select></td>';
			}
			retvl += '</tr></table>';
			return retvl;
		}
		
		// 修复数据结构
		if (true === fixDataStruct)
		{
			_FixDataStruct();
		}
		
		var retvl = '<div id="' + _GUID + 'container" style="width: 100%;">';
		retvl += _toHtmlString(_dataStruct.TopContainer, 'TopContainer');
		retvl += _toHtmlString(_dataStruct[_dataStruct.SelectedLayout], _dataStruct.SelectedLayout);
		retvl += _toHtmlString(_dataStruct.BottomContainer, 'BottomContainer');
		retvl += '<div style="width: 100%; height: auto; text-align: center;"><input type="button" value="左  移" class="button" onclick="' + _ref + '.moveLeft()" />&nbsp;&nbsp;<input type="button" value="上  移" class="button" onclick="' + _ref + '.moveUp()" />&nbsp;&nbsp;<input type="button" value="下  移" class="button" onclick="' + _ref + '.moveDown()" />&nbsp;&nbsp;<input type="button" value="右  移" class="button" onclick="' + _ref + '.moveRight()" /></div></div>';
		return retvl;
	};

	// 返回可用于表单提交的字符串数据
		// _dataStruct 的数据结构还有些问题，在 var middle 中的注释行取不到值
	this.getSubmitString = function (tplName) {
		switch (tplName)
		{
			case 'default_1_1':
				return _GetSubmitString_Default_1_1();
				break;
			case 'default_1_0':
			default:
				return _GetSubmitString_Default1_0();
				break;
		}
	};
	// 返回适用于 1.1 模板的可用于表单提交的字符串数据
	function _GetSubmitString_Default_1_1()
	{		
		// 修复数据结构
		_FixDataStruct();
		
	// 执行操作
		var retvl = '<!--#include file="_header.html" --><div class="mainbox">';
		
		eval('_' + _dataStruct.SelectedLayout + '();');
		
		retvl += '</div>';
		retvl += '<script>function setTab(name,cursel,n){ for(i=1;i<=n;i++){var menu=document.getElementById(name+i);if (!menu)continue;menu.className=i==cursel?"hover":"";var con=document.getElementById("con_"+name+"_"+i);if (!con)continue;con.style.display=i==cursel?"block":"none";}}setTab("two",3,3)</script>';
		retvl += '<!--#include file="_footer.html" -->';
		
		return retvl;
		
		/**
		 *	两列，右列窄版式处理函数
		 *	默认版式
		 */
		function _BackwardsTwoCol()
		{
		// 顶部区域
			retvl += '<div class="notice">';
			var top_area = _dataStruct.TopContainer.Items[_GUID + 'TopContainer'];
			for (var key in top_area.Items)
			{
				if ('undefined' === typeof(top_area.Items[key].Value))
				{
					continue;
				}
				retvl += '{$' + top_area.Items[key].Value + '}';
			}
			retvl += '</div>';
			
		// 中部区域
			// 中部区域容器开始
			retvl += '<br />';//'<div id="nav_top">';
			
			// 中部右列区域开始
			retvl += '<!---##########################右边样式部分##########################--->';
			retvl += '<div class="page_right">';
			var right_area = _dataStruct[_dataStruct.SelectedLayout].Items[_GUID + 'Container_1'];
			for (var key in right_area.Items)
			{
				if ('undefined' === typeof(right_area.Items[key].Value))
				{
					continue;
				}
				retvl += '{$' + right_area.Items[key].Value + '}';
			}
			// 中部右列区域结束
			retvl += '</div>';
			retvl += '<!---##########################end 右边样式部分##########################--->';
			
			// 中部左列区域开始
			retvl += '<!---##########################左边样式部分##########################--->';
			retvl += '<div class="page_left">';
			var left_area = _dataStruct[_dataStruct.SelectedLayout].Items[_GUID + 'Container_0'];
			for (var key in left_area.Items)
			{
				if ('undefined' === typeof(left_area.Items[key].Value))
				{
					continue;
				}
				retvl += '{$' + left_area.Items[key].Value + '}';
			}
			// 中部左列区域结束
			retvl += '</div>';
			retvl += '<!---##########################end 左边样式部分##########################--->';
			
			// 中部区域容器结束
			retvl += '<div style="clear:both"></div>';
			//retvl += '</div>';
			
		// 底部区域
			var bottom_area = _dataStruct.BottomContainer.Items[_GUID + 'BottomContainer'];
			for (var key in bottom_area.Items)
			{
				if ('undefined' === typeof(bottom_area.Items[key].Value))
				{
					continue;
				}
				retvl += '{$' + bottom_area.Items[key].Value + '}';
			}
		}
	}
	// 返回适用于 1.0 模板的可用于表单提交的字符串数据
	function _GetSubmitString_Default1_0()
	{
		// 一列版式处理函数
		function _OneCol()
		{
			_Common();
		}
		
		// 两列对称版式处理函数
		function _SymmetricTwoCol()
		{
			_Common();
		}
		
		// 三列，中间宽版式处理函数
		function _ClassicThreeCol()
		{
			_Common();
		}
		
		// 两列，左列窄版式处理函数
		function _ClassicTwoCol()
		{
		// 顶部区域
			var top_area = _dataStruct.TopContainer.Items[_GUID + 'TopContainer'];
			for (var key in top_area.Items)
			{
				if ('undefined' === typeof(top_area.Items[key].Value))
				{
					continue;
				}
				retvl += '{$' + top_area.Items[key].Value + '}';
			}
			
		// 中部区域
			// 中部区域容器开始
			retvl += '<div id="nav_top">';
			
			// 中部左列区域
			retvl += '<div id="page_right" style="float: left;">';
			var left_area = _dataStruct[_dataStruct.SelectedLayout].Items[_GUID + 'Container_0'];
			for (var key in left_area.Items)
			{
				if ('undefined' === typeof(left_area.Items[key].Value))
				{
					continue;
				}
				retvl += '{$' + left_area.Items[key].Value + '}';
			}
			retvl += '</div>';
			
			// 中部右列区域
			retvl += '<div id="page_left" style="float: right; margin-right: auto; margin-left: 10px;">';
			var right_area = _dataStruct[_dataStruct.SelectedLayout].Items[_GUID + 'Container_1'];
			for (var key in right_area.Items)
			{
				if ('undefined' === typeof(right_area.Items[key].Value))
				{
					continue;
				}
				retvl += '{$' + right_area.Items[key].Value + '}';
			}
			retvl += '</div>';
			
			// 中部区域容器结束
			retvl += '</div>';
			
		// 底部区域
			var bottom_area = _dataStruct.BottomContainer.Items[_GUID + 'BottomContainer'];
			for (var key in bottom_area.Items)
			{
				if ('undefined' === typeof(bottom_area.Items[key].Value))
				{
					continue;
				}
				retvl += '{$' + bottom_area.Items[key].Value + '}';
			}
		}
		
		/**
		 *	两列，右列窄版式处理函数
		 *	默认版式
		 */
		function _BackwardsTwoCol()
		{
		// 顶部区域
			var top_area = _dataStruct.TopContainer.Items[_GUID + 'TopContainer'];
			for (var key in top_area.Items)
			{
				if ('undefined' === typeof(top_area.Items[key].Value))
				{
					continue;
				}
				retvl += '{$' + top_area.Items[key].Value + '}';
			}
			
		// 中部区域
			// 中部区域容器开始
			retvl += '<div id="nav_top">';
			
			// 中部右列区域
			retvl += '<div id="page_right">';
			var right_area = _dataStruct[_dataStruct.SelectedLayout].Items[_GUID + 'Container_1'];
			for (var key in right_area.Items)
			{
				if ('undefined' === typeof(right_area.Items[key].Value))
				{
					continue;
				}
				retvl += '{$' + right_area.Items[key].Value + '}';
			}
			retvl += '</div>';
			
			// 中部左列区域
			retvl += '<div id="page_left">';
			var left_area = _dataStruct[_dataStruct.SelectedLayout].Items[_GUID + 'Container_0'];
			for (var key in left_area.Items)
			{
				if ('undefined' === typeof(left_area.Items[key].Value))
				{
					continue;
				}
				retvl += '{$' + left_area.Items[key].Value + '}';
			}
			retvl += '</div>';
			
			// 中部区域容器结束
			retvl += '</div>';
			
		// 底部区域
			var bottom_area = _dataStruct.BottomContainer.Items[_GUID + 'BottomContainer'];
			for (var key in bottom_area.Items)
			{
				if ('undefined' === typeof(bottom_area.Items[key].Value))
				{
					continue;
				}
				retvl += '{$' + bottom_area.Items[key].Value + '}';
			}
		}
		
		// 三列，左列窄版式处理函数
		function _RightHeavyThreeCol()
		{
			_Common();
		}
		
		// 四个对称列版式处理函数
		function _SymmetricFourCol()
		{
			_Common();
		}		

		function _Common()
		{
			var top = _dataStruct.TopContainer.Items[_GUID + 'TopContainer'];
			retvl += '<div id="nav_top"><table border="0" align="center" cellpadding="0" cellspacing="0">';
			for (var key in top.Items)
			{
				if ('undefined' === typeof(top.Items[key].Value))
				{
					continue;
				}
				retvl += '<tr><td>{$' + top.Items[key].Value + '}</td></tr>';
			}
			retvl += '</table>';

			var middle = _dataStruct[_dataStruct.SelectedLayout];
			retvl += '<table border="0" cellpadding="0" cellspacing="0"><tr>';
			var per_width = (100 / _dataStruct[_dataStruct.SelectedLayout].Count) + '%';
			for (var key in middle.Items)
			{
				if ('undefined' === typeof(middle.Items[key].Items) || 'undefined' === middle.Items[key].Items.Width)
				{
					continue;
				}
				retvl += '<td width="' + per_width + '"><table border="0" width="100%" cellpadding="0" cellspacing="0">';

				var id = document.getElementById(key);
				if (!id)
				{
					continue;
				}
				for (var i = 0; i < id.options.length; i++)
				{
					retvl += '<tr><td>{$' + id.options[i].value + '}</td></tr>';
				}

	//			retvl += '<td width="' + per_width + '"><table border="0" width="100%" cellpadding="0" cellspacing="0">';
	//			for (var key2 in middle.Items[key].Items)
	//			{
	//				if ('undefined' === typeof(top_area.Items[key].Value))
	//				{
	//					continue;
	//				}
	//				retvl += '<tr><td>{$' + middle.Items[key].Items[key2].Value + '}</td></tr>';
	//			}
				retvl += '</table></td>';
			}
			retvl += '</tr></table>';

			var bottom = _dataStruct.BottomContainer.Items[_GUID + 'BottomContainer'];
			retvl += '<table border="0" cellpadding="0" cellspacing="0">';
			for (var key in bottom.Items)
			{
				if ('undefined' === typeof(bottom.Items[key].Value))
				{
					continue;
				}
				retvl += '<tr><td>{$' + bottom.Items[key].Value + '}</td></tr>';
			}
			retvl += '</table></div>';
		}
		
		// 修复数据结构
		_FixDataStruct();
		
	// 执行操作
		var retvl = '<!--#include file="_header.html" -->';
		
		eval('_' + _dataStruct.SelectedLayout + '();');
		
		retvl += '<!--#include file="_footer.html" -->';
		
		return retvl;
	}

	// 返回已使用的系统标签的列表
	this.getSystemOptions = function () {
		function _findSysOptions(destObj)
		{
			for (var key in destObj.Items)
			{
				if ('undefined' === typeof(destObj.Items[key].Width))
				{
					continue;
				}
				for (var key2 in destObj.Items[key].Items)
				{
					if ('undefined' === typeof(destObj.Items[key].Items[key2].LabelType))
					{
						continue;
					}
					if (1 == destObj.Items[key].Items[key2].LabelType)
					{
						retvl[retvl.length] = destObj.Items[key].Items[key2].Value;
					}
				}
			}
		}
		
		// 修复数据结构
		_FixDataStruct();
		
		var retvl = [];
		_findSysOptions(_dataStruct.TopContainer);
		_findSysOptions(_dataStruct[_dataStruct.SelectedLayout]);
		_findSysOptions(_dataStruct.BottomContainer);
		return retvl;
	};
	// 返回已使用的非系统标签的列表
	this.getCommonOptions = function () {
		// 修复数据结构
		_FixDataStruct();
		
		var retvl = [];
		_findSysOptions(_dataStruct.TopContainer);
		_findSysOptions(_dataStruct[_dataStruct.SelectedLayout]);
		_findSysOptions(_dataStruct.BottomContainer);
		function _findSysOptions(destObj)
		{
			for (var key in destObj.Items)
			{
				if ('undefined' === typeof(destObj.Items[key].Width))
				{
					continue;
				}
				for (var key2 in destObj.Items[key].Items)
				{
					if ('undefined' === typeof(destObj.Items[key].Items[key2].LabelType))
					{
						continue;
					}
					if (1 != destObj.Items[key].Items[key2].LabelType)
					{
						retvl[retvl.length] = destObj.Items[key].Items[key2].Value;
					}
				}
			}
		}
		return retvl;
	};

	// 返回 JSON 格式的字符串
	this.toJSONString = function () {
		// 修复数据结构
		_FixDataStruct();
		
		return _dataStruct.toJSONString();
	}

	// 当下拉菜单被点击时，将会触发此函数
	this._ItemClick = function (oSelect) {
		if (oSelect.selectedIndex >= 0)
		{
			_selectedItem = oSelect.options[oSelect.selectedIndex];
		}
		return true;
	}

	// 左移
	this.moveLeft = function () {
		if (!_selectedItem)
		{
			return;
		}
		var raw_item = _selectedItem;
		var parent = _selectedItem.parentNode;
		var left_container = document.getElementById(parent.getAttribute('_leftContainer'));
		if (!left_container)
		{
			return;
		}
		left_container.insertBefore(_selectedItem);
	};

	// 上移
	this.moveUp = function () {
		if (!_selectedItem)
		{
			return;
		}
		var raw_item = _selectedItem;
		var parent = _selectedItem.parentNode;
		var prev_sibling = _selectedItem.previousSibling;
		if (prev_sibling)
		{
			parent.insertBefore(_selectedItem, prev_sibling);
			return;
		}
		var prev_container = document.getElementById(parent.getAttribute('_topContainer'));
		if (!prev_container)
		{
			return;
		}
		if (0 == prev_container.options.length)
		{
			prev_container.insertBefore(_selectedItem);
		}
		else
		{
			var option = prev_container.options[prev_container.options.length - 1];
			prev_container.insertBefore(_selectedItem, option);
			prev_container.insertBefore(option, _selectedItem);
		}
	};

	// 下移
	this.moveDown = function () {
		if (!_selectedItem)
		{
			return;
		}
		var raw_item = _selectedItem;
		var parent = _selectedItem.parentNode;
		var next_sibling = _selectedItem.nextSibling;
		if (next_sibling)
		{
			parent.insertBefore(next_sibling, _selectedItem);
			return;
		}
		var next_container = document.getElementById(parent.getAttribute('_bottomContainer'));
		if (!next_container)
		{
			return;
		}
		next_container.insertBefore(_selectedItem);
	};

	// 右移
	this.moveRight = function () {
		if (!_selectedItem)
		{
			return;
		}
		var raw_item = _selectedItem;
		var parent = _selectedItem.parentNode;
		var right_container = document.getElementById(parent.getAttribute('_rightContainer'));
		if (!right_container)
		{
			return;
		}
		right_container.insertBefore(_selectedItem);
	};
})();