/**
 * 取得BODY内容
 * @param {Object} html
 */
function _TrimGetBody(html) { 
	var re=/^[\s\S]+<\s*body([^>\S]+[^>\s]+)*\s*>([\s\S]*?)<\s*\/\s*body\s*>[\s\S]+$/ig;
	return html.replace(re,'$2');
}
/**
 * 取FORM内容
 * @param {Object} html
 */
function _TrimGetForm(html) { 
	var re=/^[\s\S]+<\s*form([^>\S]+[^>\s]+)*\s*>([\s\S]*?)<\s*\/\s*form\s*>[\s\S]+$/ig;
	return html.replace(re,'$2');
}
/**
 * 取FORM内容(不包含隐藏的viewstate),用于取得aspx内容
 * @param {Object} html
 */
function _TrimGetDoNet(html){
	var re=/^\s*<div>[\s\S]+?<\/div>([\s\S]*)$/ig;
	return _TrimGetForm(html).replace(re,'$1');
}
/**
 * 去除script标记
 * @param {Object} html
 */
function _TrimScript(html) {
	var re=/<\s*script([^>\S]+[^>\s]+)*\s*>([\s\S]*?)<\s*\/\s*script\s*>/ig;
	return html.replace(re,'');	
}
/**
 * 附加等待进度条
 * @param {Object} DisplayObjOrId 显示的控件对象或Id
 */
function _AttachWaitBar(DisplayObjOrId) {
	var DisplayObj=_GetObjectById(DisplayObjOrId);
	if(!DisplayObj) return;
	
	if(!DisplayObj.WaitBar) {
		bar=document.createElement('DIV');
		bar.className='waitbar';
		DisplayObj.insertAdjacentElement('afterBegin',bar);
		
		DisplayObj.WaitBar=bar;
	}
	
	//设置进度条为该显示控件的中心位置
	var bound=Sys.UI.DomElement.getBounds(DisplayObj);
	DisplayObj.WaitBar.style.position='absolute';
	DisplayObj.WaitBar.style.zIndex=5;
	DisplayObj.WaitBar.style.left=bound.x+Math.floor((bound.width-DisplayObj.WaitBar.offsetWidth)/2);
	DisplayObj.WaitBar.style.top=bound.y+Math.floor((bound.height-DisplayObj.WaitBar.offsetHeight)/2);
	DisplayObj.WaitBar.display='inline-block';
}
/**
 * 分离等待进度条
 * @param {Object} DisplayObjOrId  显示的控件对象或Id
 */
function _DetachWaitBar(DisplayObjOrId) {
	var DisplayObj=_GetObjectById(DisplayObjOrId);
	if(!DisplayObj) return;
	
	if(DisplayObj.WaitBar) DisplayObj.WaitBar.display='none';	
}
/**
 * 请求资源内容（Get方式）
 * @param {Object} Url 请求Url
 * @param {Object} CallBackFun 请求回调函数
 * @param {Object} AssociateObjOrId  关联控件对象或Id
 * @param {Object} DisplayObjOrId 显示控件对象或Id
 * @param {Object} TrimGetMode 去除Html的模式 0 取body内容 1 取form内容 2 取form内容(不包含隐藏的viewstate),用于取得aspx内容
 */
function _RequestUrl(Url,CallBackFun,AssociateObjOrId,DisplayObjOrId,TrimGetMode) {
	if(!Url) return;
	var AssociateObj=_GetObjectById(AssociateObjOrId);
	var DisplayObj=_GetObjectById(DisplayObjOrId);
	
    var wRequest =  new Sys.Net.WebRequest();
    wRequest.set_url(Url);  
    wRequest.set_httpVerb('GET');
    wRequest.set_userContext('request id'+Math.random()+' context');
	if('function'==typeof(CallBackFun)) wRequest.add_completed(CallBackFun);
	
	try {
		AssociateObj.disabled=true; //禁闭
	}
	catch(e) {
		
	}
	
	//设置请求对象的传递属性(关联对象、显示对象、去除Html取值模式)
	wRequest.AssociateObj=AssociateObj;
	wRequest.DisplayObj=DisplayObj;
	wRequest.TrimGetMode=TrimGetMode;
	
	//设置等待进度条
	_AttachWaitBar(DisplayObj);
	
	//开始请求
	wRequest.invoke();  
}
/**
 * 退出登录
 * @param {Object} CallBackFun 回调函数
 */
