var publicPath = ".../";
/**********************************************************************************
*   用正则表达式将前后空格
*   用空字符串替代。
**********************************************************************************/
String.prototype.trim= function()
{
    return this.replace(/(^\s*)|(\s*$)/g, "");
}

function trim(str)
{
	return str.replace(/(^\s*)|(\s*$)/g, "");
}

/*********************************************************************************
*   函数:        swap
*   描述:        将源select列表中的选定项移动到目的select列表，支持多选
*   参数:        from   源select列表
*   参数:        to      目的select列表
**********************************************************************************/
function swap(from,to)
{
	var isExist=false;
	var count=0;
    try{
		for(index=0;index<from.options.length;index++)
		{	isExist=false;
			if(from.item(index).selected)
			{
				count++;
				if(to.all.length>0)
				{
					for(var i=0;i<to.all.length;i++)
					{
						 //if(to.item(i).text==from.item(index).text)
						 if(to.item(i).id.toLowerCase() == from.item(index).id.toLowerCase() )
						 {
							if(typeof(to.item(i).type) == "object")
							 {
								if (to.item(i).type.toLowerCase() == from.item(index).type.toLowerCase())
								{
									 isExist=true;
								}
							 }
							 else
							 {
								 isExist=true;
							 }
						 }
					}
			   }   
			   if(isExist==false)
				   { var oOption=document.createElement("OPTION");
					 oOption.text=from.item(index).text;
					 oOption.id=from.item(index).id;
					 oOption.value=from.item(index).value;
					 if(from.item(index).type!=null&&typeof(from.item(index).type)=="string")
					   {
							oOption.type=from.item(index).type;
					   }
					 to.add(oOption);
					}
			}
		}//end for
		if(count==0)
		{
	       alertWindow("请选中要添加的项！");		
		}
		from.selectedIndex = -1;
   }//try
   catch (e)
   {
       alertWindow(e);
       //alert("请选中要添加的项！");
   }
   return false;
}
 
/*********************************************************************************
*   函数:        swapAll
*   描述:        将源select列表中的所有项移动到目的select列表
*   参数:        from   源select列表
*   参数:        to      目的select列表
**********************************************************************************/
 function swapall(from,to)
{ 
  for(index=0;index<from.options.length;index++)
  { 
    var isExist=true;
    try{
    if(to.all.length>0)
    {
        for(var i=0;i<to.all.length;i++)
        {
             //if(to.item(i).text==from.item(index).text)
			 if(to.item(i).id.toLowerCase() == from.item(index).id.toLowerCase() && to.item(i).type.toLowerCase() == from.item(index).type.toLowerCase())
             {
                 isExist=false;
             }
        }
   }   
   if(isExist==true)
       { var oOption=document.createElement("OPTION");
         oOption.text=from.item(index).text;
         oOption.id=from.item(index).id;
         oOption.value=from.item(index).value;
         oOption.type=from.item(index).type;
         to.add(oOption);
        }
        from.selectedIndex = -1;
   
   }//try
   catch (e)
     {
       //alert("请选中要添加的项！");
     }
  }
   return false;
 }
/*********************************************************************************
*   函数:        swapSelectToInput
*   描述:        将源select列表中的选中项目移动到目的input中
*   参数:        from   源select列表
*   参数:        to      目的select列表
**********************************************************************************/
 function swapSelectToInput(from,to)
{
	try
	{
       to.value=from.item(from.selectedIndex).text;
        //from.selectedIndex = -1;
   }//try
   catch (e)
   {
       alertWindow("请选中要添加的项！");
   }
   return false;
 }

/*********************************************************************************
*   函数:        del
*   描述:        删除select列表中的选定项，支持多选
*   参数:        from   源select列表
*   参数:        to      目的Input 对象
**********************************************************************************/
 function del(obj)
 {
	 if(obj.all.length == 0)return;
	  try
	  {
			if(obj.selectedIndex<0) {alertWindow("请选中要删除的项");return}
			for(index=0;index<obj.options.length;index++)
			{ 
				if(obj.item(index).selected && obj.item(index).text!="Everyone") 
				{  
					obj.remove(index);
					index--;
				}
			}// end for
		}//end try
		catch (e)
		{
			alertWindow("Error");
		}
   return false;
 }
