
//get the page that is currently selected
function getCurrentLayoutId(){
	//var pagebar = document.getElementById("pagebar");
	var ul = document.getElementById("pagebarul");
	var lis = ul.getElementsByTagName("li");
	var current = null;
	for(var i=0;i<lis.length;i++){
		var li = lis[i];
		//if(li.getElementsByTagName("span")[0].id == "current"){
		if(li.id == "current"){
			current = li.getElementsByTagName("a")[0];
			break;
		}
	}
	return current.value;
}

//the response function of ajax
//show the template's content of a page
function showTemplate(xmlhttp){
	if(xmlhttp.readyState == 4){
		if(xmlhttp.status == 200){
			var xml = xmlhttp.responseXML;
			document.getElementById("book").innerHTML=xml.getElementsByTagName("template")[0].text;
			var editable = xml.getElementsByTagName("edit")[0].text;
			var layoutId = xml.getElementsByTagName("layoutid")[0].text;
			if(editable == "true"){
			//	debugger;
				
				var ul = document.getElementById("pagebarul");
				for(var i=0;i<ul.getElementsByTagName("a").length;i++){
					var a = ul.getElementsByTagName("a")[i];
					if(a.value == layoutId){
						a.parentNode.parentNode.id = "current";
					}else{
						a.parentNode.parentNode.id = "";
					}
				}
				
				var link = document.getElementById("openCMSLink");
				var editLink = document.getElementById("openEditPageLink")
				if(link && editLink){
					link.style.display = "block";
					editLink.style.display = "block";
				}
			}else{
				var link = document.getElementById("openCMSLink");
				var editLink = document.getElementById("openEditPageLink")
				if(link && editLink){
					link.style.display = "none";
					editLink.style.display = "none";
				}
			}
			
			var book = document.getElementById("book");
			var rowList = book.getElementsByTagName("tr");
			var rowArray = new Array(rowList.length);
			for(var n = 0;n < rowList.length;n++){
				rowArray[n] = rowList[n];
			}
			
			for(var i = 0; i < rowArray.length; i++){
				var row = rowArray[i];
				var colList = row.getElementsByTagName("td");
				var colArray = new Array(colList.length);
				for(var u = 0;u < colList.length;u++){
					colArray[u] = colList[u];
				}
				for(var j = 0; j < colArray.length; j++){
					var col = colArray[j];
					if(col.id){
					getColumnContent(col.id, layoutId);
				}
			}
		}
	}
}
}

//get the portlets' contents of a column
function getColumnContent(column, layoutId){
	//debugger;
	var xmlhttp = getXmlHttpRequest();
	document.getElementById(column).innerHTML = "<div class=\"LoadingPortlet\"><img src='" + PortalConstants.PORTAL_CONTEXT + "/portal/images/loading.gif'/>Portlet正在装载中...</div>";
	xmlhttp.onreadystatechange = function(){
		showColumnPortlet(xmlhttp);
	}
	doURLProcess("LayoutService","getPortletContent","columnId=" + column + "&layoutId=" + layoutId,null,xmlhttp,true);
}

