Gebruiker:Rodejong/Zeusmode/whatlinkshere.js

Uit Wikipedia, de vrije encyclopedie

Opmerking: nadat u de wijzigingen hebt gepubliceerd is het wellicht nodig uw browsercache te legen.

  • Firefox / Safari: houd Shift ingedrukt terwijl u op Vernieuwen klikt of druk op Ctrl-F5 of Ctrl-R (⌘-Shift-R op een Mac)
  • Google Chrome: druk op Ctrl-Shift-R (⌘-Shift-R op een Mac)
  • Internet Explorer / Edge: houd Ctrl ingedrukt terwijl u op Vernieuwen klikt of druk op Ctrl-F5
  • Opera: druk op Ctrl-F5.
//-------------------------------------------------
// Ajax What Links Here 0.32
// by [[User:Zanaq]] (c) 2010 GPL
// 
// No new pages open if the user wants to navigate 
// The Tree of What Links There
// -------------------------------------------------------<nowiki>

disambiguationTemplates='dp|disamb|disambiguation';
redirectKeywords='#REDIRECT|#DOORVERWIJZING';

txtDisambiguation = 'doorverwijspagina';
txtRedirect = 'redirect';

txtFix = 'Fix links naar';

txtFixDoubleRedirect = 'Repareer [[Help:Dubbele redirects|dubbele redirect]] met [[G:ZM|Zeusmodus]].';
txtFixDisambiguation = 'Repareer [[WP:LND|link naar doorverwijspagina]] met [[G:ZM|Zeusmodus]].';

txtLoading = 'Ladende....';
txtFix = 'fix';
txtShowLink = 'toon';
txtCancel='Annuleer';
txtClose='Sluit';
txtPreview='Voorschouwing';

txtChangeLinktext = 'Verander linktekst';
clickedLi=-1;
trackLi=0;
trackUl=0;
fixinglink=0;

function savedDiff(li)
{
	//alert(li);
	if (xmlhttp.readyState != 4) return;
	
	//alert(xmlhttp.responseText);
//alert('sj');
	document.getElementById('hiddeneditform' + clickedLi).innerHTML = xmlhttp.responseText;
	//if (document.getElementById('hiddeneditform' + clickedLi).getElementById('editform')) alert('ERROR');
	
	//document.getElementById('diff' + clickedLi).innerHTML = document.getElementById('hiddeneditform' + clickedLi).getElementById('bodyContent');
		
	//document.getElementById('hiddeneditform' + clickedLi).style.display='block';
	
//°lert('sj');
	parser=new DOMParser();
	xmlDoc=parser.parseFromString(xmlhttp.responseText,"text/xml");
		
	document.getElementById('diff' + clickedLi).innerHTML = 
		'<div style="border:1px solid black;padding:.5em">' + xmlDoc.getElementById('bodyContent').innerHTML 
		+ '</div>';
		
	document.getElementById('diff' + clickedLi).innerHTML += '<input type=button value="' + txtClose + '" onClick="javascript:cancelFix(' + clickedLi + ')">';
//alert('sj2');	


	fixinglink=0;
	//	document.getElementById('hiddeneditform' + clickedLi).innerHTML = xmlH

}