/*********************************************************************************
*   函数:        del
*   描述:        删除select列表中的所有项
*   参数:        obj   select对象
**********************************************************************************/
 function delall(obj)
 { 
	  if(obj.all.length == 0)return;
      try
      {  var count=obj.all.length
         for(i=count-1;i>=0;i--)
          {
				if(obj.options[i].text!="Everyone") 
				{
		              obj.removeChild(obj.options[i]);
				}
          }
      }
      catch (e)
      {
      }
   return false;
 }
/*********************************************************************************
*   函数:        swapSelectToInput
*   描述:        select中的选定项设置到input的value中
*   参数:        obj   select对象
**********************************************************************************/
function swapSelectToInput(from,to)
{  try{
       to.value=from.item(from.selectedIndex).text;
        //from.selectedIndex = -1;
   }//try
   catch (e)
   {
       alertWindow("请选中要添加的项！");
   }
   return false;
 }


/*********************************************************************************
*   函数:        setMemberList
*   描述:        配合公用通讯录显示使用，设置返回值
*   参数:        MemberList,成员列表，成员包括用户、部门、角色
*   参数:        IDList,成员ID列表，成员包括UserID、GroupID、RoleID, 具体是什么，配合TypeList使用
*   参数:        TypeList,成员类型列表，成员包括user、group、role
*   参数:        Pattern = OnlyUser时，不加载部门、角色 其他则加载
**********************************************************************************/
function setMemberList(MemberList, IDList, TypeList, Pattern)
{
	var returnStr;
	var obj=new Object();
	var url;
	objUserName=eval("document.all."+MemberList);
	objUserID=eval("document.all."+IDList);
	if(TypeList == "")
	{
		obj.TypeList="";
	}
	else
	{
		objUserType=eval("document.all."+TypeList);
		obj.TypeList=objUserType.value;
	}
	obj.NameList = objUserName.value;
	obj.IDList = objUserID.value;
	obj.Pattern = Pattern;
	url=publicPath+'System/default.aspx?model=NamesBook';
	if(Pattern == "OnlyUser")
	{
		url += "&type=OnlyUser";
	}
	returnStr=openModalDialog(url,obj,'500','460');
	if(returnStr!=false&&returnStr!=null&&returnStr!="undefined")
	{
		if(returnStr!="nullStr")
		{
			arr=returnStr.split("||||");
			objUserName.value=arr[0];
			objUserID.value=arr[1];
			if(TypeList != "" && objUserType != null && objUserType != "undefined" && objUserType != "" )
			{
				objUserType.value=arr[2];
			}
		}
		else
		{
			objUserName.value="";
			objUserID.value="";
		}
	}
}
/*********************************************************************************
*   函数:        setUserList
*   描述:        根据部门、角色，检索其下所属的用户
*   参数:        IsMultiple = "true" 可以进行多选，否则单选
**********************************************************************************/
function setUserList(NameList, IDList, IsMultiple)
{
	var returnStr;
	var obj=new Object();
	var url;
	var objUserName=eval("document.all."+NameList);
	var objUserID=eval("document.all."+IDList);

	obj.NameList = objUserName.value;
	obj.IDList = objUserID.value;
	obj.IsMultiple = IsMultiple;
	url=publicPath+'System/default.aspx?model=NamesBookUser';

	returnStr=openModalDialog(url,obj,'500','440');

	if(returnStr!=false&&returnStr!=null&&returnStr!="undefined")
	{
		if(returnStr!="nullStr")
		{
			arr=returnStr.split("||||");
			objUserName.value=arr[0];
			objUserID.value=arr[1];
		}
		else
		{
			objUserName.value="";
			objUserID.value="";
		}
		return true;
	}
	else
	{
		return false;
	}
}