function _ExitLogin(CallBackFun) {
	_RequestUrl('~/Module/Logout.aspx',CallBackFun);	
}
/**
 * 重新登录回调
 * @param {Object} executor
 * @param {Object} eventArgs
 */
function _ReLogin(executor,eventArgs) {
	var wRequest=executor.get_webRequest(); 
	
    if (executor.get_responseAvailable()) {
		try{
		    top.document.location.href='~/Module/Login.aspx';  
		}
		catch(e) {
		   try{
		      document.location.href='~/Module/Login.aspx';  
		   }
		   catch(ex) {
		   }
		}		
	}
	else {
        if (executor.get_timedOut()) {
			alert('退出超时！');
		}
        else if (executor.get_aborted()) {
			alert('退出失败！');
		}
	}

	_DetachWaitBar(wRequest.DisplayObj); //分离进度条
	
	try {
		wRequest.AssociateObj.disabled=false; //启用	
	}
	catch(e) {
		
	}
}
/**
 * 退出关闭窗口回调
 * @param {Object} executor
 * @param {Object} eventArgs
 */
function _CloseLogin(executor,eventArgs) {
	var wRequest=executor.get_webRequest(); 
	
    if (executor.get_responseAvailable()) {
		try{
		    top.window.close(); 
		}
		catch(e) {
		   try{
		      window.close();
		   }
		   catch(ex) {
		   }
		}		
	}
	else {
        if (executor.get_timedOut()) {
			alert('退出超时！');
		}
        else if (executor.get_aborted()) {
			alert('退出失败！');
		}
	}
	
	_DetachWaitBar(wRequest.DisplayObj); //分离进度条
	
	try {
		wRequest.AssociateObj.disabled=false; //启用	
	}
	catch(e) {
		
	}
}
/**
 * 填充指定显示控件的回调函数
 * 调用示例: _RequestUrl('module/usrinfoview.aspx?item_sel=1',_FixHtmlForDisplay,this,'DisplayId',2)
 * @param {Object} executor
 * @param {Object} eventArgs
 */
function _FixHtmlForDisplay(executor,eventArgs) {
	var wRequest=executor.get_webRequest(); 
	
    if (executor.get_responseAvailable()) {
		var html=executor.get_responseData();
		html=_TrimScript(html);
		switch(wRequest.TrimGetMode) {
			case 1:
				wRequest.DisplayObj.innerHTML=_TrimGetForm(html);
				break;
			case 2:
				wRequest.DisplayObj.innerHTML=_TrimGetDoNet(html);
				break;
			default:
				wRequest.DisplayObj.innerHTML=_TrimGetBody(html);
				break;
		}
	}
	else {
        if (executor.get_timedOut()) {
			wRequest.DisplayObj.innerText='请求超时！';			
		}
        else if (executor.get_aborted()) {
			wRequest.DisplayObj.innerText='请求失败!';
		}
	}

	_DetachWaitBar(wRequest.DisplayObj); //分离进度条

	try {
		wRequest.AssociateObj.disabled=false; //启用	
	}
	catch(e) {
		
	}
}
/**
 * 关联一单元格来显示对应Url的Html
 * @param {Object} PlusOrMinusObjOrId 展开或收缩按纽
 * @param {Object} Url 指定Url
 * @param {Object} TdStyle 关联单元格的样式
 */
