// ==UserScript== // @name VDex Project Timezone Changer // @namespace Http://www.enbewe.de/vdex // @description Lets you change your timezone from the map // @include http://vdexproject.net/map.php* // @version 0.3 // ==/UserScript== var anchor = document.evaluate('//div[@id="footer"]/span',document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue; var timezoneDiv = document.createElement('div'); timezoneDiv.setAttribute('id','timezoneDiv'); timezoneDiv.innerHTML = 'Zeit: '; anchor.parentNode.insertBefore(timezoneDiv,anchor); var timezoneLinkm1 = document.createElement('a'); timezoneLinkm1.setAttribute('class','clickable'); timezoneLinkm1.innerHTML = '(-1)'; timezoneLinkm1.addEventListener("click",function(){changeTimezone(-1)}, true); timezoneDiv.appendChild(timezoneLinkm1); var timezoneLink1 = document.createElement('a'); timezoneLink1.setAttribute('class','clickable'); timezoneLink1.innerHTML = '(+1)'; timezoneLink1.addEventListener("click",function(){changeTimezone(1)}, true); timezoneDiv.appendChild(timezoneLink1); function changeTimezone(amount) { var xmlhttp = new XMLHttpRequest(); xmlhttp.open("GET","/forum/ucp.php?i=165",false); xmlhttp.send(); var parser = new DOMParser(); var data = parser.parseFromString(xmlhttp.responseText, "text/html"); var params = ''; var snapResults = data.evaluate("//form//input", data, null, XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE, null); for (var i = snapResults.snapshotLength - 1; i >= 0; i--) { var elm = snapResults.snapshotItem(i); if (elm.getAttribute('type') != 'reset' && (elm.getAttribute('type') != 'radio' || elm.getAttribute('checked') == 'checked')) { params += elm.getAttribute('name')+'='+elm.getAttribute('value')+'&'; } } var snapResult = data.evaluate('//form//select[@id="tz"]/option[@selected="selected"]', data, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue; var timezone = parseInt(snapResult.getAttribute('value')); params += 'tz='+(timezone+amount); var url = "/forum/ucp.php?i=prefs&mode=personal"; var http = new XMLHttpRequest(); http.open("POST", url, false); //Send the proper header information along with the request http.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); http.setRequestHeader("Content-length", params.length); http.setRequestHeader("Connection", "close"); http.send(params); if (http.responseText.search(/preferences\shave\sbeen\supdated/)) { window.location.reload(); } else { alert('Fail:\n'+http.responseText); } }