/*********************************************************************************
*   函数:        setGroupList
*   参数:        IsMultiple = "true" 可以进行多选，否则单选
**********************************************************************************/
function setGroupList(GroupList, GroupIDList, IsMultiple)
{
	var returnStr;
	var obj=new Object();
	var url;
	var objGroupName=eval("document.all."+GroupList);
	var objGroupID=eval("document.all."+GroupIDList);

	obj.GroupList = objGroupName.value;
	obj.GroupIDList = objGroupID.value;
	obj.IsMultiple = IsMultiple;
	url=publicPath+'System/default.aspx?model=NamesBookGroup';

	returnStr=openModalDialog(url,obj,'500','440');

	if(returnStr!=false&&returnStr!=null&&returnStr!="undefined")
	{
		if(returnStr!="nullStr")
		{
			arr=returnStr.split("||||");
			objGroupName.value=arr[0];
			objGroupID.value=arr[1];
		}
		else
		{
			objGroupName.value="";
			objGroupID.value="";
		}
	}
}

//查询匹配列表中的文字
function searchMatch(selectObj,str)
{ var selectedIndex ;
	var back = false;
	selectedIndex = selectObj.selectedIndex;
	//selectObj.selectedIndex = -1;
	if(selectedIndex <= 0) selectedIndex = 0;
	for (index=0;index<selectObj.length;index++)
	{
		i=index+selectedIndex;

		if(i >= selectObj.length)
		{
			i -= selectObj.length;
			//if(back == false)
				//selectObj.selectedIndex = -1;
			back = true;
		}
		if (str == '')
		{
			alertWindow('请输入查询条件');
			break;
		}
		if (selectObj.options[i].text.substring(0,str.length).toLowerCase()==str.toLowerCase())
		{
			if(selectObj.options[i].selected !=true)
			{
				selectObj.options[i].selected=true;
				break;
			}
		}
		else
		{
			selectObj.options[i].selected=false;
		}
	}
}
/*********************************************************************************
*   函数:        setProductTypeList
*   参数:        仅单选
**********************************************************************************/
function setProductTypeList(ProductTypeList)
{
	var returnStr;
	//var obj=new Object();
	var url;
	var objProductTypeList=eval("document.all."+ProductTypeList);
	url=publicPath+'AdministrationWork/Assets/default.aspx?model=ProductTypeDialogBox';
	//alert(url);
	returnStr=openModalDialog(url,"",'258','348');

	if(returnStr!=false&&returnStr!=null&&returnStr!="undefined")
	{
		if(returnStr!="nullStr")
		{
			objProductTypeList.value=returnStr;
			
		}
		else
		{
			objProductTypeList.value="";
		}
	}
}

/*********************************************************************************
*   函数:        setMeetingTypeList
*   参数:        仅单选
**********************************************************************************/
function setMeetingTypeList(MeetingTypeList)
{
	var returnStr;
	//var obj=new Object();
	var url;
	var objMeetingTypeList=eval("document.all."+MeetingTypeList);
	url=publicPath+'AdministrationWork/Meeting/Default.aspx?model=MeetingTypeDialogBox';

	returnStr=openModalDialog(url,"",'258','348');

	if(returnStr!=false&&returnStr!=null&&returnStr!="undefined")
	{
		if(returnStr!="nullStr")
		{
			objMeetingTypeList.value=returnStr;
			
		}
		else
		{
			objMeetingTypeList.value="";
		}
	}
}
/*********************************************************************************
*   函数:        setProductName
*   参数:        ProductName物品名称  ProductType  物品类型（已知）　　仅单选
**********************************************************************************/
function setProductNameList(ProductName,ProductType)
{
	var returnStr;
	//var obj=new Object();
	var url;
	var objProductType=eval("document.all."+ProductType);
	var objProductName=eval("document.all."+ProductName);
	if(objProductType.value==""||objProductType.value==null||objProductType=="undefined")
	{
		alertWindow("对不起，请先选择具体的物品类型信息！");
		return;
	}
	url=publicPath+'AdministrationWork/Assets/default.aspx?model=ProductNameDialogBox&producttype='+escape(objProductType.value);
	//alert(url);
	returnStr=openModalDialog(url,"",'258','348');

	if(returnStr!=false&&returnStr!=null&&returnStr!="undefined")
	{
		if(returnStr!="nullStr")
		{
			objProductName.value=returnStr;
			
		}
		else
		{
			objProductName.value="";
		}
	}
}
/*********************************************************************************
*   函数:        setAttachmentType
*   参数:        ProductName物品名称  ProductType  物品类型（已知）　　仅单选
**********************************************************************************/
function setAttachmentType(AttachmentType)
{
	var returnStr;
	//var obj=new Object();
	var url;
	var objMeetingTypeList=eval("document.all."+AttachmentType);
	url=publicPath+'AdministrationWork/HR/Default.aspx?model=AttachmentTypeDialogBox';

	returnStr=openModalDialog(url,"",'258','358');

	if(returnStr!=false&&returnStr!=null&&returnStr!="undefined")
	{
		if(returnStr!="nullStr")
		{
			objMeetingTypeList.value=returnStr;
			
		}
		else
		{
			objMeetingTypeList.value="";
		}
	}
}

