Ik heb een nieuwe versie, waarvan ik denk dat 'ie werkt
Duurde wat lang doordat ik problemen met de scope tegenkwam. 't Spel bestaat namelijk uit 2 delen - een hoofdpagina en een iframe..
Test 't maar eens
Settings staan op regel 7.
[JS](function() {
try {
function main () {
try {
var Settings = {
USERNAME: "...",
PASSWORD: "...",
TIMER_MARGIN: 1500, //ms
SCRIPT_TITLE: "Script",
NAMESPACE: "_dannydaboy"
};
function add(parent, tag, attributes) {
var el = create(tag, attributes);
parent.appendChild(el);
return el;
}
function create(tag, attributes) {
var el = document.createElement(tag);
if (attributes) extend(el, attributes, true, true);
return el;
}
function extend(dest, source, recursive, force) {
for (var k in source) {
var hasK = k in dest;
if (recursive && hasK && typeof source[k] == "object" && typeof dest[k] == "object") {
extend(dest[k], source[k], recursive, force);
}
else if (force || !hasK) {
dest[k] = source[k];
}
}
}
function createCookie(name, value, seconds) {
var expires;
if (seconds) {
var date = new Date();
date.setTime(date.getTime() + seconds * 1000);
expires = "; expires=" + date.toGMTString();
}
else {
expires = "";
}
document.cookie = name + "=" + value + expires + "; path=/";
}
function readCookie(name) {
var nameEQ = name + "=";
var ca = document.cookie.split(';');
for (var i=0; i < ca.length; i++) {
var c = ca;
while (c.charAt(0) == ' ') {
c = c.substring(1, c.length);
}
if (c.indexOf(nameEQ) == 0) {
return c.substring(nameEQ.length, c.length);
}
}
return null;
}
function eraseCookie(name) {
createCookie(name, "", -1);
}
function page(href) {
var mainFrame = name("mainFrame", window.top)[0];
console.log(mainFrame);
mainFrame.src = href;
}
function onTimeout() {
if (enabled) {
page("forums.php");
}
}
function id (n, w) {
return (w || window).document.getElementById(n);
}
function name(n, w) {
return (w || window).document.getElementsByName(n);
}
function tag (n, w) {
return (w || window).document.getElementsByTagName(n);
}
var enabled = readCookie("enabled") != "false",
match = document.location.toString().match(/\/(\w+)\.php/);
var Space;
if (self == top) {
console.log();
console.log(window);
if (!match && id("header_login")) {
var form = id("username").parentNode
id("username").value = Settings.USERNAME;
id("password").value = Settings.PASSWORD;
form.constructor.prototype.submit.call(form);
}
else if (!Space) {
Space = window[Settings.NAMESPACE] = {
UI: (function() {
document = document || window.document;
var container = add(document.body, "div", {
style: {
position: "fixed",
MozUserSelect: "none",
top: 0,
left: 0
}
});
var ui = add(container, "div", {
style: {
position: "absolute",
backgroundColor: enabled ? "#0F0" : "#F00",
cursor: "move",
top: parseInt(readCookie("initY") || 0, 10) + "px",
left: parseInt(readCookie("initX") || 0, 10) + "px"
}
});
var t = add(ui, "table", {
style: {
width: "300px"
}
});
add(add(t, "tr"), "td", {
className: "subtitle",
colSpan: 2,
innerHTML: Settings.SCRIPT_TITLE
});
var tr = add(t, "tr");
var td = add(tr, "td", {
className: "maintxt",
height: 20,
width: "50%"
});
add(td, "b", {
innerHTML: "Promotie"
});
var promotieTd = add(tr, "td", {
className: "maintxt",
width: "50%"
});
tr = add(t, "tr");
td = add(tr, "td", {
className: "maintxt",
height: 20,
width: "50%"
});
add(td, "b", {
innerHTML: "Script running"
});
td = add(tr, "td", {
className: "maintxt",
width: "50%",
style: {
cursor: "pointer"
}
});
var runningImg = add(td, "img", {
src: "images/" + (enabled ? 0 : 1) + ".png"
});
function stopPropagation(e) {
e.stopPropagation();
}
function toggle() {
enabled = !enabled;
runningImg.src = "images/" + (enabled ? 0 : 1) + ".png";
ui.style.backgroundColor = enabled ? "#0F0" : "#F00";
createCookie("enabled", enabled);
}
td.addEventListener("mousedown", stopPropagation, false);
td.addEventListener("click", toggle, false);
var startX, startY, initX, initY;
function startDrag(e) {
startX = e.clientX;
startY = e.clientY;
initX = ui.offsetLeft;
initY = ui.offsetTop;
with (container.style) {
width = "100%";
height = "100%";
}
document.body.addEventListener("mouseup", stopDrag, false);
document.body.addEventListener("mousemove", doDrag, false);
}
function doDrag(e) {
var dX = e.clientX - startX;
var dY = e.clientY - startY;
with (ui.style) {
top = initY + dY + "px";
left = initX + dX + "px";
}
}
function stopDrag(e) {
createCookie("initY", ui.offsetTop);
createCookie("initX", ui.offsetLeft);
with (container.style) {
width = 0;
height = 0;
}
document.body.removeEventListener("mousemove", doDrag, false);
document.body.removeEventListener("mouseup", stopDrag, false);
}
ui.addEventListener("mousedown", startDrag, false);
return {
setTime: function(ms) {
ms = Math.max(0, ms);
var tSec = Math.ceil(ms / 1000);
var s = tSec % 60;
var m = (tSec - s) / 60 % 60;
var h = tSec - 60 * m - s;
promotieTd.innerHTML = h + ":" + (m < 10 ? "0" : "") + m + ":" + (s < 10 ? "0" : "") + s;
}
};
})(window.top.document),
Timer: (function() {
var time, timer;
return {
setTime: function(ms) {
time = Math.max(0, ms);
Space.UI.setTime(time);
},
start: function() {
if (!timer) {
var self = this;
timer = setInterval(function() {
time -= 1000;
if (time <= 0) {
self.stop();
}
Space.UI.setTime(time);
}, 1000);
}
},
stop: function() {
if (timer) {
clearInterval(timer);
}
}
};
})()
};
console.log(Space);
}
}
else {
console.log();
console.log(window, match);
Space = window.top[Settings.NAMESPACE];
if (Space && match) {
var dTime;
switch (match[1]) {
case "forums": //Promotiepagina
//Zoeken naar button
var inputs = tag("input"), i = 0;
var a = "Gen", b = "ove", c = "se";
while (i < inputs.length && inputs.value != "Stem op " + a + b + c + "!") {
i++;
}
if (i < inputs.length) { //Button gevonden
inputs.click();
}
else { //Button niet gevonden
match = id("aftellen_23").innerHTML.match(/\d+/g);
var m = parseInt(match[0], 10);
var s = parseInt(match[1], 10);
dTime = (m * 60 + s) * 1000 + Settings.TIMER_MARGIN;
createCookie("time", (new Date()).getTime() + dTime);
Space.Timer.setTime(dTime);
Space.Timer.start();
setTimeout(onTimeout, dTime);
}
break;
case "login":
name("login")[0].value = Settings.USERNAME;
name("pass")[0].value = Settings.PASSWORD;
name("submit")[0].click();
break;
default: //Alle andere pagina's
var date = new Date();
var time = readCookie("time");
if (time) {
time = parseInt(time, 10);
dTime = time - (new Date()).getTime();
console.log(match[1], dTime);
if (dTime <= 0) {
dTime = 0;
onTimeout();
}
else {
Space.Timer.setTime(dTime);
Space.Timer.start();
setTimeout(onTimeout, dTime);
}
}
else {
onTimeout();
}
break;
}
}
else {
top.addEventListener("load", onTimeout, false);
}
}
}
catch (e) {
console.error(e.message);
}
}
function scriptMainLoader() {
addJS(null, null, main);
}
function addJS(text, s_URL, funcToRun) {
var D = document;
var scriptNode = D.createElement('script');
scriptNode.type = "text/javascript";
if (text) scriptNode.textContent = text;
if (s_URL) scriptNode.src = s_URL;
if (funcToRun) scriptNode.textContent = '(' + funcToRun.toString() + ')()';
var targ = D.getElementsByTagName ('head')[0] || D.body || D.documentElement;
targ.appendChild (scriptNode);
}
window.addEventListener("load", scriptMainLoader, false);
}
catch (e) {
console.error(e.message);
}
})();[/JS]