function _AttachTdForHtmlDisplay(PlusOrMinusObjOrId,Url,TdStyle) {
	var PlusOrMinusObj=_GetObjectById(PlusOrMinusObjOrId);
	if(!PlusOrMinusObj) return;
	if(!Url) return;

    //取得父Table
    var p_table=_GetContainerOfTag(PlusOrMinusObj,'table');
    //取得父Tr
    var p_tr=_GetContainerOfTag(PlusOrMinusObj,'tr');
    //取得父Td
    var p_td=_GetContainerOfTag(PlusOrMinusObj,'td');

    if(!p_table || !p_tr || !p_td) return;
	
    var max_colSpan=1;
    var r_idx=0;
    for(var i=0;i<p_table.rows.length;i++) {
		if(p_tr==p_table.rows[i]) r_idx=i;
   		//这里取得跨列数时，可进行改进
   		if(max_colSpan<p_table.rows[i].cells.length) max_colSpan=p_table.rows[i].cells.length;
    }
   
    //插入显示行
    new_idx=r_idx+1;
    var is_live=false;
    if(new_idx<p_table.rows.length) {
        //指定新行是否存在
		is_live=(p_table.rows[new_idx].OfTd==p_td);
    }

    if(!is_live) {
    	var myNewRow = p_table.insertRow(new_idx);
      	//设置显示行的对应单元格对象,以区分是否该单元格所在元素的点击
      	myNewRow.OfTd=p_td;
      	var myNewCell=myNewRow.insertCell(0);
      	myNewCell.colSpan=max_colSpan;
      	//复制单元格背景色
      	myNewCell.bgColor=p_td.bgColor;
      	if(TdStyle) myNewCell.style.cssText=TdStyle;
		
		//载入url请求内容
		_RequestUrl(Url,_FixHtmlForDisplay,PlusOrMinusObj,myNewCell,2);
    }

	//存在，则折叠或展开
	try{
		if('plus'==PlusOrMinusObj.className){ //展开
			PlusOrMinusObj.className='minus';
		    p_table.rows[new_idx].style.display='block';
		}
		else { //折叠
		    PlusOrMinusObj.className='plus';
			p_table.rows[new_idx].style.display='none';
		}
	}
	catch(e){
		 	
	}
}
/**
 * 请求服务
 * 示例 _RequestService(jf.web.gc.Service.FrontService.QueryNews,_OnSuccessCallBackForService,_OnFailCallBackForService,'news.xsl',null,'resultXml','00',1,4)
 * @param {Object} ServiceFun 请求服务名
 * @param {Object} OnSuccessCallBackFun 请求成功回调函数
 * @param {Object} OnFailCallBackFun 请求失败回调函数
 * @param {Object} XslUrl	样式文件
 * @param {Object} AssociateObjOrId  关联控件对象或Id
 * @param {Object} DisplayObjOrId 显示控件对象或Id
 * @param {Object} ... 服务调用参数
 */
function _RequestService() {
	var ServiceFun=null;
	if(arguments.length>0) ServiceFun=arguments[0];
	if('function'!=typeof(ServiceFun)) return;
	var OnSuccessCallBackFun=null;
	if(arguments.length>1) OnSuccessCallBackFun=arguments[1];
	if('function'!=typeof(OnSuccessCallBackFun)) OnSuccessCallBackFun=null;
	var OnFailCallBackFun=null;
	if(arguments.length>2) OnFailCallBackFun=arguments[2];
	if('function'!=typeof(OnFailCallBackFun)) OnFailCallBackFun=null;
	var XslUrl=null;
	if(arguments.length>3) XslUrl=arguments[3];
	var AssociateObjOrId=null;
	if(arguments.length>4) AssociateObjOrId=arguments[4];
	var DisplayObjOrId=null;
	if(arguments.length>5) DisplayObjOrId=arguments[5];
	var Params=[];
	if(arguments.length>6) { //服务函数传入的参数
		for(var i=6;i<arguments.length;i++) Params[Params.length]=arguments[i];
	}
	
	var AssociateObj=null;
	switch(typeof(AssociateObjOrId)) {
	    case 'string':
	        AssociateObj=document.getElementById(AssociateObjOrId);
	        break;
	    case 'object':
	        AssociateObj=AssociateObjOrId;
	        break;
	}
	var DisplayObj=null;
	switch(typeof(DisplayObjOrId)) {
	    case 'string':
	        DisplayObj=document.getElementById(DisplayObjOrId);
	        break;
	    case 'object':
	        DisplayObj=DisplayObjOrId;
	        break;
	}
		
	//执行的扩展参数
	Params[Params.length]=OnSuccessCallBackFun;
	Params[Params.length]=OnFailCallBackFun;
	Params[Params.length]={
		'XslUrl':XslUrl,
		'AssociateObj':AssociateObj,
		'DisplayObj':DisplayObj
	};
		
	try {
		ServiceFun.apply(null,Params); //调用服务
	}
	catch(e) {
		
	}
	
	try {
		AssociateObj.disabled=true; //禁闭
	}
	catch(e) {
		
	}
		
	//设置等待进度条
	_AttachWaitBar(DisplayObj);
}
/**
 * 服务请求成功的回调函数
 * @param {Object} XmlData
 * @param {Object} UsrContext
 */
