<!--
//记录模块是否选取，如果没有选取，就不运行控件的选取程序,只记录最近的一次，可能是模块也可能是控件
var mainDiv = null;
var selectModulesName = null;
var copyDiv = null;
var currentMoveObj;
var endModulesName = null;
var startModulesName = null;
var startMoudlesList = null;
var oldMoudlesList = null;
var startArray = "";
var endArray = "";
function  ShinyvWYSIWYG(zIndex) {
	random = parseInt(((Math.random() + 1) * 10000));
	document.write("<div id=\"shinyvHidden"  + random + "\"  onmousedown=\"shinyvWYSIWYG.copyForModules(selectModulesName);\" style=\"display none; position: absolute\"></DIV>");
	document.write("<div id=\"shinyvSelectedHidden" + random + "\"  style=\"display none; position: absolute\"></DIV>");
	//document.write("<div id=\"shinyvCopydHidden\" style=\"display none; position: absolute\"></DIV>");
	this.shinyvHidden = this.getObjForId("shinyvHidden" + random);
	this.shinyvSelectedHidden = this.getObjForId("shinyvSelectedHidden" + random);
	this.zIndex = zIndex;
}

_p = ShinyvWYSIWYG.prototype;

_p.lockDivId = null;
_p.shinyvHidden = null;
_p.shinyvSelectedHidden = null;
//div.zIndex
_p.zIndex = 8888;
//是否允许点击链接
_p.isDisableLink = false;
//不允许点击链接的层的背景颜色
_p.disableLinkBackground = "yellow";
//不允许点击链接的层的filter
_p.disableLinkFilter = "Alpha(Opacity=55)";

//允许点击链接的层的背景颜色
_p.ableLinkBackground = "";
//允许点击链接的层的filter
_p.ableLinkFilter = "Mask(Color=#FFFFFF)DropShadow(Color=#003366, OffX=1, OffY=1)Shadow(direction=315,strength=1)Glow(Color=#003366,Strength:10)Alpha(Opacity=55)";
//边线颜色
_p.borderColor = "#003366";

_p.setDisableLinkBackground = function setDisableLinkBackground(color) {
	this.disableLinkBackground = color;
}

_p.setAbleLinkFilter = function setAbleLinkFilter(filter) {
	this.setAbleLinkFilter = filter;
}

_p.setBorderColor = function setBorderColor(color) {
	this.borderColor = color;
}

/**
* 根据id取得对象
*/
_p.getObjForId = function getObjForId(id) {
	if(typeof(id) == "string") {
		return document.getElementById(id);
	}
	else {
		return null;
	}
}

/**
* 取得绝对偏移量
*/
_p.getAbsoluteOffset = function getAbsoluteOffset(obj) {
	var left = 0;
	var top = 0;
	if(typeof(obj) == "object") {
		left = obj.offsetLeft;
		top = obj.offsetTop;
		while(obj = obj.offsetParent) {
			left += obj.offsetLeft;
			top += obj.offsetTop;
		}
	}

	return new Array(left, top);
}

/**
*	判断控件是否是要是指定模块的控件
*	根据记录最近的一次，但是可能是模块也可能是控件，
不过名字都是一样，所以可以判断是否在指定的模块里。
*/
_p.checkModule = function checkModule(objId) {
	if(typeof(objId) != "string" || !mainDiv ) {
		return false;
	}

	//判断是否是属于选择模块的控件
	var moduleName = this.getPositionForModules(objId);
	if(!moduleName) {
		return false;
	}
	if(mainDiv.indexOf(moduleName) == -1) {
		return false;
	}

	return true;
}

/**
*	判断是否是控件
*/
_p.isModule = function isModule(objId) {
	if(typeof(objId) != "string") {
		return false;
	}

	if(objId.indexOf("shinyv_module") == -1) {
		return false;
	}
	return true;
}

/**
*	取得位置的名字
*/
_p.getPositionForModules = function getPosition(objId) {
	var indexOf = -1;
	if(this.isModule(objId)) {
		indexOf = objId.indexOf("shinyv_module_");
		indexOf = (indexOf == -1) ? -1 : indexOf + "shinyv_module_".length;
	}
	else {
		indexOf = objId.indexOf("shinyv_Modules_");
		indexOf = (indexOf == -1) ? -1 : indexOf + "shinyv_Modules_".length;
	}

	if(indexOf == -1) {
		return "";
	}

	return objId.substr(indexOf, objId.length - indexOf);
}