function saveDiff(li)
{
	clickedLi = li;
	//alert(li);
	params = 'wpSave=' + encodeURIComponent(document.getElementById('editform' + clickedLi).wpSave.value);
	
	
	/*wpAntispam=
wpSection=
wpStarttime=20100910205931
wpEdittime=20100910145957
wpScrolltop=
wpAutoSummary=d41d8cd98f00b204e9800998ecf8427e
oldid=0
wpSummary=
wpMinoredit=1
wpWatchthis=1
wpSave=Pagina opslaan
wpPreview=Toon bewerking ter controle
wpDiff=Wijzigingen bekijken
wpEditToken=b27c9865f728da5be75268c9a705d1a3+\*/
	
	//et=document.getElementById('editform' + clickedLi).wpEditToken.value.substring(0, document.getElementById('editform' + clickedLi).wpEditToken.value.length-2) + '+\\';
	et=document.getElementById('editform' + clickedLi).wpEditToken.value;
	//alert(et);
	
	params += '&wpAutoSummary=' + encodeURIComponent(document.getElementById('editform' + clickedLi).wpAutoSummary.value);
	params += '&oldid=' + encodeURIComponent(document.getElementById('editform' + clickedLi).oldid.value);
	params += '&wpStarttime=' + encodeURIComponent(document.getElementById('editform' + clickedLi).wpStarttime.value);
    params += '&wpEdittime=' + encodeURIComponent(document.getElementById('editform' + clickedLi).wpEdittime.value);
	
	if (isredirect) 
		summ = txtFixDoubleRedirect  + ' - ' + document.getElementById('editform' + clickedLi).wpTextbox1.value
	else if (isdisambiguation) 
		summ = txtFixDisambiguation + ' - ' + document.getElementById(
		 'summ' + li).value
	else
		summ = txtFixLink;
	
	params += '&wpSummary=' + encodeURIComponent(summ);
	params += '&wpMinoredit=' + '1';
	params += '&wpWatchthis=' + encodeURIComponent(document.getElementById('editform' + clickedLi).wpWatchthis.value);
	
	params += '&wpTextbox1=' + encodeURIComponent(document.getElementById('editform' + clickedLi).wpTextbox1.value);
	
	params += '&wpEditToken=' + encodeURIComponent(et);
/*
	ptitle='Gebruiker:Zanaq/Test';
	
	params = 'action=edit';
	params += '&title=Gebruiker:Zanaq/Test';
	params += '&summary=test';
	params += '&notminor=1';
	params += '&basetimestamp=' + document.getElementById('editform' + clickedLi).wpEdittime.value;
	params += '&starttimestamp=' +  document.getElementById('editform' + clickedLi).wpStarttime.value;;
	params += '&text=' + document.getElementById('editform' + clickedLi).wpTextbox1.value;*/
	
	//query= mw.config.get('wgServer') + mw.config.get('wgScriptPath') + '/api.php';
	
	//query= mw.config.get('wgServer') + mw.config.get('wgScriptPath') + '/api.php?action=parse&format=xml&text={{:' + wgTitle + '}}&title=' + wgTitle;
	//params='action=parse&format=xml&title=' + wgTitle + '&text=' + wikiText;
	query= document.getElementById('editform' + clickedLi).action;
	
	xmlhttp = sajax_init_object();
	if (!xmlhttp) return;
	xmlhttp.open("POST", query, true);
	xmlhttp.onreadystatechange = savedDiff;
	
	
	xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
	//xmlhttp.setRequestHeader("Content-type", "multipart/form-data");
	xmlhttp.setRequestHeader("Content-length", params.length);
	xmlhttp.setRequestHeader("Connection", "close");
	xmlhttp.send(params);

}

function cancelFix(li)
{

   document.getElementById('hiddeneditform' + li).innerHTML = '';
 
   document.getElementById('diff' + li).innerHTML = '';

	document.getElementById('fix' + li).style.display='inline';
	
	fixinglink=0;
}

function showDiff()
{
	
	if (xmlhttp.readyState != 4) return;

  //  a=xmlhttp.responseText.indexOf('<form id="editform"');
    //b=xmlhttp.responseText.indexOf('</form>',a+1)+7;
 
	ef = xmlhttp.responseText.replace('<form id="editform"', '<form id="editform' + clickedLi + '"');
	//ef = xmlhttp.responseText.replace('name="editform"', 'name="editform' + clickedLi + '"');
    document.getElementById('hiddeneditform' + clickedLi).innerHTML = ef;
 
   document.getElementById('diff' + clickedLi).innerHTML = 
		'<div style=border-style:solid;border-width:1px id="wikiDiff">' 
		+ document.getElementById('wikiDiff').innerHTML 
		+ '<input type=button value="' + txtSavePage + '" onClick="javascript:saveDiff(' + clickedLi + ')">'
		+ '<input type=button value="' + txtCancel + '" onClick="javascript:cancelFix(' + clickedLi + ')">'
		+ '</div>';
//	alert(xmlhttp.responseText);
	
	document.getElementById('loading' + clickedLi).style.display='none';

}

function fixLinkOnFocus(id)
{
	ta=document.getElementById(id);
	a = ta.value.toUpperCase().indexOf('[[' + wgTitle.replace('_', ' ').toUpperCase() + '');
	b = ta.value.indexOf(']]',a+1)+2;
	if ((a > 0) && (b>0))
	{
		ta.selectionStart=a+2;
		ta.selectionEnd=b-2;
	}
	
}
function saveFix(id, n)
{
	
	wt=document.getElementById('taa0--1').value;	
	for (i=0;i<n;i++)
	{
		
		t=document.getElementById('ta' + id + '-' + i).value;
		a=(t.substring(0,3)=='...') ? 3 : 0;
		b=(t.substring(t.length-3)=='...') ? t.length-3 : t.length;
		
		wt+=t.substring(a,b) + document.getElementById('taa' + id + '-' + i).value;	
		
	}
	
	document.getElementById('editform' + id).wpTextbox1.value = wt;
	
	saveDiff(id);
	
}