/*********************************************************************************
*   函数:        setPosition
*   参数:        ProductName物品名称  ProductType  物品类型（已知）　　仅单选
**********************************************************************************/
function setPosition(Position)
{
	var returnStr;
	//var obj=new Object();
	var url;
	var objMeetingTypeList=eval("document.all."+Position);
	url=publicPath+'AdministrationWork/HR/Default.aspx?model=PositionDialogBox';

	returnStr=openModalDialog(url,"",'258','348');

	if(returnStr!=false&&returnStr!=null&&returnStr!="undefined")
	{
		if(returnStr!="nullStr")
		{
			objMeetingTypeList.value=returnStr;
			
		}
		else
		{
			objMeetingTypeList.value="";
		}
	}
}

/*********************************************************************************
*   函数:        setOptionList
*   参数:        OptionList   　　仅单选
**********************************************************************************/
function setOptionList(ObjectName,type)
{
	var returnStr;
	//var obj=new Object();
	var url;
	var objOptionList=eval("document.all."+ObjectName);
	url=publicPath+'CRM/Default.aspx?model=OptionList&type='+type;

	returnStr=openModalDialog(url,"",'258','348');

	if(returnStr!=false&&returnStr!=null&&returnStr!="undefined")
	{
		if(returnStr!="nullStr")
		{
			objOptionList.value=returnStr;
			
		}
		else
		{
			objOptionList.value="";
		}
	}
}



/*********************************************************************************
*   函数:        ListToString
*   描述:        将select中的列表成员组合成字符串，通过逗号分隔
*   参数:        from   被合成的select对象
*   参数:        attribute   要合成字符串的属性
**********************************************************************************/
function ListToString(from,attribute,separator)
{	var str="";
	var objStr;
	var sep = ",";
	if(typeof(separator) == "string")
		sep = separator;
	try
	{
		for(i=0;i<from.options.length;i++)
		{
			if(i!=0) str+=sep;
			objStr=eval("from.options["+i+"]."+attribute);
			str+=objStr;
		}
		return str
	}
	catch(e)
	{
		alertWindow(e);
		return "";
	}
}

