Utente:Sanjilops/monobook.js

Vai alla navigazione Vai alla ricerca

Questa pagina definisce alcuni parametri di aspetto e comportamento generale di tutte le pagine. Per personalizzarli vedi Aiuto:Stile utente.


Nota: dopo aver salvato è necessario pulire la cache del proprio browser per vedere i cambiamenti, e comunque qualche minuto di preghiera non guasta. Per Mozilla / Firefox / Safari: fare clic su Ricarica tenendo premuto il tasto delle maiuscole, oppure premere Ctrl-F5 o Ctrl-R (Command-R su Mac); per Chrome premere Ctrl-Shift-R (Command-Shift-R su un Mac); per Konqueror: premere il pulsante Ricarica o il tasto F5; per Opera può essere necessario svuotare completamente la cache dal menu Strumenti → Preferenze; per Internet Explorer: mantenere premuto il tasto Ctrl mentre si preme il pulsante Aggiorna o premere Ctrl-F5.

//disableHideEdit = true;
disableAlert = true;
disableaprilfish = true;
disableRefTooltip = false;


function Main() {
  FastOpen();
  editcurrentid();
  if (document.getElementById('alert-load')) alert("alert onload presenti");
  if (document.getElementById('alert-unload')) alert("alert onunload presenti");

  if (wgPageName == "Utente:Sanjilops/sandbox") gif_hack();

 /* Funzioni dell'editor */
 if ((wgAction == "edit" || wgAction == "submit") && document.getElementById("toolbar")) {
if (mwCustomEditButtons) {
   mwCustomEditButtons[0] = {
     "imageFile": "http://upload.wikimedia.org/wikipedia/en/1/13/Button_enter.png",
     "speedTip": "A capo",
     "tagOpen": "<br />\n",
     "tagClose": "",
     "sampleText": ""};

   mwCustomEditButtons[1] = {
     "imageFile": "http://upload.wikimedia.org/wikipedia/commons/0/05/Button_Anf%C3%BChrung.png",
     "speedTip": "Citazione",
     "tagOpen": "{" + "{Cit|",
     "tagClose": "}" + "}",
     "sampleText": "..."};

   mwCustomEditButtons[2] = {
     "imageFile": "http://upload.wikimedia.org/wikipedia/commons/0/0c/Button_P_template.png",
     "speedTip": "Template",
     "tagOpen": "{{",
     "tagClose": "}" + "}",
     "sampleText": "Template"};

   mwCustomEditButtons[3] = {
     "imageFile": "http://images.wikia.com/nonciclopedia/images/f/f9/Button_box.png",
     "speedTip": "Box",
     "tagOpen": '{|width="100%" align="center" style="background: #FFFFFF; color: #000000; border: 1px solid #000000; text-align: left; margin-bottom: 0px; margin-top: 0px; padding-right: 4px; padding-left: 4px;"\n|',
     "tagClose": "\n|}\n",
     "sampleText": ""};
   mwCustomEditButtons[mwCustomEditButtons.length] = {
     "imageFile": "http://images.wikia.com/nonciclopedia/images/0/0c/Button_Chuck.png",
     "speedTip": "tag generico",
     "tagOpen": "{{",
     "tagClose": "||firma=~~" + "~~{{VF|" + wgCurRevisionId + "}" + "}" + "}" + "}\n\n",
     "sampleText": ""};
   mwCustomEditButtons[mwCustomEditButtons.length] = {
     "imageFile": "http://images2.wikia.nocookie.net/nonciclopedia/images/a/a5/Button_Samara.png",
     "speedTip": "scadenza",
     "tagOpen": "{" + "{scadenza|{" + "{subst:7g}" + "}|note=",
     "tagClose": "|firma=~~" + "~~{{VF|" + wgCurRevisionId + "}" + "}" + "}" + "}\n\n",
     "sampleText": ""};
}

  if(wgCurRevisionId)
    mwEditButtons[9].tagOpen = '--~~' + '~~{{VF|' + wgCurRevisionId + '}' + '}';
   else
    mwEditButtons[9].tagOpen = '--~~' + '~~{{VF|}' + '}';

if (getElementsByClass(document, "editpage-copywarn-tools", 'table')) collapseTable(1);
  }
}
addOnloadHook(Main);