function _OnSuccessCallBackForService(XmlData,UsrContext){
    try {
		var html='';
		
        var XmlObj=new ActiveXObject("Microsoft.XMLDOM"); 
        XmlObj.async=false;
        XmlObj.loadXML(XmlData);
         
		if(UsrContext.XslUrl) {
        	var XslObj=new ActiveXObject("Microsoft.XMLDOM"); 
        	XslObj.async=false;
        	XslObj.load(UsrContext.XslUrl);		
			html=XmlObj.transformNode(XslObj); //风格样式翻译xml
		}
		else html=XmlObj.innerHTML;  
		
		UsrContext.DisplayObj.innerHTML=html;      
    }
    catch(e) {
        alert(e.description);
    }
	
	_DetachWaitBar(UsrContext.DisplayObj); //分离进度条

	try {
		UsrContext.AssociateObj.disabled=false; //启用	
	}
	catch(e) {
		
	}	
}
/**
 * 服务请求失败的回调函数
 * @param {Object} Err
 * @param {Object} UsrContext
 */
function _OnFailCallBackForService(Err,UsrContext) {
	
	_DetachWaitBar(UsrContext.DisplayObj); //分离进度条

	try {
		UsrContext.AssociateObj.disabled=false; //启用	
	}
	catch(e) {
		
	}		
}
/**
 * 用户浏览设置窗口
 */
function _ConfigUsrBrowse(w,h) {
	var w=350;
	var h=100;
	window.showModalDialog('~/Module/PackForConfigureOfBrowser.aspx', '','dialogWidth:'+w+'px;dialogHeight:'+h+'px;dialogLeft:'+Math.floor((screen.width-w)/2)+'px;dialogTop:'+Math.floor((screen.height-h)/2)+'px;resizable:no;scroll:no;');	
}
/**
 * 弹出上传对话框(FileType 主要用在网页编辑器类,一对一则设为空,网页编辑器类中则设置指定文件类型)
 * 示例 _PopupUploadDialog(6,null,'Photo');
 * 示例 _PopupUploadDialog(6,null,Fun,window,param1,param2); window为对话框对象，保留为第一个，可以获取对话框的上传文件名及相关属性
 * @param {Object} UploadType 上传类型  1 HTML编辑器 2 电子书籍库 3 flash动画库 4 音频库 5 视频库 6 图库
 * @param {Object} FileType 文件类型  1 其它 2 图片 3 动画 4 电子书籍 5 音频 6 视频 7 文档 8 压缩  9 报表 10 网页 11 脚本
 * @param {Object} Params... 参数值 第一个为字符串与对象则为指定值控件 为函数则后面参数执行参数(该函数第一个值为该对话框对象的引用)
 */
function _PopupUploadDialog() {
	var w=605;
	var h=100;
	
	var UploadType=6;
	if(arguments[0]) UploadType=arguments[0];
	var FileType=null;
	if(arguments[1]) FileType=arguments[1];
	
	var Params=[];
	for(var i=2;i<arguments.length;i++) {
		if(i==2) {
			var firstType=typeof(arguments[i]);
			if('string'==firstType) {
				Params[Params.length]=document.getElementById(arguments[i]);
				break;
			}
			else if('object'==firstType) {
				Params[Params.length]=arguments[i];
				break;
			}
			else if('function'==firstType) {
				Params[Params.length]=arguments[i];
			}
			else break;
		}
		else Params[Params.length]=arguments[i]; 
	}
	window.showModalDialog('~/WebEditor/UploadFileDoing.aspx?UploadType='+UploadType+(FileType?('&FileType='+FileType):''), Params,'dialogWidth:'+w+'px;dialogHeight:'+h+'px;dialogLeft:'+Math.floor((screen.width-w)/2)+'px;dialogTop:'+Math.floor((screen.height-h)/2)+'px;resizable:yes;scroll:no;');		
}
/**
 * 弹出上传文件列表对话框
 * 示例 _PopupUploadListDialog(6,2,'Photo');
 * 示例 _PopupUploadListDialog(6,2,Fun,window,param1,param2); window为对话框对象，保留为第一个，可以获取对话框的上传文件名及相关属性
 * @param {Object} UploadType 上传类型  1 HTML编辑器 2 电子书籍库 3 flash动画库 4 音频库 5 视频库 6 图库
 * @param {Object} FileType 文件类型 1 其它 2 图片 3 动画 4 电子书籍 5 音频 6 视频 7 文档 8 压缩  9 报表 10 网页 11 脚本
 * @param {Object} Params... 参数值 第一个为字符串与对象则为指定值控件 为函数则后面参数执行参数(该函数第一个值为该对话框对象的引用)
 */
