//********************************************************************************************
/* 
		Pupose: File Javascript chứa các hàm dùng chung cho toàn bộ chương trình.
						Khi muốn sử dụng một hàm bất kỳ, bạn nên link tới file này. 
						(<script src="../js/common.js" type="text/javascript"></script>)
		
		Author1: Nguyễn Đình Thản
		Author2: Ngô Cự Vỹ
		Phone:  0903 664 801
		Email:  dinh.than@yahoo.com
		Web:    www.dinhthan.com
*/
//********************************************************************************************
	function showLinesUrl(obj,id,urlImg)
		/*'----------------------------------------------------------------------------------------------
    '   Purpose   : Mở menu
    '              
    '   Parameter : Menu cần mở
    '                 
    '   Return    : 
    '   Date      : 03/08/2005
    '   Author    : Nguyễn Đình Thản
    '---------------------------------------------------------------------------------------------*/
    
	{
		x=eval(id);
		
		if (x.style.display == "none")
		{
  		x.style.display="";
  		obj.src=urlImg+"tv_minus.gif";
  	
		}
		else 
		{
			x.style.display="none";
			obj.src=urlImg+"tv_plus.gif";
		}
		//Resize main frame
		
	}

	function showLines(id)
		/*'----------------------------------------------------------------------------------------------
    '   Purpose   : Mở menu
    '              
    '   Parameter : Menu cần mở
    '                 
    '   Return    : 
    '   Date      : 03/08/2005
    '   Author    : Nguyễn Đình Thản
    '---------------------------------------------------------------------------------------------*/
    
	{
		x=eval(id);
		if (x.style.display == "none")
		{
  		x.style.display="";
		}
		else 
		{
			x.style.display="none";
		}
		//Resize main frame
		
	}
//			
	function FocusMenu(pid,id){
	/*'---------------------------------------------------------------------------------
	'   Purpose   :   Hàm chỉ đổi màu menu khi chọn mục tương ứng trên các trang con.										
	'   Parmeter  :   pid: id của cell chứa hình tam giác.
	'									id: id của cell chứa tên menu								
	'   Return    :   none	
	'   Date      :   08/11/2006
	'   Author    :   Ngô Cự Vỹ.
	'-----------------------------------------------------------------------------------*/

		var frm=document.parentWindow.parent.document.forms[0];
		var smnu=frm.all[pid];
		var mnu=frm.all[id];		
		//Reset background
		var theForm = frm.all;//obj.form;			
		for (var i = 0; i < theForm.length; i++){
			var oInput = theForm[i];
			if (oInput.id.indexOf("smnu")!=-1){
				oInput.style.backgroundColor="";
			}
		}			
		mnu.style.backgroundColor="#D0D4DD";
		smnu.style.backgroundColor="#D0D4DD";		
	}
//********************************************************************************************
	function FormatInputNumber(obj)
	/*'---------------------------------------------------------------------------------
	'   Purpose   :   Hàm dùng để kiểm tra Text nhập vào có phải là số hay không
										
	'   Parmeter  :   val: Tên control cần kiểm tra
	'																	
	'
	'   Return    :   Nếu đúng hàm trả về true, sai hàm trả về false
	'                 Đồng thời xuất hiện thông báo và bôi đên text hiện hành
	'   Date      :   25/09/2006
	'   Author    :   Nguyễn Đình Thản
	'-----------------------------------------------------------------------------------*/

	{	
		var str;
		var bKT;
		var i,k,l,j,iPos;
		var sRet='',sRetEnd='',sTemp='';
		var sEnd='';
		var arl =new Array();
		var arlTemp=new Array();
		var mess='Bạn phải nhập số!';
		
		str=document.getElementById(obj.id).value;
		l=str.length;
	
		if (l==0)
			return true;
					
		bKT=IsNumeric(str);

		if (bKT==false)
		{
			alert(mess);
			document.getElementById(obj.id).focus();
			document.getElementById(obj.id).select();
			
			return false;
		}
		
		//Chuyển đổi số 12312(chỉ thực hiện khi nhập từ 4 số)
		if(l>=4)
		{
			//Loại bỏ dấu chấm(trong trường hợp đã được định dạng)
			for(j=0;j<l;j++)
			{
				if(str.charAt(j)!='.')
				{
					arlTemp.push(str.charAt(j));
				}
			}
			//Gán ra chuỗi
			str='';
			for(j=0;j<arlTemp.length;j++)
			{
				str+=arlTemp[j];
			}
			l=str.length;
		
			//Tạo định dạng 1.234.511
			k=0;
			iPos=l;

	    for(i=l-1;i>=0;i--)
	    {
				k++;
				if(k==3)
				{
					sTemp=str.substring(i).toString();
					sTemp=sTemp.substr(0,3);
					arl.push(sTemp);
					iPos=i-1;
					k=0;
				}
	    }
						
			if(k!=3)
			{	
				sTemp=str.substr(0,k).toString();
				if(sTemp!='')
					arl.push(sTemp);
			}
	
			for(k=arl.length-1; k>=0; k--)
			{
				if(k==0)
					sRet+=arl[k];
				else
					sRet+=arl[k]+".";
				
			}
			document.getElementById(obj.id).value=sRet;
		
	 } 	
}

function GetElementByAnyTextOfId(FormName,AnyText)
{
 	/*'---------------------------------------------------------------------------------
	'   Purpose   : Hàm tìm và trả về controls bất kỳ trong HTML
	'   Parmeter  : FormName là đối tượng form
	'							  AnyText là một đoạn text bất kỳ của ID cần tìm
	'							  Ex(id="tdAttach"); thì chỉ cần tryền "Att")
	'
	'   Return    : Trả về control tìm được  
	'                
	'   Date      :   10/08/2006
	'   Author    :   Nguyễn Đình Thản
	'---------------------------------------------------------------------------------*/

	var item,obj,sHTML,sID;
	var iP; //Vị trí của AnyText
	var retCtr;
	
  sHTML=FormName.document.body.innerHTML;
  iP=sHTML.search(AnyText);
  
   	if(iP!=-1)
		{
			iP-=1;
			sID=sHTML.substring(iP-1,iP+2);
			
			while (iP>-1)
			{
				iP-=1;
				sID=sHTML.substring(iP,iP+2);
				if (sID=='id')
				{
					break;//Dừng nếu thấy
				}
			}
			
			if (sID=='id')
			{
					for(var i=iP;i<sHTML.length;i++){
						if(sHTML.charAt(i)==' ')
						{
								sID=sHTML.substring(iP+3,i);
								retCtr=FormName.document.getElementById(sID);
								break;
						}
					}
			}
			
		}
		 
  return retCtr;
}

