﻿/*
 * 使用基础框架Ext JS Library 2.1
 * 开发人:徐翔
 * china_xuxiang@163.com
 * 开发时间:2009-01
 */

//分页跳转
function turnToPage(n)
{
	var pageForm = document.forms[0];
	pageForm['start'].value = n;
	pageForm.submit();
}
// 提交页面
function doCommonSumbit(action)
{
	if(action)
		document.forms[0].action = action;
	document.forms[0].submit();
}

// 关闭页面
function frameClose()
{
	if(window.name.replace('iframe-','tab-'))
	{		
		window.parent.CloseAndActiveWindow(window.name.replace('iframe-','tab-'),'');
	}
}
// 关闭页面并跳转到欢迎页
function frameClose2Welcome()
{
	if(window.name.replace('iframe-','tab-'))
	{		
		window.parent.CloseAndActiveWindow(window.name.replace('iframe-','tab-'),'Welcomeiframe');
	}
}
//----------------------------------------------------------



var resultObj={};
var openWindow=null;
function showResult(obj)
{

	
	if(obj.msg)
	{
		resultObj = obj;	
		if (obj.type == "confirm")
		{		
			Ext.MessageBox.confirm('确认框', obj.msg, confirmProcess);
		}
		else if(obj.type == "alert")
		{			

				if(obj.msg.indexOf("成功")!=-1)
					messageShowSucess(obj.msg);
				else if (obj.msg.indexOf("失败")!=-1 || obj.msg.indexOf("错误")!=-1)
					messageShowUnsucess(obj.msg);
				else
					messageShowNotice(obj.msg);
		
		}
		//-------------WangGang------------
		//确认窗口
		else if(obj.type == "doSure")
		{
		    Ext.MessageBox.confirm('确认框', obj.msg, confirmSure);
		}
		
		//继续或者关闭窗口
		else if(obj.type == "continueOrClose")
		{
		    Ext.MessageBox.confirm('确认框', obj.msg, confirmContinueOrClose);
		}
		
		//提示信息并关闭窗口
		else if(obj.type == "infoAndClose")
		{			
			Ext.MessageBox.show({
		           title: '信息提示',
		           msg: obj.msg,
		           buttons: Ext.MessageBox.OK,	
		           fn:showInfoAndClose,	     
		           icon: Ext.MessageBox.INFO
		       });	
		}
		//关闭并刷新LIST页面
		else if(obj.type == "CloseAndReflash")
		{	
			if(obj.msg.indexOf("成功")!=-1)
				parent.messageShowSucess(obj.msg);
			else if (obj.msg.indexOf("失败")!=-1 || obj.msg.indexOf("错误")!=-1)
				parent.messageShowUnsucess(obj.msg);
			else
				parent.messageShowNotice(obj.msg);				
			
			try{
					if (obj.tabId!="" && obj.tabId!=undefined)
					{
						var fwin=parent.window.frames;			
						var flen=fwin.length;		
						for(var jj=0 ;jj<flen;jj++)
						{
							if(obj.tabId==fwin[jj].name)
								fwin[jj].ext_grid[0].getStore().reload();
						}
						parent.actionTab(obj.tabId);
					}
			}
			catch(e)
			{}
			iframeWindowClose();
		}
		
		//关闭并刷新LIST页面
		else if(obj.type == "CloseAndReflashTab")
		{	
			if(obj.msg.indexOf("成功")!=-1)
				parent.messageShowSucess(obj.msg);
			else if (obj.msg.indexOf("失败")!=-1 || obj.msg.indexOf("错误")!=-1)
				parent.messageShowUnsucess(obj.msg);
			else
				parent.messageShowNotice(obj.msg);				
			
			if (obj.tabId!="" && obj.tabId!=undefined)
			{
				parent.ReflashTab(obj.tabId);
			}
			iframeWindowClose();
		}
		//-------------WangGang------------
		else if (obj.type == "close")
		{			
			Ext.MessageBox.show({
		           title: '信息提示',
		           msg: obj.msg,
		           buttons: Ext.MessageBox.OK,	
		           fn:closeSelf,	     
		           icon: Ext.MessageBox.INFO
		       });		
		}
		else if (obj.type == "back")
		{			
			Ext.MessageBox.show({
		           title: '信息提示',
		           msg: obj.msg,
		           buttons: Ext.MessageBox.OK,	
		           fn:back,	     
		           icon: Ext.MessageBox.INFO
		       });	
		}
		else if (obj.type == "top")
		{
			
			Ext.MessageBox.show({
		           title: '信息提示',
		           msg: obj.msg,
		           buttons: Ext.MessageBox.OK,	
		           fn:goAction1,	     
		           icon: Ext.MessageBox.INFO
		       });	
			
		}
		else
		{
		
			Ext.MessageBox.show({
		           title: '信息提示',
		           msg: obj.msg,
		           buttons: Ext.MessageBox.OK,	
		           fn:assignAction1,	     
		           icon: Ext.MessageBox.INFO
		       });				
			if (obj.action1)
			{
				location.assign(obj.action1);
			}
		}
		
	}
}