function previewFix(id, n)
{
	
	wt=document.getElementById('taa0--1').value;	
	for (i=0;i<n;i++)
	{
		
		t=document.getElementById('ta' + id + '-' + i).value;
		a=(t.substring(0,3)=='...') ? 3 : 0;
		b=(t.substring(t.length-3)=='...') ? t.length-3 : t.length;
		
		wt+=t.substring(a,b) + document.getElementById('taa' + id + '-' + i).value;	
		
	}
	
	document.getElementById('editform' + id).wpTextbox1.value = wt;
	
	//alert(id);
	
			//document.getElementById('editform' + clickedLi).wpTextbox1.value = '#REDIRECT ' + wikiText;
		
	/*	inputs = document.getElementById('hiddeneditform' + clickedLi).getElementsByTagName('input');
		
		params=''
		for (i=0;i<inputs.length;i++)
		{
			//document.editform.wpTextbox1.value += '\n' + inputs[i].name + '=' + inputs[i].value;
			//params += inputs[i].name + '=' + inputs[i].value + '&';
		}
		*/
		params = 'wpDiff=' + document.getElementById('editform' + clickedLi).wpDiff.value;
		
		/*wpAntispam=
	wpSection=
	wpStarttime=20100910205931
	wpEdittime=20100910145957
	wpScrolltop=
	wpAutoSummary=d41d8cd98f00b204e9800998ecf8427e
	oldid=0
	wpSummary=
	wpMinoredit=1
	wpWatchthis=1
	wpSave=Pagina opslaan
	wpPreview=Toon bewerking ter controle
	wpDiff=Wijzigingen bekijken
	wpEditToken=b27c9865f728da5be75268c9a705d1a3+\*/
		
		params += '&wpEditToken=' + document.getElementById('editform' + clickedLi).wpEditToken.value;
		params += '&oldid=' + document.getElementById('editform' + clickedLi).oldid.value;
		params += '&wpStarttime=' + document.getElementById('editform' + clickedLi).wpStarttime.value;
		params += '&wpEdittime=' + document.getElementById('editform' + clickedLi).wpEdittime.value;

		params += '&wpTextbox1=' + document.getElementById('editform' + clickedLi).wpTextbox1.value;
		
		//query= mw.config.get('wgServer') + mw.config.get('wgScriptPath') + '/api.php?action=parse&format=xml&text={{:' + wgTitle + '}}&title=' + wgTitle;
		//params='action=parse&format=xml&title=' + wgTitle + '&text=' + wikiText;
		query= document.getElementById('editform' + clickedLi).action;
		
		xmlhttp = sajax_init_object();
		if (!xmlhttp) return;
		xmlhttp.open("POST", query, true);
		xmlhttp.onreadystatechange = showDiff;
		
		
		xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
		xmlhttp.setRequestHeader("Content-length", params.length);
		xmlhttp.setRequestHeader("Connection", "close");
		xmlhttp.send(params);

	
}

function replaceLink(id, replaceText)
{
	rt=replaceText;
	ta=document.getElementById('ta' + id);

	a = ta.value.toUpperCase().indexOf('[[' + wgTitle.replace('_', ' ').toUpperCase() + '')+2;
	b = ta.value.indexOf(']]',a+1);
	c = ta.value.indexOf('|',a+1);

	if (c>-1 && c < b) 
	{
		if (document.getElementById('chtxt' + clickedLi).value)
		{
			b = c;
		}
		
	} else {
		if (!document.getElementById('chtxt' + clickedLi).value)
		{
			replaceText += '|' + ta.value.substring(a,b)
		}
	}

	if ((a > -1) && (b >- 1))
	{
		ta.value = ta.value.substring(0,a) + replaceText + ta.value.substring(b)
		
		
		document.getElementById('dab' + id).style.display='none';
		
		sep = (document.getElementById(
		 'summ' + id.substring(0,id.indexOf('-'))
		 ).value == '') ? '' : ', ';
		document.getElementById(
		 'summ' + id.substring(0,id.indexOf('-'))
		 ).value+= sep + '[[' + wgTitle.replace('_', ' ') + ']] -> [[' + rt + ']]';
		
		ta.selectionStart=a;
		ta.selectionEnd=a+replaceText.length;
		ta.focus();
	}
}

