﻿/*!
 * 主  题：《内容页操作面板》
 * 说  明：在管理界面右侧出现内容页操作面板。
 * 功能描述：
 * 1、生成仿傲游浏览器的标签栏，可以关闭标签；
 * 2、面板内包含iframe控件，用于显示内容页；
 * 3、面板可以全屏；
 * 4、当关闭所有标签后，将打开默认页，即起始页
 *
 * 作  者：宋雷鸣 
 * 开发时间: 2012年12月23日
 */
 
 

//工作区域，页面（包括标题、页面ifame)的操作类
function PagePanel(name,path,page,id)
{
	this.Init(name,path,page,id);
}
//初始化参数
PagePanel.prototype.Init=function(name,path,page,id)
{
	this.Name= name!=null && name!="" ? name : this.Default.name;	
	this.Path= path!=null && path!="" ? path : this.Default.path;
	this.Page= page!=null && page!="" ? page : this.Default.page;
	this.Id= id!=null && id!="" ? id : this.Default.id;
}
//最多打开几个页面
PagePanel.prototype.Max=6;
//默认页面
PagePanel.prototype.Default={
		name:"起始页",
		path:"起始页",
		page:"welcome.aspx",
		id  :"def"
}
//打开默认的页面（起启页）
PagePanel.prototype.DefOpen=function()
{
	this.add(this.Default.name,this.Default.path,this.Default.page,this.Default.id);
}
//增加页面操作面板
//name:标题名称
//path:页面所在的菜单路径
//page:要打开的页面
//id:当前菜单项id，系统菜单项，如桌面等均为字符表示
PagePanel.prototype.add=function(name,path,page,id)
{
	this.Init(name,path,page,id);
	var bar=$("#consBoxTitleBar");
	//判断当前页面是否已经打开
	if(bar.find("#consBoxTitle_"+id).size()>0)
	{
		//alert("您要操作的页面，已经打开。");
		this.focus(id);
		return;
	}	
	if(this.size()>=this.Max)
	{
		alert("系统最多允许打开 "+this.Max+" 个窗口。");		
		return;
	}	
	//增加标签
	this.addTitle(name,id);
	//生成主区域
	var frame="<div id=\"consFramePanel_"+id+"\" class=\"consFramePanel\" style=\"display:none\" type=\"panel\">";	
	frame+="</div>";
	bar.after(frame);
	var frame=$("#consFramePanel_"+id);
	frame.css("position","absolute");
	frame.css("z-index","3000");
	var context=$("#consContextPanel");
	frame.height(context.height()-$("#consBoxTitle_"+id).height());
	//页面内容区域的加载
	this.addBar(name,path,id);
	this.addPage(name,page,id);		
	//将新打开的页面设为焦点
	this.focus(id);
	//当完成一切操作后，执行事件
	this.OnComplete();
}
//增加标签
PagePanel.prototype.addTitle=function(name,id)
{
	var bar=$("#consBoxTitleBar");
	//生成标题框,并填充进页面
	var tit="<dd id=\"consBoxTitle_"+id+"\" class=\"out\">";
	tit+="<span>"+name+"</span>";
	tit+="<a href=\"#\">X</a>";
	tit+="</dd>";
	bar.append(tit);
	//增加标签事件，使某个页面处于焦点
	bar.find("#consBoxTitle_"+id+" span").click(
			function()
			{
				var thisId=$(this).parent().attr("id");
				thisId=thisId.substring(thisId.indexOf("_")+1);
				var tm=new PagePanel();
				tm.focus(thisId);
			}
		);
	var closeBtn=$("#consBoxTitle_"+id+" a");
	closeBtn.click(
			function()
			{
				var thisId=$(this).parent().attr("id");
				thisId=thisId.substring(thisId.indexOf("_")+1);
				new PagePanel().del(thisId);
				return false;
			}
		);
}
//增加内容顶部条
PagePanel.prototype.addBar=function(name,path,id)
{
	var pathArr=path.split(",");
	var pathText="";
	for(var i=0;i<pathArr.length-1;i++)
	{
		pathText+=pathArr[i]+" >> ";
	}
	pathText+=pathArr[pathArr.length-1];
	var top="<table width=\"100%\" border=\"0\" cellspacing=\"0\" cellpadding=\"0\" class=\"topBar\" id=\"topBar_"+id+"\">";
	//var top="<div class=\"topBar\" id=\"topBar_"+id+"\">";
	top+="<tr>";
	top+="<td class=\"pagePanelPath\" >所在位置："+pathText+"</td>";
	top+="<td type=\"refresh\"  class=\"pagePanelRefreshHand\" id=\"pagePanelRefreshHand_"+id+"\">刷新</td>";
	top+="<td type=\"help\"  class=\"pagePanelHelpHand\"  id=\"pagePanelHelpHand_"+id+"\" name=\""+name+"\">帮助</td>";
	top+="<td type=\"print\"  class=\"pagePanelPrintHand\" id=\"pagePanelPrintHand_"+id+"\">打印</td>";
	top+="<td type=\"window\"  class=\"pagePanelMaxHand\">全屏</td>";
	//top+="<span type=\"back\" style=\"display:none\">还原</span>";
	top+="</tr>";
	top+="</table>";
	var frameBox=$("#consFramePanel_"+id);	
	frameBox.append(top);
	//全屏事件
	frameBox.find(".topBar .pagePanelMaxHand").click(
			function()
			{					
				var thisId=$(this).parent().parent().attr("id");
				thisId=thisId.substring(thisId.indexOf("_")+1);
				var tm=new PagePanel();
				var type=$(this).attr("type");
				type=="window" ? tm.fullPage(id) : tm.revertPage(id);
				return false;
			}
		);
	//刷新页面的事件
	frameBox.find(".topBar .pagePanelRefreshHand").click(
			function()
			{
				var thisId=$(this).attr("id");
				thisId=thisId.substring(thisId.indexOf("_")+1);				
				var frame=$("#consFame_"+thisId);				
				var src=frame.attr("src");
				frame.attr("src",src);	
				return false;
			}
		);
	//帮助文档
	frameBox.find(".topBar .pagePanelHelpHand").click(
			function()
			{
				//如果当前打开页面的文件名
				var thisId=$(this).attr("id");
				thisId=thisId.substring(thisId.indexOf("_")+1);				
				var page=$("#consFame_"+thisId).attr("src").toLowerCase();
				if(page.indexOf("/manage/")>-1)
				{
					page=page.substring(page.indexOf("/Manage/")+1);
					
				}
				if(page.lastIndexOf(".")>-1)
				{
					page=page.substring(0,page.lastIndexOf("."));
				}
				//取标题
				var name=$(this).attr("name");
				//打开帮助窗口
				new window.PageBox(name+"_帮助文档","/manage/help/"+page+".html").Open();
				return false;
			}
		);
	//打印按钮
	frameBox.find(".topBar .pagePanelPrintHand").click(
			function()
			{				
				var thisId=$(this).attr("id");
				thisId=thisId.substring(thisId.indexOf("_")+1);	
				var page=$("#consFame_"+thisId);
				//page.window.focus(); 
				document.frames("consFame_"+thisId).window.focus();        
     			window.print();
				return false;
			}
		);
}
//增加内容区
PagePanel.prototype.addPage=function(name,page,id)
{
	var frameBox=$("#consFramePanel_"+id);
	//页面区域
	var context=$("#consContextPanel");
	var width=context.width();	
	//var height=context.height()-$("#topBar_"+id).height();
	var height=context.height()-50;
	var frame="";
	frame+="<iframe src=\""+page+"\" name=\"consFame_"+id+"\" id=\"consFame_"+id+"\" class=\"frame\"";
	frame+="width=\""+width+"\"";
	frame+="height=\""+height+"\"";
	frame+="marginwidth=\"0\"  marginheight=\"0\" align=\"top\" scrolling=\"auto\"";
	frame+="frameborder=\"0\" allowtransparency=\"true\">";
	frame+="</iframe>";	
	frameBox.append(frame);

}
//删除面板
PagePanel.prototype.del=function(id)
{
	var bar=$("#consBoxTitleBar");
	//当前页面标题
	var curTit=bar.find("#consBoxTitle_"+id);
	//下一个要打开的页面
	var nextFocus=null;
	if(curTit.next().length==1)
	{
		nextFocus=curTit.next();
	}else
	{
		nextFocus=curTit.prev();
	}
	//清除标题
	bar.find("#consBoxTitle_"+id).remove();
	//清除面板
	bar.parent().find("#consFramePanel_"+id).remove();	
	//如果当前打开的页面小于1
	if(this.size()<1)
	{
		this.add(this.Default.name,this.Default.path,this.Default.page,this.Default.id);
	}else
	{
		//关闭当前面板后，打开最后一个页面
		//var tit=bar.find("dd$:last-child");
		var thisId=nextFocus.attr("id");
		thisId=thisId.substring(thisId.indexOf("_")+1);
		this.focus(thisId);
	}
}
//设置当前面板为焦点
PagePanel.prototype.focus=function(id)
{
	var bar=$("#consBoxTitleBar");
	//如果id参数为空，则返回当前处在焦点的面板id
	if(id==null){		
		bar.find("dd").each(
			function()
			{
				var cl=$(this).attr("class");				
				if(cl=="current")
				{
					var thisId=$(this).attr("id");
					thisId=thisId.substring(thisId.indexOf("_")+1);
					id=thisId;
				}
			}
		);
		return id;		
	};
	//如果参数不为空，则设置当前焦点
	//取出所有的frame面板
	var panel=bar.parent().find("div[type='panel']");
	panel.each(
		function()
		{
			//当前的显示，其余隐藏
			var thisId=$(this).attr("id");
			thisId=thisId.substring(thisId.indexOf("_")+1);
			thisId==id ? $(this).show() : $(this).hide();
		}
	);
	//标题的操作
	bar.find("dd").each(
		function()
		{
			var thisId=$(this).attr("id");
			thisId=thisId.substring(thisId.indexOf("_")+1);
			thisId==id ? $(this).attr("class","current") : $(this).attr("class","out");
		}
	);
	return id;
}
//标题个数
PagePanel.prototype.size=function()
{
	var bar=$("#consBoxTitleBar");
	//判断是否已经存在
	return bar.find("dd").size();
}
//标题总宽度
PagePanel.prototype.width=function()
{
}
//根据id获取标题
PagePanel.prototype.name=function(id)
{
	var titl=$("#consBoxTitle_"+id);
	if(titl.length>0)
	{
		return titl.find("span:first").text();
	}
	return null;
}
//获取当前焦点页面的标题
PagePanel.prototype.focusName=function()
{
	var id=this.focus();
	return this.name(id);
}
//将当前窗体最大化
PagePanel.prototype.fullPage=function(id)
{
	//页面内容区div
	var frame=$("#consFramePanel_"+id);	
	//按钮所处的盒子区域
	var span=frame.find(".topBar .pagePanelMaxHand");	
	//改变大小之前，先记录原始信息
	span.attr("w",frame.width());
	span.attr("h",frame.height());
	var offset = frame.offset();
	span.attr("t",offset.top);
	span.attr("l",offset.left);
	span.attr("type","fullscreen");	
	//设置参数
	frame.css("top",offset.top);
	frame.css("left",offset.left);
	frame.css("position","absolute");
	frame.css("z-index","3001");	
	frame.attr("class","consFramePanel fullWindow");	
	
	var scrTop=document.documentElement.scrollTop;	
	var clHeight=document.documentElement.clientHeight;
	//frame.width($("body").width()-5);
	//frame.height(clHeight-5);
	frame.animate({
		width: $("body").width(),						
		height:clHeight,
		left: 0,
		top:scrTop
		});
	//frame.find("iframe").width($("body").width()-5);
	//frame.find("iframe").height(clHeight-5);
	frame.find("iframe").animate({
		width: $("body").width(),						
		height:clHeight-25,
		left: 0,
		top:scrTop
		});
	//
	span.html("还原");
			
}
//将窗体从最大化还原到普通
PagePanel.prototype.revertPage=function(id)
{
	//页面内容区div
	var frame=$("#consFramePanel_"+id);	
	//按钮所处的盒子区域
	var span=frame.find(".topBar .pagePanelMaxHand");	
	//改变大小之前，取回原始信息
	var w=span.attr("w");
	var h=span.attr("h");
	var t=span.attr("t");
	var l=span.attr("l");
	span.attr("type","window");	
	frame.attr("class","consFramePanel");		
	frame.animate({
		width: w,						
		height:h,
		left: l,
		top:t
		});
	frame.find("iframe").animate({
		width: w,						
		height:h-20,
		left: l,
		top:t
		});
	//设置参数
	//frame.css("position","");
	//frame.css("z-index","0");
	//
	span.html("全屏");
}
//当完成后，触发事件
PagePanel.prototype.OnComplete=function()
{
	this.isHelp();
	this.isPrint();
}
//是否有帮助文档
PagePanel.prototype.isHelp=function()
{
	//当加载完成后，测试帮助文档是否存在，如果不存在，则用助按钮不显示
	var page=this.Page.toLowerCase();
	var id=this.Id;
	if(page.indexOf("/manage/")>-1)
	{
		page=page.substring(page.indexOf("/Manage/")+1);
		
	}
	if(page.lastIndexOf(".")>-1)
	{
		page=page.substring(0,page.lastIndexOf("."));
	}
	$.ajax({
		  //type: "POST",
		  url: "/manage/help/"+page+".html",
		  dataType: "html",	
		  //加载出错
		  error: function(){
				//alert("没有帮助文档");
			},
			//加载成功！
		  success: function(o) {
				//加载成功，说明帮助文档存在，则显示帮助按钮				
				var help=$("#pagePanelHelpHand_"+id);				
				help.show();
				
			}
	  }); 
}
//是否可以打印
PagePanel.prototype.isPrint=function()
{
	var page=this.Page;
	var id=this.Id;
	if(page.length>=7)
	{
		var tm=page.substring(0,7);
		if(tm.toLowerCase()!="http://")
		{
			$("#pagePanelPrintHand_"+id).show();
		}
	}
	
}
