(function(ns) { ns.Draggable = function(object, triggerObject) { if (!object) throw 'Draggable needs an HTML object'; if (!triggerObject) triggerObject = object; var dragging = true; var current = { x: 0, y: 0 }; var origin = { x: 0, y: 0 } var min = { x: null, y: null } ns.CSS.set(triggerObject, 'cursor', 'move', 'hover'); min.x = ns.Browser.getWindowSize().width - object.offsetWidth; min.y = ns.Browser.getWindowSize().height - object.offsetHeight; triggerObject.onmousedown = startDrag; document.onmouseup = stopDrag; triggerObject.onstartdrag = function() { return false; } function startDrag(e) { var e = window.event || e; if (ns.Browser.chrome) e.preventDefault(); dragging = true; origin.x = e.clientX; origin.y = e.clientY; current.x = ns.getPosition(object).x; current.y = ns.getPosition(object).y; document.onmousemove = drag; }; function stopDrag(e) { var e = window.event || e; dragging = false; document.onmousemove = null; }; function drag(e) { var e = window.event || e; var dX = e.clientX - origin.x + current.x; var dY = e.clientY - origin.y + current.y; object.style.left = dX+'px'; object.style.top = dY+'px'; }; var that = { _typeof: '[Object ThelisResa:Draggable]' ,toString: function() { return that._typeof; } } return that; }; }(ThelisResa));