function fixLinkLoadForm()
{
	if (xmlhttp.readyState != 4) return;
	
//	alert(xmlhttp.responseText);
	
	a=xmlhttp.responseText.indexOf('<form id="editform"');
    b=xmlhttp.responseText.indexOf('</form>',a+1)+7;
 
	ef = xmlhttp.responseText.substring(a,b).replace('<form id="editform"', '<form id="editform' + clickedLi + '"');
    //ef = xmlhttp.responseText.substring(a,b).replace('name="editform"', 'name="editform' + clickedLi + '"');
    document.getElementById('hiddeneditform' + clickedLi).innerHTML = ef;
 
//return;	
	var regexFindTemplates = RegExp('(' + redirectKeywords + ')','im');
	
	editText = document.getElementById('editform' + clickedLi).wpTextbox1.value;
	a= regexFindTemplates.exec(editText);
	
	if ((a && !isredirect) || (!a && !isredirect))
	{
		//alert('no es redirect');
		
		t=[editText]; //complete text
		l=[]; //links
		//p=[]; //end positions
		lc=0;
		//pc=0;
		
		for (i=0;i<t.length;i++)
		{
			a = t[i].toUpperCase().indexOf('[[' + wgTitle.replace('_', ' ').toUpperCase());
			b = t[i].indexOf(']]',a+1)+2;
			//alert(a + '--' + b);
			if ((a > -1) && (b>-1))
			{
			
				//p[i] = a+pc++;
				t[1 + i] = t[i].substring(a,b);
				l[lc++] = i+1;
				t[2 + i] = t[i].substring(b);
				t[i] = t[i].substring(0,a);
				document.getElementById('diff' + clickedLi).innerHTML += t[i++].substring(a,b);
				
			} 
		}
		//document.getElementById('diff' + clickedLi).innerHTML += '---';
		
		//document.getElementById('diff' + clickedLi).innerHTML +=
		
		//q='';
		
		a = (t[0].length < 50) ? 0 : t[0].length -50;
		document.getElementById('diff' + clickedLi).innerHTML += 
			'<textarea id=taa0--1 style=display:none>' 
			+ t[0].substring(0,a)
			+ '</textarea>';
		
		pta=t[0].substring(a);
		dotsO=(a!=0) ? '...' : '';
		//alert(l.length);
		for (i=0;i<l.length;i++)
		{
			
			//a = (pta.value.length < 50) ? 0 : pta.value.length -50;
			//aa=pta.value.substring(0,a);
			//pta.value=pta.value.substring(a);
			
			
			
			m= (t[l[i]+1].length > 100) ? 50 : Math.floor((t[l[i]+1].length)/2);
			b = (t[l[i]+1].length < m) ? t[l[i]+1].length : m;
			dotsC=(b < (t[l[i]+1].length-1)) ? '...' : '';
			//alert(b +'---' + t[l[i]+1].length);
			
			q = 
				  '<textarea id=ta' + clickedLi + '-' + i + ' rows=4 onfocus="fixLinkOnFocus(\'ta' + clickedLi + '-' + i + '\')">' 
				+ dotsO + pta + t[l[i]] + t[l[i]+1].substring(0,b) + dotsC
				+ '</textarea>';
			q += 
				  '<textarea id=taa' + clickedLi + '-' + i + ' style=display:none>' 
				+ t[l[i]+1].substring(b)
				+ '</textarea>';
			
			pta='';
			document.getElementById('diff' + clickedLi).innerHTML +=q;
			//document.getElementById('ta' + clickedLi + '-' + 'i').value = t[l[i-1]] + t[l[i]] + t[l[i+1]];
			//isredirect
			
			if (true)//(!isredirect)
			{
		//alert(t.length);
				//l=[]; //links
				//t=wikiText];
				a = wikiText.indexOf('[[');
				q='';
				while(a>-1)
				{
					
					b = wikiText.indexOf(']]',a+1);
					if ((a > -1) && (b>-1))
					{
						lt=wikiText.substring(a+2,b);
						c=lt.indexOf('|');
						lt=(c>0) ? lt.substring(0,c-1) : lt;
						d=lt.indexOf(':',1);
						if ((d > 5) || (d < 1)) //ugly workaround for interwiki's
						{
							q += '<input type=button value="' + lt + '" onClick="javascript:replaceLink(\'' + clickedLi + '-' + i + '\', \'' + lt + '\')">'
						}
					}
					a = wikiText.indexOf('[[',b+1);
				}

				document.getElementById('diff' + clickedLi).innerHTML += '<div id=dab' +  clickedLi + '-' + i + ' style=margin-bottom:.5em>' + q +
					'<span style=white-space:nowrap><input type=checkbox id=chtxt' + clickedLi + ' value="' + lt + '"> ' + txtChangeLinktext +'</span></div>';
				
			}
			
		}
			
		document.getElementById('diff' + clickedLi).innerHTML += '<input type=input id=summ' + clickedLi + ' maxlength="200" size="60" >';
		
		document.getElementById('diff' + clickedLi).innerHTML += 
			'<input type=button value="' + txtSavePage + '" onClick="javascript:saveFix(' + clickedLi + ',' + l.length + ')" style=display:none>' //always preview until tested well
			+'<input type=button value="' + txtPreview + '" onClick="javascript:previewFix(' + clickedLi + ',' + l.length + ')">'
			+'<input type=button value="' + txtCancel + '" onClick="javascript:cancelFix(' + clickedLi + ')">';
		
//			document.getElementById('ta' + clickedLi + '-' + i).selectionStart =t[l[i]-1].substring(a).length+5;
//			document.getElementById('ta' + clickedLi + '-' + i).selectionEnd =t[l[i]-1].substring(a).length + t[l[i]].length+1;
			
			document.getElementById('ta' + clickedLi + '-0').focus();
			document.getElementById('loading' + clickedLi).style.display='none';

			
		} else {
	
		document.getElementById('editform' + clickedLi).wpTextbox1.value = '#REDIRECT ' + wikiText;
		
	/*	inputs = document.getElementById('hiddeneditform' + clickedLi).getElementsByTagName('input');
		
		params=''
		for (i=0;i<inputs.length;i++)
		{
			//document.editform.wpTextbox1.value += '\n' + inputs[i].name + '=' + inputs[i].value;
			//params += inputs[i].name + '=' + inputs[i].value + '&';
		}
		*/
		params = 'wpDiff=' + document.getElementById('editform' + clickedLi).wpDiff.value;
		
		/*wpAntispam=
	wpSection=
	wpStarttime=20100910205931
	wpEdittime=20100910145957
	wpScrolltop=
	wpAutoSummary=d41d8cd98f00b204e9800998ecf8427e
	oldid=0
	wpSummary=
	wpMinoredit=1
	wpWatchthis=1
	wpSave=Pagina opslaan
	wpPreview=Toon bewerking ter controle
	wpDiff=Wijzigingen bekijken
	wpEditToken=b27c9865f728da5be75268c9a705d1a3+\*/
		
		params += '&wpEditToken=' + document.getElementById('editform' + clickedLi).wpEditToken.value;
		params += '&oldid=' + document.getElementById('editform' + clickedLi).oldid.value;
		params += '&wpStarttime=' + document.getElementById('editform' + clickedLi).wpStarttime.value;
		params += '&wpEdittime=' + document.getElementById('editform' + clickedLi).wpEdittime.value;

		params += '&wpTextbox1=' + document.getElementById('editform' + clickedLi).wpTextbox1.value;
		
		//query= mw.config.get('wgServer') + mw.config.get('wgScriptPath') + '/api.php?action=parse&format=xml&text={{:' + wgTitle + '}}&title=' + wgTitle;
		//params='action=parse&format=xml&title=' + wgTitle + '&text=' + wikiText;
		query= document.getElementById('editform' + clickedLi).action;
		
		xmlhttp = sajax_init_object();
		if (!xmlhttp) return;
		xmlhttp.open("POST", query, true);
		xmlhttp.onreadystatechange = showDiff;
		
		
		xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
		xmlhttp.setRequestHeader("Content-length", params.length);
		xmlhttp.setRequestHeader("Connection", "close");
		xmlhttp.send(params);
	}
}