function openModalDialog(URL,arg,width, height) 
{
	return window.showModalDialog(URL,arg,"dialogWidth="+width+"px;dialogHeight="+height+"px;status=0;scroll=no;help:no;");
}
/*********************************************************************************
*   函数:        mOvr
*   描述:        鼠标移入后元素的属性，通常用来控制表格行变色
*   参数:        src   通常是<tr>或者<td>等元素，
*   参数:        clrOver 颜色
*   参数:        eg: <tr onmouseover=mOvr(this,"#D7E4FF");>
**********************************************************************************/
function mOvr(src,clrOver){ 
	if (!src.contains(event.fromElement)) { 
		//src.style.cursor = 'hand'; 
		src.bgColor = clrOver; 
	}
}
/*********************************************************************************
*   函数:        mOut
*   描述:        鼠标移出后元素的属性，通常用来控制表格行变色
*   参数:        src   通常是<tr>或者<td>等元素，
*   参数:        clrOver 颜色
*   参数:        eg: <tr onmouseout=mOut(this,"#F7F7F7");>
**********************************************************************************/
function mOut(src,clrIn)  { 
	if (!src.contains(event.toElement)) { 
		//src.style.cursor = 'default'; 
		src.bgColor = clrIn; 
	}
} 
/*********************************************************************************
*   函数:       
*   描述:        
*   参数:        
*   参数:        
*   参数:        
**********************************************************************************/
function mMenuOvr(src){ 
	//if (!src.contains(event.fromElement)) { 
		src.style.cursor = 'hand'; 
		src.style.borderColor='#475784';
		src.style.borderStyle='solid';
		src.style.borderWidth='1px';
		src.style.backgroundColor='#C2C9DE';
	//}
}
function mMenuOut(src){ 
	//if (!src.contains(event.fromElement)) { 
		src.style.cursor = 'default'; 
		src.style.borderColor='#fafafa';
		src.style.borderStyle='solid';
		src.style.borderWidth='1px';
		//src.style.backgroundColor='transparent ';
		src.style.backgroundColor='#fafafa';
	//}
}
/*********************************************************************************
*   函数:        mOvr
*   描述:        鼠标移入后元素的属性，通常用来控制表格行变色
*   参数:        src   通常是<tr>或者<td>等元素，
*   参数:        clrOver 颜色
*   参数:        eg: <tr onmouseover=mOvr(this,"#D7E4FF");>
**********************************************************************************/
function mOvrClass(src,clsOver){ 
	if (!src.contains(event.fromElement)) { 
		//src.style.cursor = 'hand'; 
		src.className = clsOver; 
	}
}
/*********************************************************************************
*   函数:        mOut
*   描述:        鼠标移出后元素的属性，通常用来控制表格行变色
*   参数:        src   通常是<tr>或者<td>等元素，
*   参数:        clrOver 颜色
*   参数:        eg: <tr onmouseout=mOut(this,"#F7F7F7");>
**********************************************************************************/
function mOutClass(src,clsIn)  { 
	if (!src.contains(event.toElement)) { 
		//src.style.cursor = 'default'; 
		src.className = clsIn; 
	}
} 
/*********************************************************************************
*   作者：bluemaple
*
*   弹出窗口，模拟alert();
**********************************************************************************/
function alertWindow(txt)
{
	window.showModalDialog(publicPath+"Default.aspx?model=alert", txt,"dialogWidth=450px;dialogHeight=250px;status=0;scroll=no;help:no;");
}

/*********************************************************************************
 * 弹出窗口，模拟confirm();
**********************************************************************************/
function confirmWindow(txt)
{
	return window.showModalDialog(publicPath+"Default.aspx?model=confirm", txt,"dialogWidth=450px;dialogHeight=250px;status=0;scroll=no;help:no;");
}

/*
* 信息提示对话框  2004-6-24 yangxl
* 提示信息类型：0-信息提示；1-正确信息提示；2-警告信息提示；3/其他-错误信息提示
*/
function infoWindow(txt,type)
{
	var obj = new Object();
	obj.txt = txt;
	obj.type = type;
	return window.showModalDialog(publicPath+"Default.aspx?model=infoWindow", obj,"dialogWidth=450px;dialogHeight=250px;status=0;scroll=no;help:no;");
}

function openWin(URL,width, height) 
{
	return window.open(URL,"", "height="+height+",width="+width+",resizable=no,scrollbars=auto,status=no,toolbar=no,menubar=no,location=no");
}

/**
 * 忽略错误，先停止错误执行
 */
function stoperror()
{
	//return true;
}
window.onerror = stoperror;


/*
 * 判断长度字符串长度
 */