function _PopupUploadListDialog() {
	var w=750;
	var h=500;
	
	var UploadType=6;
	if(arguments[0]) UploadType=arguments[0];
	var FileType=2;
	if(arguments[1]) FileType=arguments[1];
	
	var Params=[];
	for(var i=2;i<arguments.length;i++) {
		if(i==2) {
			var firstType=typeof(arguments[i]);
			if('string'==firstType) {
				Params[Params.length]=document.getElementById(arguments[i]);
				break;
			}
			else if('object'==firstType) {
				Params[Params.length]=arguments[i];
				break;
			}
			else if('function'==firstType) {
				Params[Params.length]=arguments[i];
			}
			else break;
		}
		else Params[Params.length]=arguments[i]; 
	}
	window.showModalDialog('~/WebEditor/UploadFileList.aspx?utype_filter='+UploadType+'&ftype_filter='+FileType, Params,'dialogWidth:'+w+'px;dialogHeight:'+h+'px;dialogLeft:'+Math.floor((screen.width-w)/2)+'px;dialogTop:'+Math.floor((screen.height-h)/2)+'px;resizable:yes;scroll:yes;');		
}
/**
 * Iframe自动适应页面内容的高度，在iframe页中调用
 */
function _IframeAutoSize() { 
	var OnAutoSize=function() {
  		try { 
     		 if(window!=parent) { 
          		//定位需要调整的frame框架（在父级窗口中查找）
          		var a = parent.document.getElementsByTagName("IFRAME"); 
		        for(var i=0; i<a.length; i++) { 
              		if(a[i].contentWindow==window) { 
                  		var h1=0, h2=0; 
                  		a[i].parentNode.style.height = a[i].offsetHeight +"px"; 
                  		if(document.documentElement&&document.documentElement.scrollHeight) { 
                     		 h1=document.documentElement.scrollHeight; 
                  		} 
                  		if(document.body) h2=document.body.scrollHeight; 
                  		var h=Math.max(h1, h2);               //取两者中的较大值
                  		if(document.all) {
                      		h += 4;
                  		} 
                  		if(window.opera) {
                      		h += 1;
                  		} 
                  		//调整框架的大小
                  		a[i].style.height = a[i].parentNode.style.height = h +"px"; 
                    
                  		break;
              		}
          		} 
      		} 
  		} 
  		catch (ex){
    
  		} 		
	}
	
	if(window.attachEvent) { 
    	window.attachEvent('onload', OnAutoSize); 
	} 
	else if(window.addEventListener) { 
    	window.addEventListener('load', OnAutoSize, false); 
	} 
} 
/**
 * 设置与扩展树控件相关的Txt显示控件与Key保存控件
 * @param {Object} LabelObj 标签对象
 * @param {Object} TreeObj 控件树对象
 * @param {Object} TxtControlIdOrObj
 * @param {Object} ValueControlIdOrObj
 */