function OpenNew(url)
//Mỏ cửa sổ mới
{
		window.open(url,'','');
}

	function thoat()
	{
		window.close();
		return false;
		
	}

	function txtFind_onpropertychange(obj,divSource,txtCount,txtValue,StartIndex) {
	/*'----------------------------------------------------------------------------------------------
	'   Purpose   : Thủ tục tìm kiếm
	'              
	'   Parameter : obj: Form hiện hành,txtCount số dòng hiển thị,txtValue giá trị tìm kiếm
	'											txtStartFind: vị trí bắt đầu tìm kiếm           
	'			 
	'   Return    : Trả những row tìm thấy
	'   Date      : 24/08/2005
	'   Author    : Nguyễn Đình Thản
	'----------------------------------------------------------------------------------------------*/
	var frm=obj.form.all;
	var divS=frm[divSource];//Source
	var sFind;
	var sT;
	var sRow,sVT;
	var oInput;
	var iVT=0; //vị trí bắt đầu tìm thấy
	document.getElementById(obj.id).style.cursor="Hourglass";
	var iS=document.getElementById(StartIndex).value;//Start of index
	
	iS=parseInt(iS);
	iS+=1;
	
	var iL=document.getElementById(txtCount).value; //Số dòng hiển thị
		
	for (var i = iS; i<=iL; i++)
	{
		sRow="lv_row_"+i;

		oInput = divS.all[sRow];
	
			strText=TrimLeft(oInput.innerText);	//Chuỗi so sánh

			sFind=document.getElementById(txtValue).value; //Chuỗi tìm kiếm.toLowerCase
			sT=strText.substring(0,sFind.length);

			sFind=sFind.toLowerCase(); //Làm thường
			sT=sT.toLowerCase(); //Chữ thường

			if (sFind==sT && sFind!=''){ //Tìm thấy
					
					if (iVT==0)
					{
						iVT=i;
						sVT=sRow;
					}
					document.getElementById(sRow).style.backgroundColor='#ccccff';
					
			}
			else //Nếu không tim thấy
				document.getElementById(sRow).style.backgroundColor='#ffffff';
	}
	if (iVT!=0)
	{
		document.getElementById(sVT).scrollIntoView(i);
	}
 document.getElementById(obj.id).style.cursor="hand";
	return false;
	}

	//=============================================================================
	function HighlightRow(nListID)
	{
		if (document.getElementById("lv_chk_lvi_" + nListID).checked==true)
			document.getElementById("lv_row_" + nListID).style.backgroundColor='#ccccff';
		else
			document.getElementById("lv_row_" + nListID).style.backgroundColor='#ffffff';
	}
	
	//=============================================================================
	function HighlightAll(oCheckBox)
	{
		var theForm = oCheckBox.form;

		for (var i = 0; i < theForm.length; i++)
		{
			var oInput = theForm.elements[i];
			if (oInput.name.indexOf("chkSelect")!=-1)
			{
				if (oCheckBox.checked==true)
				{
					oInput.checked=true;
					//document.getElementById("lv_row_" + oInput.name.substr(11)).style.backgroundColor='#ccccff';
				}
					if (oCheckBox.checked==false)
				{
					oInput.checked=false;
					//document.getElementById("lv_row_" + oInput.name.substr(11)).style.backgroundColor='#ffffff';
				}
			}
		}
		
		
	//return false;
	}
	
	function ChonHet(oCheckBox)
	/*'---------------------------------------------------------------------------------
	'   Purpose   :  Hàm đánh dấu chọn hết trên trang List
	'   Parmeter  :   oCheckBox: là form(this)
	'									
	'
	'   Return    :   
	'                
	'   Date      :   02/11/2005
	'   Author    :   Nguyễn Đình Thản
	'---------------------------------------------------------------------------------*/

	{
		var theForm = oCheckBox.form;
		var colHead;
		
		colHead=theForm.all["chkCheckAll"];
		colHead.checked=true;
			
		for (var i = 0; i < theForm.length; i++)
		{
			var oInput = theForm.elements[i];
			if (oInput.name.indexOf("chkSelect")!=-1)
			{
				oInput.checked=true;			
			}
		}

	}
	
	function BoChon(oCheckBox)
	/*'---------------------------------------------------------------------------------
	'   Purpose   :  Hàm đánh bỏ dấu chọn hết trên trang List
	'   Parmeter  :   oCheckBox: là form(this)
	'									
	'
	'   Return    :   
	'                
	'   Date      :   02/11/2005
	'   Author    :   Nguyễn Đình Thản
	'---------------------------------------------------------------------------------*/
	{
		var theForm = oCheckBox.form;
		var colHead;
		colHead=theForm.all["chkCheckAll"];
	
			colHead.checked=false;
			
		for (var i = 0; i < theForm.length; i++)
		{
			var oInput = theForm.elements[i];
			if (oInput.name.indexOf("chkSelect")!=-1)
			{
				oInput.checked=false;			
			}
		}

	}
	
	function SetStyle(obj,sclass)
	/*'---------------------------------------------------------------------------------
	'   Purpose   :   Hàm set Style cho button khi mouse over và mouse out
	'   Parmeter  :   id: tên button
	'									sclass: Tên class cần sét
	'
	'   Return    :   
	'                
	'   Date      :   02/11/2005
	'   Author    :   Nguyễn Đình Thản
	'-----------------------------------------------------------------------------------*/

	{
		document.getElementById(obj.id).className=sclass;
	}
	
	function SetImgSrc(id,url)
	/*'---------------------------------------------------------------------------------
	'   Purpose   :   Hàm set duong dan moi cho anh khi mouse over và mouse out
	'   Parmeter  :   id: tên img
	'									url: Tên url img cần sét
	'
	'   Return    :   
	'                
	'   Date      :   05/09/2006
	'   Author    :   Ngô Cự Vỹ
	'-----------------------------------------------------------------------------------*/

	{ 
	  var sPar=document.getElementById(id)
	  var img,sTemp;
	  var iLen;
	  img=sPar.all[0];
	  iLen=img.src.length;

	  sTemp=img.src.substr(iLen-5,iLen-4);
	
	  if(sTemp.indexOf('0')==-1) //Nếu không có quyền
	  	img.src=url;
	  
	}

	function ChuHoa(txtName)
	/*'---------------------------------------------------------------------------------
	'   Purpose   :   Hàm làm hoa chữ trên textbox
	'   Parmeter  :   txtName: tên TextBox cần làm hoa chữ
	'									
	'
	'   Return    :   
	'                
	'   Date      :   02/11/2005
	'   Author    :   Nguyễn Đình Thản
	'-----------------------------------------------------------------------------------*/
	{
		var sValue=document.getElementById(txtName).value;
		document.getElementById(txtName).value=sValue.toUpperCase();
	}
	//=============================================================================
	function netHighlightRow(obj,divSource,nListID)
	/*'---------------------------------------------------------------------------------
	'   Purpose   :   Hàm dùng để đánh dấu khi chọn một dòng trong ListView(visualAsp)
	'   Parmeter  :   obj: là form
	'									divSource: Tên div
	'									nListID : chỉ số dòng 
	'
	'   Return    :   
	'                
	'   Date      :   02/11/2005
	'   Author    :   Nguyễn Đình Thản
	'-----------------------------------------------------------------------------------*/
	{
		var frm=obj.form.all;
		//For row
		var divS=frm[divSource];//Source
		var sRow="lv_row_" + nListID;
		var row=divS.all[sRow];
		//For checkbox
		var sChk="lv_chk_lvi_" + nListID;
		var chk=divS.all[sChk];

		if (chk.checked==true)
			row.style.backgroundColor='#ccccff';
		else
			row.style.backgroundColor='#ffffff';

	}
	//=============================================================================
	function netHighlightAll(oCheckBox,divSource)
	/*'---------------------------------------------------------------------------------
	'   Purpose   :   Hàm dùng để đánh dấu khi chọn tất cả các dòng trong ListView(visualAsp)
	'   Parmeter  :   obj: là form
	'									divSource: Tên div
	'									
	'
	'   Return    :   
	'                 
	'   Date      :   02/11/2005
	'   Author    :   Nguyễn Đình Thản
	'-----------------------------------------------------------------------------------*/

	{
		var frm=oCheckBox.form.all;
		var divS=frm[divSource];//Source
	  var sRow="lv_row_";
	  
		for (var i = 0; i < divS.all.length; i++)
		{
			
			var oInput = divS.all[i];
			if (oInput.id.indexOf("lv_chk_lvi_")!=-1)
			{
			  sRow="lv_row_"+oInput.id.substr(11);
			  var row=divS.all[sRow];
			  
				if (oCheckBox.checked==true)
				{
					oInput.checked=true;
					row.style.backgroundColor='#ccccff';
					netHighlightAllRow(oCheckBox,divSource,oInput.id.substr(11))
					
				}
				if (oCheckBox.checked==false)
				{
					oInput.checked=false;
					row.style.backgroundColor='#ffffff';
					netHighlightAllRow(oCheckBox,divSource,oInput.id.substr(11))
					
				}
			}
		}
		for(var k=1; k<8; k++)
			{
					//
					if (k!=2)
					{
						var sIDCol="lv_chk_col_"+k;
						var oChk = divS.all[sIDCol];
										
						if (oCheckBox.checked==true)
						{
							oChk.checked=true;		
						}
						
						if (oCheckBox.checked==false)
						{
							oChk.checked=false;		
						}
					}
					
				
			}
			
		//return false;
	}
		//=============================================================================
	function netHighlightAlllCB(oCheckBox,divSource,txtCount)
	/*'---------------------------------------------------------------------------------
	'   Purpose   :   Hàm dùng để đánh dấu khi chọn tất cả các dòng trong ListView(visualAsp)
	'									List chọn cánbộ khi tạo công việc
	'   Parmeter  :   obj: là form
	'									divSource: Tên div
	'									
	'
	'   Return    :   
	'                 
	'   Date      :   02/11/2005
	'   Author    :   Nguyễn Đình Thản
	'-----------------------------------------------------------------------------------*/

	{
		var frm=oCheckBox.form.all;
		var divS=frm[divSource];//Source
	  var row,oInput;
	  var iL=document.getElementById(txtCount).value
	
		for (var i = 1; i <=iL; i++)
		{
				oInput = divS.all["lv_chk_lvi_"+i];
			  row=divS.all["lv_row_"+i];
			  
				if (oCheckBox.checked==true)
				{
					oInput.checked=true;
					row.style.backgroundColor='#ccccff';
				}
				if (oCheckBox.checked==false)
				{
					oInput.checked=false;
					row.style.backgroundColor='#ffffff';
				}
		}
		/*if(oCheckBox.checked==true)
			oCheckBox.checked=true;
		else
			oCheckBox.checked=false;*/
	}
	function netHighlightAllSubCol(oCheckBox,divSource,num)
	/*'---------------------------------------------------------------------------------
	'   Purpose   :   Hàm dùng để đánh dấu khi chọn tất cả các dòng trong ListView(visualAsp)
	'									Của sub column
	'   Parmeter  :   obj: là form
	'									divSource: Tên div
	'									
	'
	'   Return    :   
	'                 
	'   Date      :   02/11/2005
	'   Author    :   Nguyễn Đình Thản
	'-----------------------------------------------------------------------------------*/

	{
		var frm=oCheckBox.form.all;
		var divS=frm[divSource];//Source
	  var sRow="lv_row_";
	  var sSubCol= "_chk_lsi_" + num //Checkbox in subcolumn
	  	 
		for (var i = 0; i < divS.all.length; i++)
		{
			
			var oInput = divS.all[i];
			if (oInput.id.indexOf(sSubCol)!=-1)
			{
			
				if (oCheckBox.checked==true)
				{
					oInput.checked=true;
					//row.style.backgroundColor='#ccccff';
				}
				if (oCheckBox.checked==false)
				{
					oInput.checked=false;
					//row.style.backgroundColor='#ffffff';
				}
			}
			
			
		}
		//return false;
	}
	function netHighlightAllRow(oCheckBox,divSource,nListID)
	/*'---------------------------------------------------------------------------------
	'   Purpose   :   Hàm dùng để đánh dấu khi chọn tất 1 dòng trong ListView(visualAsp)
	'									
	'   Parmeter  :   obj: là form
	'									divSource: Tên div
	'									
	'
	'   Return    :   
	'                 
	'   Date      :   02/11/2005
	'   Author    :   Nguyễn Đình Thản
	'-----------------------------------------------------------------------------------*/

	{
		var frm=oCheckBox.form.all;
		var divS=frm[divSource];//Source
	  var sRow="lv_row_";
	 
		//For row
		var divS=frm[divSource];//Source
		var sRow="lv_row_" + nListID;
		var row=divS.all[sRow];
		//For checkbox
	
		var chk=divS.all[sRow];
			
	  for (var i = 0; i < chk.all.length; i++)
		{
			
			var oInput = chk.all[i];
			if (oInput.id.indexOf("_chk_lsi_")!=-1)
			{	  
				if (oCheckBox.checked==true)
				{
					oInput.checked=true;
				}
				if (oCheckBox.checked==false)
				{
					oInput.checked=false;
				}
			}
		}
		
		if (oCheckBox.checked==true)
			row.style.backgroundColor='#ccccff';
		else
			row.style.backgroundColor='#ffffff';

		//return false;
	}
	
	function AddOrRemove(obj,divSource,divTarget)
	/*'---------------------------------------------------------------------------------
	'   Purpose   :   Hàm Add và remove giữa 2 list view
	'   Parmeter  :   obj: là form
	'									divSource: Tên div source(bên trái)
	'									divTarget: tên div target(bên phải)
	'									
	'
	'   Return    :   
	'                 
	'   Date      :   02/11/2005
	'   Author    :   Nguyễn Đình Thản
	'-----------------------------------------------------------------------------------*/

	{
		var frm=obj.form.all;
		var divS=frm[divSource];//Source
		var divT=frm[divTarget];//Target

		for(var i=0; i<divS.all.length;i++)
		{
			var chk=divS.all[i];//Checkbox of Source
			var sRow;//Dòng sẽ visble

			if (chk.id.indexOf("lv_chk_lvi_")!=-1)
			{
				if (chk.checked==true)
				{
					chk.checked=false;
					sRow="lv_row_" + chk.id.substr(11); //Lấy id of row
					var rowS=divS.all[sRow];//Lấy dòng cần visible
						
					rowS.style.display="none"; //Biến
					rowS.style.backgroundColor='#ffffff';
					
					var rowT=divT.all[sRow];
					rowT.style.display=""; //Hiện
					
				}
			}
		}
		return false;
	}
	function AddOrRemoveListCanBo(obj,divSource,divTarget,txtCount)
	/*'---------------------------------------------------------------------------------
	'   Purpose   :   Hàm Add và remove giữa 2 list view
	'   Parmeter  :   obj: là form
	'									divSource: Tên div source(bên trái)
	'									divTarget: tên div target(bên phải)
	'									Count: Số dòng hiển thị
	'
	'   Return    :   
	'                 
	'   Date      :   02/11/2005
	'   Author    :   Nguyễn Đình Thản
	'-----------------------------------------------------------------------------------*/

	{
		
		var frm=obj.form.all;
		var divS=frm[divSource];//Source
		var divT=frm[divTarget];//Target
		var iL=document.getElementById(txtCount).value;//Start of index
	
		//iL=parseInt(iL);
			
		//Reset check header
		var colHead;
		colHead=divS.all["lv_chk_col_1"];
		if (colHead.checked==true)
			colHead.checked=false;
				
		for(var i=1; i<=iL; i++)
		{
			
			var chk=divS.all["lv_chk_lvi_"+i];//Checkbox of Source
			var sRow;//Dòng sẽ visble
			
			if (chk.checked==true)
			{
					chk.checked=false;
					sRow="lv_row_"+i; //Lấy id of row
					var rowS=divS.all[sRow];//Lấy dòng cần visible
				
					//rowS.style.display="none"; //Biến
					rowS.style.backgroundColor='#ffffff';
					
					var rowT=divT.all[sRow];
					rowT.style.display=""; //Hiện
					
			}
		}
		return false;
	}
	
	function LoadDefaultList(obj,divSource,divTarget)
	/*'---------------------------------------------------------------------------------
	'   Purpose   :   Hàm load defaut trạng thái ban đầu cho trang
	'   Parmeter  :   obj: là form
	'									divSource: Tên div source(bên trái)
	'									divTarget: tên div target(bên phải)
	'									
	'
	'   Return    :   
	'                 
	'   Date      :   02/11/2005
	'   Author    :   Nguyễn Đình Thản
	'-----------------------------------------------------------------------------------*/

	{
		var frm=obj.form.all;
		var divS=frm[divSource];//Source
		var divT=frm[divTarget];//Target

		for(var i=0; i<divT.all.length;i++)
		{
			var rowT=divT.all[i];
			if (rowT.id.indexOf("lv_row_")!=-1)
			{
				if(rowT.style.display==""){
					var rowS=divS.all[i];
				  rowS.style.display="none";					
				}
			}
		}
	
		return false;
	}
	function LoadDefaultListCB(obj,divSource,divTarget,txtCount)
	/*'---------------------------------------------------------------------------------
	'   Purpose   :   Hàm load defaut trạng thái ban đầu cho trang
	'   Parmeter  :   obj: là form
	'									divSource: Tên div source(bên trái)
	'									divTarget: tên div target(bên phải)
	'									
	'
	'   Return    :   
	'                 
	'   Date      :   02/11/2005
	'   Author    :   Nguyễn Đình Thản
	'-----------------------------------------------------------------------------------*/

	{
		
		var frm=obj.form.all;
		var divS=frm[divSource];//Source
		var divT=frm[divTarget];//Target
		var iL=document.getElementById(txtCount).value;//Start of index
		
		for(var i=1; i<=iL;i++)
		{
			var rowT=divT.all["lv_row_"+i];
			if(rowT.style.display==""){
				var rowS=divS.all["lv_row_"+i];
				rowS.style.display="none";					
			}
		}
	
		return false;
	}
	function GetArray(text,kytu)
	/*'---------------------------------------------------------------------------------
	'   Purpose   :   Hàm tách chuổi text cách nhau bởi dấu 'kytu' thành array
	'   Parmeter  :   text: chuỗi text
	'							:   kytu: là ký tự cách nhau 
	'									Ví dụ: "Nguyễn,Đình,Thản" 		
	'
	'   Return    :   Trả về một mảng các phần tử sau khi tách
	'                 
	'   Date      :   02/11/2005
	'   Author    :   Nguyễn Đình Thản
	'-----------------------------------------------------------------------------------*/

	{
		var sTo=text;
		
		var arrRet=new Array();
		var iPos=0;
		var s1,s2;
		
		if (sTo.length>0)
		{
			sTo=text+kytu;
			for (var k=0; k<sTo.length; k++)//Chạy hết vòng for của sto
			{ 
				s2=sTo.charAt(k);
				if (s2==kytu)
				{
					s1=sTo.substring(iPos,k);
					iPos+=s1.length+1;
					
					arrRet.push(s1);
				}
			}
			
		}
		return arrRet;
	}
	
		function LoadGroup(obj,divTarget,ma)
			/*'---------------------------------------------------------------------------------
			'   Purpose   :   Hàm cập nhật lại danh sách group(role) trên trang canbo_detail
			'   Parmeter  :   obj: là form
			'									divTarget: tên div target trên trang canbo_detail
			'									ma: Chuỗi mã chứa cách nhau bởi dấu ","
			'
			'   Return    :   
			'                 
			'   Date      :   02/11/2005
			'   Author    :   Nguyễn Đình Thản
			'-----------------------------------------------------------------------------------*/

			{
				//Tách mã thành array
				var frm=obj.form.all;
				var divT=frm[divTarget];//Target
				//Cho ẩn hết
				var arrMa=GetArray(ma,',');
				
				for(var i=0; i<divT.all.length;i++)
				{
					var rowT=divT.all[i];
					if (rowT.id.indexOf("lv_row_")!=-1)
					{
						rowT.style.display="none"//Biến
					}	
			 }
					
			//Hiện những Group(Role) của user
			
			for(var j=0; j<arrMa.length; j++)
			{
				for(var i=0; i<divT.all.length;i++)
				{
					var rowT=divT.all[i];
					if (rowT.id.indexOf("lv_row_")!=-1)
					{
						//Kiểm cha các element con của RowT
						var sH=rowT.all.length;
						for (var k=0; k<sH; k++)//Lấy mã
						{
							var img=rowT.all[k];
							if(img.tagName=="IMG")
							{
								if(img.alt==arrMa[j])
									rowT.style.display="" //Hiện
							}	
						}//End for
					}	//End if
				}//End For
			}
			return false;
		}//End function
		function LoadGroupCB(obj,divTarget,ma,txtCount)
			/*'---------------------------------------------------------------------------------
			'   Purpose   :   Hàm cập nhật lại danh sách group(role) trên trang canbo_detail
			'   Parmeter  :   obj: là form
			'									divTarget: tên div target trên trang canbo_detail
			'									ma: Chuỗi mã chứa cách nhau bởi dấu ","
			'									txtCount: là số dòng hiển thị
			'   Return    :   
			'                 
			'   Date      :   02/11/2005
			'   Author    :   Nguyễn Đình Thản
			'-----------------------------------------------------------------------------------*/

			{
				var iL=document.getElementById(txtCount).value;//Start of index
			  
				//Tách mã thành array
				var arrMa;
				var frm=obj.form.all;
				var divT=frm[divTarget];//Target
				var rowT;
				var sSel='';
			  
				if(ma.length>0)
				{	
					arrMa=GetArray(ma,',');
					for(var j=0; j<arrMa.length; j++)
					{
						sSel+=arrMa[j]+',';
					}
				}
								
				//Cho ẩn hết
				for(var i=1; i<=iL; i++)
				{
					rowT=divT.all["lv_row_"+i];
					rowT.style.display="none";//Biến
					//var sH=rowT.all.length;
					var img=rowT.all[3]; //Mã
					if (sSel.indexOf(img.alt)!=-1)
							rowT.style.display="";//Hiện				
					else
							rowT.style.display="none";//Biến		
				}
				return false;
		}//End function
			
	function VisibleCheckBox(oCheckBox,divSource)
	/*'---------------------------------------------------------------------------------
	'   Purpose   :   Hàm dùng để Visible Các checkbox trên listview(visualAsp)
	'   Parmeter  :   obj: là form
	'									divSource: Tên div
	'									
	'
	'   Return    :   
	'                 
	'   Date      :   02/11/2005
	'   Author    :   Nguyễn Đình Thản
	'-----------------------------------------------------------------------------------*/

	{
		
		var frm=oCheckBox.form.all;
		var divS=frm[divSource];//Source
	    var sRow="lv_row_";
	  
		for (var i = 0; i < divS.all.length; i++)
		{
			var oInput = divS.all[i];
			if (oInput.id.indexOf("lv_chk_lvi_")!=-1)//Item
			{
			 							
				if (oInput.style.display=="")
						oInput.style.display="none";
			}
			if (oInput.id.indexOf("lv_chk_col_")!=-1)//ColumnHeader
			{
			 							
				if (oInput.style.display=="")
						oInput.style.display="none";
			}
									
		}
		return false;
	}

	function DisabledCheckBox(oCheckBox,divSource)
	/*'---------------------------------------------------------------------------------
	'   Purpose   :   Hàm dùng để Visible Các checkbox trên listview(visualAsp)
	'   Parmeter  :   obj: là form
	'									divSource: Tên div
	'									
	'
	'   Return    :   
	'                 
	'   Date      :   02/11/2005
	'   Author    :   Nguyễn Đình Thản
	'-----------------------------------------------------------------------------------*/

	{
		
		var frm=oCheckBox.form.all;
		var divS=frm[divSource];//Source
	  var sChk;//lv_1_chk_lsi_2
	 
		for (var i = 0; i < divS.all.length; i++)
		{
			var chkSub = divS.all[i];
			sChk="_chk_lsi_";//Tên các sub Checkbox;
			if (chkSub.id.indexOf("_chk_lsi_")!=-1)
			{
			 	chkSub.disabled=true;
			}	
		}
		return false;
	}
	function DisabledCheckBox1(oCheckBox,divSource,txtCount)
	/*'---------------------------------------------------------------------------------
	'   Purpose   :   Hàm dùng để Visible Các checkbox trên listview(visualAsp)
	'   Parmeter  :   obj: là form
	'									divSource: Tên div
	'									
	'
	'   Return    :   
	'                 
	'   Date      :   02/11/2005
	'   Author    :   Nguyễn Đình Thản
	'-----------------------------------------------------------------------------------*/

	{
		var iL=document.getElementById(txtCount).value;//Start of index
	
		var frm=oCheckBox.form.all;
		var divS=frm[divSource];//Source
	  var sChk;//lv_1_chk_lsi_2
	 
		for (var i = 1; i <=iL; i++)
		{
			var chkSub = divS.all["_chk_lsi_"+i];
					chkSub.disabled=true;
		}
		return false;
	}
	function IsNumeric(strString)
	/*'---------------------------------------------------------------------------------
	'   Purpose   :   Hàm dùng để kiểm tra Text nhập vào có phải là số hay không
	'   Parmeter  :   strString: Text cần kiểm tra
	'									
	'									
	'
	'   Return    :   
	'                 
	'   Date      :   02/11/2005
	'   Author    :   Nguyễn Đình Thản
	'-----------------------------------------------------------------------------------*/

   {
   var strValidChars = "0123456789.";
   var strChar;
   var blnResult = true;

   if (strString.length == 0) return false;

   //  test strString consists of valid characters listed above
   for (i = 0; i < strString.length && blnResult == true; i++)
   {
      strChar = strString.charAt(i);
      
      if(i==0){//Dấu chấm đầu
				if(strChar=='.')
					blnResult = false;
			}	
      if(i==strString.length-1){//Dấu chấm cuối
				if(strChar=='.')
					blnResult = false;
      }
      if (strValidChars.indexOf(strChar) == -1)
      {
        blnResult = false;
      }
   }
   return blnResult;
   
   }
   
	function KiemTraSo(val,mess)
	/*'---------------------------------------------------------------------------------
	'   Purpose   :   Hàm dùng để kiểm tra Text nhập vào có phải là số hay không
										
	'   Parmeter  :   val: Tên control cần kiểm tra
	'									mess: Nội dung thông báo
	'									
	'
	'   Return    :   Nếu đúng hàm trả về true, sai hàm trả về false
	'                 Đồng thời xuất hiện thông báo và bôi đên text hiện hành
	'   Date      :   02/11/2005
	'   Author    :   Nguyễn Đình Thản
	'-----------------------------------------------------------------------------------*/

	{	
		var str=document.getElementById(val).value;
		if (str.length==0)
			return true;
			
		var bKT;
		bKT=IsNumeric(str);
		if (bKT==false)
		{
			alert(mess);
			document.getElementById(val).focus();
			document.getElementById(val).select();
			
			return false;
		}
	}
	function IsNumericGio(strString)
	/*'---------------------------------------------------------------------------------
	'   Purpose   :   Hàm dùng để kiểm tra Text nhập vào có phải là số hay không
	'   Parmeter  :   strString: Text cần kiểm tra
	'									
	'									
	'
	'   Return    :   
	'                 
	'   Date      :   02/11/2005
	'   Author    :   Nguyễn Đình Thản
	'-----------------------------------------------------------------------------------*/

   {
   var strValidChars = "0123456789: APM";
   var strChar;
   var blnResult = true;

   if (strString.length == 0) return false;

   //  test strString consists of valid characters listed above
   for (i = 0; i < strString.length && blnResult == true; i++)
   {
      strChar = strString.charAt(i);
      
      if(i==0){//Dấu chấm đầu
				if(strChar==':')
					blnResult = false;
			}	
      if(i==strString.length-1){//Dấu chấm cuối
				if(strChar==':')
					blnResult = false;
      }
      if (strValidChars.indexOf(strChar) == -1)
      {
        blnResult = false;
      }
   }
   return blnResult;
   
   }
	function KiemTraNhapGio(val,mess)
	/*'---------------------------------------------------------------------------------
	'   Purpose   :   Hàm dùng để kiểm tra Text nhập vào có phải là số hay không
										
	'   Parmeter  :   val: Tên control cần kiểm tra
	'									mess: Nội dung thông báo
	'									
	'
	'   Return    :   Nếu đúng hàm trả về true, sai hàm trả về false
	'                 Đồng thời xuất hiện thông báo và bôi đên text hiện hành
	'   Date      :   02/11/2005
	'   Author    :   Nguyễn Đình Thản
	'-----------------------------------------------------------------------------------*/

	{	
		ChuHoa(val);//Làm hoa chữ
		var str=document.getElementById(val).value;
		if (str.length==0)
			return true;
			
		var bKT;
		
		bKT=IsNumericGio(str);
		if (bKT==false)
		{
			alert(mess);
			document.getElementById(val).focus();
			document.getElementById(val).select();
			
			return false;
		}
	}
	function KiemTraNam(obj,mess)
	/*'---------------------------------------------------------------------------------
	'   Purpose   :   Hàm dùng để kiểm tra Text nhập vào có phải là năm hay không
										
	'   Parmeter  :   val: Tên control cần kiểm tra
	'									mess: Nội dung thông báo
	'									
	'
	'   Return    :   Nếu đúng hàm trả về true, sai hàm trả về false
	'                 Đồng thời xuất hiện thông báo và bôi đên text hiện hành
	'   Date      :   03/10/2006
	'   Author    :   Ngô Cự Vỹ
	'-----------------------------------------------------------------------------------*/

	{	
		var str=document.getElementById(obj.id).value;
		if (str.length==0)
			return true;
			
		var bKT;
		bKT=IsNumeric(str);
		if (bKT==false || str.length!=4)
		{
			alert(mess);
			document.getElementById(obj.id).focus();
			document.getElementById(obj.id).select();
			
			return false;
		}
	}
	
	/*'---------------------------------------------------------------------------------
			'   FunctionName   :   Compare2Date
			'   Parmeter       :   sDate: Ngày bắt đầu
			'									     eDate: Ngày kết thúc
			'									     
			'									     
			'   Return         :   True,False
			'   Purpose        :   So sánh ngày bắt đầu có nhỏ hơn ngày kết thúc không.
			'                 
			'   Date           :   02/11/2005
			'   Author         :   Ngô Cự Vỹ
			'-----------------------------------------------------------------------------------*/
	function Compare2Date(sDate,eDate){
		var dt1   = parseInt(sDate.substring(0,2),10); 
		var mon1  = parseInt(sDate.substring(3,6),10);
		var yr1   = parseInt(sDate.substring(6,10),10); 
		var dt2   = parseInt(eDate.substring(0,2),10); 
		var mon2  = parseInt(eDate.substring(3,6),10); 
		var yr2   = parseInt(eDate.substring(6,10),10); 
		var date1 = new Date(yr1, mon1, dt1); 
		var date2 = new Date(yr2, mon2, dt2); 

		if(date2 < date1){
			return false; 
		}	
		return true;
	}
	
	function LoadDefaultFunction(obj,divTarget,ma,txtCount)
			/*'---------------------------------------------------------------------------------
			'   Purpose   :   Hàm load default ban đầu cho các function thuộc role
			'   Parmeter  :   obj: là form
			'									divTarget: tên div target trên trang canbo_detail
			'									ma: Chuỗi mã chứa cách nhau bởi dấu ","
			'									txtCount: Số dòng
			'   Return    :   
			'                 
			'   Date      :   02/11/2005
			'   Author    :   Nguyễn Đình Thản
			'-----------------------------------------------------------------------------------*/

			{
				//Tách mã thành array
				var iChk,iFunc;
				var sFuncID;
				var sItem;
				var iPos;
				var frm=obj.form.all;
				var divT=frm[divTarget];//Target
				var arrMa=GetArray(ma,',');
				var iL=document.getElementById(txtCount).value;//Start of index
				
				//Ẩn hết
				for(var i=1; i<=iL;i++)
				{
					var rowT=divT.all["lv_row_"+i];
						rowT.style.display="none"
			 }
	
			//Hiển mặc định
			for(var j=0; j<arrMa.length; j++)
			{
				//Lấy FunctionID
				var arlChk =new Array();
				sItem=arrMa[j];
			
				iPos=sItem.indexOf("_");
				sFuncID=sItem.substring(0,iPos);
				//Add các giá trị của checkbox
				
				var chkValue=sItem.substring(iPos+1,iPos+2);
				arlChk.push(chkValue);//Add View
				
				chkValue=sItem.substring(iPos+3,iPos+4);
				arlChk.push(chkValue);//Add Insert
				
				chkValue=sItem.substring(iPos+5,iPos+6);
				arlChk.push(chkValue);//Add Update
				
				chkValue=sItem.substring(iPos+7,iPos+8);
				arlChk.push(chkValue);//Add Delete
				
				chkValue=sItem.substring(iPos+9,iPos+10);
				arlChk.push(chkValue);//Add Excecute
				
				//Hiện mặc định các row đã có
				for(var i=1; i<=iL;i++)
				{
					var rowT=divT.all["lv_row_"+i];
									
						//Kiểm cha các element con của RowT
						var sH=rowT.all.length;
						for (var k=0; k<sH; k++)//Lấy mã
						{
							var img=rowT.all[k];
							if((img.tagName=="IMG")&&(img.alt==sFuncID))
							{
								rowT.style.display=""; //Hiện
									// Set checkbox true(false)
									for (var t=0; t<sH; t++)
									{
										var chkItem=rowT.all[t];//sub checkbox Ma_KDCT_TongKet
										if (chkItem.id.indexOf("_chk_lsi_")!=-1)
										{
											iPos=chkItem.id.lastIndexOf("_");
											iChk=chkItem.id.substr(iPos+1);
											iFunc=arlChk[iChk-2];					
											if(iFunc==1)												
												chkItem.checked=true;
											else
												chkItem.checked=false;
										}						
									}	
								
							}
								
						}				
												
					}	
				}
		
			return false;
	}//End function
	

	function TrimLeft(str) {
		var resultStr = "";
		var i = len = 0;
		
		// Return immediately if an invalid value was passed in
		if (str+"" == "undefined" || str == null)	
			return null;

		// Make sure the argument is a string
		str += "";

		if (str.length == 0) 
			resultStr = "";
		else {	
  			// Loop through string starting at the beginning as long as there
  			// are spaces.
			//	  	len = str.length - 1;
			len = str.length;
		
  		while ((i <= len) && (str.charAt(i) == " "))
			i++;

	 	// When the loop is done, we're sitting at the first non-space char,
 			// so return that char plus the remaining chars of the string.
  			resultStr = str.substring(i, len);
	  	}
	  	return resultStr;
	}

	function VietHoaSchedule(ScheduleName) {
		/*'----------------------------------------------------------------------------------------------
    '   Purpose   : Hàm việt hóa Schedule trong tiện ích văn phòng
    '              
    '   Parameter : Tên schedule muốn việt hóa
    '                 
    '   Return    : Hàm sẽ việt hóa schedule truyền vào
    '   Date      : 12/12/2005
    '   Author    : Nguyễn Đình Thản
    '----------------------------------------------------------------------------------------------*/

		var scd=document.getElementById(ScheduleName);
		
		scd.innerHTML=scd.innerHTML.replace("Mon ","Thứ hai ");
		scd.innerHTML=scd.innerHTML.replace("Tue ","Thứ ba ");
		scd.innerHTML=scd.innerHTML.replace("Wed ","Thứ tư ");
		scd.innerHTML=scd.innerHTML.replace("Thu ","Thứ năm ");
		scd.innerHTML=scd.innerHTML.replace("Fri ","Thứ sáu ");
		scd.innerHTML=scd.innerHTML.replace("Sat ","Thứ bảy ");
		scd.innerHTML=scd.innerHTML.replace("Sun ","Chủ nhật ");
		
	}

	function LapLichLamViec(obj,divSource,divTarget,txtID,nLine)
	/*'---------------------------------------------------------------------------------
	'   Purpose   :   Hàm dùng để lập lịch làm việc
	'   Parmeter  :   obj: là form
	'									divSource: Tên div source(bên trái)
	'									divTarget: tên div target(bên phải)
	'									txtID: Text hiển thị nội dung ID đã chọn
	'									nLine: dòng đã chọn
	'   Return    :   
	'                 
	'   Date      :   13/12/2005
	'   Author    :   Nguyễn Đình Thản
	'-----------------------------------------------------------------------------------*/

	{
		var frm=obj.form.all;
		var divS=frm[divSource];//Source
		var divT=frm[divTarget];//Target
		var sRowID="lv_row_"+nLine;
		var rowS,rowT;
		
		rowS=divS.all[sRowID];
		rowT=divT.all[sRowID];
	
		rowS.style.display="none"; //Biến
		rowT.style.display=""; //Hiện
			
		if (obj.checked==true)
			obj.checked=false;
		else
			obj.checked=true;
		
			
		/*for(var i=0; i<divT.all.length;i++)
		{
			var chk=divT.all[i];//Checkbox of Source
			var sRow;//Dòng sẽ visble

			if (chk.id.indexOf("lv_chk_lvi_")!=-1)
			{
				if (chk.checked==true)
				{
					chk.checked=false;
					sRow="lv_row_" + chk.id.substr(11); //Lấy id of row
					var rowS=;//Lấy dòng cần visible
							rowS.style.backgroundColor='#ffffff';
					
				}
			}
		}*/
		return false;
	}
	function LapLichLamViecAll(obj,divSource,divTarget,txtID)
	/*'---------------------------------------------------------------------------------
		'   Purpose   :   Hàm dùng để lập lịch làm việc (chọn hết)
		'   Parmeter  :   obj: là form
		'									divSource: Tên div source(bên trái)
		'									divTarget: tên div target(bên phải)
		'									txtID: Text hiển thị nội dung ID đã chọn
		'									nLine: dòng đã chọn
		'   Return    :   
		'                 
		'   Date      :   13/12/2005
		'   Author    :   Nguyễn Đình Thản
		'-----------------------------------------------------------------------------------*/

	{
		var frm=obj.form.all;
		var divS=frm[divSource];//Source
	 	 
		var sRow="lv_row_";
		var divT=frm[divTarget];//Target
				
	  for (var i = 0; i < divS.all.length; i++)
		{
			
			var oInput = divS.all[i];
			if (oInput.id.indexOf(sRow)!=-1)
			{	  
				divS.all[oInput.id].style.display="none"; //Biến
				divT.all[oInput.id].style.display=""; //Hiện
			}
		}
		
		if (obj.checked==true)
			obj.checked=false;
		else
			obj.checked=true;
			
		return false;
	}
	