function FastOpen() {
 var Box = document.getElementById("searchBody");
 if (!Box) return;
 var form = document.createElement("form");
 Box.appendChild(form);
 form.style.position = "absolute";
 form.style.top = "1px";
 form.action = "/index.php";
 form.target = "_blank";
 var c = document.createElement("input");
 form.appendChild(c);
 c.type = "text";
 c.setAttribute('name', "title");
 c.size = "13";
 var menu = document.createElement("select");
 form.appendChild(menu);
 menu.setAttribute('name', "action");
 menu.options[menu.length] = new Option("Modifica", "edit", true);
 menu.options[menu.length] = new Option("Cronol", "history");
 menu.options[menu.length] = new Option("Elimina", "delete");
 var p = document.createElement("input");
 p.type = "submit";
 p.value = "vai"; 
 form.appendChild(p);
}


var disable_gif_hack = false;
function gif_hack () {
 if (disable_gif_hack) return false;
 var a_images = getElementsByClass(document.getElementById('bodyContent'), 'image', 'a');
 if (!a_images.length) return;
 var img, tmp;
 var thumbs = new Array();
 var names = new Array();
 for (var i = 0; i < a_images.length; i++) {
	img = a_images[i].getElementsByTagName('img')[0];
	if (/\.gif$/i.test(img.src) && /\/images\/thumb\//.test(img.src) && /\bgif\b/i.test(img.alt)) {
		thumbs.push(img);
		tmp = img.src.split('/');
		names.push("File:" + tmp[tmp.length - 1].replace(/\d+px-/, ''));
	 }
  }
 if (!thumbs.length) return;
 var httpRequest = createRequest();
 var id = setTimeout(function() { httpRequest.abort();}, 30000);
 var param = "format=xml&action=query&prop=imageinfo&iiprop=url&titles=" + names.join('|');
 httpRequest.onreadystatechange = function () { Receive(httpRequest, id); return; }
 httpRequest.open('POST', wgServer + wgScriptPath + "/api.php", true);
 httpRequest.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
 httpRequest.setRequestHeader('Content-Length', param.length);
 httpRequest.send(param);
 return;
 
 function Receive(o, id) {
	if (o.readyState != 4) return;
	clearTimeout(id);
	if (o.status != 200) return;
	var xml = o.responseXML;
	if (xml == null) return;
	if (xml.normalize) xml.normalize();
	var ii = xml.getElementsByTagName('ii');
	var i = 0;
	for (var I = 0; I < ii.length; I++) {
		for (i in thumbs) {
			if (ii[I].getAttribute('url').indexOf(names[i].replace("File:", '')) != -1) thumbs[i].src = ii[I].getAttribute('url');
		 }
	 }
	return;
  }
}

function Quick_Editor() {
 quickdiff_load();
 var sect = $("[name=wpSection]");
 if (!/&?undo=\d+/.test(location.search) && ((sect.length && !sect.val()) || !sect.length)) quicksave_load();
 if (["MediaWiki:Common.css", "MediaWiki:Monobook.css", "MediaWiki:Common.js", "MediaWiki:Monobook.js", "Utente:" + wgUserName + "/monobook.css", "Utente:" + wgUserName + "/monobook.js"].indexOf(wgPageName) == -1)
  quickpreview_load();
 $("#wpTextbox1").bind('mouseup keyup focus change', quickedit_switch);
 
 var c = document.createElement('span');
 c.id = "quickeditor_charactercount";
 $(c).text($("#wpTextbox1").val().length.toString() + " caratteri");
 $("#toolbar").append(c);
 return;
}

function quickedit_switch() {
 $("#quicksaveButton").attr('disabled', this.value == quicksave_checktext ? 'disabled' : '');
 if (!(/\.css$/.test(wgTitle) && wgNamespaceNumber % 2 == 0)) {
	$("#quickpreviewButton").val(this.selectionStart < this.selectionEnd ? "Anteprima selezione" : "Visualizza anteprima");
  }
 
 $("#quickeditor_charactercount").text(this.value.length.toString() + " caratteri");
 return;
}

var QS_waitforpreview = " Creazione anteprima della pagina in corso...";
var quicksave_checktext = '';
function quicksave_load() {
 var b = document.createElement('input');
 b.type = 'button';
 $("#wpSave").after(b);
 b.value = "Salva";
 b.id = "quicksaveButton";
 $(b).click(quicksave);
 b.accessKey = '1';
 b.title = "Salva e continua a modificare la pagina [alt-shift-1]";
 b.disabled = true;
 quicksave_checktext = $("#wpTextbox1").val();
 return;
}