function iframeWindowClose()
{
	var eId=window.name.replace('iframe-extWin','');
	var eWinObj=parent.eWinArray[eId];
	if (eWinObj)
		eWinObj.close();
}
//-------------WangGang------------
function confirmSure(btn)
{
	if (btn=='yes')
	{
		doCommonSumbit(resultObj.action);
	}	
	
}
function confirmContinueOrClose(btn)
{
	if (btn=='yes')
	{
	    doCommonSumbit(resultObj.action);
	 }
	    
	else{
		iframeWindowClose();
		
	}
}
function showInfoAndClose(btn)
{
	iframeWindowClose();
}
//-------------WangGang------------
function confirmProcess(btn)
{
	if (btn=='yes')
	{
		location.assign(resultObj.action1);
	}	
	else
	{
		location.assign(resultObj.action2);
	}
}
function assignAction1(btn)
{
	if (btn=='yes')
	location.assign(resultObj.action1);
}
function goAction1(btn)
{
	if (btn=='yes')
	top.location.href = resultObj.action1;
}
function back(btn)
{
	if (btn=='yes')
	history.back();
}
function closeSelf(btn)
{
	if (btn=='yes')
    frameClose();
}

function turnToPage(n)
{
	var pageForm = document.forms[0];
	pageForm['start'].value = n;
	pageForm.submit();
}

// 清除空格
String.prototype.trim = function()  
{
    return this.replace(/(^\s*)|(\s*$)/g, "");  
}

/* 
=========================================== 
//是否是邮件 
=========================================== 
*/ 
String.prototype.isEmail = function() 
{ 
return /^\w+((-\w+)|(\.\w+))*\@[A-Za-z0-9]+((\.|-)[A-Za-z0-9]+)*\.[A-Za-z0-9]+$/.test(this); 
} 

/* 
=========================================== 
//是否是邮编(中国) 
=========================================== 
*/ 
String.prototype.isZipCode = function() 
{ 
	return /^[\d]{6}$/.test(this); 
} 

/* 
=========================================== 
//是否是正确的手机号码(中国) 
=========================================== 
*/ 
String.prototype.isMobile = function() 
{ 
	return /^0{0,1}1[3,5]{1}[0-9]{9}$/.test(this); 
} 

/* 
=========================================== 
//是否是有效的电话号码(中国) 
=========================================== 
*/ 
String.prototype.isPhoneCall = function() 
{ 
	return /(^[0-9]{3,4}\-[0-9]{7,8}$)|(^[0-9]{7,8}$)|(^\([0-9]{3,4}\)[0-9]{7,8}$)|(^0{0,1}1[3,5]{1}[0-9]{9}$)/.test(this);
}

// 判断是否正确的日期格式(yyyy-mm-rr)
function strDateTime(str) 
{ 
    var r = str.match(/^(\d{1,4})(-|\/)(\d{1,2})\2(\d{1,2})$/);
    if(r==null)
    	return false; 
    var d= new Date(r[1], r[3]-1, r[4]); 
    return (d.getFullYear() == r[1] && (d.getMonth()+1) == r[3] && d.getDate() == r[4]); 
}

// 返回正确的日期格式
function getDateTime(str)
{
	var r = str.match(/^(\d{1,4})(-|\/)(\d{1,2})\2(\d{1,2})$/);
    if(r == null)
    	return str; 
    var d= new Date(r[1], r[3]-1, r[4]);
    return d;
}