function ButtonClick(btnName)
	/*'---------------------------------------------------------------------------------
		'   Purpose   :   Hàm dùng để thực thi lệnh của một button khi nhấn phím Enter
		'   Parmeter  :   btnName: Tên button
		'									
		'   Return    :   
		'                 
		'   Date      :   13/12/2005
		'   Author    :   Nguyễn Đình Thản
		'-----------------------------------------------------------------------------------*/
	
{

	if (event.keyCode == 13)//Phím enter
  {
  
     document.getElementById(btnName).click()//.focus();
     return true; 
  }
}

function XoaItemInGrid(oCheckBox)
	/*'---------------------------------------------------------------------------------
		'   Purpose   :   Hàm dùng để thực thi lệnh xóa trên datagrid
		'   Parmeter  :   oCheckBox: Tên button
		'									
		'   Return    :   
		'                 
		'   Date      :   13/12/2005
		'   Author    :   Nguyễn Đình Thản
		'-----------------------------------------------------------------------------------*/
	{
		var kt=0;
		var theForm = oCheckBox.form;
		for (var i = 0; i < theForm.length; i++)
		{
			var oInput = theForm.elements[i];
			if (oInput.name.indexOf("chkSelect")!=-1)
			{
				if(oInput.checked==true)
					kt+=1;			
			}
		}
		if (kt==0)
		{
			alert('Không có mẫu tin nào được chọn để xóa!');
			return false;
		}
		else
		{ 
			if (kt>1)
				var x=window.confirm("Bạn thật sự muốn xóa những mẫu tin này?");
			else
				var x=window.confirm("Bạn thật sự muốn xóa mẫu tin này?");
		}	
		return x;
}

function ConfirmDeleteItem()
	/*'---------------------------------------------------------------------------------
		'   Purpose   :   Hàm dùng để hỏi trước khi xóa trên trang detail
		'   Parmeter  :   
		'									
		'   Return    :   
		'                 
		'   Date      :   13/12/2005
		'   Author    :   Nguyễn Đình Thản
		'-----------------------------------------------------------------------------------*/
	{
		var kt;
		kt=window.confirm("Bạn thật sự muốn xóa mẫu tin này?");
	
		return kt;
}