function _SetAssocateControlOfTreeView(LabelObj,TreeObj,TxtControlIdOrObj,ValueControlIdOrObj) {
	_TreeSetValueToControl(LabelObj,TreeObj,TxtControlIdOrObj,false,true,'/');
	_TreeSetValueToControl(LabelObj,TreeObj,ValueControlIdOrObj,true,false,'/');
}
//取控件位置
function _GetPosition(element) {
   var clientRects = element.getClientRects();
   if (!clientRects || !clientRects.length) {
      return [0,0];
   }

   var w = element.ownerDocument.parentWindow;
   var offsetL = w.screenLeft - top.screenLeft - top.document.documentElement.scrollLeft + 2;
   var offsetT = w.screenTop - top.screenTop - top.document.documentElement.scrollTop + 2;

   var f = w.frameElement || null;
   if (f) {
      var fstyle = f.currentStyle;
      offsetL += (f.frameBorder || 1) * 2 +
                    (parseInt(fstyle.paddingLeft) || 0) +
                    (parseInt(fstyle.borderLeftWidth) || 0) -
                    element.ownerDocument.documentElement.scrollLeft;
      offsetT += (f.frameBorder || 1) * 2 +
                    (parseInt(fstyle.paddingTop) || 0) +
                    (parseInt(fstyle.borderTopWidth) || 0) -
                    element.ownerDocument.documentElement.scrollTop;
   }

   var clientRect = clientRects[0];

   return [clientRect.left - offsetL,clientRect.top - offsetT];
}
/**
 * 弹出色彩选择面板
 * 示例 _PopupColorSelectPanel();
 * 示例 _PopupColorSelectPanel(this,'tColor'); 
 * @param {Object} AssociateObj 关联对象
 * @param {Object} Params... 参数值 第一个为字符串与对象则为指定值控件 为函数则后面参数执行参数(该函数第一个值为该对话框对象的引用)
 */
function _PopupColorSelectPanel() {
	var AssociateObj=null;
	if(arguments[0]) {
		var _type=typeof(arguments[0]);
		if('string'==_type) {
			AssociateObj=document.getElementById(arguments[0]);
		}
		else if('object'==_type) {
			AssociateObj=arguments[0];
		}
	}
	if(!AssociateObj) AssociateObj=document;
	
	var Params=[];
	for(var i=1;i<arguments.length;i++) {
		if(i==1) {
			var firstType=typeof(arguments[i]);
			if('string'==firstType) {
				Params[Params.length]=document.getElementById(arguments[i]);
				break;
			}
			else if('object'==firstType) {
				Params[Params.length]=arguments[i];
				break;
			}
			else if('function'==firstType) {
				Params[Params.length]=arguments[i];
			}
			else break;
		}
		else Params[Params.length]=arguments[i]; 
	}

	if(!AssociateObj.SelectPanel) {
	    AssociateObj.SelectPanel=document.createElement("IFRAME");
		AssociateObj.SelectPanel.Params=Params;
		AssociateObj.SelectPanel.style.display='none';
		AssociateObj.SelectPanel.style.position='absolute';
		AssociateObj.SelectPanel.style.pixelWidth=400;
		AssociateObj.SelectPanel.style.pixelHeight=270;
		AssociateObj.SelectPanel.frameBorder=0;
		AssociateObj.SelectPanel.style.filter='progid:DXImageTransform.Microsoft.Alpha(opacity=0)'; //淡出显示
		document.body.appendChild(AssociateObj.SelectPanel);
		AssociateObj.SelectPanel.src="~/Utility/SelectColor.aspx";
									
		var panel=AssociateObj.SelectPanel;
		panel.DoPlay=function() {
			if(panel.filters[0].Opacity>100) panel.Stop();

			panel.filters[0].Opacity+=10;
		}
		panel.Play=function() {
			panel.filters[0].Opacity=0;

			panel.timer = setInterval(panel.DoPlay,50);
		}
		panel.Stop=function() {
			panel.filters[0].Opacity=100;
			clearInterval(panel.timer);
		}
	}

	AssociateObj.SelectPanel.style.pixelLeft=0;
	AssociateObj.SelectPanel.style.pixelTop=0;
	var pos=_GetPosition(AssociateObj);
    if(window!=parent) { 
    	//定位需要调整的frame框架（在父级窗口中查找）
    	var a = parent.document.getElementsByTagName("IFRAME"); 
		for(var i=0; i<a.length; i++) { 
        	if(a[i].contentWindow==window) { 
			    var pos1=_GetPosition(a[i]);
				AssociateObj.SelectPanel.style.pixelLeft+=pos1[0];
				AssociateObj.SelectPanel.style.pixelTop=pos1[1];
				break;
        	}
		}
    }
	AssociateObj.SelectPanel.style.pixelLeft+=pos[0];
	//AssociateObj.SelectPanel.style.pixelLeft-=(AssociateObj.SelectPanel.style.pixelWidth+2);
	AssociateObj.SelectPanel.style.pixelTop+=pos[1];
	AssociateObj.SelectPanel.style.pixelTop+=(AssociateObj.clientHeight+2);
	AssociateObj.SelectPanel.style.display='';
	AssociateObj.SelectPanel.Play();
}
/**
 * 弹出系统模块组模板选择面板
 * 示例 _PopupModuleGroupTemplateSelectPanel();
 * 示例 _PopupModuleGroupTemplateSelectPanel(this,document.getElementsByName('tvModule$_CheckBox'),true); 
 * 第三个参数 true为导入移除，否则为导入添加
 * @param {Object} AssociateObj 关联对象
 * @param {Object} Params... 参数值 第一个为字符串与对象则为指定值控件 为函数则后面参数执行参数(该函数第一个值为该对话框对象的引用)
 */
