Files
Facilitor/APPL/CAD/DragAndDrop.js
Jos Groot Lipman 081a30d335 FSN#30754 Google Minifier maakte dat FireFox slepen niet goed werkte
svn path=/Website/trunk/; revision=23163
2014-10-29 13:28:02 +00:00

93 lines
2.6 KiB
JavaScript

/*Credit JavaScript Kit www.javascriptkit.com
includer kan event functie drag_onMouseOut(dragElement) definieren
en drag_onDragEnd(dragElement)
*/
var evt;
var dragapproved=false;
var dragElement,dragStartX,dragStartY;
// show of hide van dragElement scrollde ons navi-frame nogal eens.
// Het lukte niet om dat te voorkomen dus gewoon positie onthouden
// en vaak terugzetten.
var naviTop;
function dragmove(evt){
if (!dragapproved)
return;
if (!evt.which==1 && !evt.button==1)
{
$(dragElement).hide();
$("#navigationCell").scrollTop(naviTop);
return;
}
if (!evt) evt=event;
$(dragElement).show()
.css('position', 'absolute')
.css('left', temp1+evt.clientX-dragStartX + "px")
.css('top', temp2+evt.clientY-dragStartY + "px");
$("#navigationCell").scrollTop(naviTop);
return false;
}
// Let op: we gebruiken eigenlijk default.asp/mydragstart
function dragstart(evt){
if (!evt) evt=event;
var srcEl = evt.srcElement || evt.target;
if (srcEl.className=="draggable")
{
/* global */ naviTop = $("#navigationCell").scrollTop();
clearSelect();
dragapproved=true;
dragElement=srcEl;
temp1=$(dragElement).position().left;
temp2=$(dragElement).position().top;
dragStartX=evt.clientX;
dragStartY=evt.clientY;
}
}
function dragend(evt){
if (dragapproved)
{
dragapproved=false;
$(dragElement).show()
.css('left', temp1 + "px")
.css('top', temp2 + "px");
$("#navigationCell").scrollTop(naviTop);
if (typeof drag_onDragEnd == 'function')
drag_onDragEnd.call(this, dragElement,evt||event);
}
}
function mouseout(evt){
if (dragapproved)
{
clearSelect();
$(dragElement).hide();
$("#navigationCell").scrollTop(naviTop);
if (typeof drag_onMouseOut == 'function')
drag_onMouseOut.call(this, dragElement,evt||event);
}
}
function draginit()
{
$(document).on("mouseout", mouseout)
.on("mousedown", dragstart)
.on("mousemove", dragmove)
.on("mouseup", dragend);
}
function clearSelect()
{
if (document.selection) // IE
{
document.selection.clear(); // Is anders irritant
}
else
{
if (document.getSelection) // Safari
document.getSelection().removeAllRanges(); // Is anders irritant
}
}