function quicksave () {
	var textbox = $("#wpTextbox1")[0];
	var Source = textbox.value;
	textbox.disabled = true;
	$("#wpSummary, #wpSave, #quicksaveButton, #quickpreviewButton, #quickdiffButton").attr('disabled','disabled');	
	$('body').css('cursor','progress');
	
	var temp = $("#quicksave_msgbox")[0];
	if (!temp) {
		temp = $(document.createElement('div')).insertBefore($("#editform")).attr('id', "quicksave_msgbox");
		var msg_box = temp[0].appendChild(document.createElement('div'));
		temp.append(document.createElement('span')).attr('id', "quicksave_msgbox_close").text('×').click( function () { $("#quicksave_msgbox").hide("slow"); });
	 }
	 else {
		temp.style.display = 'block';
		var msg_box = temp.firstChild;
	 }
	msg_box.innerHTML = "Salvataggio in corso...";
	// msg_box.scrollIntoView();

	var param = "action=edit&format=xml&title=" + encodeURIComponent(wgPageName);
	param += "&token=" + $("[name=wpEditToken]:first").val().replace(/\+\\/, '%2' + 'B%5' + 'C');
	param += "&summary=" + encodeURIComponent($("#wpSummary").val());
	temp = $("#wpCaptchaId")[0];
	if (temp) {
		param += "&captchaid=" + temp.value + "&captchaword=" + encodeURIComponent($("#wpCaptchaWord").val());
		$("#editform #captcha_box").remove();
	 }
	if ($("#wpMinoredit")[0].checked) param += "&minor=";
	var Watched = $("#wpWatchthis")[0].checked;
	if ($("#ca-watch")[0] && Watched) {
		$("#ca-watch a").text(wgAjaxWatch["watchingMsg"].toLowerCase());
		param += "&watchlist=watch";
	 }
	if ($("#ca-unwatch")[0] && !Watched) {
		$("#ca-unwatch a").text(wgAjaxWatch["unwatchingMsg"].toLowerCase());
		param += "&watchlist=unwatch";
	 }
	param += "&basetimestamp=" + $("[name=wpEdittime]:first").val();
	param += "&starttimestamp=" + $("[name=wpStarttime]:first").val();
	param += "&md5=" + MD5(textbox.value);
	param += "&text=" + encodeURIComponent(Source);
	var httpRequest = createRequest();
	var id = setTimeout(function() { httpRequest.abort(); msg_box.style.color = 'red'; $(msg_box).text("Salvataggio fallito: il server non risponde."); Finish(false); }, 15000);
	httpRequest.onreadystatechange = function () { Response(httpRequest, id); return;};
	httpRequest.open('POST', wgServer + wgScriptPath + "/api.php", true);
	httpRequest.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
	httpRequest.setRequestHeader('Content-Length', param.length);
	$("#wpSummary").attr('disabled','');
	textbox.disabled = false;
	httpRequest.send(param);
	return; // fine quicksave
	
 function Response (o, id) {
	if (o.readyState != 4) return;
	if (o.status != 200) {
		if (o.status && (o.status < 200 || o.status > 299)) {
			clearTimeout(id);
			msg_box.style.color = 'red';
			$(msg_box).text("Salvataggio fallito. Risposta del server: " + o.status);
			Finish(false);
		 }
		return;
	 }
	clearTimeout(id);
	if (o.responseXML == null)  {
		msg_box.style.color = 'rgb(100, 100, 100)';
		$(msg_box).text("Errore nella risposta del server. Controlla nella cronologia se il salvataggio è avvenuto");
		Finish(false);
		return;
	 }
	if (o.responseXML.normalize) o.responseXML.normalize();
	var result = o.responseXML.getElementsByTagName('edit');
	if (result && result[0] != undefined) {
		if (result[0].getAttribute('result') == "Success") {
			$(msg_box).text("Salvataggio completato." + QS_waitforpreview);
			wgCurRevisionId = result[0].getAttribute('newrevid');
			setTimeout(function () {quickpreview(true); return; }, 100); // su un nuovo thread per non fermare la funzione
			if (wgUserName) {
				if (Watched) {
					temp = $("#ca-watch")[0];
					if (temp) {
						temp.id = "ca-unwatch";
						temp = temp.firstChild;
						temp.href = temp.href.replace(/=watch$/, "=unwatch");
						$(temp).text(wgAjaxWatch["unwatchMsg"].toLowerCase());
						temp.title = wgAjaxWatch["tooltip-ca-unwatchMsg"];
					 }
				 }
				 else {
					temp = $("#ca-unwatch")[0];
					if (temp) {
						temp.id = "ca-watch";
						temp = temp.firstChild;
						temp.href = temp.href.replace(/=unwatch$/, "=watch");
						$(temp).text(wgAjaxWatch["watchMsg"].toLowerCase());
						temp.title = wgAjaxWatch["tooltip-ca-watchMsg"];
					 }
				 }
			 }
			$(msg_box).append('<br ' + '/>');
			var request_ts = createRequest();
			var ts_id = setTimeout(function() { request_ts.abort(); $(msg_box).append("Impossibile procedere ad ulteriori salvataggi. Il server non risponde"); Finish(true, false); return; }, 15000);
			request_ts.onreadystatechange = function () { Get_Timestamp(request_ts, ts_id); return; }
			var param = "action=query&format=xml&" + "prop=revisions&meta=userinfo&uiprop=hasmsg&rvprop=timestamp%" + "7Cuser&rvlimit=1&rvdir=older&titles=" + encodeURIComponent(wgPageName);
			request_ts.open('POST', wgServer + wgScriptPath + "/api.php", true);
			request_ts.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
			request_ts.setRequestHeader('Content-Length', param.length);
			request_ts.send(param);
			return;
	 	 }
		if (result[0].getAttribute('result') == "Failure") {
			var captcha = result[0].getElementsByTagName('captcha')[0];
			if (captcha == null) {
				msg_box.style.color = 'red';
				$(msg_box).text("Salvataggio fallito: errore ignoto");
				Finish(false);
				return;
			 }
			msg_box.style.display = 'none';
			msg_box.innerHTML = '';
			var captcha_id = document.createElement('input');
			captcha_id.type = 'hidden';
			captcha_id.id = "wpCaptchaId";
			captcha_id.value = captcha.getAttribute('id');
			var captcha_word = document.createElement('input');
			captcha_word.id = "wpCaptchaWord";
			captcha_word.style.marginBottom = "10px";
			var captcha_img = document.createElement('img');
			captcha_img.src = wgServer + wgScriptPath + "/index.php?title=Special:Captcha/image&wpCaptchaId=" + captcha_id.value;
			var captcha_msg = document.createElement('p');
			captcha_msg.innerHTML = 'La modifica richiesta aggiunge dei collegamenti esterni alla pagina; come misura precauzionale contro l\'inserimento automatico di spam, si prega di inserire nella casella sottostante la parola che compare distorta in questa immagine (<' + 'a href="/wiki/Speciale:Captcha/help" title="Speciale:Captcha/help">come funziona?</' + 'a>)';
			var captcha_box = document.createElement('div');
			captcha_box.id = "captcha_box";
			$("#toolbar").before(captcha_box);
			$(captcha_box).append(captcha_msg,[captcha_img,captcha_word,captcha_id]);
			Finish(false);
			return;
		 }
	 }
	var error = o.responseXML.getElementsByTagName('error');
	if (error == null)  {
		msg_box.style.color = 'rgb(100, 100, 100)';
		$(msg_box).text("Errore nella risposta del server. Controlla nella cronologia se il salvataggio è avvenuto");
		Finish(false);
		return;
	 }
	msg_box.style.color = 'red';
	switch (error[0].getAttribute('code')) {
		case 'editconflict':
		 $("#wpSave").attr('disabled','').delay(100).click();
		 return;

		case 'noedit':
		case 'noedit-anon':
		case 'protectedtitle':
		 $(msg_box).text("Non sei autorizzato a modificare questa pagina.");
		 Finish(false);
		 return;
		
		default:
		 $(msg_box).text("Salvataggio fallito: " + error[0].getAttribute('info'));
		 Finish(false);
		 return;
	 }
 }

 function Get_Timestamp (o, id) {
	if (o.readyState != 4) return;
	if (o.status != 200) {
		if (o.status && (o.status < 200 || o.status > 299)) {
			clearTimeout(id);
			$(msg_box).append("Impossibile procedere ad ulteriori salvataggi. Risposta del server: " + o.status);
			Finish(true, false);
		 }
		return;
	 }
	clearTimeout(id);
	if (o.responseXML == null) {
		$(msg_box).append("Impossibile procedere ad ulteriori salvataggi.");
		Finish(true, false);
		return;
	 }
	if (o.responseXML.normalize) o.responseXML.normalize();
	var rev = o.responseXML.getElementsByTagName('rev');
	if (!rev || rev[0] == undefined) {
		$(msg_box).append("Impossibile procedere ad ulteriori salvataggi.");
		Finish(true, false, o);
		return;
	 }
	var t = rev[0].getAttribute('timestamp');
	$("[name=wpEdittime]:first").val(t.replace(/\D/g, ''));
	var d = new Date(t.replace(/(\d\d\d\d)-(\d\d)-(\d\d)T(.+)Z/, "$1/$2/$3 $4"));
	d.setHours(d.getHours() - d.getTimezoneOffset()/60);
	$(msg_box).append("Ultima modifica: " + rev[0].getAttribute('user') + ' ' + d.toLocaleString());
	d = new Date();
	$("[name=wpStarttime]:first").val(d.getUTCFullYear().toString() + addzero(d.getUTCMonth()) + addzero(d.getUTCDate()) + addzero(d.getUTCHours()) + addzero(d.getUTCMinutes())+ addzero(d.getUTCSeconds() + 1));

	Finish(true, true, o);
	return;
 }


 function Finish(success, got_ts, o) {
	if (success) {
		quicksave_checktext = Source;
		$("#wpSave, #quicksaveButton").attr('disabled', got_ts ? '': 'disabled'); // se il salvataggio è riuscito, senza timestamp non possiamo farne altri

 /* nuovi messaggi in discussione? */
		if (o == undefined) return;
		var temp = o.responseXML.getElementsByTagName('userinfo');
		if (!temp || temp[0] == undefined) return;
		var $usermessage = $(".usermessage:not(#wikiPreview > *)");
		if (!temp[0].hasAttribute('messages')) {
			$usermessage.css('display', 'none');
			return;
		 }
		var name = (wgUserName)? wgUserName : temp[0].getAttribute('name');
		if (!$usermessage.length) {
			$usermessage = $(document.createElement('div')).addClass("usermessage").insertBefore($("#wikiPreview")).html('Hai <a title="Discussioni utente:' + name + '" href="/index.php?title=Discussioni_utente:' + encodeURI(name) + '&redirect=no">nuovi messaggi</a' + '> (<a title="Discussioni utente:' + name + '" href="/index.php?title=Discussioni_utente:' + encodeURI(name) + '&diff=cur">differenza con la revisione precedente</a' + '>).');
		 }
		 else $usermessage.css('display', 'block');
	 }
	 
	 else {
		$("#quickpreviewButton, #quickdiffButton").attr('disabled', '');
		$('body').css('cursor','auto');
	 }
	return;
 }
} // <- quicksave()