// 判断日期1是否大于等于日期2
function isLimitDate(str1, str2)
{
	var d1 = getDateTime(str1);
	var d2 = getDateTime(str2);
	var dt1 = d1.getTime();
   	var dt2 = d2.getTime();
    if (dt1 > dt2)
        return true;	
	else
    	return false;
}

// 判断不能为空和不能超过指定长度
function isNotBlankLeng(s,l)
{
	var bl = isNotBlank(s);
	if (!bl)
	{
		return "不能为空";
	}
	var bl1 = isLeng(s,l);
	if (!bl1)
	{
		return "长度不能超过"+l;
	}
	return "";
}

// 获取真实的字符长度
function getTrueLenth(str)
{
    if(typeof str != 'string')
    {
        str = new String(str);
    }
    
    //实际的长度
    var TrueLength = 0;
    
    for ( var i=0; i < str.length; i++)
    {
        if (str.charCodeAt(i) > 127 || str.charCodeAt(i) == 94)
        {
            TrueLength += 2;
        }
        else
        {
            TrueLength += 1;
        }
    }
    
    return TrueLength;
}

// 判断长度不能少于指定长度和不能超过指定长度
function isMinMax(s, min, max)
{
	var bl = isLeng(s, (min-1));
	
	if (bl)
	{
		return "长度不能少于"+min;
	}
	
	var bl = isLeng(s, max);
	
	if (!bl)
	{
		return "长度不能超过"+max;
	}
	return "";
}

// 判断长度
function isLeng(s,l)
{
	//var len = s.length;
	var len = getTrueLenth(s);

	if (len > l)
	{
		return false;
	}
	return true;
}

// 判断是否为空
function isNotBlank(s)
{
	if ( s == null || s == "")
	{
		return false;
	}
	return true;
}

// 判断是否相等
function isEqual(s1, s2)
{
	if (isNotBlank(s1) && isNotBlank(s2))
	{
		if (s1.trim() == s2.trim())
		{
			return true;
		}
	}
	return false;
}

function getObj(id)
{
	var obj = document.getElementById(id);
	return obj;
}

function getObjByName(name)
{
	return document.getElementsByName(name);
}

// 根据id获取值
function getValue(id)
{
	var obj = getObj(id);
	if (obj)
	{
		document.getElementById(id).value = obj.value.trim();
		return obj.value;
	}
	return "";
}

// 设置光标
function setFocus(id)
{
	if (id)
	{
		var esrc = getObj(id);
		if(esrc == null)
		{
		   esrc = event.srcElement;
		}
	
		if(esrc.createTextRange)
		{
			var rtextRange = esrc.createTextRange();
			rtextRange.moveStart('character',esrc.value.length);
			rtextRange.collapse(true);
			rtextRange.select();
		}
		else
		{
			esrc.focus();
		}
	}
}

// 模拟tab
function doEnterToTab()
{
	if (event.keyCode == 13)
	{
		event.keyCode = 9;
	}
}

// 模拟鼠标点击按钮
function doButton(id)
{
	if (event.keyCode == 13)
	{
		document.getElementById(id).click();
	}
}

// 判断是否为ie
var isIE = navigator.userAgent.indexOf("MSIE")>0;

// 模拟ctrl+enter键提交	
function KeyDown(obj, id)
{
	obj.onkeydown = function(e)
	{
	    if(isIE) // window.eventIE
	    {
		    if(event.ctrlKey && getkeyCode(event) == 13)
		    {
		    	document.getElementById(id).click();
		    }
	    }
	    else
	    {
		    if(e.ctrlKey && getkeyCode(e) == 13)
		    {
		    	document.getElementById(id).click();
		    }
	    }
	} 
}

// 获取按键值	
function getkeyCode(e)
{
	var keynum = "";
	if(isIE) // window.event IE
	{
	    keynum = e.keyCode;
	}
	else // Netscape/Firefox/Opera
	{
	    keynum = e.which;
	}
	return keynum;
}

// 输出错误信息
function showError(obj)
{
	messageShowUnsucess(obj);
}