_p.display = function display(objId, state) {
	//debug
	/*
	if(!this.isModule(objId)) {
		document.getElementById("1").innerHTML = "模块(" + state + ")：" + objId + " ("
		+ event.x + "," + event.y + ")";
	}
	else {
		document.getElementById("2").innerHTML = "控件(" + state + ")：" + objId + " ("
		+ event.x + "," + event.y + ")";
	}
	*/

	//判断是否开启控件的选择
	if(this.isModule(objId)) {
		if(!mainDiv || !this.checkModule(objId)) {
			return;
		}
	}

	var obj = this.getObjForId(objId);
	if(obj) {
		if(state == 1 && objId != this.lockDivId) {
			//取得偏移量
			var arrOffset = this.getAbsoluteOffset(obj);
			var offsetLeft = arrOffset[0];
			var offsetTop = arrOffset[1];

			//判断是否允许点击链接
			if(this.isDisableLink) {
				this.shinyvHidden.style.background = this.ableLinkBackground;
				this.shinyvHidden.style.filter = this.ableLinkFilter;
			}
			else {
				this.shinyvHidden.style.background = this.disableLinkBackground;
				this.shinyvHidden.style.filter = this.disableLinkFilter;
			}

			this.shinyvHidden.style.border = this.borderColor + " 1px solid";
			this.shinyvHidden.zIndex = this.zIndex;
			this.shinyvHidden.style.posLeft = offsetLeft - 2;
			this.shinyvHidden.style.posTop = offsetTop - 2;
			this.shinyvHidden.style.posWidth = obj.offsetWidth + 4;
			this.shinyvHidden.style.posHeight = obj.offsetHeight + 4;
			this.shinyvHidden.style.display = '';
			this.shinyvHidden.onmouseover = obj.onmouseover;
			this.shinyvHidden.onmouseout = obj.onmouseout;
			this.shinyvHidden.ondblclick = obj.ondblclick;
			selectModulesName = this.setSelectModulesName(objId);
		}
		else if(state == 2 && objId != this.lockDivId) {
			this.shinyvHidden.style.display = 'none';
			this.shinyvHidden.style.border = '';
		}
		else if(state == 3) {
			//如果以前有已经打开的div要先关闭，在打开新的
			if(this.lockDivId) {
				this.display(this.lockDivId, 1);
			}
			//如果是打开模块要关闭以前的控件。
			if(!this.checkModule(objId)) {
				if(shinyvWYSIWYGm) {
					shinyvWYSIWYGm.shinyvSelectedHidden.style.display = 'none';
				}
			}
			//关闭shinyvHidden
			this.display(objId, 2);

			var arrOffset = this.getAbsoluteOffset(obj);
			var offsetLeft = arrOffset[0];
			var offsetTop = arrOffset[1];
			this.shinyvSelectedHidden.style.background = "";
			this.shinyvSelectedHidden.style.filter = "";

			this.shinyvSelectedHidden.style.border = this.borderColor +  " 1px dotted";
			this.shinyvSelectedHidden.zIndex = this.zIndex;
			this.shinyvSelectedHidden.style.posLeft = offsetLeft;
			this.shinyvSelectedHidden.style.posTop = offsetTop;
			this.shinyvSelectedHidden.style.posWidth = obj.offsetWidth;
			this.shinyvSelectedHidden.style.posHeight = obj.offsetHeight;
			this.shinyvSelectedHidden.style.display = '';
			this.lockDivId = objId;
			mainDiv = objId;
		}
	}
}

/**
* 复制模块内容
*/
_p.copyForModules = function copyForModules(modulesId) {
	var obj = document.getElementById(modulesId);
	startModulesName = selectModulesName;
	this.copyToNewDiv(obj);


}

_p.copyToNewDiv = function copyToNewDiv(obj) {

	var currentMoveObj = obj;
	var arrOffset = this.getAbsoluteOffset(obj);
	var relLeft = arrOffset[0];
	var relTop = arrOffset[1];

	//控制复制层的高度和宽度
	var offsetW = obj.offsetWidth;
	var offsetH = obj.offsetHeight;
	copyDiv = document.createElement('div');
	copyDiv.id = "shinyvCopydHidden";
	copyDiv.style.display = "none";
	copyDiv.style.position = "absolute";
	copyDiv.style.left = relLeft - 2;
	copyDiv.style.top = relTop - 2;
	copyDiv.style.width = offsetW;
	copyDiv.style.heigth = offsetH;
	copyDiv.innerHTML = obj.outerHTML;
	currentMoveObj.parentNode.appendChild(copyDiv);
	copyDiv.style.display = '';
	copyDiv.style.zIndex=0;


}