var QP_hiddencatlist;
var QP_hiddencats_cat = "Categorie nascoste";
function quickpreview_load() {
	var b = document.createElement('input');
	b.type = 'button';
	b.value = (/\.css$/.test(wgTitle) && wgNamespaceNumber % 2 == 0) ? "Anteprima stile" : "Visualizza anteprima";
	b.id = "quickpreviewButton";
	$(b).click(quickpreview);
	b.accessKey = '2';
	b.title = "Anteprima delle modifiche (consigliata prima di salvare) [alt-shift-2]";
	$("#wpPreview").css({'margin':'0px', 'padding':'0px', 'font-size':'0', 'width':'0px', 'border':'0px none'});
	$("#wpPreview").before(b);
	$("#quickpreview-hotkeysuggest").css({'visibility' : 'visible'});
	QP_hiddencatlist = getCookie("QPhc");
	if (QP_hiddencatlist == null) {
		var request_hc = createRequest();
		request_hc.onreadystatechange = function () { quickpreview_set_hc_cookie(request_hc); return;};
		request_hc.open('GET', wgServer + wgScriptPath + "/api.php?format=xml&action=query&list=categorymembers&cmtitle=Category:" + encodeURI(QP_hiddencats_cat) + "&cmlimit=500", true);
		request_hc.send(null);
	 }
	return;

 function quickpreview_set_hc_cookie (o) {
	 if (o.readyState != 4 || o.status != 200 || o.responseXML == null) return;
	 if (o.responseXML.normalize) o.responseXML.normalize();
	 var cm = o.responseXML.getElementsByTagName('categorymembers')[0].getElementsByTagName('cm');
	 var tmp = new Array();
	 for (i in cm) tmp.push(cm[i].getAttribute('title'));
	 QP_hiddencatlist = tmp.join('|');
	 document.cookie = "QPhc=" + escape(QP_hiddencatlist);
	 return;
  }
}

