User:GeorgeMoney/UserScripts/autowelcome

//

//Auto welcome user script written by GeorgeMoney
if(welcome == undefined) {
//If you would like to make your own config you have 2 options:
//1:Copy the entire code to your monobook and change the config
//2:Copy everything, from this line until you see 'end config', into your monobook.js, and include the module to your monobook via an import function

var welcome={};welcome.edit={};welcome.link={};welcome.link.tab={};welcome.link.newUserLog={};welcome.link.redLinkTalk={};welcome.options={};

//config
welcome.edit.summary = "Welcome to Wikipedia!";
welcome.edit.text = "{{sub" + "st:User:GeorgeMoney/Welcome}}" + "\n" + "~~" + "~~";
welcome.edit.textAnon = "{{sub" + "st:Welcomeip}}" + "\n" + "~~" + "~~";
welcome.edit.button = 'wpSave';

welcome.link.newUserLog.defaultColor = "blue";
welcome.link.newUserLog.clickedColor = "green";
welcome.link.newUserLog.text = "[welcome]";

welcome.link.redLinkTalk.defaultColor = "blue";
welcome.link.redLinkTalk.clickedColor = "green";
welcome.link.redLinkTalk.text = "[welcome]";
welcome.link.redLinkTalk.blink = false;

welcome.link.tab.text = "welcome!";
welcome.link.tab.accessKey = 'a';

welcome.options.newUserLogaddReloadButton = true;
welcome.options.newUserLogEnabled = true;
welcome.options.redLinkTalkEnabled = true;
welcome.options.addTab = true;
welcome.options.askIfPageIsNotBlank = true;
welcome.options.maxLinks = 1000;
welcome.options.warnIfOverMaxLinks = false;

//end config

}
//main script
if(welcome.options.newUserLogEnabled && (/Special(%3A|:)Log(\/newusers$|(.*?&|\?)type=newusers)/i).test(window.location.href)) {
	if(window.location.hash != "") window.location.hash = "";
	else {
		addOnloadHook(function() {
			var lis = document.getElementById('bodyContent').getElementsByTagName('ul')[0].getElementsByTagName('li');
			for (var i=0; i<lis.length; i++) {
				var li = lis[i];
				var url = li.firstChild.nextSibling.nextSibling.nextSibling.href;
				var charao = (url.indexOf('?') != -1)?'&':'?';
				url += charao+"autowelcome=true"
				var link = document.createElement('a');
				link.appendChild(document.createTextNode(welcome.link.newUserLog.text));
				link.style.color = welcome.link.newUserLog.defaultColor;
				monclick = function() {
					//this.style = { };
					this.style.textDecoration = 'none';
					this.style.color = welcome.link.newUserLog.clickedColor;
						var n = parseInt(this.name.split('_')[2]);
						var newhref = "#anchor_welcome_"+(n+1);
					this.onmouseover = function() { return false; }
					this.onfocus = function() { return false; }
					this.onclick = function() { 
						window.open(this.href); 
						this.onclick = function() { return false; }; 
						return false; 
					}
					this.onmousedown = function() { return false; }
					this.onmouseup = function() { return false; }
					this.onmouseout = function() { 
						//var n = parseInt(this.name.split('_')[2]);
						//var newhref = "#anchor_welcome_"+(n+1);
						//this.href /**/+= '&hasdone=true'; //newhref;
						//this.href=newhref;
						this.href = "javascript:void(0);";
						this.onmouseout = function() {
							return false;
						}
					};
					//this.href = newhref;
					//this.tagName = 'SPAN';
					//this.innerHTML = 'welcomed';
					this.style.cursor = "default";
				};
				//link.onfocus = monclick;
				link.onmouseup = monclick;
				link.href = url;
				link.id = "id_welcome_"+i;
				link.name = "anchor_welcome_"+i;
				li.appendChild(link);
			}
			
			if(welcome.options.newUserLogaddReloadButton) {
				var h1 = document.getElementsByTagName('h1')[0];
				var button = document.createElement('input');
				button.onclick = function() { 
					if(window.location.hash != "") 
						window.location.hash = "";
					location.reload();
				}
				button.value = "reload";
				button.type = "button";
				h1.parentNode.insertBefore(button, h1.nextSibling);
			}
		});
	}
}

if(welcome.options.redLinkTalkEnabled && !((/Special(%3A|:)Log(\/newusers$|(.*?&|\?)type=newusers)/i).test(window.location.href)) && ( ( (wgNamespaceNumber > -1 && wgNamespaceNumber % 2 != 0) || (wgCanonicalNamespace == "Wikipedia"||wgCanonicalNamespace == 'Special') ) || !wgIsArticle )) {
	addOnloadHook(function() {
		var alinks = document.getElementById('bodyContent').getElementsByTagName('a');
		if(alinks.length > welcome.options.maxLinks) {
			if(welcome.options.warnIfOverMaxLinks)
				var ok_to_go = confirm("This page has over "+welcome.options.maxLinks+" links.\n"
				+"Searching for red links to add welcome links might take a while and freeze your"
				+" browser\nTo continue and add welcome links, press ok.");
			else var ok_to_go = false;
		} else var ok_to_go = true;
		if(!ok_to_go) return;
		for(var i=0, j=0; i<alinks.length; i++) {
			var lin = alinks[i];
			if(lin.className == "new" && (/User([_ ]talk)?:/i).test(lin.href) && lin.href.substr('http://en.wikipedia.org/w/index.php?title='.length).indexOf('/') == -1) {
				var url = lin.href;
				url = url.replace('User:', 'User_talk:');
				var charao = (url.indexOf('?') != -1)?'&':'?';
				url += charao+"autowelcome=true"
				var nlin = document.createElement('a');
				nlin.appendChild(document.createTextNode(welcome.link.redLinkTalk.text));
				nlin.style.color = welcome.link.redLinkTalk.defaultColor;
				monclick = function() {
					this.style.textDecoration = 'none';
					this.style.color = welcome.link.redLinkTalk.clickedColor;
						var n = parseInt(this.name.split('_')[2]);
						var newhref = "#anchor_welcome_"+(n+1);
					this.onmouseover = function() { return false; }
					this.onfocus = function() { return false; }
					this.onclick = function() { 
						window.open(this.href); 
						this.onclick = function() { return false; }; 
						return false; 
					}
					this.onmousedown = function() { return false; }
					this.onmouseup = function() { return false; }
					this.onmouseout = function() { 
						//var n = parseInt(this.name.split('_')[2]);
						//var newhref = "#anchor_welcome_"+(n+1);
						//this.href /**/+= '&hasdone=true'; //newhref;
						//this.href=newhref;
						this.href = "javascript:void(0);";
						this.onmouseout = function() {
							return false;
						}
					};
					//this.href = newhref;
					//this.tagName = 'SPAN';
					//this.innerHTML = 'welcomed';
					this.style.cursor = "default";
				};
				nlin.onmouseup = monclick;
				nlin.href = url;
				nlin.id = "id_welcome_"+j;
				nlin.name = "anchor_welcome_"+j;
				if(welcome.link.redLinkTalk.blink) nlin.style.textDecoration = 'blink';
				
				try { //alert(lin+lin.href+lin.className+lin.innerHTML+lin.nextSibling);
					if(lin.nextSibling) {
						lin.parentNode
							.insertBefore(
								nlin, 
								lin.nextSibling
							);
					} else { 
						lin.parentNode
							.appendChild(
								nlin
							);
					
					}
					j++;
				} catch(e) {
					//alert(lin+lin.href+lin.className+lin.innerHTML+lin.nextSibling);
					//alert(e.toString());
				}
			}
		}
	});
}

if(welcome.options.addTab && ( wgCanonicalNamespace == 'User' || wgCanonicalNamespace == 'User_talk' ) ) {
	addOnloadHook(function() {
		try {
			var href = document.getElementById('ca-edit').firstChild.href;
			var charao = (href.indexOf('?') != -1)?'&':'?';
			href += charao+"autowelcome=true";
			if(wgCanonicalNamespace == 'User') href = href.replace(/User:/i, 'User_talk:');
			var tbs = document.getElementById('p-cactions').getElementsByTagName('ul')[0];
			addlilink(tbs, href, welcome.link.tab.text, 'ca-welcome', 'Welcome '+wgTitle, welcome.link.tab.accessKey);
		} catch(e) { }
	});
}

if(window.location.href.indexOf('autowelcome=true') != -1
&&window.location.href.indexOf('action=edit') == -1) {
	window.location.href += '&action=edit';
}

if(window.location.href.indexOf('action=edit') != -1 
&& window.location.href.indexOf('autowelcome=true') != -1) {
	if(window.location.href.indexOf('hasdone=true') != -1) {
		location.href = location.href.split('action=edit')[0]
						.split('autowelcome=true')[0];
	} else {
		addOnloadHook(function() {
			var text = document.getElementById('wpTextbox1').value;
			if(welcome.options.askIfPageIsNotBlank && text != '') {
				var oktogo = confirm("There was other text detected on this page\nWould you like to continue with the welcome?");
			} else var oktogo = true;
			var newtext = text + '\n';
			if((/\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}/).test(wgPageName))
				newtext += welcome.edit.textAnon;
			else 
				newtext += welcome.edit.text;
			document.getElementById('wpTextbox1').value = newtext;
			document.getElementById('wpSummary').value = welcome.edit.summary;
			if(!oktogo) return;
			document.getElementById(welcome.edit.button).click();
		});
	}
}

//