/**
* 保存最后一个选取的模块名字
*/
_p.setSelectModulesName = function setSelectModulesName(objId) {
	if(!this.isModule(objId)) {
		return objId;
	}
	return null;
}

_p.moveForModules = function copyForModules() {
	//document.getElementById("3").innerHTML = copyDiv;
	if(copyDiv != null)
	{
		copyDiv.style.left = event.x;
		copyDiv.style.top = event.y;
	}
}
/*
是否替换所选内容
*/
_p.replaceForModules = function replaceForModules() {

	endModulesName = selectModulesName;
	if(copyDiv != null)
	{
		if(startModulesName == endModulesName)
		{
			copyDiv.style.display = "none";
			copyDiv = null;
		}
		else
		{

			var isReplace = window.confirm("是否替换所选的内容");

			if(isReplace != "")
			{
				//alert(startModulesName);
				//alert(document.getElementById(endModulesName).id);
				//document.getElementById(startModulesName).setAttribute("id",endModulesName);
				var startcontent = document.getElementById(startModulesName).innerHTML;
				var endcontent = document.getElementById(endModulesName).innerHTML;
				document.getElementById(startModulesName).innerHTML = endcontent;
				document.getElementById(endModulesName).innerHTML = startcontent;

				//alert(startModulesName);
				if(copyDiv != null)
				{
					copyDiv.style.display = "none";
					copyDiv = null;
				}

				/*alert(oldMoudlesList);*/
				//startModulesList = init();
				startMoudlesList = init();
				//alert(startMoudlesList);
				oldMoudlesList = arrayValueReplace(oldMoudlesList, startModulesName, endModulesName);
				//alert(oldMoudlesList);
				if(oldMoudlesList != null) {

					endArray = oldMoudlesList.toString(",");
				}
				}
			else
			{

				copyDiv.style.display = "none";
				copyDiv = null;

			}

		}
	}
}

function init() {
	var oldMoudlesList = new Array();
	var Divs = document.body.getElementsByTagName("DIV");
	for(var i=0, j=0; i<Divs.length;i++) {
		var indexOf = Divs[i].id.indexOf("shinyv_Modules");
		if( indexOf != -1 )	{
			//var length = Divs[i].id.length;
			//indexOf = (indexOf == -1) ? -1 : indexOf + "shinyv_Modules_".length;
			//start_position[j] = Divs[i].id.substr(indexOf, length - indexOf);
			oldMoudlesList[j] = Divs[i].id;
			j++;
		}
	}

	return oldMoudlesList;
	//alert(oldMoudlesList);
}

/**
*
*/
function arrayValueReplace(arr, val1, val2) {
	//alert(val1 + "|" + val2);
	if(typeof(arr) == "object") {
		for(var i = 0; i < arr.length; i++) {
			if(arr[i] == val1) {
				arr[i] = val2;
			}
			else if(arr[i] == val2) {
				arr[i] = val1;
			}
		}
	}

	return arr;
}

function saveMoudlesPosition() {
	var cur_template = document.getElementById("cur_template").value;
	url =  "startPosition="+startArray+"&&endPosition="+endArray+"&&cur_template="+cur_template;
  	return url;
}
function getTemplateUrl() {
	var cur_css = document.getElementById("cur_css").value;
	return cur_css;
}
var shinyvWYSIWYG = new ShinyvWYSIWYG(5000);
var shinyvWYSIWYGm = new ShinyvWYSIWYG(8000);
shinyvWYSIWYGm.setDisableLinkBackground("#C0FFEE");
shinyvWYSIWYGm.setAbleLinkFilter("Mask(Color=#FFFFFF)DropShadow(Color=#FF7070, OffX=1, OffY=1)Shadow(direction=315,strength=1)Glow(Color=#FF7070,Strength:10)Alpha(Opacity=55)");
shinyvWYSIWYGm.setBorderColor("#FF7070");



document.body.onmousemove = function()   {

	shinyvWYSIWYG.moveForModules();
}

document.body.onmouseup = function()  {

	shinyvWYSIWYG.replaceForModules();

}

document.body.onload = function()  {

	oldMoudlesList = init();
	startArray = oldMoudlesList.toString(",");
}



//-->