function quickpreview (after_save) {
	if (after_save == undefined) after_save = false;
	$("#quickpreviewButton, #quickdiffButton").attr('disabled','disabled');
	$('body').css('cursor','progress');
	var temp;

/* Pulizia dell'area di anteprima */
	var $previewArea = $("#wikiPreview");
	$previewArea.html('').css('display', 'block');
	
	$("#editintro, .mw-newarticletext:first, .mw-newarticletextanon:first, #mw-anon-edit-warning, #mw-warning-with-logexcerpt, #mw-edit-longpagewarning, #contentSub2, #explainconflict").remove();
	$("#wikiDiff").css('display','none');
	$("#contentSub").html('');
/***** Nonciclopedia only *****/
		$("#wpTalkPageText").remove();
		
/* Rimuove eventuali css importati precedentemente; */
		$("#add-css-link").remove();
/**********/
	$("#add-css-quickpreview").remove();

/* Imposta il titolo */
	temp = wgPageName.replace(/_/g, ' ');
	$("#firstHeading").html(temp);
	$('title:first').html(temp + " {anteprima} - " + wgSiteName);

/* Anteprima css - non serve collegarsi al server */	
	if (/\.css$/.test(wgTitle) && wgNamespaceNumber % 2 == 0 && !after_save) {
		var style = document.createElement('style');
		style.type = 'text/css';
		style.innerHTML = $("#wpTextbox1").val();
		style.id = "add-css-quickpreview";
		$('head').append(style);
		Finish(false);
		return;
	 }
	

	var param = "format=xml&action=parse&" + "prop=text%7" + "Ccategories%7" + "Ctemplates";
	if (after_save) {
		param += "&page=" + encodeURIComponent(wgPageName);
	 }
	 else {
		var textbox = $("#wpTextbox1")[0];
		textbox.disabled = true;
		var start = textbox.selectionStart, end = textbox.selectionEnd;
		if (start < end) temp = textbox.value.slice(start, end);
		 else {
			temp = textbox.value + '\n';
			if ($("[name=wpSection]:first").val() == 'new') temp = "== " + $("#wpSummary").val() + " ==\n" + temp;
		 }
		textbox.disabled = false;
		param += "&pst=&title=" + encodeURIComponent(wgPageName) + "&text=" + encodeURIComponent(temp);
	 }
	var httpRequest = createRequest();
	var id = setTimeout(function() { httpRequest.abort(); alert("Errore: il server non risponde"); Finish(false); }, 15000);
	httpRequest.onreadystatechange = function () { Write(httpRequest, id); return;};
	httpRequest.open('POST', wgServer + wgScriptPath + "/api.php", true);
	httpRequest.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
	httpRequest.setRequestHeader('Content-Length', param.length);
	httpRequest.send(param);
	return; /* fine quickpreview */

 function Write(o, id) {
	if (o.readyState != 4) return;
	if (o.status != 200) {
		if (o.status && (o.status < 200 || o.status > 299)) {
			alert("Anteprima non riuscita. Risposta del server: " + o.status);
			clearTimeout(id);
			Finish(false);
		 }
		return;
	 }
	clearTimeout(id);
	if (o.responseXML == null)  {
		alert("Anteprima non riuscita (errore del server?)");
		Finish(false);
		return;
	 }
	if (o.responseXML.normalize) o.responseXML.normalize();
	var R = o.responseXML.getElementsByTagName('text')[0].firstChild;
	temp = R.data;
	if (["MediaWiki:Common.css", "MediaWiki:Monobook.css", "MediaWiki:Common.js", "MediaWiki:Monobook.js", "Utente:" + wgUserName + "/monobook.css", "Utente:" + wgUserName + "/monobook.js"].indexOf(wgPageName) != -1) {
		temp = "<pre class='mw-code mw-" + /(?!\.)\w+$/.exec(wgTitle) + "'>" + temp + "<" + "/pre>";
	 }
	$previewArea.html(temp);

/* aggiungi elenco template */
	var templatesUsed = $(".templatesUsed")[0];
	if (!templatesUsed) {
		templatesUsed = document.createElement('div');
		templatesUsed.className = "templatesUsed";
		$("#editform").append(templatesUsed);
	 }
	var templatesList = templatesUsed.getElementsByTagName('ul')[0];
	if (!templatesList) {
		templatesList = templatesUsed.appendChild(document.createElement('ul'));
	 }
	 else templatesList.innerHTML = '';
	R = o.responseXML.getElementsByTagName('templates')[0].getElementsByTagName('tl');
	if (R.length > 0) {
		var name;
		temp = '';
		for (i in R) {
			name = R.item(i).firstChild.nodeValue;
			if (R.item(i).getAttribute('exists') != undefined)
				temp += "<li" + "><a title='" + name + "' href='/wiki/" + encodeURI(name) + "'>" + name + "</a> (<a href='/index.php?title=" + encodeURI(name) + "&action=edit&editintro=Mediawiki:Editintro'>modifica</a>)</li>";
			 else
				temp += "<li" + "><a title='" + name + " (la pagina non esiste)' class='new' href='/index.php?title=" + encodeURI(name) + "&action=edit&redlink=1&editintro=Mediawiki:Editintro'>" + name + "</a></li>";
		 }
		templatesList.innerHTML = temp;
		temp = getElementsByClass(templatesUsed, "mw-templatesUsedExplanation", 'div')[0];
		if (!temp) {
			temp = templatesUsed.insertBefore(document.createElement('div'), templatesList);
			temp.className = "mw-templatesUsedExplanation";
			temp.innerHTML = "<p" + ">Template utilizzati in questa anteprima: </p>";
		 }
	 }

/* aggiungi categorie */
	var catlinksBox = $(".printfooter ~ #catlinks")[0];
	R = o.responseXML.getElementsByTagName('categories')[0].getElementsByTagName('cl');
	if (R.length > 0) {
		if (catlinksBox != null) {
			catlinksBox.innerHTML = '';
			catlinksBox.style.display = 'block';
		 }
		 else {
			catlinksBox = document.createElement('div');
			catlinksBox.id = "catlinks";
			catlinksBox.className = "catlinks";
			$(".visualClear:first").before(catlinksBox);
		 }
		var normal_cats = new Array();
		var normalcatlinks = new Array();
		var hiddencatlinks = new Array();
		for (i in R) {
			name = R.item(i).firstChild.nodeValue;
			if (RegExp(name.replace(/_/g, ' ')).test(QP_hiddencatlist)) hiddencatlinks.push('<span dir="ltr"><a href="/wiki/Categoria:' + encodeURI(name) + '" title="Categoria:' + name.replace(/_/g, ' ') + '">' + name.replace(/_/g, ' ') + '</a></span>');
			 else {
				normal_cats.push('[[:Categoria:' + name + '|' + name.replace(/_/g, ' ') + ']]');
				normalcatlinks.push('<span dir="ltr"><a href="/wiki/Categoria:' + encodeURI(name) + '" title="Categoria:' + name.replace(/_/g, ' ') + '">' + name.replace(/_/g, ' ') + '</a>*</span>');
			 }
		 }
		if (hiddencatlinks.length > 0) {
			var hiddencatlinksBox = catlinksBox.appendChild(document.createElement('div'));
			hiddencatlinksBox.id = "mw-hidden-catlinks";
			hiddencatlinksBox.className = "mw-hidden-cats-hidden";
			$(catlinksBox).toggleClass("catlinks-allhidden", (normal_cats.length == 0));
			temp =  "Categori" + (hiddencatlinks.length > 1? "e nascoste: " : "a nascosta: ") + hiddencatlinks.join(" | ");
			hiddencatlinksBox.innerHTML = temp;
		 }
		if (normal_cats.length > 0) {
			$(catlinksBox).removeClass("catlinks-allhidden"); // CDW
			var $normalcatlinksBox = $(document.createElement('div')).prependTo(catlinksBox).attr('id', "mw-normal-catlinks").html("<a title='Speciale:Categorie' href='/wiki/Speciale:Categorie'" + ">Categori" + (normalcatlinks.length > 1 ? "e" : "a") + "</a>: " + normalcatlinks.join(" | "));
			$normalcatlinksBox.append('<br ' + '/>').append($(document.createElement('span')).css({'font-size':'8pt', 'font-style':'italic', 'font-family':'monospace'}).text("* NB. Operazione non completata: l'aspetto delle categorie potrebbe essere diverso."));
			temp = "format=xml&action=parse&" + "prop=text&text=" + encodeURIComponent("[[Speciale:Categorie|Categori" + (normalcatlinks.length > 1 ? "e" : "a") + "]]: " + normal_cats.join(' | '));
			var request_cat = createRequest();
			var cat_id = setTimeout(function() { request_cat.abort(); Finish(true); }, 30000);
			request_cat.onreadystatechange = function () { Show_Categories(request_cat, cat_id, $normalcatlinksBox); return;};
			request_cat.open('POST', wgServer + wgScriptPath + "/api.php", true);
			request_cat.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
			request_cat.setRequestHeader('Content-Length', temp.length);
			setTimeout(function () { request_cat.send(temp); return; }, 10);
		 }
	 }
	 else $(catlinksBox).html('').css('display','none');
	
	Finish(true);
	return;
 } /* <- Write */

 function Show_Categories (o, id, box) {
	if (o.readyState != 4) return;
	if (o.status != 200) {
		if (o.status && (o.status < 200 || o.status > 299)) {
			clearTimeout(id);
		 }
		return;
	 }
	clearTimeout(id);
	if (o.responseXML == null)  {
		return;
	 }
	if (o.responseXML.normalize) o.responseXML.normalize();
	box.html(o.responseXML.getElementsByTagName('text')[0].firstChild.data);
	return;
}

 function Finish(success) {
	$("#quickpreviewButton, #quickdiffButton").attr('disabled', '');
	$('body').css('cursor','auto');
	if (after_save) {		
		var temp = $("#quicksave_msgbox");
		$(temp).text($(temp).text().replace(QS_waitforpreview, ''));
	 }
	if (success) {
		if (!after_save) $("#p-logo")[0].scrollIntoView();

// mostra il toggle dell'indice
		if (window.showTocToggle) { window.tocShowText = "mostra"; window.tocHideText = "nascondi"; showTocToggle();}

// carica onloadhooks
		hooks_common_render();
		hooks_monobook_render();
		for (i in hooks_custom) hooks_custom[i]();
	 }
	return;
 }

} // <- quickpreview();