function fixLink(li, title)
{
	if (fixinglink)
	{
		alert('First save or cancel other fixes');
		return;
	}
	fixinglink = 1;
	clickedLi = li;
 	url='http://nl.wikipedia.org/w/index.php?title=' + title + '&action=edit';

	document.getElementById('fix' + clickedLi).style.display='none';
	document.getElementById('loading' + clickedLi).style.display='inline';
	
	xmlhttp = sajax_init_object();
	if (!xmlhttp) return;
	xmlhttp.open("GET", url, true);
	xmlhttp.onreadystatechange = fixLinkLoadForm;
	xmlhttp.send(null);
	
 //alert(title);
}


//adds javascript links to a list
titles='';
function modifyList(id)
{
//alert(document.cookie);
	l=document.getElementById(id);

	l=l.getElementsByTagName('li');


	for (i=0;i<l.length;i++)
	{
		span=l[i].getElementsByTagName('span')[0];
		
		if (l[i].innerHTML.indexOf('</a> (' + txtRedirect + ') <span') > 0)
		{
			url=l[i].getElementsByTagName('a')[0].href;
			title=url.substring(url.indexOf('?title=')+7, url.indexOf('&redirect='));
			
			//l[i].innerHTML.replace('</a> (' + txtRedirect + ') <span', '</a> (<b>' + txtRedirect + '</b>) <span');
			d = 'style=display:none';
			e = '';
		} else {
			title=l[i].getElementsByTagName('a')[0].href.substring(wgServer.length + 6);
			e = 'style=display:none';
			d = '';
		}

			
			
			
			span.innerHTML = span.innerHTML.substring(0, span.innerHTML.length -1)
				+ ' <a ' + d + ' href=\'javascript:openAjaxWhatLinksHere(' + trackLi + ',"' 
				+ encodeURIComponent(title) + '")\'> [' + txtShowLink + ']</a>'
				+'<a ' + e + ' href="javascript:closeAjaxWhatLinksHere(' + trackLi 
				+ ')"> [' + txtHideLink
				+ ']</a> <span  id=loading' + trackLi + ' style=display:none>' + txtLoading + '</span>'
				+ ' <a id=fix' + trackLi + ' href=\'javascript:fixLink(' + trackLi + ',"' + encodeURIComponent(title) + '")\'>[' + txtFix + ']</a>'
				+ ' <a href="/w/index.php?title=' + title + '&action=edit">[' + txtEditTopLink + ']</a>'
				+ ')';


		span.getElementsByTagName('a')[0].innerHTML = '←';
		//alert(l[i].innerHTML);
		
		ul = l[i].getElementsByTagName('ul')[0]; //if there's already an ul, put it at the end.
		if (ul) {
			ulh = '<ul>' + ul.innerHTML + '</ul>';
			l[i].removeChild(ul); 
			
		} else {
			ulh = '';
		}
		
		l[i].innerHTML=
			'<span id=li' + (trackLi) + '>' + l[i].innerHTML 
			+ '<span id="diff' + trackLi + '"></span><span style=display:none id="hiddeneditform' + trackLi + '"></span></span>' + ulh;
		
		
		
		//document.getElementById('hiddeneditform' + trackLi).innerHTML = 'ajahjahjahj';//xmlhttp.responseText.substring(a,b);

		trackLi++;
		titles+='|' + title;
	}
	
}

