	var TableResize=
	{
		sResizableElement :"TD,TH",    // This MUST be upper case
		iResizeThreshold:5,
     iEdgeThreshold:5,
     iSizeThreshold:20,
     sVBarID: "VBar",
     sHBarID: "HBar",
     oVBar: null,
     oHBar: null,
     oResizeTarget: null,
     iStart:{x:0,y:0},//鼠标压下时的屏幕坐标
     iEnd: {x:0,y:0},//鼠标抬起时的屏幕坐标
     iSize: {w:0,h:0},//两点确定的框大小
     iOldSize: {w:0,h:0},//被调整的单元格原始大小
     iOldTableSize:{w:0,h:0},//表格的原始大小
     iDirH:1,
     iDirV:2,
     iDirHV:3,
     iDirNone:0,
     iResizeDir:0,//1:只横方向调整大小，2:只纵向调整大小，3:两向同时调整，其它值不调整
		/*
		Creates the VBar on document load
		*/
		createBar:function(barID,iDir)
		{
				// Returns a reference to the resizer VBar for the table
				var objItem = document.getElementById(barID);
				// Check if the item doesn't yet exist
				if (!objItem) 
				{        
						// and Create the item if necessary
						if(iDir==TableResize.iDirH)
							objItem = document.createElement("div");
						else if(iDir==TableResize.iDirV)
							objItem = document.createElement("hr");
						objItem.oncontrolselect =function(){return false;}
						// Setup the bar
						objItem.id = barID;
						objItem.style.position = "absolute";
						objItem.style.top = "0px";
						objItem.style.left = "0px";
						objItem.style.width = (iDir==TableResize.iDirH?2:0);
						objItem.style.height = (iDir==TableResize.iDirV?2:0);
						objItem.style.background = "silver";
						if(iDir==TableResize.iDirH)
						objItem.style.borderLeft = "1px solid red";
						if(iDir==TableResize.iDirV)
						objItem.style.borderTop = "1px solid red";
						objItem.style.display = "none"; 
						// Add the bar to the document
						document.body.appendChild(objItem);
				}
				return objItem;
		},
		//浏览本页面的所有table，绑定可以调整大小的表格
		init:function()
		{
			//TableResize.oVBar=TableResize.createBar(TableResize.sVBarID,TableResize.iDirH);
			//TableResize.oHBar=TableResize.createBar(TableResize.sHBarID,TableResize.iDirV);
			var tables=document.getElementsByTagName('table');
			for(var i=0;i<tables.length;i++)
			{
				this.setTablResizeHandle(tables[i],true)
			}
		},
		setTablResizeHandle:function(objTable,flag)
		{

			var resizeDir=objTable.getAttribute("resizeDir")		
			if(!flag)
			{
				objTable.detachEvent('onmousemove',TableResize_OnMouseMove);
				objTable.detachEvent('onmousedown',TableResize_OnMouseDown);
				objTable.detachEvent('onmouseup',TableResize_OnMouseUp);
			}
			else if(resizeDir!=null&&parseInt(resizeDir)>0)
			{			
				objTable.attachEvent('onmousemove',TableResize_OnMouseMove);
				objTable.attachEvent('onmousedown',TableResize_OnMouseDown);
				objTable.attachEvent('onmouseup',TableResize_OnMouseUp);
				//objTable.attachEvent('onmouseout',function(){if(event.srcElement.tagName=='TABLE'&&TableResize.iResizeDir==0)TableResize.cleanUp()});
			//	objTable.runtimeStyle.tableLayout='fixed';

				for(var i=0;i<objTable.rows.length;i++)
				{
					var row=objTable.rows[i];
					for(var j=0;j<row.length;j++)
					{
						row.cells[j].runtimeStyle.wordWrap='break-word';
						row.cells[j].runtimeStyle.overflow="scroll";
					}
				}
			}
		},
		/*
	Returns a valid resizable element, even if it contains another element 
	which was actually clicked otherwise it returns the top body element.
	*/
		getResizeTarget:function(objReference) 
		{
				var oElement = objReference;

				while (oElement != null && oElement.tagName != null && oElement.tagName != "BODY") 
				{
						if (TableResize.sResizableElement.indexOf(oElement.tagName)>-1) 
						{
								return oElement;
						}
						oElement = oElement.parentElement;
				}
				// The Resizable Element wasn't found
				return null;
		},
		//获取触发事件的表格
		getTable:function(srcElement)
		{
				var oElement = srcElement;
				while (oElement != null && oElement.tagName != null && oElement.tagName != "BODY") 
				{
						if (oElement.tagName=='TABLE') 
						{
								return oElement;
						}
						oElement = oElement.parentElement;
				}
				return null;
		},
		cleanUp:function () 
		{
				// Void the Global variables and hide the resizer VBar.
			this.showBar(this.oResizeTarget,this.iDirHV,false);
			var objTable=TableResize.getTable(TableResize.oResizeTarget==null?event.srcElement:TableResize.oResizeTarget);   
			if(objTable)
				objTable.releaseCapture();
			 this.oResizeTarget= null;
			 this.iStart={x:0,y:0};
			 this.iEnd= {x:0,y:0};
			 this.iSize= {w:0,h:0};
			 this.iOldSize= {w:0,h:0};
			 this.iOldTableSize={w:0,h:0};
			 this.iResizeDir =0;
			return true;
		},

	//对其边框,HorV:1:横向；2：纵向调整；3双向；
		showBar:function(oToAligned,HorV,show)
		{
			if(!show)
			{
				if(((HorV&this.iDirV)==this.iDirV)&&this.oHBar)
				{
					this.oHBar.runtimeStyle.left =0;
					this.oHBar.runtimeStyle.top =0;
					this.oHBar.runtimeStyle.width =0;
					this.oHBar.runtimeStyle.height =0;
					this.oHBar.runtimeStyle.border = "none";
					this.oHBar.runtimeStyle.display = "none";				
				}
				if(((HorV&this.iDirH)==this.iDirH)&&this.oVBar)
				{
						this.oVBar.runtimeStyle.left =0;
						this.oVBar.runtimeStyle.top =0;
						this.oVBar.runtimeStyle.width =0;
						this.oVBar.runtimeStyle.height =0;
					  this.oVBar.runtimeStyle.border = "none"; 
						this.oVBar.runtimeStyle.display = "none";				
				}
			}
			else//需要显示
			{
				var cellH=oToAligned.offsetHeight
				var cellW=oToAligned.offsetWidth;
				var body=window.document.body;
				var left=0;
				var top=0;
				var parent=oToAligned;
				//从表格开始逐级往body遍历所有元素
				//求出当前对象的位置（left,top）
				while(parent!=null)
				{
					if(parent.offsetLeft!=null)
						left+=parent.offsetLeft;
					if(parent.offsetTop!=null)
						top+=parent.offsetTop;
					if(parent.nodeName=="HTML"&&parent.clientHeight>body.clientHeight)
						body=parent;
					parent=parent.offsetParent;
				}
				if((HorV&this.iDirV)==this.iDirV)
				{
					this.oHBar.runtimeStyle.borderTop = "1px solid red"; 
					this.oHBar.runtimeStyle.left =left;				
					this.oHBar.runtimeStyle.top = top+cellH;
					this.oHBar.runtimeStyle.width =cellW;
					this.oHBar.runtimeStyle.height =2;
					this.oHBar.runtimeStyle.display = "inline";
				}
				if((HorV&this.iDirH)==this.iDirH)
				{
					this.oVBar.runtimeStyle.left =left+cellW;				
					this.oVBar.runtimeStyle.top = top;
					this.oVBar.runtimeStyle.width =2;
					this.oVBar.runtimeStyle.height =cellH;
					this.oVBar.runtimeStyle.borderLeft = "1px solid red"; 
					this.oVBar.runtimeStyle.display = "inline";
				}
			}
		}
	}//对象定义结束

	window.attachEvent("onload", function()
	{
		if(document.readyState=="complete")
		{
			TableResize.init();
		}
	});

	//1、没有任何按键时，检测可以拖动的单元
	//2、左键按下时，重新计算被拖动单元的大小
	function TableResize_OnMouseMove() 
	{
		var objTable=TableResize.getTable(TableResize.oResizeTarget==null?event.srcElement:TableResize.oResizeTarget);
		if(objTable==null)
		return true;
		//表格设定的可以调整的大小的方向
		var resizeDir=objTable.getAttribute("resizeDir");
		resizeDir=parseInt(resizeDir);
		    // Change cursor and store cursor position for resize indicator on column
		if(event.button==0)//没有任何按键时，检测可以拖动的单元
		{
			var objToResize = TableResize.getResizeTarget(event.srcElement);
			TableResize.oResizeTarget=objToResize;
			if (!objToResize)
			{
        return true;
			}
			if ((event.offsetX >= (objToResize.offsetWidth - TableResize.iEdgeThreshold))&&
			(event.offsetY >= (objToResize.offsetHeight - TableResize.iEdgeThreshold))&&resizeDir==TableResize.iDirHV) 
			{
					objToResize.runtimeStyle.cursor = "se-resize";//设置被拖动边大小
					//TableResize.showBar(objToResize,TableResize.iDirHV,true);
					TableResize.iResizeDir=TableResize.iDirHV;
			} 
			else  if (event.offsetX >= (objToResize.offsetWidth - TableResize.iEdgeThreshold)&&(resizeDir&TableResize.iDirH)==TableResize.iDirH) 
			{
					objToResize.runtimeStyle.cursor = "col-resize";
					//TableResize.showBar(objToResize,TableResize.iDirV,false);
					//TableResize.showBar(objToResize,TableResize.iDirH,true);
					TableResize.iResizeDir=TableResize.iDirH;
			} 
			else if (event.offsetY >= (objToResize.offsetHeight - TableResize.iEdgeThreshold)&&(resizeDir&TableResize.iDirV)==TableResize.iDirV)
			{
					objToResize.runtimeStyle.cursor = "row-resize";
					//TableResize.showBar(objToResize,TableResize.iDirH,false);
					//TableResize.showBar(objToResize,TableResize.iDirV,true);
					TableResize.iResizeDir=TableResize.iDirV;
			} 
			else 
			{  
					TableResize.cleanUp();//.showBar(objToResize,TableResize.iDirHV,false);
					TableResize.iResizeDir=TableResize.iDirNone;
					TableResize.oResizeTarget=null;
					//恢复原来的光标
					if(objToResize.style.cursor) 
					{
							objToResize.runtimeStyle.cursor = objToResize.style.cursor;
					} 
					else 
					{
							objToResize.runtimeStyle.cursor = "";
					}
			}
		}
		else if(event.button==1)//左键按下时，重新计算被拖动单元的大小
		{
				if(TableResize.oResizeTarget!=null)
				{
					TableResize.iEnd.x=event.screenX;
					TableResize.iEnd.y = event.screenY;
					TableResize.iSize.w = TableResize.iEnd.x - TableResize.iStart.x;
					TableResize.iSize.h =TableResize. iEnd.y -TableResize.iStart.y;
					if((TableResize.iResizeDir&TableResize.iDirH)==TableResize.iDirH)//计算新列宽
					{
						//TableResize.oResizeTarget.runtimeStyle.wordWrap='break-word';
						//TableResize.oResizeTarget.runtimeStyle.overflow="scroll";
						var oAdjacentCell = TableResize.oResizeTarget.nextSibling;
						/*if(oAdjacentCell!=null)
						{

							TableResize.oResizeTarget.runtimeStyle.width =(TableResize.iOldSize.w+TableResize.iSize.w>TableResize.iSizeThreshold)?TableResize.iOldSize.w+TableResize.iSize.w:TableResize.iSizeThreshold;
						}
						else//最后一列*/
						{
							objTable.runtimeStyle.width=TableResize.iOldTableSize.w+TableResize.iSize.w>TableResize.iSizeThreshold?TableResize.iOldTableSize.w+TableResize.iSize.w:TableResize.iSizeThreshold;
							TableResize.oResizeTarget.runtimeStyle.width =(TableResize.iOldSize.w+TableResize.iSize.w>TableResize.iSizeThreshold)?TableResize.iOldSize.w+TableResize.iSize.w:TableResize.iSizeThreshold;
						}
						if(typeof(writeUIAttribute)=='function')
						{
							writeUIAttribute(objTable,'style','width',objTable.runtimeStyle.width);
							writeUIAttribute(TableResize.oResizeTarget,'style','width',TableResize.oResizeTarget.runtimeStyle.width);
						}
					}
					if((TableResize.iResizeDir&TableResize.iDirV)==TableResize.iDirV)//计算新行高
					{
						var oAdjacentRow = TableResize.oResizeTarget.parentElement.nextSibling;
						if(oAdjacentRow!=null)
						{
							TableResize.oResizeTarget.runtimeStyle.height =(TableResize.iOldSize.h+TableResize.iSize.h>TableResize.iSizeThreshold)?TableResize.iOldSize.h+TableResize.iSize.h:TableResize.iSizeThreshold;
						}
						else
						{
							objTable.runtimeStyle.height=TableResize.iOldTableSize.h+TableResize.iSize.h>TableResize.iSizeThreshold?TableResize.iOldTableSize.h+TableResize.iSize.h:TableResize.iSizeThreshold;
							TableResize.oResizeTarget.runtimeStyle.height =(TableResize.iOldSize.h+TableResize.iSize.h>TableResize.iSizeThreshold)?TableResize.iOldSize.h+TableResize.iSize.h:TableResize.iSizeThreshold;
						}
						if(typeof(writeUIAttribute)=='function')
						{
							writeUIAttribute(objTable,'style','height',objTable.runtimeStyle.height);
							writeUIAttribute(TableResize.oResizeTarget,'style','height',TableResize.oResizeTarget.runtimeStyle.height);
						}
					}
					//TableResize.showBar(TableResize.oResizeTarget,TableResize.iResizeDir,true);
				}
		}
		return true;
	}
	/*
	MouseDown event. 
	This fills the globals with tracking information, and displays the 
	vertical bar. This is only done if you are allowed to start resizing.
	*/
	function TableResize_OnMouseDown() 
	{
			// Record start point and show vertical bar resize indicator
			var objTable=TableResize.getTable(TableResize.oResizeTarget==null?event.srcElement:TableResize.oResizeTarget);
			//只有左键键可以拖动大小
			if(event.button==1&&TableResize.iResizeDir!=TableResize.iDirNone&&TableResize.oResizeTarget!=null)
			{
				objTable.setCapture();
				TableResize.iStart.x=event.screenX;
				TableResize.iStart.y=event.screenY;
				TableResize.iOldSize.w=TableResize.oResizeTarget.offsetWidth;
				TableResize.iOldSize.h=TableResize.oResizeTarget.offsetHeight;
				TableResize.iOldTableSize.w=objTable.offsetWidth;
				TableResize.iOldTableSize.h=objTable.offsetHeight;
			}
			return true;

	}
	/*
	MouseUp event. 
	This finishes the resize.
	*/
	function TableResize_OnMouseUp() 
	{
		var objTable=TableResize.getTable(TableResize.oResizeTarget==null?event.srcElement:TableResize.oResizeTarget);

		if(typeof(writeUIAttribute)=='function')
		{
			if((TableResize.iResizeDir&TableResize.iDirH)==TableResize.iDirH)//计算新列宽
			{
				writeUIAttribute(objTable,'style','width',objTable.runtimeStyle.width);
				writeUIAttribute(TableResize.oResizeTarget,'style','width',TableResize.oResizeTarget.runtimeStyle.width);
			}
			if((TableResize.iResizeDir&TableResize.iDirV)==TableResize.iDirV)//计算新行高
			{
				writeUIAttribute(objTable,'style','height',objTable.runtimeStyle.height);
				writeUIAttribute(TableResize.oResizeTarget,'style','height',TableResize.oResizeTarget.runtimeStyle.height);
			}
		}
		// Resize the column and its adjacent sibling if position and size are within threshold values 
		TableResize.cleanUp();
		return true;
}