function quickdiff_load() {
	var $buttons = $(".editButtons");
	var b = document.createElement('input');
	b.type = 'button';
	b.value = "Mostra cambiamenti";
	b.id = "quickdiffButton";
	$(b).click(quickdiff);
	b.accessKey = '3';
	b.title = "Guarda le modifiche apportate al testo [alt-shift-3]";
	$("#wpDiff").css({'margin':'0px', 'padding':'0px', 'font-size':'0', 'width':'0px', 'border':'0px none'});
	$("#wpDiff").before(b);
	$("#quickedit-hotkeysuggest").css({'left': (b.offsetLeft - 35).toString() + 'px', 'visibility' : 'visible'});
	return;
}

function quickdiff () {
	$("#quickdiffButton, #quickpreviewButton").attr('disabled','disabled');	
	$('body').css('cursor','progress');
	if ($("#diff-css").length == 0)
		$(document.createElement('link')).attr({'href': "h" + "ttp://images.wikia.com/common/__cb34808/skins/common/diff.css?34808", 'rel':'stylesheet', 'id':"diff-css"}).appendTo($('head'));

	var $diffArea = $("#wikiDiff");
	if ($diffArea.length == 0) {
		$diffArea = $(document.createElement('div')).attr('id', "wikiDiff").insertBefore("#editform");
		var $diffTable = $(document.createElement('table')).addClass("diff").appendTo($diffArea);
		$diffTable.html("<colgroup><col class='diff-marker'><col class='diff-content'><col class='diff-marker'><col class='diff-content'></colgroup><tr valign='top'><td class='diff-otitle' colspan='2'>Versione attuale</td><td class='diff-ntitle' colspan='2'>Il tuo testo</td></tr>");
	 }
	 else {
		$diffArea.css('display', 'block');
		var $diffTable = $diffArea.children("table.diff");
		$diffTable.find('tr:gt(0)').remove();
	 }
	
	var param = "format=xml&action=query&" + "prop=revisions&revids=" + wgCurRevisionId;
	var section = $("[name=wpSection]").val();
	if (section && section != "new") param += "&rvsection=" + section;
	param += "&rvdifftotext=" + encodeURIComponent($("#wpTextbox1").val());
	var httpRequest = createRequest();
	var id = setTimeout(function() { httpRequest.abort(); alert("Errore: il server non risponde"); Finish(false); }, 15000);
	httpRequest.onreadystatechange = function () { Write(httpRequest, id); return;};
	httpRequest.open('POST', wgServer + wgScriptPath + "/api.php", true);
	httpRequest.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
	httpRequest.setRequestHeader('Content-Length', param.length);
	httpRequest.send(param);
	return; /* fine quickdiff */
	
 function Write(o, id) {
	if (o.readyState != 4) return;
	if (o.status != 200) {
		if (o.status && (o.status < 200 || o.status > 299)) {
			$diffArea.html("Confronto versioni non riuscito. Risposta del server: " + o.status);
			clearTimeout(id);
			Finish(false);
		 }
		return;
	 }
	clearTimeout(id);
	if (o.responseXML == null)  {
		$diffArea.html("Confronto versioni non riuscito (errore del server?)");
		Finish(false);
		return;
	 }
	if (o.responseXML.normalize) o.responseXML.normalize();
	$diffTable.append(o.responseXML.getElementsByTagName('diff')[0].firstChild.data);
	Finish(true);
	return;
 }
 
 function Finish(success) {
	$("#quickdiffButton, #quickpreviewButton").attr('disabled','');	
	$('body').css('cursor','auto');
	return;
 }
}