//User clicked hide
function closeAjaxWhatLinksHere(id)
{

li=document.getElementById('li' + id);
ul = li.getElementsByTagName('ul')[0];

li.removeChild(ul); 

li.getElementsByTagName('span')[0].getElementsByTagName('a')[1].style.display='inline';
li.getElementsByTagName('span')[0].getElementsByTagName('a')[2].style.display='none';

}

//Http request complete: inject content
function insertAjaxWhatLinksHere()
{
	
	if (xmlhttp.readyState != 4) return;
	
	parser=new DOMParser();
	xmlDoc=parser.parseFromString(xmlhttp.responseText,"text/xml");
		
	newlinks=xmlDoc.getElementById('mw-whatlinkshere-list');
	if (newlinks)
	{
		document.getElementById('li' + clickedLi).innerHTML+='<ul id=ul' + trackUl + '>' + newlinks.innerHTML + '</ul>';
		
		document.getElementById('li' + clickedLi).getElementsByTagName('span')[0].getElementsByTagName('a')[2].style.display='inline';
		document.getElementById('li' + clickedLi).getElementsByTagName('span')[0].getElementsByTagName('span')[0].style.display='none';
	
		modifyList('ul' + trackUl++);
	
	} else {
		document.getElementById('li' + clickedLi).getElementsByTagName('span')[0].innerHTML='';
	}
	

}

