What.CD : Mark The OP

Marks the thread's [OP]

// ==UserScript==
// @id          whatcd-mark-op
// @name        What.CD : Mark The OP
// @namespace   hateradio)))
// @description Marks the thread's [OP]
// @include     http*://*what.cd/forums.php*viewthread*
// @version     1.1.1
// @created     17 June 2012
// @grant       none
// ==/UserScript==

(function(){
	var mark = {
		id : 0,
		doc : document,
		findOP: function(){
			var a = document.querySelector('.breadcrumbs ~ .linkbox a:first-child'), xhr = new XMLHttpRequest();
			if(a && a.textContent === '<< First'){
				xhr.open('get', a.href, true);
				xhr.onload = this.xhr;
				xhr.send(null);
			}else{
				this.proc();
			}
		},
		xhr: function(){
			var d = document.implementation.createHTMLDocument('');
			d.documentElement.innerHTML = this.responseText;
			mark.doc = d;
			mark.proc();
		},
		proc : function(){
			this.grabID();
			if(this.id > 0){
				this.grabPosts();
				this.modPosts();
			}
		},
		grabID : function(){
			var u = this.doc.querySelector('table.forum_post a[href*="user.php"]');
			if(/(?:id=(\d+))/.test(u)){
				this.id = RegExp.lastParen;
			}
		},
		grabPosts : function(){
			this.posts = document.querySelectorAll('.forum_post a[href="user.php?id='+this.id+'"]');
		},
		modPosts : function(){
			var i = this.posts.length, a;
			while(i--){
				a = this.posts[i];
				a.parentNode.insertBefore(document.createTextNode('[OP] '), a);
			}
		}
	};
	mark.findOP();
}());