//the response function of ajax
//show all the portlets' contents of a column on the page
function showColumnPortlet(xmlhttp){
	if(xmlhttp.readyState == 4){
		if(xmlhttp.status == 200){
			var xml = xmlhttp.responseXML;
			//var columnStr = xml.getElementsByTagName("column")[0].text;
			//var columnId = xmlhttp.responseText.substring(0,xmlhttp.responseText.indexOf("$"));
			var columnId = xml.getElementsByTagName("columnid")[0].text;
			
			var layoutId = xml.getElementsByTagName("layoutid")[0].text;
			if(layoutId == currentLayoutId){
				if(columnId!=""){
					//var content = columnStr.substring(columnStr.indexOf("$")+1);
					var content = xml.getElementsByTagName("column_content")[0].text;
					var ua = navigator.userAgent.toLowerCase();
					if (ua.indexOf('msie') >= 0 && ua.indexOf('opera') < 0) {
					
						if(content.indexOf("script")>-1){
							content = content.replace(/<script([^>]*)>/,'<script$1 defer>');
						}
						document.getElementById(columnId).innerHTML= content;
					}
					
					initDragDrop(columnId);
					var column = document.getElementById("layout-column_" + columnId);
					var columnMaxWidth = column.offsetWidth;
					for(var j=0;j<column.childNodes.length;j++){
						var div = column.childNodes[j];
						if(div.className && (div.className.match("portlet-boundary") || div.className.match("layout-blank-portlet"))){
							//debugger;
							if(div.offsetWidth > columnMaxWidth){
								columnMaxWidth = div.offsetWidth;
							}
						}
					}
					for(var j=0;j<column.childNodes.length;j++){
						var div = column.childNodes[j];
						if(div.className && (div.className.match("portlet-boundary") || div.className.match("layout-blank-portlet"))){
							div.style.width = columnMaxWidth;
						}
					}
					initMenuPortletsAreaBg();
					
					var edit = document.getElementById("editPageLink");
					if(!edit){
						edit = document.getElementById("openEditPageLink");
					}if(edit){
						edit = edit.childNodes[0];
					}
					if(edit && edit.value == "0"){		
						initEditPage();
					}
				}
			}else{
				//alert("layoutId=" + layoutId + "&&currentLayoutId=" + currentLayoutId);
			}
		}else{
			
		}
	
	}else{

	}
}

//delete a page of a user
function removePage(layoutId){
	if(confirm("这将永久删除此页面及其所有内容,确定这样做?")){
		var ul = document.getElementById("pagebarul");
		var lis = ul.getElementsByTagName("li");
		if(lis.length==1) {
		    alert('不能删除,至少保留一个布局!');
		    return false;
		}
		for(var i=0;i<lis.length;i++){
			var a = lis[i].getElementsByTagName("a")[0];
			if(a.value == layoutId){
				//lis[i].style.padding = "0";
				//lis[i].getElementsByTagName("span")[0].style.display = "none";
				
				//if this page is selected,set another page selected
				if(lis[i].id=="current"){
					if(i<lis.length-1){
						lis[i+1].id = "current";
						//lis[i+1].getElementsByTagName("span")[0].id="current";
						getTemplate(lis[i+1].getElementsByTagName("a")[0].value);
					}else{
						lis[i-1].id = "current";
						//lis[i-1].getElementsByTagName("span")[0].id="current";
						getTemplate(lis[i-1].getElementsByTagName("a")[0].value);
					}
				}
				lis[i].removeNode(true);
				//delete the page from layout out settings
				var xmlhttp = getXmlHttpRequest();
				doProcess('LayoutService','deletePortalPage',layoutId,xmlhttp,true);
			}
		}
	}
}


//change a page of showing in the browser
function changePage(layoutId){
	var ul = document.getElementById("pagebarul");
	//set focus
	document.body.focus(false);
	
	var lis = ul.getElementsByTagName("li");
	for(var i=0;i<lis.length;i++){
		var a = lis[i].getElementsByTagName("a")[0];
		if(a.value != layoutId){
			lis[i].id = "";
			//lis[i].getElementsByTagName("span")[0].id = "";
		}else{
			lis[i].id = "current";
			//lis[i].getElementsByTagName("span")[0].id = "current";
		}
	}
	getTemplate(layoutId);
}

function addPage(){
	//debugger;
	var pageName = document.getElementById("pageName").value;
	//document.getElementById("pageName").value = "";
	var templateId = getChooseTemplateId();
	if(!pageName){
		alert("请填写所要创建的页面名称");
	}else if(templateId==null){
		alert("请选择页面的布局模版");
	}else{
		var xmlhttp = getXmlHttpRequest();
		xmlhttp.onreadystatechange = function(){
			showNewPage(xmlhttp);
		}
		doProcess('LayoutService','addPortalPage',pageName + "&" + templateId,xmlhttp,true);
	}
}

function showNewPage(xmlhttp){
	if(xmlhttp.readyState == 4){
	//debugger;
		var layoutId = xmlhttp.responseText.substring(0,xmlhttp.responseText.indexOf("&"));
		var pageName = xmlhttp.responseText.substring(xmlhttp.responseText.indexOf("&")+1);
		var ul = document.getElementById("pagebarul");
		ul.innerHTML+="<li><span><a value=\"" + layoutId + "\" href=\"javascript:changePage('" + layoutId + "')\">" + pageName + "</a>&nbsp;&nbsp;<img id=\"close\" src=\"" + PortalConstants.PORTAL_CONTEXT + "/portal/images/closeTab-red.gif\" alt=\"删除页面\"  style=\"cursor:hand;\" border=\"0\" onclick=\"javascript:removePage('" + layoutId + "')\"/></span></li>";
		
	}
}

//minimize a portlet
function minimizePortlet(instanceId,img){
	//debugger;
	var portletBody = document.getElementById("p_p_body_" + instanceId);
	portletBody.style.display = "none";
	
	img.className = "restore-portlet-button";
	img.title = "还原";
	img.outerHTML = img.outerHTML.replace("minimizePortlet","restorePortlet");
	
	var xmlhttp = getXmlHttpRequest();
	doURLProcess('LayoutService','minimizePortlet','instanceId=' + instanceId, null,xmlhttp,true);
	initMenuPortletsAreaBg();
	//initPortletBg(instanceId);
}

//restore the portlet from minimize
function restorePortlet(instanceId,img){
	//debugger;
	var portletBody = document.getElementById("p_p_body_" + instanceId);
	portletBody.style.display = "block";
	
	img.className = "min-portlet-button";
	img.title = "最小化";
	
	img.outerHTML = img.outerHTML.replace("restorePortlet","minimizePortlet");
	
	var divs = document.getElementsByTagName("div");
	for(var i=0;i<divs.length;i++){
		var div = divs[i];
		if(div.id.match("layout-column_column_")){
			for(var j=0;j<div.childNodes.length;j++){
				if(div.childNodes[j].className.match("portlet-boundary")){
						div.childNodes[j].style.width = div.offsetWidth;
				}
			}
		}
	}
	
	var xmlhttp = getXmlHttpRequest();
	doURLProcess('LayoutService','restorePortlet','instanceId=' + instanceId,null,xmlhttp,true);
	initMenuPortletsAreaBg();
	//initPortletBg(instanceId);
}

//delete a portlet
function deletePortlet(instanceId){
	if(confirm("此操作将永久性的删除这个portlet, 确定删除�?")){
		var portlet = document.getElementById("portlet_" + instanceId);
		portlet.parentNode.removeChild(portlet);
		var xmlhttp = getXmlHttpRequest();
		doURLProcess('LayoutService','deletePortlet','instanceId=' + instanceId,null,xmlhttp,true);
		initMenuPortletsAreaBg();
	}
}

function maximizePortlet(instanceId){
	var xmlhttp = getXmlHttpRequest();
	xmlhttp.onreadystatechange = function(){
		maxDispatch(xmlhttp);
	}
	doURLProcess('LayoutService','maximizePortlet','instanceId=' + instanceId,null,xmlhttp,true);
}

function maxDispatch(xmlhttp){
//debugger;
	if(xmlhttp.readyState == 4){
		if(xmlhttp.status == 200){
			window.location.href = PortalConstants.PORTAL_CONTEXT + "/portal/index.jsp";
		}
	}
}

function back(layoutId){
	var xmlhttp = getXmlHttpRequest();
	xmlhttp.onreadystatechange = function(){
		backDispatch(xmlhttp);
	}
	doProcess('LayoutService','backward',layoutId,xmlhttp,true);
}

function backDispatch(xmlhttp){
	if(xmlhttp.readyState == 4){
		if(xmlhttp.status == 200){
			window.location.href = PortalConstants.PORTAL_CONTEXT + "/portal/index.jsp";
		}
	}
}

function getEditMode(instanceId){
	var xmlhttp = getXmlHttpRequest();
	//xmlhttp.onreadystatechange = maxDispatch;
	doProcess('LayoutService','getPortletEditMode',instanceId,xmlhttp,true);
	maximizePortlet(instanceId);
}

//取得portlet的view模式，并显示
/*******************************************
 *Modifier Person:Majc
 *Modifier Date:2007-12-7
 ******************************************/
function getViewMode(instanceId){
	var xmlhttp = getXmlHttpRequest();
	//xmlhttp.onreadystatechange = maxDispatch;
	doProcess('LayoutService','getPortletViewMode',instanceId,xmlhttp,true);
	maximizePortlet(instanceId);
}

function openContentCMS(){
	if(!document.getElementById("cmsWin")){
		var progressBar = document.getElementById("XWinLoadMsg");
		var msg = document.getElementById("XWinLoadStr");
		msg.innerText = "内容管理控制台载入中...";
		progressBar.style.display = "block";

		var xmlhttp = getXmlHttpRequest();
		xmlhttp.onreadystatechange = function(){
			openCMSReturn(xmlhttp);
		};
		doProcess('LayoutService','openCMS'," ",xmlhttp,true);
	}
}
//build the cms control window
function openCMSReturn(xmlhttp){
	if(xmlhttp.readyState == 4){
		//debugger;
		//var d = document.getElementById("back");
		//d.style.filter+="progid:DXImageTransform.Microsoft.Alpha(opacity=50,finishOpacity=100,style=0)";
		var str = xmlhttp.responseText;
		var b = new xWin("cmsWin",400,430,10,10,"Portal内容管理",str);
		var progressBar = document.getElementById("XWinLoadMsg");
		progressBar.style.display = "none";
		//initiate portlet tree
		initiate();
	}
}

//open the theme control
function openTheme(){
	if(!document.getElementById("themeWin")){
		var xmlhttp = getXmlHttpRequest();
		var progressBar = document.getElementById("XWinLoadMsg");
		var msg = document.getElementById("XWinLoadStr");
		msg.innerText = "主题设置控制台载入中...";
		progressBar.style.display = "block";

		xmlhttp.onreadystatechange = function(){
			openThemeReturn(xmlhttp);
		};
		doProcess('LayoutService','openTheme'," ",xmlhttp,true);
	}
}
//build the theme control window
function openThemeReturn(xmlhttp){
	if(xmlhttp.readyState == 4){
		var str = xmlhttp.responseText;
		var b = new xWin("themeWin",420,400,10,10,"主题设置",str);
		var progressBar = document.getElementById("XWinLoadMsg");
		progressBar.style.display = "none";
	}
}

function movePortlet(instanceId, columnId, row){
	//debugger;
	instanceId = instanceId.substring(instanceId.indexOf("portlet_")+8);
	var xmlhttp = getXmlHttpRequest();
	var param = "instanceId=" + instanceId + "&columnId=" + columnId + "&row=" + row;
	doProcess('LayoutService', 'movePortlet', param, xmlhttp,true);
}

