<html>
<head>
<script type='text/javascript'>
var dragObject = null;
var tmpReplObj = null;
var mouseOffset = null;
var Dclass = null;
var DropObj = null;
//////////////////////////////////////////////////////////
/////////////DISABLE SELECTION////////////////////////
function disableSelection(element){
element.onselectstart = function() {
return false;
};
element.unselectable = "on";
element.style.MozUserSelect = "none";
element.style.cursor = "default";
}
//////////////////////////////////////////////////////////
/////////////ENABLE SELECTION////////////////////////
function enableSelection(element){
element.onselectstart ="";
element.unselectable = "";
element.style.MozUserSelect = "";
element.style.cursor = "";
}
function getMouseOffset(target, ev){
ev = ev || window.event;
var docPos = getPosition(target);
var mousePos = mouseCoords(ev);
return {x:mousePos.x - docPos.x, y:mousePos.y - docPos.y};
}
function getPosition(e){
var left = 0;
var top = 0;
while (e.offsetParent){
left += e.offsetLeft;
top += e.offsetTop;
e = e.offsetParent;
}
left += e.offsetLeft;
top += e.offsetTop;
return {x:left, y:top};
}
function mouseCoords(ev){
if(ev.pageX || ev.pageY){
return {x:ev.pageX, y:ev.pageY};
}
return {
x:ev.clientX + document.body.scrollLeft - document.body.clientLeft,
y:ev.clientY + document.body.scrollTop - document.body.clientTop
};
}
function mouseMove(ev){
disableSelection(document.body);
document.body.style.cursor='move';
ev = ev || window.event;
var mousePos = mouseCoords(ev);
if(dragObject){
if(!tmpReplObj)
{
p=dragObject.parentNode;
tmpReplObj = dragObject.cloneNode(true);
dragObject.parentNode.insertBefore(tmpReplObj, dragObject);
tmpReplObj.id="tmpRpl"+dragObject.id;
if(dragObject.tagName=="TR")
{
tmpReplObjL=tmpReplObj.cells.length;
for(i=0;i<tmpReplObjL;i++)
{
tmpReplObj.cells[i].innerHTML=" ";
//TOP BORDER
tmpReplObj.cells[i].style.borderTopStyle='dashed';
tmpReplObj.cells[i].style.borderTopColor='black';
tmpReplObj.cells[i].style.borderTopWidth='1px';
//BOTTOM BORDER
tmpReplObj.cells[i].style.borderBottomStyle='dashed';
tmpReplObj.cells[i].style.borderBottomColor='black';
tmpReplObj.cells[i].style.borderBottomWidth='1px';
//LEFT BORDER first col
if(i==0)
{
tmpReplObj.cells[i].style.borderLeftStyle='dashed';
tmpReplObj.cells[i].style.borderLeftColor='black';
tmpReplObj.cells[i].style.borderLeftWidth='1px';
}
//RIGHT BORDER last col
if(i==tmpReplObjL-1)
{
tmpReplObj.cells[i].style.borderRightStyle='dashed';
tmpReplObj.cells[i].style.borderRightColor='black';
tmpReplObj.cells[i].style.borderRightWidth='1px';
}
}
}
else
{
tmpReplObj.innerHTML=" ";
tmpReplObj.style.borderStyle='dashed';
tmpReplObj.style.borderColor='black';
tmpReplObj.style.borderWidth='1px';
}
}
t=mousePos.y - mouseOffset.y;
l=mousePos.x - mouseOffset.x;
dragObject.style.position = "absolute";
dragObject.style.backgroundColor='';
dragObject.style.zIndex=100;
dragObject.style.top = t;
dragObject.style.left = l;
for(dobj=0;dobj<DropObj.length;dobj++)
{
if(DropObj[dobj]!=undefined)
{
//alert(mousePos.y+">="+DropObj[dobj].style.top);
if( (parseInt(mousePos.y,10)>=parseInt(DropObj[dobj].style.top,10)) && (parseInt(mousePos.y,10)<=(parseInt(DropObj[dobj].style.top,10)+parseInt(DropObj[dobj].style.height,10))) )
{
DropObj[dobj].style.backgroundColor='red';
}
}
}
document.getElementById('test').innerHTML= "cursorX="+ l +"cursorY="+t+"****";
document.getElementById('test').innerHTML+= "offset Y="+ mouseOffset.y +" Offset X="+mouseOffset.x+"****";
document.getElementById('test').innerHTML+= "cursorX="+mousePos.x+"cursorY="+mousePos.y;
document.getElementById('test').innerHTML+= "length= "+dragObject.style.width +" height" +dragObject.style.height;
return false;
}
}
function mouseUp(){
enableSelection(document.body);
document.onmousemove = "";
document.onmouseup = "";
document.body.style.cursor='auto';
dragObject.style.top=tmpReplObj.style.top;
dragObject.style.left=tmpReplObj.style.left;
dragObject.style.position='';
tmpReplObj.parentNode.replaceChild(dragObject,tmpReplObj);
tmpReplObj = null;
dragObject = null;
mouseOffset = null;
Dclass = null;
DropObj=null;
}
function drag(item,ev,fctmove,fctstop,dropClass,parentTable){
ev = ev || item.event;
dragObject = item;
w=parseInt(dragObject.offsetWidth,10)-parseInt(4,10);
h=parseInt(dragObject.offsetHeight,10)-parseInt(4,10);
dragObject.style.width=w;
dragObject.style.height=h;
mouseOffset = getMouseOffset(item, ev);
Dclass = dropClass;
DropObj=new Array();
t=document.getElementById(parentTable).tBodies[0];
colors = new Array(14)
colors[0]="0"
colors[1]="1"
colors[2]="2"
colors[3]="3"
colors[4]="4"
colors[5]="5"
colors[5]="6"
colors[6]="7"
colors[7]="8"
colors[8]="9"
colors[9]="a"
colors[10]="b"
colors[11]="c"
colors[12]="d"
colors[13]="e"
colors[14]="f"
digit = new Array(5)
color=""
for (i=0;i<6;i++){
digit[i]=colors[Math.round(Math.random()*14)]
color = color+digit[i]
}
for(r=0;r<t.rows.length;r++)
{
if( (t.rows[r].className==dropClass) && (t.rows[r]!=dragObject) )
{
t.rows[r].style.backgroundColor=color;
t.rows[r].style.zIndex=0;
t.rows[r].style.width=parseInt(t.rows[r].offsetWidth,10)-parseInt(4,10);
t.rows[r].style.height=parseInt(t.rows[r].offsetHeight,10)-parseInt(4,10);
DropPos=getPosition(t.rows[r]);
if(t.rows[r].style.top=="")
{
t.rows[r].style.top=DropPos.y;
t.rows[r].style.left=DropPos.x;
}
DropObj[r]=t.rows[r];
// alert(DropObj[r]+"1st");
}
/*
cells LOOP
for(c=0;c<t.rows[r].cells.length;c++)
{
alert(t.rows[r].cells[c].className);
}
*/
}
document.onmousemove = fctmove;
document.onmouseup = fctstop;
}
</script>
</head>
<body>
<table border=1 id="mainDt">
<colgroup>
<col width="25%">
<col width="75%">
</colgroup>
<tr style='height:10px;' onmouseOver="this.style.borderStyle='dashed';this.style.borderColor='black';this.style.borderWidth='10px';">
<th colspan='2'>Monday asdfsadf asdf fdsaadsf sfda f dsafd sa fsd afd sa</th>
</tr>
<tr onmousedown="drag(this,event,mouseMove,mouseUp,'droppable','mainDt');">
<th>Time</th>
<th>Lesson**</th>
</tr>
<tr class="droppable" onmousedown="drag(this,event,mouseMove,mouseUp,'droppable','mainDt');">
<td>1.00pm</td>
<td>Pilates (Private Lesson)</td>
</tr>
<tr class="droppable" onmousedown="drag(this,event,mouseMove,mouseUp,'droppable','mainDt');">
<td>2.00pm</td>
<td >Nursery Playdance</td>
</tr>
<tr class="droppable" onmousedown="drag(this,event,mouseMove,mouseUp,'droppable','mainDt');">
<td>3.00pm</td>
<td>Ballet Primary</td>
</tr>
<tr class="droppable" onmousedown="drag(this,event,mouseMove,mouseUp,'droppable','mainDt');">
<td>4.00pm</td>
<td>Football</td>
</tr>
<tr class="droppable" onmousedown="drag(this,event,mouseMove,mouseUp,'droppable','mainDt');">
<td>5.00pm</td>
<td>Boxing Primary</td>
</tr>
<tr class="droppable" onmousedown="drag(this,event,mouseMove,mouseUp,'droppable','mainDt');">
<td>6.00pm</td>
<td>Phone call</td>
</tr>
<tr class="droppable" onmousedown="drag(this,event,mouseMove,mouseUp,'droppable','mainDt');">
<td>7.00pm</td>
<td>Skype meeting</td>
</tr>
<tr class="droppable" onmousedown="drag(this,event,mouseMove,mouseUp,'droppable','mainDt');">
<td>8.00pm</td>
<td>Ballet Primary</td>
</tr>
<tr class="droppable" onmousedown="drag(this,event,mouseMove,mouseUp,'droppable','mainDt');">
<td>9.00pm</td>
<td>Bar meeting</td>
</tr>
<tr class="droppable" onmousedown="drag(this,event,mouseMove,mouseUp,'droppable','mainDt');">
<td >10.00pm</td>
<td >Clubbing</td>
</tr>
</table>
<span id='test'></span>
</body>
</html>
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
81:
82:
83:
84:
85:
86:
87:
88:
89:
90:
91:
92:
93:
94:
95:
96:
97:
98:
99:
100:
101:
102:
103:
104:
105:
106:
107:
108:
109:
110:
111:
112:
113:
114:
115:
116:
117:
118:
119:
120:
121:
122:
123:
124:
125:
126:
127:
128:
129:
130:
131:
132:
133:
134:
135:
136:
137:
138:
139:
140:
141:
142:
143:
144:
145:
146:
147:
148:
149:
150:
151:
152:
153:
154:
155:
156:
157:
158:
159:
160:
161:
162:
163:
164:
165:
166:
167:
168:
169:
170:
171:
172:
173:
174:
175:
176:
177:
178:
179:
180:
181:
182:
183:
184:
185:
186:
187:
188:
189:
190:
191:
192:
193:
194:
195:
196:
197:
198:
199:
200:
201:
202:
203:
204:
205:
206:
207:
208:
209:
210:
211:
212:
213:
214:
215:
216:
217:
218:
219:
220:
221:
222:
223:
224:
225:
226:
227:
228:
229:
230:
231:
232:
233:
234:
235:
236:
237:
238:
239:
240:
241:
242:
243:
244:
245:
246:
247:
248:
249:
250:
251:
252:
253:
254:
255:
256:
257:
258:
259:
260:
261:
262:
263:
264:
265:
266:
267:
268:
269:
270:
271:
272:
273:
274:
275:
276:
277:
278:
279:
280:
281:
282:
283:
284:
285:
286:
287:
288:
289:
290:
291:
292:
293:
294:
295:
296:
297:
298:
299:
300:
301:
302:
303:
304:
by: scrathcyboyPosted on 2008-08-10 at 16:43:23ID: 22201125
look at these for eduction, you will see the differences in IE FF --
amming/jav ascript/mk /column2/ /documenta tion/Apple Applicatio ns/ Concept ual/Safari JSProgTopi cs/Tasks/D ragAndDrop .html avascript- drag-and-d rop-tutori al.aspx -and-drop. php
www.webreference.com/progr
http://developer.apple.com
luke.breuer.com/tutorial/j
elouai.com/javascript-drag
those are working in firefox