function mouseEvent(type, sx, sy, cx, cy) { var evt; var e = { bubbles: true, cancelable: (type != "mousemove"), view: window, detail: 0, screenX: sx, screenY: sy, clientX: cx, clientY: cy, ctrlKey: false, altKey: false, shiftKey: false, metaKey: false, button: 0, relatedTarget: undefined }; if (typeof( document.createEvent ) == "function") { evt = document.createEvent("MouseEvents"); evt.initMouseEvent(type, e.bubbles, e.cancelable, e.view, e.detail, e.screenX, e.screenY, e.clientX, e.clientY, e.ctrlKey, e.altKey, e.shiftKey, e.metaKey, e.button, document.body.parentNode); } else if (document.createEventObject) { evt = document.createEventObject(); for (prop in e) { evt[prop] = e[prop]; } evt.button = { 0:1, 1:4, 2:2 }[evt.button] || evt.button; } return evt; } var a = document.getElementsByClassName("spinner")[0], b = document.getElementById("speed"); a.addEventListener("mousemove", function(e){console.log("clientX:" + e.clientX +", clientY:" + e.clientY +", screenX:" + e.screenX +", screenY:" + e.screenY +", movementX:" + e.movementX);}); function bootRot(x, y){ a.dispatchEvent(mouseEvent("mousemove", x, y, x, y)); } function bootStart(){ if ((b.innerHTML != "Dragging") && parseInt(b.innerHTML) < 1600){ var xInicial = 0, yInicial = 0; // "parseInt(b.innerHTML) < 1600": 1600 is the minimum value in RPMs from which the spinner rotates again. // This value can be edited! for(var ofParent = a; ofParent; ofParent = ofParent.offsetParent){ xInicial += ofParent.offsetLeft; yInicial += ofParent.offsetTop; } var bootWidth = xInicial + a.offsetWidth, bootHeight = xInicial + a.offsetHeight; var Xs = [xInicial, (bootWidth)/2, bootHeight, (bootWidth)/2], /*[462, 591, 729, 869],*/ Ys = [(bootHeight)/2, yInicial, (bootHeight)/2, bootHeight], /*[77, 77, 77, 77],*/ count = 0, speedBoot = 20; // speedBoot = 20: Time in milliseconds that the mouse pointer would by points (Xs,Ys) forming a perfect circle. // This value can also be edited. a.dispatchEvent(mouseEvent("mousedown", Xs[0], Ys[0], Xs[0], Ys[0])); bootRot(Xs[0], Ys[0]); setTimeout(function(){ bootRot(Xs[1], Ys[1]); }, (count++)*speedBoot); setTimeout(function(){ bootRot(Xs[2], Ys[2]); }, (count++)*speedBoot); setTimeout(function(){ bootRot(Xs[3], Ys[3]); a.dispatchEvent(mouseEvent("mouseup", Xs[3], Ys[3], Xs[3], Ys[3])); }, (count++)*speedBoot); } } var bootIntervalId = setInterval(bootStart, 1800); // bootStart, 20: Time in milliseconds to swing reset after reaching the minimum RPM value. // This value can also be edited. // It is recommended that greater values for computers that do not have advanced hardware configuration! function bootStop(){ // bootStop(): Command stops the execution of the script. clearInterval(bootIntervalId); }