日期:2014-05-16 浏览次数:20413 次
<script type="text/javascript"> var Class = { //创建类 create: function () { return function () { this.initialize.apply(this, arguments); }; } }; var $A = function (a) { //转换数组 return a ? Array.apply(null, a) : new Array; }; var $ = function (id) { //获取对象 return document.getElementById(id); }; Object.extend = function (a, b) { //追加方法 for (var i in b) a[i] = b[i]; return a; }; Object.extend(Object, { addEvent : function (a, b, c, d) { //添加函数 if (a.attachEvent) a.attachEvent(b[0], c); else a.addEventListener(b[1] || b[0].replace(/^on/, ""), c, d || false); return c; }, delEvent : function (a, b, c, d) { if (a.detachEvent) a.detachEvent(b[0], c); else a.removeEventListener(b[1] || b[0].replace(/^on/, ""), c, d || false); return c; }, reEvent : function () { //获取Event return window.event ? window.event : (function (o) { do { o = o.caller; } while (o && !/^\[object[ A-Za-z]*Event\]$/.test(o.arguments[0])); return o.arguments[0]; })(this.reEvent); } }); Function.prototype.bind = function () { //绑定事件 var wc = this, a = $A(arguments), o = a.shift(); return function () { wc.apply(o, a.concat($A(arguments))); }; }; var Table = Class.create(); Table.prototype = { initialize : function () { //初始化 var wc = this; wc.cols = new Array; //创建列 }, addCols : function (o) { //添加列 var wc = this, cols = wc.cols, i = cols.length; return cols[i] = { id : i, div : o, rows : new Array, //创建行 addRow : wc.addRow, chRow : wc.chRow, inRow : wc.inRow, delRow : wc.delRow }; }, addRow : function (o) { //添加行 var wc = this, rows = wc.rows, i = rows.length; return rows[i] = { id : i, div : o, cols : wc }; }, inRow : function (a, b) { //插入行 var wc = b.cols = this, rows = wc.rows, i; if (a < rows.length) { for (i = a ; i < rows.length ; i ++) rows[i].id ++; rows.splice(a, 0, b); b.id = a; return b; } else { b.id = rows.length; return rows[b.id] = b; } }, delRow : function (a) { //删除列 var wc = this, rows = wc.rows, i, r; if (a >= rows.length) return; r = rows[a]; rows.splice(a, 1); for (i = a ; i < rows.length ; i ++) rows[i].id = i; return r; } }; var CDrag = Class.create(); CDrag.IE = /MSIE/.test(window.navigator.userAgent); CDrag.prototype = { initialize : function () { //初始化成员 var wc = this; wc.table = new Table; //建立表格对象 wc.iFunc = wc.eFunc = null; wc.obj = { on : { a : null, b : "" }, row : null, left : 0, top : 0 }; wc.temp = { row : null, div : document.createElement("div") }; wc.temp.div.setAttribute(CDrag.IE ? "className" : "class", "CDrag_temp_div"); wc.temp.div.innerHTML = " "; }, reMouse : function (a) { //获取鼠标位置 var e = Object.reEvent(); return { x : document.documentElement.scrollLeft + e.clientX, y : document.documentElement.scrollTop + e.clientY }; }, rePosition : function (o) { //获取元素绝对位置 var $x = $y = 0; do { $x += o.offsetLeft; $y += o.offsetTop; } while ((o = o.offsetParent) && o.tagName != "BODY"); return { x : $x, y : $y }; }, sMove : function (o) { //当拖动开始时设置参数 var wc = this; if (wc.iFunc || wc.eFinc) return; var mouse = wc.reMouse(), obj = wc.obj, temp = wc.temp, div = o.div, position = wc.rePosition(div); obj.row = o; obj.on.b = "me"; obj.left = mouse.x - position.x; obj.top = mouse.y - position.y; temp.row = document.body.appendChild(div.cloneNode(true)); //复制预拖拽对象 with (temp.row.style) { //设置复制对象 position = "absolute"; left = mouse.x - obj.left + "px"; top = mouse.y - obj.top + "px"; zIndex = 100; opacity = "0.3"; filter = "alpha(opacity:30)"; } with (temp.div.style) { //设置站位对象 height = div.clientHeight + "px"; width = div.clientWidth + "px"; } /*div.parentNode.insertBefore(temp.div, div); div.style.display = "none"; //隐