function strlength(str)
{
	var l=str.length;
	var n=l;
	for(i=0;i<l;i++)
	{
		if (str.charCodeAt(i)<0||str.charCodeAt(i)>255) n++;
	}
	return n;
}


/*
 * 弹出窗口
 */
function openWin(URL,width, height) 
{
	return window.open(URL, "", "height="+height+",width="+width+",resizable=yes,scrollbars=yes,status=no,toolbar=no,menubar=no,location=no");
}

/*  检查对象是否存在 */
function isObject(str)
{
	var s = str.split(".");
	var t = "";
	var obj;

	for(var i=0; i<s.length; i++)
	{
		if(i == 0)
			t = s[i];
		else
			t = t +"." + s[i];

		if( typeof(eval(t)) != "object" )
		{
			return false;
		}
	}
	return true;
}

/* 打印 */
function printView(url)
{
	var tmp1 = url.substring(0, url.indexOf("url=")+4);
	var tmp2 = url.substring(url.indexOf("url=")+4, url.length);

	if(tmp2.indexOf("http://")<0)
	{
		tmp2 = document.URL.substring(0, document.URL.lastIndexOf("/")+1) + tmp2;
	}

	url = tmp1 + tmp2;

	window.open(url, 'PrintView', 'height=580,width=680,resizable=no,scrollbars=auto,status=ye,toolbar=yes,menubar=no,location=no');
}

/* 设置导航栏名称 */
function setNavTitle(name)
{
	if(isObject("top.frameNav.document.all.navTitleDiv"))
	{
		top.frameNav.document.all.navTitleDiv.innerHTML = name;
	}
}

function printview(url)
{
	window.open(url, 'PrintView', 'height=580,width=680,resizable=no,scrollbars=yes,status=yes,toolbar=yes,menubar=no,location=no');
}

function printreport(obj)
{
	/*if(typeof(obj)=="object")
		obj.style.display="none";*/
	window.print();
}
/*******************************************************************/
/* 设置打印机页眉页脚////暂时不好用，原因不明
/*******************************************************************/
function  PageSetup_Default()
{  
	try
	{
		var Wsh=new ActiveXObject("WScript.Shell");
		HKEY_Key="header";
		//Wsh.RegWrite(HKEY_Root+HKEY_Path+HKEY_Key,"&w&b页码,&p/&P");
		Wsh.RegWrite(HKEY_Root+HKEY_Path+HKEY_Key,"");
		HKEY_Key="footer";
		//Wsh.RegWrite(HKEY_Root+HKEY_Path+HKEY_Key,"&u&b&d");
		Wsh.RegWrite(HKEY_Root+HKEY_Path+HKEY_Key,"&w&b页码,&p/&P");
	}
	catch(e){alert("Error:"+e);}
}

/*******************************************************************/
/* 判断字符串是否包含在数组中
/*******************************************************************/
function contain(arr,str)
{
	try
	{
		for (i=0;i<arr.length ;i++ )
		{
			if(arr[i]==str)
				return true;
		}
		return false;
	}
	catch(e)
	{
		return false;
	}
}
/*******************************************************************/
/* 控制查询层的现实隐藏，使用filter 控制显示的效果
/*******************************************************************/
function showSearch(layer)
{
		x=(document.body.clientHeight-300)/2;
		//y=(document.body.clientWidth-640)/2;
		y=30;
		
		if(eval(x)<=10)
			layer.style.left=10;
		else
				layer.style.left=x;

		if(eval(y)<=10)
			layer.style.top=10;
		else
			layer.style.top=y;
	
	//layer.filters.revealTrans.transition=1; 
	//layer.filters.revealTrans.duration=3 ;
	//layer.filters.revealTrans.apply(); 
	layer.style.visibility="visible";
	//layer.filters.revealTrans.play(); 

}
function hideSearch(layer)
{
	//layer.filters.revealTrans.transition=2 ;
	//layer.filters.revealTrans.duration=3; 
	//layer.filters.revealTrans.apply(); 
	layer.style.visibility="hidden";
	//layer.filters.revealTrans.play(); 
}
/*******************************************************************/