//User clicked expand
function openAjaxWhatLinksHere(li, title)
{
	clickedLi=li;
	
	l=document.getElementById('mw-whatlinkshere-list').getElementsByTagName('li');
	
	parameters= document.location.href.indexOf('&');
	parameters=(parameters > 0) ? document.location.href.substring(parameters) : '';
	
	
	url='/w/index.php?title=Speciaal:VerwijzingenNaarHier/' + title + parameters;

	document.getElementById('li' + clickedLi).getElementsByTagName('span')[0].getElementsByTagName('a')[1].style.display='none';
	document.getElementById('li' + clickedLi).getElementsByTagName('span')[0].getElementsByTagName('span')[0].style.display='inline';

	xmlhttp = sajax_init_object();
	if (!xmlhttp) return;
	xmlhttp.open("GET", url, true);
	xmlhttp.onreadystatechange = insertAjaxWhatLinksHere;
	xmlhttp.send(null);
	
}

//add Ajax controls to the list
function addAjaxWhatLinksHere()
{
	modifyList('mw-whatlinkshere-list');
}

function showPages()
{
	if (xmlhttp.readyState != 4) return;
	
	pageTitle=document.getElementById('contentSub').getElementsByTagName('a')[0].href
	pageTitle=pageTitle.substring(pageTitle.indexOf('=')+1, pageTitle.indexOf('&'));
	
	sm=document.getElementById('statusMsg');
	sm.innerHTML+='.....';
	parser=new DOMParser();
	xmlDoc=parser.parseFromString(xmlhttp.responseText,"text/xml");
	
	//alert(xmlDoc.getElementsByTagName('rev')[0].childNodes[0].nodeValue);
	pages=xmlDoc.getElementsByTagName('page')
	
	ul = document.getElementById('bodyContent').getElementsByTagName('ul')[0]
	
		ul.innerHTML='';
		for (i=0;i<pages.length;i++)
		{
			ul.innerHTML+='<li>'+pages[i].getAttribute("title") + '-';
			pageText = pages[i].getElementsByTagName('rev')[0].childNodes[0].nodeValue;
			//ul.innerHTML+='<br>'+pageText;
		
			//var regexFindLink = RegExp('(\\[\\[' + pages[i].getAttribute("title") + '\\]\\])','im');
			var regexFindLink = RegExp('\\[\\['+ pageTitle + '\\]\\]','im');
			a = regexFindLink.exec(xmlhttp.responseText);
			
			ul.innerHTML+=' -' + pageText.substring(pageText.indexOf(a[0])-100,pageText.indexOf(a[0])+100);
			ul.innerHTML+=' -' + a[0];
			
		}
	
	
	
}

function loadPages()
{
	query='http://nl.wikipedia.org/w/api.php?action=query&prop=revisions&rvprop=content&format=xml&titles=' + titles.substring(1);
	document.getElementById('statusMsg').innerHTML=txtLoading;
	xmlhttp = sajax_init_object();
	if (!xmlhttp) return;
	xmlhttp.open("GET", query, true);
	xmlhttp.onreadystatechange = showPages;
	xmlhttp.send(null);

}

function showDisamb()
{
	document.getElementById('showDisamb').style.display='none';
	document.getElementById('hideDisamb').style.display='inline';
	document.getElementById('dContent').style.display='inline';
}

function hideDisamb()
{
	document.getElementById('showDisamb').style.display='inline';
	document.getElementById('hideDisamb').style.display='none';
	document.getElementById('dContent').style.display='none';
}

function insertControls2()
{
	if (xmlhttp.readyState != 4) return;
	
	parser=new DOMParser();
	xmlDoc=parser.parseFromString(xmlhttp.responseText,"text/xml");
	//alert(xmlhttp.responseText);
	//alert(xmlDoc.getElementsByTagName('rev')[0].childNodes[0].nodeValue);
	html=xmlDoc.getElementsByTagName('text')[0].childNodes[0].nodeValue;
	
	
	document.getElementById('dContent').innerHTML=html;
	
	if (isredirect)
	{
		document.getElementById('dContent').innerHTML =
			'<img src="http://bits.wikimedia.org/skins-1.5/common/images/redirectltr.png" alt="#REDIRECT "><span class="redirectText">'
			+ document.getElementById('dContent').getElementsByTagName('p')[0].innerHTML
			+ '</span>';
	}
	
	document.getElementById('statusMsg').innerHTML='';
}