function fieldChecks(obj,objText,objValue)
{
	// 必须输入多少位
	if(obj.min)
	{
		var bl = isLeng(objValue, (obj.min-1));

		if (bl)
		{
			showError(objText + "长度不能少于" + obj.min);
			setFocus(obj.id);
			return false;
		}
	}
	
	// 不能超过多少位
	if (obj.max)
	{
		var bl = isLeng(objValue, obj.max);

		if (!bl)
		{
			showError(objText + "长度不能超过" + obj.max);
			setFocus(obj.id);
			return false;
		}
	}
	
	// 是否正确的邮编
	if (obj.zip)
	{
		if(!objValue.isZipCode())
		{
			showError('请输入正确的' + objText + "格式");
			setFocus(obj.id);
			return false;
		}
	}
	
	// 是否正确的email
	if (obj.email)
	{
		if(!objValue.isEmail())
		{
			showError('请输入正确的' + objText + "格式");
			setFocus(obj.id);
			return false;
		}
	}
	
	// 是否正确的手机号码
	if (obj.mobile)
	{
		if(!objValue.isMobile())
		{
			showError('请输入正确的' + objText + "格式");
			setFocus(obj.id);
			return false;
		}
	}
	
	// 是否正确的电话号码
	if (obj.phone)
	{
		if (!objValue.isPhoneCall())
		{
			showError('请输入正确的' + objText + "格式");
			setFocus(obj.id);
			return false;
		}
	}
	
	// 判断日期1是否大于日期2
	if (obj.ge)
	{
		var obj1 = obj.ge;
		var objValue2 = getValue(obj1.id).trim();
		if (!isNotBlank(objValue2))
		{
			showError(obj1.text + "的值为空!");
			setFocus(obj1.id);
			return false;
		}
		else
		{
			if (isLimitDate(objValue, objValue2))
			{
				showError(objText + "不能大于或等于" + obj1.text);
				setFocus(obj.id);
				return false;
			}
		}
	}
	
	// 判断日期不能大于当前日期
	if (obj.geNow)
	{
		var d = new Date();
		var d1 = d.getYear()+"-"+ (d.getMonth()+1) + "-"+d.getDate();
		
		if (isLimitDate(objValue,d1))
		{
			showError(objText + "不能大于或等于当前日期!");
			setFocus(obj.id);
			return false;
		}
	}
	
	return true;
}

function dateChecks(obj)
{
	if(obj)
	{
		for(var i = 0; i < obj.length; i++)
		{
			if(!dateCheck(obj[i]))
			{
				return false;
			}
		}
		return true;
	}
	else
	{
		return true;
	}
}

// 单个控件数据check
function dateCheck(obj)
{
	if (obj)
	{
		if(obj.id)
		{
			// 根据控件id获取值
			var objValue = getValue(obj.id).trim();
			var objText = obj.text;
			
			// 必须输入
			if(obj.required)
			{
				if (!isNotBlank(objValue))
				{
					showError(objText + "不能为空!");
					
					setFocus(obj.id);
					return false;
				}
			}
			
			if(isNotBlank(objValue))
			{
				return fieldChecks(obj,objText,objValue);
			}
		}
		else if (obj.name)// 判断多个值时填写必须
		{
			var objname = getObjByName(obj.name);
			var objText = obj.text;
			
			if(objname)
			{
					
				if (obj.required)
				{
					var len = objname.length;
					
					for(var i = 0; i < len; i++)
					{
						if( !objname[i].disabled)
						{
							var objValue = objname[i].value;
							if (!isNotBlank(objValue))
							{
								showError(objText + "必须输入");
								return false;
							}
							
							if(!fieldChecks(obj, objText, objValue))
							{
								return false;
							}
						}
					}
				}
				
				if (obj.one)
				{
					var len = objname.length;
					
					var flag = false;
					for(var i = 0; i < len; i++)
					{
						if( objname[i].checked)
						{
							flag = true;
							return true;
						}
					}
					
					if (!flag)
					{
						alert(objText + '必须选择');
					}
				}
			}
			else
			{
				showError('根据控件名称找不到指定控件！');
				return false;
			}
		}
	}
	else
	{
		return false;
	}
	
	return true;
}
//--------------------------------------------------------------

function CheckAll(form,eName)
{

	for (var i=0;i<form.elements.length;i++)
	{
		
		var e = form.elements[i];
		
		if (e.name == eName)
		{
			e.checked = form.chkall.checked;
		}
	}
}
//-----xuxiang--------------------------------------------------
//定义常用字符串
var rStr="<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;";