function addPortlet(portletId){
	var xmlhttp = getXmlHttpRequest();
	xmlhttp.onreadystatechange = function(){
		addPortletReturn(xmlhttp);
	}
	doURLProcess('LayoutService', 'addPortlet', 'portletId=' + portletId, null, xmlhttp,true);
	//debugger;
	var column = document.getElementById("layout-column_column_1");
	var child = column.childNodes;
	for(var i=0;i<child.length;i++){
		if(child[i].className && child[i].className.match("layout-blank-portlet")){
			var portletShadow = document.createElement("div");
			portletShadow.id="addPortletPlace";
			portletShadow.style.width = child[i].offsetWidth;
			portletShadow.style.height = "100px";
			portletShadow.style.borderStyle = "dashed";
			portletShadow.style.borderWidth = "2px";
			portletShadow.style.borderColor = "red";
			portletShadow.innerHTML = "<div style='font-size:14px;font-weight:bold'><img src='" + PortalConstants.PORTAL_CONTEXT + "/portal/images/loading.gif' align='center'/>&nbsp;portlet加载中...</div>";
			column.insertBefore(portletShadow,child[i]);
			break;
		}
	}
}

function addPortletReturn(xmlhttp){
	if(xmlhttp.readyState == 4){
		var str = xmlhttp.responseText;
		//debugger;
		var portlet = document.createElement("div");
		portlet.innerHTML = str;
		for(var i=0;i<portlet.getElementsByTagName("div").length;i++){
			var child = portlet.getElementsByTagName("div")[i];
			if(child.className && child.className.match("portlet-boundary")){
				portlet = child;
				break;
			}
		}
		
		var column = document.getElementById("layout-column_column_1");
		
		var blank = null;
		for(var i=0;i<column.getElementsByTagName("div").length;i++){
			var child = column.getElementsByTagName("div")[i];
			if(child.className && child.className.match("layout-blank-portlet")){
				blank = child;
				break;
			}
		}
		if(blank){
			column.insertBefore(portlet,blank);
		}
		
		//column.innerHTML = column.innerHTML.substring(0,column.innerHTML.indexOf("<DIV class=layout-blank-portlet")) + portlet.outerHTML + "<div class=layout-blank-portlet><div id=place_" + column.id + " class=portlet-place style=display:none;font-size:1px;></div></div></div>";
		
		var edit = false;
		for(var i=0;i<column.getElementsByTagName("div").length;i++){
			var child = column.getElementsByTagName("div")[i];
			if(child.className && child.className.match("portlet-header-bar")){
				if(child.style.display == "block"){
					edit = true;
				}else if(child.style.display == "none"){
					edit = false;
				}
				break;
			}
		}
		//debugger;
		for(var i=0;i<portlet.getElementsByTagName("div").length;i++){
			var child = portlet.getElementsByTagName("div")[i];
			if(child.className && child.className.match("portlet-header-bar") && child.value=="hidden"){
				if(edit){
					child.style.display = "block";
				}else{
					child.style.display = "none";
				}
			}
		}
		
		var portletShadow = document.getElementById("addPortletPlace");
		column.removeChild(portletShadow);
		
		var tags = column.getElementsByTagName("div");
		var divs = document.getElementsByTagName("div");
		for(var i=0;i<divs.length;i++){
			if(divs[i].id.match("layout-column_column_")){
				initDragDrop(divs[i].id.substring(divs[i].id.indexOf("layout-column_")+14));
				for(var j=0;j<divs[i].childNodes.length;j++){
					var div = divs[i].childNodes[j];
					if(div.className.match("portlet-boundary")){
						div.style.width = divs[i].offsetWidth;
					}
				}
			}
		}
		initMenuPortletsAreaBg();
	}
}

function changeTheme(){
	//debugger;
	var content =  themeframe.document.body;
	var radioes = content.getElementsByTagName("input");
	var themeId = null;
	for(var i=0;i<radioes.length;i++){
		if(radioes[i].type=="radio" && radioes[i].checked){
			themeId = radioes[i].value;
			var xmlhttp = getXmlHttpRequest();
			xmlhttp.onreadystatechange = function(){
				changeThemeReturn(xmlhttp);
			}
			doProcess('LayoutService', 'changeTheme', themeId, xmlhttp,true);
			break;
		}
	}
}