function _PopupModuleGroupTemplateSelectPanel() {
	var AssociateObj=null;
	if(arguments[0]) {
		var _type=typeof(arguments[0]);
		if('string'==_type) {
			AssociateObj=document.getElementById(arguments[0]);
		}
		else if('object'==_type) {
			AssociateObj=arguments[0];
		}
	}
	if(!AssociateObj) AssociateObj=document;
	
	var Params=[];
	for(var i=1;i<arguments.length;i++) {
		if(i==1) {
			var firstType=typeof(arguments[i]);
			if('string'==firstType) {
				Params[Params.length]=document.getElementById(arguments[i]);
				//break;
			}
			else if('object'==firstType) {
				Params[Params.length]=arguments[i];
				//break;
			}
			else if('function'==firstType) {
				Params[Params.length]=arguments[i];
			}
			else break;
		}
		else Params[Params.length]=arguments[i]; 
	}

	if(!AssociateObj.SelectPanel) {
	    AssociateObj.SelectPanel=document.createElement("IFRAME");
		AssociateObj.SelectPanel.Params=Params;
		AssociateObj.SelectPanel.style.display='none';
		AssociateObj.SelectPanel.style.position='absolute';
		AssociateObj.SelectPanel.style.pixelWidth=300;
		AssociateObj.SelectPanel.style.pixelHeight=32;
		AssociateObj.SelectPanel.frameBorder=0;
		AssociateObj.SelectPanel.style.filter='progid:DXImageTransform.Microsoft.Alpha(opacity=0)'; //淡出显示
		document.body.appendChild(AssociateObj.SelectPanel);
		AssociateObj.SelectPanel.src="~/Module/ModuleGroupImport.aspx";
									
		var panel=AssociateObj.SelectPanel;
		panel.DoPlay=function() {
			if(panel.filters[0].Opacity>100) panel.Stop();

			panel.filters[0].Opacity+=10;
		}
		panel.Play=function() {
			panel.filters[0].Opacity=0;

			panel.timer = setInterval(panel.DoPlay,50);
		}
		panel.Stop=function() {
			panel.filters[0].Opacity=100;
			clearInterval(panel.timer);
		}
	}

	AssociateObj.SelectPanel.style.pixelLeft=0;
	AssociateObj.SelectPanel.style.pixelTop=0;
	var pos=_GetPosition(AssociateObj);
    if(window!=parent) { 
    	//定位需要调整的frame框架（在父级窗口中查找）
    	var a = parent.document.getElementsByTagName("IFRAME"); 
		for(var i=0; i<a.length; i++) { 
        	if(a[i].contentWindow==window) { 
			    var pos1=_GetPosition(a[i]);
				AssociateObj.SelectPanel.style.pixelLeft+=pos1[0];
				AssociateObj.SelectPanel.style.pixelTop=pos1[1];
				break;
        	}
		}
    }
	AssociateObj.SelectPanel.style.pixelLeft+=pos[0];
	//AssociateObj.SelectPanel.style.pixelLeft-=(AssociateObj.SelectPanel.style.pixelWidth+2);
	AssociateObj.SelectPanel.style.pixelTop+=pos[1];
	//AssociateObj.SelectPanel.style.pixelTop+=(AssociateObj.clientHeight+2);
	AssociateObj.SelectPanel.style.pixelTop-=(AssociateObj.clientHeight+4);
	AssociateObj.SelectPanel.style.display='';
	AssociateObj.SelectPanel.Play();
}