Test 't maar eens

[JS](function() {
try {
function main () {
try {
var Settings = {
USERNAME: "...",
PASSWORD: "...",
TIMER_MARGIN: 1500, //ms
SCRIPT_TITLE: "Script",
NAMESPACE: "_dannydaboy"
};
function add(parent, tag, attributes) {
var el = create(tag, attributes);
parent.appendChild(el);
return el;
}
function create(tag, attributes) {
var el = document.createElement(tag);
if (attributes) extend(el, attributes, true, true);
return el;
}
function extend(dest, source, recursive, force) {
for (var k in source) {
var hasK = k in dest;
if (recursive && hasK && typeof source[k] == "object" && typeof dest[k] == "object") {
extend(dest[k], source[k], recursive, force);
}
else if (force || !hasK) {
dest[k] = source[k];
}
}
}
function createCookie(name, value, seconds) {
var expires;
if (seconds) {
var date = new Date();
date.setTime(date.getTime() + seconds * 1000);
expires = "; expires=" + date.toGMTString();
}
else {
expires = "";
}
document.cookie = name + "=" + value + expires + "; path=/";
}
function readCookie(name) {
var nameEQ = name + "=";
var ca = document.cookie.split(';');
for (var i=0; i < ca.length; i++) {
var c = ca;
while (c.charAt(0) == ' ') {
c = c.substring(1, c.length);
}
if (c.indexOf(nameEQ) == 0) {
return c.substring(nameEQ.length, c.length);
}
}
return null;
}
function eraseCookie(name) {
createCookie(name, "", -1);
}
function page(href) {
var mainFrame = name("mainFrame", window.top)[0];
console.log(mainFrame);
mainFrame.src = href;
}
function onTimeout() {
if (enabled) {
page("forums.php");
}
}
function id (n, w) {
return (w || window).document.getElementById(n);
}
function name(n, w) {
return (w || window).document.getElementsByName(n);
}
function tag (n, w) {
return (w || window).document.getElementsByTagName(n);
}
var enabled = readCookie("enabled") != "false",
match = document.location.toString().match(/\/(\w+)\.php/);
var Space;
if (self == top) {
console.log();
console.log(window);
if (!match && id("header_login")) {
var form = id("username").parentNode
id("username").value = Settings.USERNAME;
id("password").value = Settings.PASSWORD;
form.constructor.prototype.submit.call(form);
}
else if (!Space) {
Space = window[Settings.NAMESPACE] = {
UI: (function() {
document = document || window.document;
var container = add(document.body, "div", {
style: {
position: "fixed",
MozUserSelect: "none",
top: 0,
left: 0
}
});
var ui = add(container, "div", {
style: {
position: "absolute",
backgroundColor: enabled ? "#0F0" : "#F00",
cursor: "move",
top: parseInt(readCookie("initY") || 0, 10) + "px",
left: parseInt(readCookie("initX") || 0, 10) + "px"
}
});
var t = add(ui, "table", {
style: {
width: "300px"
}
});
add(add(t, "tr"), "td", {
className: "subtitle",
colSpan: 2,
innerHTML: Settings.SCRIPT_TITLE
});
var tr = add(t, "tr");
var td = add(tr, "td", {
className: "maintxt",
height: 20,
width: "50%"
});
add(td, "b", {
innerHTML: "Promotie"
});
var promotieTd = add(tr, "td", {
className: "maintxt",
width: "50%"
});
tr = add(t, "tr");
td = add(tr, "td", {
className: "maintxt",
height: 20,
width: "50%"
});
add(td, "b", {
innerHTML: "Script running"
});
td = add(tr, "td", {
className: "maintxt",
width: "50%",
style: {
cursor: "pointer"
}
});
var runningImg = add(td, "img", {
src: "images/" + (enabled ? 0 : 1) + ".png"
});
function stopPropagation(e) {
e.stopPropagation();
}
function toggle() {
enabled = !enabled;
runningImg.src = "images/" + (enabled ? 0 : 1) + ".png";
ui.style.backgroundColor = enabled ? "#0F0" : "#F00";
createCookie("enabled", enabled);
}
td.addEventListener("mousedown", stopPropagation, false);
td.addEventListener("click", toggle, false);
var startX, startY, initX, initY;
function startDrag(e) {
startX = e.clientX;
startY = e.clientY;
initX = ui.offsetLeft;
initY = ui.offsetTop;
with (container.style) {
width = "100%";
height = "100%";
}
document.body.addEventListener("mouseup", stopDrag, false);
document.body.addEventListener("mousemove", doDrag, false);
}
function doDrag(e) {
var dX = e.clientX - startX;
var dY = e.clientY - startY;
with (ui.style) {
top = initY + dY + "px";
left = initX + dX + "px";
}
}
function stopDrag(e) {
createCookie("initY", ui.offsetTop);
createCookie("initX", ui.offsetLeft);
with (container.style) {
width = 0;
height = 0;
}
document.body.removeEventListener("mousemove", doDrag, false);
document.body.removeEventListener("mouseup", stopDrag, false);
}
ui.addEventListener("mousedown", startDrag, false);
return {
setTime: function(ms) {
ms = Math.max(0, ms);
var tSec = Math.ceil(ms / 1000);
var s = tSec % 60;
var m = (tSec - s) / 60 % 60;
var h = tSec - 60 * m - s;
promotieTd.innerHTML = h + ":" + (m < 10 ? "0" : "") + m + ":" + (s < 10 ? "0" : "") + s;
}
};
})(window.top.document),
Timer: (function() {
var time, timer;
return {
setTime: function(ms) {
time = Math.max(0, ms);
Space.UI.setTime(time);
},
start: function() {
if (!timer) {
var self = this;
timer = setInterval(function() {
time -= 1000;
if (time <= 0) {
self.stop();
}
Space.UI.setTime(time);
}, 1000);
}
},
stop: function() {
if (timer) {
clearInterval(timer);
}
}
};
})()
};
console.log(Space);
}
}
else {
console.log();
console.log(window, match);
Space = window.top[Settings.NAMESPACE];
if (Space && match) {
var dTime;
switch (match[1]) {
case "forums": //Promotiepagina
//Zoeken naar button
var inputs = tag("input"), i = 0;
var a = "Gen", b = "ove", c = "se";
while (i < inputs.length && inputs.value != "Stem op " + a + b + c + "!") {
i++;
}
if (i < inputs.length) { //Button gevonden
inputs.click();
}
else { //Button niet gevonden
match = id("aftellen_23").innerHTML.match(/\d+/g);
var m = parseInt(match[0], 10);
var s = parseInt(match[1], 10);
dTime = (m * 60 + s) * 1000 + Settings.TIMER_MARGIN;
createCookie("time", (new Date()).getTime() + dTime);
Space.Timer.setTime(dTime);
Space.Timer.start();
setTimeout(onTimeout, dTime);
}
break;
case "login":
name("login")[0].value = Settings.USERNAME;
name("pass")[0].value = Settings.PASSWORD;
name("submit")[0].click();
break;
default: //Alle andere pagina's
var date = new Date();
var time = readCookie("time");
if (time) {
time = parseInt(time, 10);
dTime = time - (new Date()).getTime();
console.log(match[1], dTime);
if (dTime <= 0) {
dTime = 0;
onTimeout();
}
else {
Space.Timer.setTime(dTime);
Space.Timer.start();
setTimeout(onTimeout, dTime);
}
}
else {
onTimeout();
}
break;
}
}
else {
top.addEventListener("load", onTimeout, false);
}
}
}
catch (e) {
console.error(e.message);
}
}
function scriptMainLoader() {
addJS(null, null, main);
}
function addJS(text, s_URL, funcToRun) {
var D = document;
var scriptNode = D.createElement('script');
scriptNode.type = "text/javascript";
if (text) scriptNode.textContent = text;
if (s_URL) scriptNode.src = s_URL;
if (funcToRun) scriptNode.textContent = '(' + funcToRun.toString() + ')()';
var targ = D.getElementsByTagName ('head')[0] || D.body || D.documentElement;
targ.appendChild (scriptNode);
}
window.addEventListener("load", scriptMainLoader, false);
}
catch (e) {
console.error(e.message);
}
})();[/JS]
Laatst bewerkt: