/**
 * 这是平台的核心js代码
 */
var pf = {
	agentPageSize : 10,//坐席操作界面的PageSize默认为10
	operationPageSize : 30, //运营管理部分的PageSize默认为30
   
	/**
	 * 从服务器端请求页面信息，先展示到指定的DIV中，然后对按钮进行权限过滤，最后再展示成可以操作的界面。
	 * wb
	 * 用于：功能内部页面跳转。
	 * 
	 * @pageUrl 访问页面的URL
	 * @showElementId 将内容展示的DIV的ID
	 */
	loadPage : function(/* String */pageUrl, /* String */showElementId) { 
		this._pageLoad(pageUrl, showElementId, true);
	},
	/**
	 *Ajax请求，只有请求，返回的内容请用回调函数处理
	 * @pageUrl			访问页面的URL
	 * @callFunction	要回调的函数名称
	 * @paramArray		要回调的函数参数
	 */
	ajaxGetRequest:function(pageUrl,callFunction){
		
		new Ajax.Request(pageUrl, pf.ajaxRequestOptions({
			method : 'get',
			requestHeaders:["Cache-Control","no-cache"],
			onSuccess : function(transport) {
				
				if(callFunction!=undefined && typeof(callFunction)=="function"){
					callFunction(transport);
				}
			}
		}));
	},
	/**
	 *从服务器端请求页面信息，先展示到指定的DIV中，然后对按钮进行权限过滤，最后再展示成可以操作的界面。并可以在执行完插入DIV以后，回调一个函数，用以执行其他操作。
	 *用于：TAB功能内部页面跳转。
	 * @pageUrl			访问页面的URL
	 * @showElementId	将内容展示的DIV的ID
	 * @callFunction	要回调的函数名称
	 * @paramArray		要回调的函数参数
	 */
	loadPageCallBack : function(pageUrl, showElementId, callFunction,paramArray){
		this._pageLoadCallBack(pageUrl, showElementId, true, callFunction,paramArray);
	},
	/**
	 * 从服务器端请求页面信息，先展示到指定iframe的DIV中，然后对按钮进行权限过滤，最后再展示成可以操作的界面。
	 * 
	 * 用于：当前页面内部的内容刷新，例如：翻页、排序等在本页内的操作。
	 * 
	 * @pageUrl 访问页面的URL
	 * @showElementId 将内容展示的DIV的ID
	 */
	loadContentFrame : function(/* String */pageUrl, /* String */showElementId,/* String */framename) {
		this._pageLoadFrame(pageUrl, showElementId,framename, false);
	},
	
	/**
	 * 从服务器端请求页面信息，并直接展示到指定的DIV中。
	 * 
	 * 用于：当前页面内部的内容刷新，例如：翻页、排序等在本页内的操作。
	 * 
	 * @pageUrl 访问页面的URL
	 * @showElementId 将内容展示的DIV的ID
	 */
	loadContent : function(/* String */pageUrl, /* String */showElementId) {
		this._pageLoad(pageUrl, showElementId, false);
	},
	
	
	
	/**
	 * 页面的加载，首先将获得HTML内容，然后将控件隐藏，再加工控件是否可见，最后让element显示
	 */
	_pageLoad : function(/* String */pageUrl, /* String */showElementId, /*boolean*/ accessControl) {
		//第一步：弹出一个操作提示的gif动画，控制用户不能再操作界面
		//TODO
		
		showScreen(showElementId);
		new Ajax.Request(pageUrl, pf.ajaxRequestOptions({
		
			method : 'get',
			requestHeaders: ['Cache-Control','no-cache','If-Modified-Since','0'],
			onSuccess : function(transport) {
				
				var showElement = $(showElementId);
				
				//第二步：将内容写入到Element中
				showElement.innerHTML = transport.responseText;
				
				//第三步：如果需要权限控制，那么进行按钮权限控制
				if(accessControl) {
					pf.accessControl(showElement);
				}
				//第四步：删除提示框，并使得页面可操作。
				//TODO
				
			},
			 onFailure:function(transport){
               $(showElementId).innerHTML="网络超时";
              
            }
			
			
			
		}));
	},
	/**
	 * 页面的加载，首先将获得HTML内容，然后将控件隐藏，再加工控件是否可见，最后让element显示,再执行回调函数
	 */
	_pageLoadCallBack : function(/* String */pageUrl, /* String */showElementId, /*boolean*/ accessControl,/*Function*/ callFunction,/*Array*/paramArray) {
		//第一步：弹出一个操作提示的gif动画，控制用户不能再操作界面
		//TODO
		
		
		new Ajax.Request(pageUrl, pf.ajaxRequestOptions({
			method : 'get',
			requestHeaders: ['Cache-Control','no-cache','If-Modified-Since','0'],
			onSuccess : function(transport) {
				
				var showElement = $(showElementId);
				//第二步：将内容写入到Element中
				
				showElement.innerHTML = transport.responseText;
				
				if(callFunction!=undefined && typeof(callFunction)=="function"){
					if(paramArray!=undefined && paramArray!=null){
						callFunction(paramArray);
					}else{
						callFunction();
					}
				}
				//第三步：如果需要权限控制，那么进行按钮权限控制
				if(accessControl) {
					pf.accessControl(showElement);
				}
				//第四步：删除提示框，并使得页面可操作。
				//TODO
				
			},
			 onFailure:function(transport){
               alert("网络超时");
            
            }
		}));
	},
	/**
	 * 页面的加载，首先将获得HTML内容，然后将控件隐藏，再加工控件是否可见，最后让element显示在指定frame
	 */
	_pageLoadFrame : function(/* String */pageUrl, /* String */showElementId, /* String */framename,/*boolean*/ accessControl) {
		//第一步：弹出一个操作提示的gif动画，控制用户不能再操作界面
		//TODO
			
		new Ajax.Request(pageUrl, pf.ajaxRequestOptions({
			method : 'get',
			requestHeaders: ['Cache-Control','no-cache','If-Modified-Since','0'],
			onSuccess : function(transport) {
				
				var showElement = window.parent.frames[framename].$(showElementId);
				//第二步：将内容写入到Element中
				showElement.innerHTML = transport.responseText;
				//第三步：如果需要权限控制，那么进行按钮权限控制
				if(accessControl) {
					pf.accessControl(showElement);
				}
				//第四步：删除提示框，并使得页面可操作。
				//TODO
				
			},
			 onFailure:function(transport){
               alert("网络超时");
              
            }
		}));
		
	},
	
	/**
	 * 通过名称得出cookie
	 */
	getCookieByName : function(name) {
		var name = escape(name);
		var allcookies = document.cookie;
		name += "=";
	    var pos = allcookies.indexOf(name);
	    if (pos != -1){                                                 
	        var start = pos + name.length;                    
	        var end = allcookies.indexOf(";",start);            
	        if (end == -1) end = allcookies.length;           
	        var value = allcookies.substring(start,end);     
	        return unescape(value);                               
	        }   
	    else return ""; 
	},
	
	/**
	 * 页面的提交，首先将获得HTML内容，
	 */
	ajaxSubmit : function(/* String */pageUrl, /* String */params, /* function */func) {
		//第一步：弹出一个操作提示的gif动画，控制用户不能再操作界面
		//TODO
		
		
	    new Ajax.Request(pageUrl, pf.ajaxRequestOptions({
			method : 'post',
			requestHeaders: ['Cache-Control','no-cache','If-Modified-Since','0'],
			parameters : params,
			
			onSuccess : function(transport) {
			
				
				if(func){
					func(transport);
				}
			},
			 onFailure:function(transport){
               alert("网络超时");
              
            }
		}));
	},

	
	/**
	* 权限处理
	* element 传递的对象
	*/
	accessControl : function(accessElement, code) {
		//得到所有class为access-control-btn的控件
		var acElements = Selector.findChildElements(accessElement, ['input.access-control-btn']);
		//var code = pf.getCookieByName('privilegeCode');
		//var code = pf.getPrivilegeFrameElement().privilege.getCookieByName('privilegeCode');
		var privilegeArray = top.index.accessHash.get(code);
		for(var i=0; i<acElements.length; i++) {
			var e = acElements[i];
			e.disabled = 'none';	
		}
		//TODO 判断是否有权限，如果有权限就不处理
		if(privilegeArray != 'undefined' && privilegeArray != null){
			for(var j=0; j<privilegeArray.length; j++){
				if($(privilegeArray[j])!=''&& $(privilegeArray[j])!='undefined' && $(privilegeArray[j])!=null){
					$(privilegeArray[j]).disabled = "";
					}
			}
		}
	},
	
	/**
	 * 解析Javascript字符串，此封装主要是添加了对异常的处理。
	 */
	eval : function(/*String*/ jsString) {
		try{
			eval(jsString);
			return TrimPath_Template_TEMP;
		} catch (e) {
			alert("eval(): Occured error is '" + e.name + ":" + e.message + "'. The jsString is:" + jsString);
			throw e;
		}
	},
	
	/**
	 * form页面提交跳转
	 * 
	 * @formId form页面的ID
	 * @showElementId 将内容展示的DIV的ID
	 */
	submitForm : function(/*String*/formId, options) {
		
		$(formId).request(this.ajaxRequestOptions(options));
	},
	
	/**
	 * 从服务器端请求页面信息，先展示到指定的DIV中
	 * 
	 * 用于：form页面提交跳转。
	 * 
	 * @formId form页面的ID
	 * @showElementId 将内容展示的DIV的ID
	 * @CallBackFunction 回调方法
	 * @CallBackParameters 回调函数调用的参数，Object类型
	 */
	simpleSubmitForm : function(formId, showElementId, CallBackFunction,CallBackParameters) {
		showScreen(showElementId)
		pf.submitForm(formId, {
			onSuccess: function(transport) {
		
				
				var elementDiv = $(showElementId);
		   		elementDiv.innerHTML = transport.responseText;
		   		if(CallBackFunction!=undefined && typeof(CallBackFunction)=="function"){
		   			if(CallBackParameters!=undefined && CallBackParameters!=null){
		   				CallBackFunction(CallBackParameters);
		   			}else{
		   				CallBackFunction();
		   			}
		   		}
		   		
			},
			 onFailure:function(transport){
               alert("网络超时");
             
            }
		}
		
		);
	},
	
	/**
	 * 从服务器端请求页面信息，先展示到指定的DIV中
	 * 
	 * 用于：form页面提交跳转。
	 * 
	 * @formId form页面的ID
	 * @showElementId 将内容展示的DIV的ID
	 * @CallBackFunction 回调方法
	 * @param 回调函数使用的参数
	 */
	simpleSubmitFormByParam : function(formId, showElementId, CallBackFunction, param) {
		showScreen(showElementId)
		pf.submitForm(formId, {
			onSuccess: function(transport) {
				
				var elementDiv = $(showElementId);
		   		elementDiv.innerHTML = transport.responseText;
		   		if(CallBackFunction!=undefined && typeof(CallBackFunction)=="function"){
		   			if(param!=undefined && param!=null){
		   				CallBackFunction(param);
		   			}else{
		   				CallBackFunction();
		   			}
		   		}
		   		
			},
			 onFailure:function(transport){
               alert("网络超时");
              
            }
		});
	},
	
	/**
 	 * 根据页签id关闭该页签
 	 *@ id 页签id
 	 *@ isListView true 是上面页签，false是下面页签
 	 */
	removeTag : function(id, isListView) {
		pf.getMainFrmElement().pf.removeTag(id, isListView);
	},
	
	/**
	 *从上面的iframe到下面的iframe
	 *@id 自己业务名（英语）为id， 
	 *@titleName 页签显示的名称
	 *@urlName action url
	 */
	listToDeitail : function(id, titleName, urlName){
		pf.getMainFrmElement().pf.showTab(false, id, titleName, urlName, 'tabsDetail');
	},
	
	/**
	 *在上面打开页签
	 *@id 自己业务名（英语）为id， 
	 *@titleName 页签显示的名称
	 *@urlName action url
	 */
	listReq : function(id, titleName, urlName){
		pf.getMainFrmElement().pf.showTab(true, id, titleName, urlName, 'tabsList');
	},
	
	/**
	 *从上面的iframe到下面的iframe
	 *@id 自己业务名（英语）为id， 
	 *@titleName 页签显示的名称
	 *@urlName action url
	 *@closeable 关闭与否
	 */
	listToDeitailClose : function(id, titleName, urlName, closeable){
		pf.getMainFrmElement().pf.showTab(false, id, titleName, urlName, 'tabsDetail', closeable);
	},
	
	/**
	 * 从框架集中得到index框架元素
	 */
	getIndexFrameElement : function(){
		return top.index;
	},
	
	/**
	 * 从框架集中得到iIndexFrame框架元素
	 */
	getIndexFrameFrmElement : function(){
		return top.index.indexFrame;
	},
	
	/**
	 * 从框架集中得到main框架元素
	 */
	getMainFrmElement : function(){
		return top.index.indexFrame.main;
	},
	
	/**
	 * 从框架集中得到main框架元素
	 */
	getLeftFrmElement : function(){
		return top.index.indexFrame.left;
	},
	
	/**
 	 * 关闭所有新打开页签
  	 */
  	removeTabPanel : function(){
		top.index.indexFrame.main.pf.remove();
	},
	
	/**
	 * 从服务器端请求页面信息，先展示到指定的DIV中
	 * 
	 * 用于：form页面增，删，改。
	 * 
	 * @formId form页面的ID
	 */
	simpleOperateForm : function(formId, func) {
		
		pf.submitForm(formId, {
			onSuccess: function(transport) {
			
				
				func(transport);
			},
			 onFailure:function(transport){
               alert("网络超时");
              
            }
		}
		);
	},
	
	/**
	 * 根据动态生成的js文件生成select
	 * @selectId select的id
	 * @obj js对象 
	 * @code 标识取=前面
	 */
	selectOption : function(selectId,obj,code) {
	    var selectObj = $(selectId);
	    var i = 0;
	    try {
	    	selectObj.options[0] = new Option('请选择', '');
	    } catch (e) {
	    	//alert('有下拉框[' + selectId + ']没有找到');
	    }
		for(var e in obj){
			var objValue = obj[e];
			if (objValue.indexOf('=') >= 0) {
				objValue = objValue.substring(objValue.indexOf('=')+1);
			}
			
			if(code==undefined) {
			   selectObj.options[i+1] = new Option(objValue, e);	
			} else {
			    selectObj.options[i+1] = new Option(objValue, obj[e].substring(0,obj[e].indexOf('=')));	
			}
			i++;
		}
	},
	
	/**
	 * 按照value选中select
	 * @objSelect select的id
	 * @objValue 值 
	 */
	selectItemByValue : function(objSelect,objValue)
	{  
	     //判断是否存在
	     var isExit = false;
	     for(var i=0;i<$(objSelect).options.length;i++)
	     {
	         if($(objSelect).options[i].value == objValue)
	         {
	             $(objSelect).options[i].selected = true;
	             isExit = true;
	             return i;
	            
	         }
	     }
	},
	/**
	*checkbox全选
	* @param checkboxName  checkbox的名字
	*/
	selectAll : function(checkboxName){
		$A(document.getElementsByTagName('input')).each(selectCheckBox); 
			function  selectCheckBox(element){
				if(element.type == "checkbox"&&element.name == checkboxName){
					element.checked = "checked";
				}
			}
	},
	/**
	*checkbox全不选
	* @param checkboxName  checkbox的名字
	*/
	notSelectAll : function(checkboxName){
		$A(document.getElementsByTagName('input')).each(selectCheckBox); 
			function  selectCheckBox(element){
				if(element.type == "checkbox"&&element.name == checkboxName){
					element.checked = "";
				}
			}
	},
	
	
	/**
	*获取checkbox 选中的值的list
	*
	*@param objNam  checkbox name
	*/
	getCheckCheckboxList : function (objNam){
			var checkboxList = new Array();
			var obj = document.getElementsByName(objNam);
			var objLen = obj.length;    
			var objN = 0;   
			var nameValue = '';
			var value = '';
			var i;		
			for (i = 0;i< objLen;i++){
			
			  if (obj [i].checked == true) {
			  	checkboxList[objN] = obj [i].value;
			   	objN++;		 
			  }
			 }
			
			 return checkboxList;	 
	},
	/**
	 * 封装Prototype的Ajax.Request，添加统一的超时或没有权限的处理
	 */
	ajaxRequestOptions : function(options) {		
		if(!options['on401']) {//如果不包含on401，那么就添加一个on401函数
			options.on401 = pf._401Error;
		}
		if(!options['on407']) {
			options.on407 = pf._407Error;
		}
		if(!options['on500']) {
			options.on500 = pf._500Error;
		}
		if(!options['on404']) {
			options.on404 = pf._404Error;
		}
		if(!options['on409']) {
			options.on409 = pf._409Error;
		}
		return options;
	},
	
	/**
	 * private
	 * 
	 * 401 - 访问被拒绝，即访问了未授权的资源
	 * 
	 * 401错误的默认处理函数
	 */
	_401Error : function(transport) {
		
		alert(errorMessage._401);
	},
	
	/**
	 * private
	 * 
	 * 407 - 要求进行代理身份验证，借用407表示用户未登录或超时，需要登录系统
	 * 
	 * 407错误的默认处理函数
	 */
	_407Error : function(transport) {
		
		alert(errorMessage._407);
		window.top.location = "index.xhtml"//"page/login.jsp";
	},
	
	/**
	 * private
	 * 
	 * 对500错误的统一处理
	 */
	_500Error : function(transport) {
		
		alert(errorMessage._500);
	},
	
	/**
	 * private
	 * 
	 * 对404错误的处理
	 */
	_404Error : function(transport) {
		
		alert(errorMessage._404);
	},
	
	/**
	 * private
	 * 
	 * 409 - 修改版本发生冲突
	 * 
	 * 409错误的默认处理函数
	 */
	_409Error : function(transport) {
		
		alert(errorMessage._409);
	},
	
	/**
	* 检查输入的分页数合法性
	*/
	checkPageNum : function(i,maxNum)
	{
		var pageNum = $('pageNum').value;
		if(isNaN(pageNum) || (pageNum <= 0))
		{
			alert(errorMessage._num);
			$('pageNum').focus();
		}
		else if(pageNum > maxNum)
		{
			alert(errorMessage._maxNum);
			$('pageNum').focus();
		}
		else
			paging(i);
	},
	
	/**
	 * 去出字符串两端的空格。
	 */
	trim : function (str) {
		for(var i = 0;i < str.length && str.charAt(i) == " "; i++);
		for(var j = str.length; j > 0 && str.charAt(j-1) == " "; j--);
		if (i > j) 
		return "";  
  	return str.substring(i,j);  
	},
	
	moveLeftOrRight : function(fromObj,toObj) 
	{
	    var fromObjOptions=fromObj.options;
	    for(var i=0;i<fromObjOptions.length;i++){
	        if(fromObjOptions[i].selected){
	            toObj.appendChild(fromObjOptions[i]);
	            i--;
	        }
	    }
	   // this.resetAutoWidth(fromObj);
	   // this.resetAutoWidth(toObj);
	} ,
	
	moveLeftOrRightAll : function(fromObj,toObj) 
	{
	    var fromObjOptions=fromObj.options;
	    if(fromObjOptions.length>1000) {
	        //if(!confirm("Are you sure to move options?")) return false;
	    }
	    for(var i=0;i<fromObjOptions.length;i++){
	        fromObjOptions[0].selected=true;
	        toObj.appendChild(fromObjOptions[i]);
	        i--;
	    }
	   // this.resetAutoWidth(fromObj);
	   // this.resetAutoWidth(toObj);
	} ,
	
	moveUp : function(selectObj) 
	{ 
	    var theObjOptions=selectObj.options;
	    for(var i=1;i<theObjOptions.length;i++) {
	        if( theObjOptions[i].selected && !theObjOptions[i-1].selected ) {
	            this.swapOptionProperties(theObjOptions[i],theObjOptions[i-1]);
	        }
	    }
	} ,
	
	moveDown : function(selectObj) 
	{ 
	    var theObjOptions=selectObj.options;
	    for(var i=theObjOptions.length-2;i>-1;i--) {
	        if( theObjOptions[i].selected && !theObjOptions[i+1].selected ) {
	            this.swapOptionProperties(theObjOptions[i],theObjOptions[i+1]);
	        }
	    }
	}, 
	
	moveToTop : function(selectObj){
	    var theObjOptions=selectObj.options;
	    var oOption=null;
	    for(var i=0;i<theObjOptions.length;i++) {
	        if( theObjOptions[i].selected && oOption) {
	            selectObj.insertBefore(theObjOptions[i],oOption);
	        }
	        else if(!oOption && !theObjOptions[i].selected) {
	            oOption=theObjOptions[i];
	        }
	    }
	},
	
	moveToBottom : function(selectObj){
	    var theObjOptions=selectObj.options;
	    var oOption=null;
	    for(var i=theObjOptions.length-1;i>-1;i--) {
	        if( theObjOptions[i].selected ) {
	            if(oOption) {
	                oOption=selectObj.insertBefore(theObjOptions[i],oOption);
	            }
	            else oOption=selectObj.appendChild(theObjOptions[i]);
	        }
	    }
	
	},
	
	selectAllOption : function(selectObj){
	    var theObjOptions=selectObj.options;
	    for(var i=0;i<theObjOptions.length;i++){
	        theObjOptions[0].selected=true;
	    }
	},
	
	/* private function */
	swapOptionProperties : function(option1,option2){
	    //option1.swapNode(option2);
	    var tempStr=option1.value;
	    option1.value=option2.value;
	    option2.value=tempStr;
	    tempStr=option1.text;
	    option1.text=option2.text;
	    option2.text=tempStr;
	    tempStr=option1.selected;
	    option1.selected=option2.selected;
	    option2.selected=tempStr;
	},
	
	resetAutoWidth : function(obj){
	    var tempWidth=obj.style.getExpression("width");
	    if(tempWidth!=null) {
	        obj.style.width="auto";
	        obj.style.setExpression("width",tempWidth);
	        obj.style.width=null;
	    }
	},/**
	*插入日期
	*@param type '0'前面的时间，'1'后面的时间
	*@param id 和它关联的时间id 
	*/
	date : function(type,id){
		if(type ==0){
			WdatePicker({maxDate:'#F{$dp.$D(\''+id+'\')}',dateFmt:'yyyy-MM-dd'})
		}else if(type == 1){
			WdatePicker({minDate:'#F{$dp.$D(\'' +id+ '\')}',dateFmt:'yyyy-MM-dd'})
		}else{
			WdatePicker({dateFmt:'yyyy-MM-dd'});
		}
	},
	/**
	*插入时间
	*@param type '0'前面的时间，'1'后面的时间,2,大于前面的id，小于后面的id
	*@param id 和它关联的时间id
	*/
	
	time : function(type,id,lid){
		
		if(type ==0){
			WdatePicker({maxDate:'#F{$dp.$D(\''+id+'\')}',dateFmt:'yyyy-MM-dd HH:mm:ss'})
		}else if(type == 1){
			WdatePicker({minDate:'#F{$dp.$D(\'' +id+ '\')}',dateFmt:'yyyy-MM-dd HH:mm:ss'})
		}else if(type == 2){
			WdatePicker({minDate:'#F{$dp.$D(\'' +id+ '\')}',maxDate:'#F{$dp.$D(\'' +lid+ '\')}',dateFmt:'yyyy-MM-dd HH:mm:ss'})
		}else{
			WdatePicker({dateFmt:'yyyy-MM-dd HH:mm:ss'});
		}
		
	},
	/**
	*插入时间大于今天
	*@param type '0'前面的时间，'1'后面的时间
	*@param id 和它关联的时间id
	*/	
	timeLatterNow : function(type,id){
		
		if(type ==0){
			WdatePicker({minDate:'%y-%M-%d %H:%m:%s', maxDate:'#F{$dp.$D(\''+id+'\')}',dateFmt:'yyyy-MM-dd HH:mm:ss'})
		}else if(type == 1){
			WdatePicker({minDate:'#F{$dp.$D(\'' +id+ '\')}',dateFmt:'yyyy-MM-dd HH:mm:ss'})
		}else{
			WdatePicker({minDate:'%y-%M-%d %H:%m:%s',dateFmt:'yyyy-MM-dd HH:mm:ss'});
		}
		
	},
	/**
	*插入时间小于或等于今天
	*@param type '0'前面的时间，'1'后面的时间
	*@param id 和它关联的时间id
	*/
	timebeforeNow : function(type,id){
		WdatePicker({ maxDate:'%y-%M-%d %H:%m:%s',dateFmt:'yyyy-MM-dd HH:mm:ss'});
	},
	
	/**
	*插入时间大于或等于今天
	*@param type '0'前面的时间，'1'后面的时间
	*@param id 和它关联的时间id
	*/	
	dateLatterNow : function(type,id){
		if(type ==0){
			WdatePicker({minDate:'%y-%M-%d', maxDate:'#F{$dp.$D(\''+id+'\')}',dateFmt:'yyyy-MM-dd'});
		}else if(type == 1){
			WdatePicker({minDate:'#F{$dp.$D(\'' +id+ '\')}',dateFmt:'yyyy-MM-dd'});
		}else{
			WdatePicker({minDate:'%y-%M-%d}',dateFmt:'yyyy-MM-dd'});
		}
		
	},
	/**
	*插入时间小于或等于今天
	*@param type '0'前面的时间，'1'后面的时间
	*@param id 和它关联的时间id
	*/
	datebeforeNow : function(type,id){
		WdatePicker({ maxDate:'%y-%M-%d',dateFmt:'yyyy-MM-dd'});
	},
	
	/**
	*只显示时间，没有日期
	*@param type '0'前面的时间，'1'后面的时间
	*@param id 和它关联的时间id
	*/
	timeNotDate : function(type,id){
		if(type ==0){
			WdatePicker({maxDate:'#F{$dp.$D(\''+id+'\')}',dateFmt:'HH:mm:ss'})
		}else if(type == 1){
			WdatePicker({minDate:'#F{$dp.$D(\'' +id+ '\')}',dateFmt:'HH:mm:ss'})
		}else{
			WdatePicker({dateFmt:'HH:mm:ss'});
		}
		
	},
	/************************************* 模板吻合度检查 start *************************************/
	/**
	 *返回小于当前日期的格式
	 */
	timeGtToday:function(){
		var diff = 1;
		if($('predictstart').value!=null && $('predictstart').value!="" && $('predictend').value!=null && $('predictend').value!=""){
			diff = pf.DateDiff($('predictstart').value,$('predictend').value);
			diff = diff+1;
		}
	 	WdatePicker({maxDate:'%y-%M-#{%d-'+diff+'}',onpicked:pf.toEndDate});
	 },
	//启始时间
	dateInitStart:function(idstr){
		WdatePicker({minDate:'%y-%M-%d',maxDate:'#F{$dp.$D(\''+idstr+'\')}',onpicked:pf.dateValue});
	},
	//结束时间，必须比启始时间晚一天以上
	dateInitEnd:function(idstr){
		WdatePicker({minDate:'#F{$dp.$D(\''+idstr+'\',{d:+1})||\'%y-%M-#{%d+1}\'}',onpicked:pf.dateValue});
	},
	dateValue:function(){
		if($("forecaststart").value!=null && $("forecaststart").value!=""){
			var diff = 1;
			if($('predictstart').value!=null && $('predictstart').value!="" && $('predictend').value!=null && $('predictend').value!=""){
				diff = pf.DateDiff($('predictstart').value,$('predictend').value);
				diff = diff+1;
			}
			$("forecaststart").value = pf.dateFormat(pf.DateAdd("d",(0-diff),pf.dateFormat(new Date(),false)),false);
		}
		pf.toEndDate();
	},
	toEndDate:function(){		
		if($('predictstart').value!=null && $('predictstart').value!="" && $('predictend').value!=null && $('predictend').value!="" && $("forecaststart").value!=null && $("forecaststart").value!=""){
			var diff = pf.DateDiff($('predictstart').value,$('predictend').value);
			if(diff>0){
				$('forecastend').value=pf.dateFormat(pf.DateAdd("d",diff,$("forecaststart").value),false);
			}			
		}
	},/**
	 *格式化Date样式
	 *@param	datestr		date日期
	 *@param	dateOrTime	true日期时间格式，false日期格式
	 *@return	格式化后的日期时间
	 */
	dateFormat:function(datestr,dateOrTime){
		if(datestr!=undefined && datestr!=null){
			var redate = datestr.getFullYear()+"-"+pf.numberFormat((datestr.getMonth()+1))+"-"+pf.numberFormat(datestr.getDate());
			if(dateOrTime){
				redate = redate+" "+pf.numberFormat(datestr.getHours())+"-"+pf.numberFormat(datestr.getMinutes())+"-"+pf.numberFormat(datestr.getSeconds());
			}
			return redate;
		}else{
			return "";
		}
	},
	//格式化双位字符串，前面补0
	numberFormat:function(numstr){
		if(numstr!=undefined && !isNaN(numstr)){
			if(numstr<10){
				return "0"+numstr;
			}else{
				return numstr;
			}
		}
		return "";
	},
	/**
	 *计算天数差的函数，通用
	 *@param	startDT		启始日期或时间,格式：2006-12-18[yyyy-MM-dd]
	 *@param	endDT		结束日期或时间,格式：2006-12-18[yyyy-MM-dd]
	 *@return	天数，正的表示，endDT比startDT晚
	 */
	DateDiff:function(startDT,  endDT){
		var dtTmp1=pf.returnDate(startDT);
		var dtTmp2=pf.returnDate(endDT);
		var aDate,oDate1,oDate2,iDays;
		oDate1  = new Date(Date.parse(dtTmp1) + 1000);
		oDate2  = new Date(Date.parse(dtTmp2) + 1000);
		//把相差的毫秒数转换为天数
		//alert(oDate1+"   "+oDate2);
		iDays  =  parseInt((oDate2-oDate1)/1000/60/60/24);
		//Math.abs(oDate1-oDate2)
		return  iDays; 
	},
	/**
	 *给一日期时间添加一个数量级
	 *@param	strInterval	添加的对象：s:秒,n:分,h:时,d:天,w:周,m:月,y:年
	 *@param	NumDay		添加数量，可以为负数
	 *@param	dtDate		日期时间的基数
	 *@return	新的日期时间
	 */
	DateAdd:function(strInterval,NumDay,dtDate)   {  
		var dtTmp=pf.returnDate(dtDate);
		if(isNaN(dtTmp))dtTmp = new Date(); 
		switch(strInterval){
			case   "s":return new Date(Date.parse(dtTmp) + (1000 * NumDay));//秒
			case   "n":return new Date(Date.parse(dtTmp) + (60000 * NumDay));//分
			case   "h":return new Date(Date.parse(dtTmp) + (3600000 * NumDay));//时
			case   "d":return new Date(Date.parse(dtTmp) + (86400000 * NumDay));//天
			case   "w":return new Date(Date.parse(dtTmp) + ((86400000 * 7) * NumDay));//周  
			case   "m":return new Date(dtTmp.getFullYear(),(dtTmp.getMonth())+ NumDay,dtTmp.getDate(),dtTmp.getHours(),dtTmp.getMinutes(),dtTmp.getSeconds());//月  
			case   "y":return new Date((dtTmp.getFullYear()+NumDay),dtTmp.getMonth(),dtTmp.getDate(),dtTmp.getHours(),dtTmp.getMinutes(),dtTmp.getSeconds());//年
		}
	},
	/**
	 *将字符串转为Date类型
	 *@param	Value	字符串
	 *@return	返回一个Date型
	 */
	returnDate:function(Value){
		var rd;
		if(pf.isDateTime(Value)){
			var a = Value.match(/^(\d{0,4})-(\d{0,2})-(\d{0,2}) (\d{0,2}):(\d{0,2}):(\d{0,2})$/);
			rd = new Date(a[1],a[2]-1,a[3],a[4],a[5],a[6]);
		}else if(pf.isDate(Value)){
			var a = Value.match(/^(\d{0,4})-(\d{0,2})-(\d{0,2})$/);
			rd = new Date(a[1],a[2]-1,a[3]);
		}else{
			rd =new Date(Date.parse(Value))
		}
		return rd;
	},
	/**
	 *判断是否是日期时间格式(yyyy-MM-dd hh:mm:ss)，是则返回true
	 *@param	str		日期时间的字符串
	 *@return	true是日期时间格式，false不是
	 */
	isDateTime:function(str){
		var a = str.match(/^(\d{0,4})-(\d{0,2})-(\d{0,2}) (\d{0,2}):(\d{0,2}):(\d{0,2})$/);
		if (a == null) return false;
		if ( a[2]>=13 || a[3]>=32 || a[4]>=24 || a[5]>=60 || a[6]>=60) return false;
		return true;
	},
	/**
	 *判断是否是日期格式(yyyy-MM-dd)，是则返回TRUE
	 *@param	str		日期的字符串
	 *@return	true是日期格式，false不是
	 */
	isDate:function(str){
		var a = str.match(/^(\d{0,4})-(\d{0,2})-(\d{0,2})$/);
		if (a == null) return false;
		if ( a[2]>=13 || a[3]>=32 || a[4]>=24) return false;
		return true;
	},timerArray :{'p05':null,'':null},
	/*
	 *左边菜单的定时刷新;
	 *invokeMethod:定时调用的方法格式为announce.getAnnounce;
	 *iMilliSeconds:定时单位为毫秒;
	 */
     intervalMenu : function (code,invokeMethod,iMilliSeconds){
        var divId = 'menus'+code;
        if(!$(divId)){
           return;
        }
        if($(divId).visible()){
           $(divId).hide();
           this.timerArray[code].stop();
        }else if(!$(divId).visible()){
           this.timerArray[code] = new PeriodicalExecuter(invokeMethod,iMilliSeconds);
           $(divId).style.display ="block";
        }
	 },
	 /**
	  * 取出电话号码的区号
	  */
	 getPhoneSection : function(phoneNO) {
	 	if (phoneNO == undefined) {
	 		return '';
	 	//手机
	 	} else if (phoneNO.indexOf('013')>-1 || phoneNO.indexOf('015')>-1 || phoneNO.indexOf('018')>-1) {
	 		return '';
	 	} else if (phoneNO.substring(0,2) == '00') {//判断是否港澳台
	 		return phoneNO.substring(0,5);
	 	} else if (phoneNO.substring(1,2) > 2) {//判断第二位是否大于2即除少数010，020的区号
	 		return phoneNO.substring(0,4);
	 	} else {
	 		return phoneNO.substring(0,3);
	 	}
	 },
	 
	 /**
	 *btnId:按钮的id
	 *提交后使按钮置为disabled
	 */
	 disabledBtn:function(btnId){
		var btnNode = document.getElementById(btnId);
     	btnNode.disabled = "disabled";
	},
	 
	 /**
	  * JavaScript的转码方法
	  */
	 encodeURI : function(param) {
	 	return encodeURIComponent(param);
	 },
	/**
	*打开一个模态窗口，sURL:制定要载入的url；vArguments：可以为任何类型，是父窗口传递给子窗口的值；
	*例子：var returnvalue=pf.showDialog("rdl_showmodelessdialog_demo.html",window,"status:no;resizable:yes;dialogHeight:210px;dialogWidth:360px;unadorne:yes");
	*子接收父的参数window.dialogArguments
	*关闭子窗口window.close()
	*子传递参数给父window.returnValue
	*returnvalue 是子传给父的参数
	 */
	showDialog:function(sURL, vArguments,sFeatures)
	{
		if(window.showModalDialog){
			var obj=window.showModalDialog(sURL,vArguments ,sFeatures);
			return obj;
		}else{
			alert(showDialog.ieOrFirefox);
			return null;
		} 
		
	}
	 

	





	
	 
	 
}
//取消息函数，例如：取label.add，那么调用$v('label.add')即可。
var $v = function(/*String*/ key) {
	return pf.eval(key);
}

function MM_findObj(n, d) {  var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
  if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
  if(!x && d.getElementById) x=d.getElementById(n); return x;
}

function MM_showHideLayers() {
  var i,p,v,obj,args=MM_showHideLayers.arguments;
  for (i=0; i<(args.length-2); i+=3) if ((obj=MM_findObj(args[i]))!=null) { v=args[i+2];
    if (obj.style) { obj=obj.style; v=(v=='show')?'visible':(v=='hide')?'hidden':v; }
    obj.visibility=v; }
}
function getWidth()
{
 var strWidth,clientWidth,bodyWidth;
 clientWidth = document.documentElement.clientWidth;
 bodyWidth = document.body.clientWidth;
 if(bodyWidth > clientWidth){
  strWidth = bodyWidth + 20;
 } else {
  strWidth = clientWidth;
 }
 return strWidth;
}
//获取高度
function getHeight()
{
 var strHeight,clientHeight,bodyHeight;
 clientHeight = document.documentElement.clientHeight;
 bodyHeight = document.body.clientHeight;
 if(bodyHeight > clientHeight){
  strHeight = bodyHeight + 30;
 } else {
  strHeight = clientHeight;
 }
 return strHeight;
}

function getLoadImage(){
	return "<img src='images/loading.gif'>"
}
// 锁屏
function showScreen(divId)
{
	/*if($(divId)){
	    var div=document.createElement("div");
		div.innerHTML=getLoadImage()+"loading...";
		div.style.position="absolute";
		
		div.style.marginLeft ="0px";
		div.style.marginTop ="0px";
		div.style.zIndex="9999";	
 		$(divId).innerHTML="";
 		$(divId).appendChild(div);
 	}*/
	/**var divb=document.createElement("div");
 
 	divb.id="divB";

	divb.style.position="absolute";
	divb.style.zIndex="9998";
	divb.style.top="0px";
	divb.style.left="0px";
	divb.style.width ="100px";
	divb.style.height = $(divId).offsetHeight;
	divb.style.background="#000000";
	divb.style.filter="alpha(Opacity=100)";
	$(divId).appendChild(divb);
 	*/


}
//解屏
function hideScreen()
{
 var ElementA = document.getElementById('divA');
 var ElementB = document.getElementById('divB');
 document.body.removeChild(ElementA);

 document.body.removeChild(ElementB);

 
}