//Displays if the page is a disambiguation page
isdisambiguation=false;
isredirect=false;
wikiText='';
function insertControls()
{
	if (xmlhttp.readyState != 4) return;

	var regexFindTemplates = RegExp('\\{\\{(' + disambiguationTemplates + ')(.*)\\}\\}','im');
	a = regexFindTemplates.exec(xmlhttp.responseText);
	
	if (a)
	{
		isdisambiguation=true;
		isredirect=false;
		txtPageType=txtDisambiguation;
	} else {
	
		var regexFindTemplates = RegExp('(' + redirectKeywords + ')','im');
		a = regexFindTemplates.exec(xmlhttp.responseText);
		
		if (a)
		{
			isredirect=true;
			isdisambiguation=false;
			//alert('1');
			txtPageType=txtRedirect;
		} else {
//			addAjaxWhatLinksHere();
			//addOnloadHook(addAjaxWhatLinksHere);
//			window.addEventListener("DOMContentLoaded", addAjaxWhatLinksHere, false);

			return;
		}
	}
	//addOnloadHook(addAjaxWhatLinksHere);
	//window.addEventListener("DOMContentLoaded", addAjaxWhatLinksHere, false);
	//create a fieldset for the disambiguator/redirect fixer
	cs=document.getElementById('contentSub');
	cs.innerHTML += ' (' + txtPageType + ')';
	
	bc = document.getElementById('bodyContent');

	y = bc.getElementsByTagName('fieldset')[1];
	newNode = document.createElement("fieldset");
	
	newNode.innerHTML =
		'<legend>' + txtFix + ' ' + txtPageType 
		//+ '<a href=\'javascript:loadPages()\'> [+]</a>'
		+ ' <a id=showDisamb href=\'javascript:showDisamb()\'>[' + txtShowLink + ']</a>'
		+ '<a id=hideDisamb style=display:none href=\'javascript:hideDisamb()\'>[' + txtHideLink + ']</a>'
		+ '</legend><span id=statusMsg style=display:none></span><div id=dContent style=display:none></div>';
	bc.insertBefore(newNode,y);
	
	//parse the wikitext of the disambiguation page/redirect
	
	wikiText = xmlhttp.responseText.replace(regexFindTemplates,'').trim();
	//alert(wikiText);
	
	//query= mw.config.get('wgServer') + mw.config.get('wgScriptPath') + '/api.php?action=parse&format=xml&text={{:' + wgTitle + '}}&title=' + wgTitle;
	params='action=parse&format=xml&title=' + wgTitle + '&text=' + wikiText;
	query= mw.config.get('wgServer') + mw.config.get('wgScriptPath') + '/api.php';
	document.getElementById('statusMsg').innerHTML=txtLoading;
	xmlhttp = sajax_init_object();
	if (!xmlhttp) return;
	xmlhttp.open("POST", query, true);
	xmlhttp.onreadystatechange = insertControls2;
	//xmlhttp.send(null);
	
	xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
	xmlhttp.setRequestHeader("Content-length", params.length);
	xmlhttp.setRequestHeader("Connection", "close");
	xmlhttp.send(params);
	
}

//Requests if the page is a disambiguation page
function isDisambiguation()
{
//document.getElementById('bodyContent').innerHTML='<iframe src="" id=k>dsads</iframe>';
//document.getElementById('k').contentDocument.innerHTML='dhasjkhasjk';

	title=document.getElementById('contentSub').getElementsByTagName('a')[0].href;
	title=title.substring(title.indexOf('=')+1, title.indexOf('&'));
	wgTitle = title; // <-- modify global wikipedia variable
	url=mw.config.get('wgServer') + mw.config.get('wgScript') + '?title=' + encodeURIComponent(title) + '&action=raw';

	xmlhttp = sajax_init_object();
	if (!xmlhttp) return;
	xmlhttp.open("GET", url, true);
	xmlhttp.onreadystatechange = insertControls;
	xmlhttp.send(null);
}

if (wgCanonicalSpecialPageName=='Whatlinkshere')
{
	window.addEventListener("DOMContentLoaded", isDisambiguation, false);
	window.addEventListener("DOMContentLoaded", addAjaxWhatLinksHere, false);
}

//</nowiki>