//-----树Checked删除--------------------------------------------------
var _checkBoxFirstClick=false;
function onThisChecked(cBox,cName)
	{
		
		//勾选框是第一次被点击，那改一下状态，并展开所有的TREE节点，不能让节点再合起来，以防止数据值丢失
		if (tree && _checkBoxFirstClick==false)
		{
			_checkBoxFirstClick=true;
			tree.expandAll();
			tree.addListener("beforecollapsenode",function(){return false;})
			setTimeout(processChecked,1000,cBox,cName)
		}
		else
		{
			processChecked(cBox,cName)
		}
}

//-------------------------------------------------------
//setTimeout原型修改，支持传参数
//-------------------------------------------------------
var _st = window.setTimeout;window.setTimeout = function(fRef, mDelay) {
if(typeof fRef == 'function'){  
  var argu = Array.prototype.slice.call(arguments,2);  
  var f = (function(){ fRef.apply(null, argu); });  
  return _st(f, mDelay); } 
  return _st(fRef,mDelay);}
//-------------------------------------------------------
//-------------------------------------------------------

function processChecked(cBox,cName)
{
	
		var eObj=document.getElementsByName(cName)
		var cBoxValue=cBox.value;
		var cBoxValueLen=cBoxValue.length;
	    try{
			for(var i=0;i<eObj.length;i++)
				{					
					var aBoxValue=eObj[i].value;
					var aBoxValueLen=aBoxValue.length;	
					
					if(eObj[i].value.length>=cBoxValueLen)				
						if (eObj[i].value.substring(0,cBoxValueLen)==cBoxValue)
						{							
							eObj[i].checked=cBox.checked;
							}
				
					if(eObj[i].value.length<cBoxValueLen && cBox.checked==false)
					{			
						if(cBoxValue.substring(0,aBoxValueLen)==aBoxValue)
						{
							eObj[i].checked=false;
						}
					}
					
				}
		}
		catch(err)
		{}
}
var actionName="";
function doDelete(cName,cActionName)
	{		
		actionName=cActionName;
		var delID=document.getElementsByName(cName)
		var delNum=0
		for(var i=0;i<delID.length;i++)
		{		
			if (delID[i].checked==true)
			{
				delNum++;
				}
		}
		if(delNum<=0)
			showError("您没有勾选记录,无法做删除操作!");
		else
			Ext.MessageBox.confirm('确认框', "确认要删除您所勾选的"+delNum+"条记录吗?", confirmProcessDoDelete);
	}
function confirmProcessDoDelete(btn)
	{
			if (btn=='yes')
			{
				//确认删除后执行提交
				doCommonSumbit(actionName);
			}	
	}
//---------------执行批量修改的操作------------------
function doUpdate(cName,cActionName)
{
	actionName= cActionName;
	var updateID=document.getElementsByName(cName)
	var updateNum=0
	for(var i=0;i<updateID.length;i++)
	{
		if (updateID[i].checked==true)
		{
			updateNum++;
		}
	}
	if(updateNum<=0)
		showError("您没有勾选记录,无法做批量修改操作!");
	else
		Ext.MessageBox.confirm('确认框', "确认要修改您所勾选的"+updateNum+"条记录吗?", confirmProcessDoUpdate);
}
function confirmProcessDoUpdate(btn)
{
	if (btn=='yes')
	{
		//确认修改后执行提交
		doCommonSumbit(actionName);
	}	
}

//-----树Checked删除--------------------------------------------------


/* 
=========================================== 
//是否是整型 
=========================================== 
*/

String.prototype.isInteger = function() 
{ 
    return /^(-|\+)?\d+$/.test(this); 
}


//取得控制的绝对位置
function getoffset(e) 
{  
 var t=e.offsetTop;  
 var l=e.offsetLeft;  
 while(e=e.offsetParent) 
 {  
  t+=e.offsetTop;  
  l+=e.offsetLeft;  
 }  
 var rec = new Object; 
 rec.top  = t; 
 rec.left = l; 
 return rec 
}  

function getValueOfFCK(name)
{
	return FCKeditorAPI.GetInstance(name).EditorDocument.body.innerText;
}

//获取radio标签的值
function getRadioValueByName(name)
{
	var obj = getObjByName(name);
	for(var i=0; i<obj.length; i++)
	{
		if(obj[i].checked)
		{
			return obj[i].value;
		}
	}
}