function changeThemeReturn(xmlhttp){
	if(xmlhttp.readyState == 4){
		window.location.href = PortalConstants.PORTAL_CONTEXT + "/portal/index.jsp";
	}
}

//change the layout template
function changeTemplate(){
	//debugger;
	var id = getChooseTemplateId();
	if(id==null){
		alert("请选择模版�?");
	}else{
		var xmlhttp = getXmlHttpRequest();
		xmlhttp.onreadystatechange = function(){
			changeTemplateReturn(xmlhttp);
		}
		doProcess('LayoutService', 'changeTemplate', id, xmlhttp,true);
		//alert(id);
	}
}

function changeTemplateReturn(xmlhttp){
	if(xmlhttp.readyState == 4){
		getTemplate(xmlhttp.responseText);
	}
}

//get the template id choose by the user
function getChooseTemplateId(){
	var select = document.getElementById("templates");
	var options = select.getElementsByTagName("option");	
	for(var i=0;i<options.length;i++){
		if(options[i].selected){
			if(options[i].value==null || !options[i].value){
				return null;
			}
			if(options[i].value!=null && options[i].value){
				return options[i].value;
			}
		}
	}
}
function editPage(){
	var a = document.getElementById("editPageLink");
	if(!a){
		a = document.getElementById("openEditPageLink");
	}if(a){
		a = a.childNodes[0];
	}
	var value = a.value;
	if(value == 0){
		a.innerText = " 结束编辑  ";
		var divs = document.getElementsByTagName("div");
		for(var i=0;i<divs.length;i++){
			if(divs[i].className && divs[i].className.match("portlet-header-bar") && divs[i].value=="hidden"){
				divs[i].style.display = "block";
			}	
		}
		a.value = "1";
	}else{
		a.innerText = " 编辑页面  ";
		var divs = document.getElementsByTagName("div");
		for(var i=0;i<divs.length;i++){
			if(divs[i].className && divs[i].className.match("portlet-header-bar") && divs[i].value=="hidden"){
				divs[i].style.display = "none";
			}	
		}
		a.value = "0";
	}
}
function initEditPage(){
	var divs = document.getElementsByTagName("div");
	for(var i=0;i<divs.length;i++){
		if(divs[i].className && divs[i].className.match("portlet-header-bar") && divs[i].value=="hidden"){
			divs[i].style.display = "none";
		}	
	}
}
/*
function initPortletBg(id){
		var boundary = document.getElementById("portlet_" + id);
		var outerContainer = null;
		var outerContainerBg = document.getElementById("portlet-background-" + id);
		var header = document.getElementById("portlet-header-bar_" + id);
		var headerBg = document.getElementById("portlet-title-bg-" + id);
		if(boundary){
			for(var i=0;i<boundary.childNodes.length;i++){
				var child = boundary.childNodes[i];
				if(child.className && child.className.match("portlet-outer-container")){
					outerContainer = child;
					break;
				}
			}

		}
/*		if(header && headerBg){
			//debugger;
			headerBg.style.width = header.offsetWidth;
			headerBg.style.height = header.offsetHeight;
			headerBg.style.position = "absolute";
			outerContainer.style.position = "absolute";
			header.style.position = "absolute";
			headerBg.style.top = header.offsetTop;
			headerBg.style.left = header.offsetLeft;
			header.style.position = "relative";
			outerContainer.style.position = "relative";
			headerBg.style.zIndex = "-1";
		}
		if(outerContainer && outerContainerBg){
			outerContainerBg.style.width = outerContainer.offsetWidth;
			outerContainerBg.style.height = outerContainer.offsetHeight;
			outerContainerBg.style.position = "absolute";
			outerContainer.style.position = "absolute";
			outerContainerBg.style.top = outerContainer.offsetTop;
			outerContainerBg.style.left = outerContainer.offsetLeft;
			outerContainer.style.position = "relative";
			outerContainerBg.style.zIndex = "-2";
		}

		
	}*/