MediaWiki:Gadget-CatGenForm.js

Aus Watch-Wiki
Zur Navigation springen Zur Suche springen

Hinweis: Leere nach dem Speichern den Browser-Cache, um die Änderungen sehen zu können.

  • Firefox/Safari: Umschalttaste drücken und gleichzeitig Aktualisieren anklicken oder entweder Strg+F5 oder Strg+R (⌘+R auf dem Mac) drücken
  • Google Chrome: Umschalttaste+Strg+R (⌘+Umschalttaste+R auf dem Mac) drücken
  • Internet Explorer: Strg+F5 drücken oder Strg drücken und gleichzeitig Aktualisieren anklicken
  • Opera: Gehe zu Menü → Einstellungen (Opera → Einstellungen auf dem Mac) und dann auf Datenschutz & Sicherheit → Browserdaten löschen → Gespeicherte Bilder und Dateien.
/* Global Vars */

var catGenFormConf = mw.config.get(['wgUserGroups', 'wgServer', 'wgScriptPath', 'wgAction', 'wgGenUseTextSummary', 'wgGenOverwrite', 'wgPageName']);

/* ------------------------------------------------ */
/* Script zum Erstellen von Vorlagen und Kategorien  */
/* ------------------------------------------------ */

function CatGenFormLoad() {
  if (catGenFormConf.wgUserGroups) {
    for (var i = 0; i < catGenFormConf.wgUserGroups.length; i++) {
      if (catGenFormConf.wgUserGroups[i] == 'sysop' || catGenFormConf.wgUserGroups[i] == 'bot') {
        InsertNode("javascript:CatGenForm.LoadCatGenForm()", "Vorlagen und Kategorien-Generator", TW_WERKZEUGE, "ul");
        break;
      }
    }
  }
}

var CatGenForm = {

t_Sprachen : new Array('de','en','es','nl','ru','it'),
t_Typen : new Array('Uhrenmodelle','Uhrwerke','Archiv','Porträt','Gebäude','Marken und Warenzeichen','Werkzeuge'),

InitLanguageVars : function () {

	CatGenForm.t_VorlagenTexte['de'] = 'Kategorie Bildgalerie ';
	CatGenForm.t_VorlagenTexte['en'] = 'Category Picture gallery ';
	CatGenForm.t_VorlagenTexte['es'] = 'Categoría galería de imagenes ';
	CatGenForm.t_VorlagenTexte['it'] = 'Categoria galleria fotografica ';
	CatGenForm.t_VorlagenTexte['nl'] = 'Categorie Afbeeldingen galerij ';
	CatGenForm.t_VorlagenTexte['ru'] = 'Категория Фотогалерея ';

	CatGenForm.t_KategorienTexte['de'] = 'Bildgalerie ';
	CatGenForm.t_KategorienTexte['en'] = 'Picture gallery ';
	CatGenForm.t_KategorienTexte['es'] = 'Galería de imagenes ';
	CatGenForm.t_KategorienTexte['it'] = 'Galleria fotografica ';
	CatGenForm.t_KategorienTexte['nl'] = 'Afbeeldingen galerij ';
	CatGenForm.t_KategorienTexte['ru'] = 'Фотогалерея ';

	CatGenForm.t_TypTexte['Uhrenmodelle_de'] = 'Uhrenmodelle ';
	CatGenForm.t_TypTexte['Uhrenmodelle_en'] = 'watch models ';
	CatGenForm.t_TypTexte['Uhrenmodelle_es'] = 'de modelos de relojes ';
	CatGenForm.t_TypTexte['Uhrenmodelle_it'] = 'di modelli orologi ';
	CatGenForm.t_TypTexte['Uhrenmodelle_nl'] = 'uurwerkmodellen ';
	CatGenForm.t_TypTexte['Uhrenmodelle_ru'] = 'Модели часов ';

	CatGenForm.t_TypTexte['Uhrwerke_de'] = 'Uhrwerke ';
	CatGenForm.t_TypTexte['Uhrwerke_en'] = 'movements ';
	CatGenForm.t_TypTexte['Uhrwerke_es'] = 'de mecanismos de relojes ';
	CatGenForm.t_TypTexte['Uhrwerke_it'] = 'di movimento degli orologi ';
	CatGenForm.t_TypTexte['Uhrwerke_nl'] = 'uurwerken ';
	CatGenForm.t_TypTexte['Uhrwerke_ru'] = 'Часовые механизмы ';

	CatGenForm.t_TypTexte['Archiv_de'] = 'Archiv ';
	CatGenForm.t_TypTexte['Archiv_en'] = 'archive ';
	CatGenForm.t_TypTexte['Archiv_es'] = 'archivo ';
	CatGenForm.t_TypTexte['Archiv_it'] = 'di Archivio ';
	CatGenForm.t_TypTexte['Archiv_nl'] = 'archief ';
	CatGenForm.t_TypTexte['Archiv_ru'] = 'Архив ';

	CatGenForm.t_TypTexte['Personen_de'] = 'Personen ';
	CatGenForm.t_TypTexte['Personen_en'] = 'persons ';
	CatGenForm.t_TypTexte['Personen_es'] = 'persona ';
	CatGenForm.t_TypTexte['Personen_it'] = 'di Persone ';
	CatGenForm.t_TypTexte['Personen_nl'] = 'personen ';
	CatGenForm.t_TypTexte['Personen_ru'] = 'лица ';

	CatGenForm.t_TypTexte['Porträt_de'] = 'Porträt ';
	CatGenForm.t_TypTexte['Porträt_en'] = 'portrait ';
	CatGenForm.t_TypTexte['Porträt_es'] = 'retrato ';
	CatGenForm.t_TypTexte['Porträt_it'] = 'di Ritratti ';
	CatGenForm.t_TypTexte['Porträt_nl'] = 'portretten ';
	CatGenForm.t_TypTexte['Porträt_ru'] = 'Портрет ';

	CatGenForm.t_TypTexte['Gebäude_de'] = 'Gebäude ';
	CatGenForm.t_TypTexte['Gebäude_en'] = 'buildings ';
	CatGenForm.t_TypTexte['Gebäude_es'] = 'edificios ';
	CatGenForm.t_TypTexte['Gebäude_it'] = 'Edifici ';
	CatGenForm.t_TypTexte['Gebäude_nl'] = 'gebouwen ';
	CatGenForm.t_TypTexte['Gebäude_ru'] = 'здания ';

	CatGenForm.t_TypTexte['Marken und Warenzeichen_de'] = 'Marken und Warenzeichen ';
	CatGenForm.t_TypTexte['Marken und Warenzeichen_en'] = 'marks and brands ';
	CatGenForm.t_TypTexte['Marken und Warenzeichen_es'] = 'marcas y marcas comercial ';
	CatGenForm.t_TypTexte['Marken und Warenzeichen_it'] = 'di Marche e Marchi ';
	CatGenForm.t_TypTexte['Marken und Warenzeichen_nl'] = 'merken en handelsmerken ';
	CatGenForm.t_TypTexte['Marken und Warenzeichen_ru'] = 'Марки и торговые знаки ';

	CatGenForm.t_TypTexte['Werkzeuge und Werkzeugmaschinen_de'] = 'Werkzeuge und Werkzeugmaschinen ';
	CatGenForm.t_TypTexte['Werkzeuge und Werkzeugmaschinen_en'] = 'tools and machine tools ';
	CatGenForm.t_TypTexte['Werkzeuge und Werkzeugmaschinen_es'] = 'enseres y máquinas herramienta ';
	CatGenForm.t_TypTexte['Werkzeuge und Werkzeugmaschinen_it'] = 'Strumenti ';
	CatGenForm.t_TypTexte['Werkzeuge und Werkzeugmaschinen_nl'] = 'gereedschappen en machinale gereedschappen ';
	CatGenForm.t_TypTexte['Werkzeuge und Werkzeugmaschinen_ru'] = 'инструменты и станки ';

	CatGenForm.t_TypTexte['Werkzeuge_de'] = 'Werkzeuge ';
	CatGenForm.t_TypTexte['Werkzeuge_en'] = 'tools ';
	CatGenForm.t_TypTexte['Werkzeuge_es'] = 'enseres ';
	CatGenForm.t_TypTexte['Werkzeuge_it'] = 'Strumenti ';
	CatGenForm.t_TypTexte['Werkzeuge_nl'] = 'gereedschappen ';
	CatGenForm.t_TypTexte['Werkzeuge_ru'] = 'инструменты ';

	CatGenForm.t_VorlagenKategorie['de'] = 'Vorlagen';
	CatGenForm.t_VorlagenKategorie['en'] = 'Template/en';
	CatGenForm.t_VorlagenKategorie['es'] = 'Plantillas';
	CatGenForm.t_VorlagenKategorie['it'] = 'Template';
	CatGenForm.t_VorlagenKategorie['nl'] = 'Sjablonen';
	CatGenForm.t_VorlagenKategorie['ru'] = 'Шаблон';
},

StartCreatingVKFiles : function () {

	setcursor( 'wait' );
	CatGenForm.t_Files.splice( 0, CatGenForm.t_Files.length );
	CatGenForm.t_processnext = 0;
	CatGenForm.t_stopp = false;

	for ( t_Sprache = 0; t_Sprache < CatGenForm.t_Sprachen.length; t_Sprache++ ) {
		t_FileV = document.getElementById( 'FileV' + CatGenForm.t_Sprachen[t_Sprache] );
		t_InhaltV = document.getElementById( 'InhaltV' + CatGenForm.t_Sprachen[t_Sprache] );
		if ( t_FileV && t_InhaltV ) {
			var t_File = new Array( t_FileV.getElementsByTagName("A")[0].innerHTML, t_InhaltV.innerHTML, t_FileV.getElementsByTagName("A")[0].className );
			if ( t_FileV.getElementsByTagName("A")[0].className == 'new' || document.getElementById('Overwrite').checked ) {
				CatGenForm.t_Files.push( t_File );
			}
		}
	}
	for ( t_Sprache = 0; t_Sprache < CatGenForm.t_Sprachen.length; t_Sprache++ ) {
		t_FileK = document.getElementById( 'FileK' + CatGenForm.t_Sprachen[t_Sprache] );
		t_InhaltK = document.getElementById( 'InhaltK' + CatGenForm.t_Sprachen[t_Sprache] );
		if ( t_FileK && t_InhaltK ) {
			var t_File = new Array( t_FileK.getElementsByTagName("A")[0].innerHTML, t_InhaltK.innerHTML, t_FileK.getElementsByTagName("A")[0].className );
			if ( t_FileK.getElementsByTagName("A")[0].className == 'new' || document.getElementById('Overwrite').checked ) {
				CatGenForm.t_Files.push( t_File );
			}
		}
	}

	CatGenForm.ProcessingVKFile( 'edit' );
},

StopProcessingVKFiles : function () {

	CatGenForm.t_stopp = true;
},

ProcessingVKFile : function ( t_action ) {

	if ( CatGenForm.t_processnext < CatGenForm.t_Files.length ) {
		var t_parameters = '?action=query&format=json&prop=info|revisions&intoken=' + t_action + '&titles=' + 
				encodeURIComponent( CatGenForm.t_Files[CatGenForm.t_processnext][0] ) + '';
		var t_http_req = null;
		if (window.XMLHttpRequest) {t_http_req = new XMLHttpRequest();}
		else if (window.ActiveXObject) {t_http_req = new ActiveXObject("Microsoft.XMLHTTP");}
		t_http_req.open("GET", CatGenForm.t_wikiurl + t_parameters, true);
		t_http_req.onreadystatechange = function() {
			if(t_http_req.readyState != 4) {
				document.getElementById( 'Status' ).innerHTML = 'Token wird angefordert ...<br><small>' + 
						CatGenForm.t_Files[CatGenForm.t_processnext][0] + '</small>';
			}
			if(t_http_req.readyState == 4 && t_http_req.status == 200) {
				if ( CatGenForm.t_vkdebug ) {
					document.getElementById( 'StatusPrev' ).innerHTML += '<hr>ProcessingVKFile<br>' + t_http_req.responseText;
				}
				CatGenForm.GotToken( eval("(" + t_http_req.responseText + ")"), t_action );
			}
		};
		t_http_req.send(null);
	}
},

GotToken : function ( queryData, t_action ) {

	if ( queryData ) {
		if ( queryData.query && queryData.query.pages ) {
			var t_token = "";
			var t_timestamp = "";
			var t_some_pages = queryData.query.pages;
			for ( var t_Page in t_some_pages ) {
				if ( t_some_pages[t_Page].edittoken ) {
					t_token = encodeURIComponent( t_some_pages[t_Page].edittoken );
				} else
				if ( t_some_pages[t_Page].deletetoken ) {
					t_token = encodeURIComponent( t_some_pages[t_Page].deletetoken );
				}
				if ( t_some_pages[t_Page].revisions ) {
					var t_some_revisions = t_some_pages[t_Page].revisions;
					for ( var i = 0; i < t_some_revisions.length; i++ )	{
						if (t_some_revisions[i].timestamp) {
							t_timestamp = t_some_revisions[i].timestamp;
						}
					}
				}
				document.getElementById( 'Status' ).innerHTML = t_some_pages[t_Page].starttimestamp;
			}

			t_text = CatGenForm.t_Files[CatGenForm.t_processnext][1];
			/* t_text = t_text.replace(/&lt;/g, "<"); */
			/* t_text = t_text.replace(/&gt;/g, ">"); */
			t_text = t_text.replace(/&amp;/g, "&");

			if ( document.getElementById('UseTextSummary').checked ) {
				t_summary = t_text.replace(/\[\[Kategorie:/g, "&#x5B;&#x5B;Kategorie:" );
				t_summarymsg = CatGenForm.t_Files[CatGenForm.t_processnext][1];
				t_summary = '&summary=' + encodeURIComponent( t_summary );
			} else {
				t_summary = document.getElementById('Summary').getAttribute('value');
				t_summarymsg = t_summary;
				t_summary = '&summary=' + encodeURIComponent( t_summary );
			}
			if ( t_action == 'delete' ) {
				t_summary = 'automatisch gelöscht';
				t_summarymsg = t_summary;
				t_summary = '&reason=' + encodeURIComponent( t_summary );
			}

			var t_parameters = '?action=' + t_action + '&format=json&title=' + encodeURIComponent( t_some_pages[t_Page].title ) +
					   encodeURIComponent(t_summary) + '&watch&basetimestamp=' + t_timestamp +
					   '&token=' + t_token + '&bot=1&minor=1' + '&text=' + encodeURIComponent( t_text );

			if ( !document.getElementById('Overwrite').checked ) {
				t_parameters += '&createonly';
			}

			var t_http_req = null;
			if (window.XMLHttpRequest) {t_http_req = new XMLHttpRequest();}
			else if (window.ActiveXObject) {t_http_req = new ActiveXObject("Microsoft.XMLHTTP");}
			t_http_req.open("POST", CatGenForm.t_wikiurl, true);
			t_http_req.onreadystatechange = function() {
				if( t_http_req.readyState != 4 ) {
					if ( t_action == 'edit' ) {
						document.getElementById( 'Status' ).innerHTML =
							'<small>'+t_some_pages[t_Page].title+'</small><br>wird mit<br><small>' +
							CatGenForm.t_Files[CatGenForm.t_processnext][1] +
							'</small><br>geschrieben <small>(' + t_summarymsg + ')</small> ...';
					} else if ( t_action == 'delete' ) {
						document.getElementById( 'Status' ).innerHTML =
							'<small>'+t_some_pages[t_Page].title+'</small><br>wird gelöscht <small>(' + t_summarymsg + ')</small> ...';
					}
                                }
				if( t_http_req.readyState == 4 && t_http_req.status == 200 ) {
					if ( CatGenForm.t_vkdebug ) {
						document.getElementById( 'StatusPrev' ).innerHTML +=
							'<hr>GotToken<br>' + t_http_req.responseText;
					}
					CatGenForm.ProcessedVKFile( eval("(" + t_http_req.responseText + ")" ), t_http_req.responseText, t_action );
				}
			};
			t_http_req.send(t_parameters);
		}
	}
},

ProcessedVKFile : function ( queryData, rawData, t_action ) {

	if ( queryData.edit && queryData.edit.result ) {
		document.getElementById( 'Status' ).innerHTML = queryData.edit.result;
		if ( CatGenForm.t_stopp ) {
			document.getElementById( 'Status' ).innerHTML = "Auf Benutzerwunsch abgebrochen - eine neue Vorschau wird erstellt ...";
			CatGenForm.CheckPreviewVFiles();
		} else {
			CatGenForm.t_processnext++;
			if ( CatGenForm.t_processnext < CatGenForm.t_Files.length ) {
				CatGenForm.ProcessingVKFile( t_action );
			} else {
				if ( queryData.edit.result == 'Success' ) {
					document.getElementById( 'Status' ).innerHTML = "BEENDET - neue Vorschau wird erstellt ...";
					CatGenForm.CheckPreviewVFiles();
				} else {
					document.getElementById( 'Status' ).innerHTML = 'Unbekannter Fehler ' + queryData.edit.result;
				}
			}
		}
	} else if ( queryData['delete'] ) {
		if ( queryData['delete'].title && queryData['delete'].reason )
			document.getElementById( 'Status' ).innerHTML = queryData['delete'].title + '<br>' + queryData['delete'].reason;
		if ( CatGenForm.t_stopp ) {
			document.getElementById( 'Status' ).innerHTML = "Auf Benutzerwunsch abgebrochen - eine neue Vorschau wird erstellt ...";
			CatGenForm.CheckPreviewVFiles();
		} else {
			CatGenForm.t_processnext++;
			if ( CatGenForm.t_processnext < CatGenForm.t_Files.length ) {
				CatGenForm.ProcessingVKFile( t_action );
			} else {
				document.getElementById( 'Status' ).innerHTML = "BEENDET - neue Vorschau wird erstellt ...";
				CatGenForm.CheckPreviewVFiles();
			}
		}
	} else if ( queryData.error && queryData.error.code && queryData.error.info ) {
		if ( queryData.error.code == 'articleexists' && !document.getElementById('Overwrite').getAttribute('checked') ) {
			if ( CatGenForm.t_stopp ) {
				document.getElementById( 'Status' ).innerHTML = "Auf Benutzerwunsch abgebrochen - eine neue Vorschau wird erstellt  ...";
				CatGenForm.CheckPreviewVFiles();
			} else {
				CatGenForm.t_processnext++;
				if ( CatGenForm.t_processnext < CatGenForm.t_Files.length ) {
					CatGenForm.ProcessingVKFile( t_action );
				} else {
					document.getElementById( 'Status' ).innerHTML = "BEENDET - eine neue Vorschau wird erstellt ...";
					CatGenForm.CheckPreviewVFiles();
				}
			}
		} else {
			document.getElementById( 'Status' ).innerHTML = 'Fehler ' + queryData.error.code + ' - ' + queryData.error.info;
		}
	} else {
		document.getElementById( 'Status' ).innerHTML = 'Unbekannter Fehler ' + rawData;
	}
},

StartDeletingVKFiles : function () {

	t_msg = 'Es können nur Vorlagen und Kategorien eines bestimmten ## gelöscht werden!';
	if ( CatGenForm.t_HerstellerPreview == ''  ) {alert( t_msg.replace( "##", "Herstellers" ) ); return;}
	if ( CatGenForm.t_TypPreview == '' ) {alert( t_msg.replace( "##", "Typs" ) ); return;}

	setcursor( 'wait' );
	CatGenForm.t_Files.splice( 0, CatGenForm.t_Files.length );
	CatGenForm.t_processnext = 0;
	CatGenForm.t_stopp = false;

	for ( t_Sprache = 0; t_Sprache < CatGenForm.t_Sprachen.length; t_Sprache++ ) {
		t_FileV = document.getElementById( 'FileV' + CatGenForm.t_Sprachen[t_Sprache] );
		t_InhaltV = document.getElementById( 'InhaltV' + CatGenForm.t_Sprachen[t_Sprache] );
		if ( t_FileV && t_InhaltV ) {
			var t_File = new Array( t_FileV.getElementsByTagName("A")[0].innerHTML, t_InhaltV.innerHTML, t_FileV.getElementsByTagName("A")[0].className );
			if ( !(t_FileV.getElementsByTagName("A")[0].className == 'new') ) {
				CatGenForm.t_Files.push( t_File );
			}
		}
	}
	for ( t_Sprache = 0; t_Sprache < CatGenForm.t_Sprachen.length; t_Sprache++ ) {
		t_FileK = document.getElementById( 'FileK' + CatGenForm.t_Sprachen[t_Sprache] );
		t_InhaltK = document.getElementById( 'InhaltK' + CatGenForm.t_Sprachen[t_Sprache] );
		if ( t_FileK && t_InhaltK ) {
			var t_File = new Array( t_FileK.getElementsByTagName("A")[0].innerHTML, t_InhaltK.innerHTML, t_FileK.getElementsByTagName("A")[0].className );
			if ( !(t_FileK.getElementsByTagName("A")[0].className == 'new') ) {
				CatGenForm.t_Files.push( t_File );
			}
		}
	}

	if ( CatGenForm.t_vkdebug ) {
		document.getElementById( 'StatusPrev' ).innerHTML +=
			'<hr>Files to delete:<br>' + CatGenForm.t_Files.length;
	}

	CatGenForm.ProcessingVKFile( 'delete' );
},

DeletedVKFiles : function ( queryData, rawData ) {

},

t_VorlagenTexte : new Array(),
t_TypTexte : new Array(),
t_VorlagenKategorie : new Array(),
t_KategorienTexte : new Array(),

t_Files : new Array(),
t_FilesChecked : new Array(),
t_FilesContentChecked : new Array(),
t_processnext : 0,
t_wikiurl : catGenFormConf.wgServer + catGenFormConf.wgScriptPath + '/api.php',
t_stopp : false,
t_HerstellerPreview : '',
t_TypPreview : '',
t_Content : '',
t_Sic_GenContent : '',
t_Sic_selectedTyp : 0,
t_Sic_Overwrite : false,
t_Sic_UseTextSummary : false,
t_Sic_Hersteller : new Array(),
t_Sic_Buchstabe1 : new Array(),
t_Sic_Buchstabe2 : new Array(),

t_vkdebug : false, // true, false,

CreateTemplatePreview : function () {
	var out = '';

	t_Typ = document.getElementById('TypSel').value;

	out += '<h3>Verwendete Vorlagen (werden <u>nicht</u> automatisch erstellt)</h3>';

	t_Vorlagebezeichner = 'Bildgalerie '+t_Typ+' XXX Sprachen';
	t_Zielbezeichner = trim('Vorlage:' + t_Vorlagebezeichner );
	t_ZielbezeichnerUrl = t_Zielbezeichner;
	t_missingText = '';
	t_missingText = CatGenForm.t_FilesChecked[t_Zielbezeichner];

	out += '<ul><li><span id="Vorlage_Sprachen">' + 
				'<a href="'+catGenFormConf.wgScriptPath+'/index.php?title=' + t_ZielbezeichnerUrl + '" '+ t_missingText + 'title="' + t_ZielbezeichnerUrl + '">' + 
				t_Zielbezeichner + '</a></span></li></ul>';

	for ( t_Sprache = 0; t_Sprache < CatGenForm.t_Sprachen.length; t_Sprache++ ) {
		
		t_Vorlagebezeichner = CatGenForm.t_KategorienTexte[CatGenForm.t_Sprachen[t_Sprache]] + CatGenForm.t_TypTexte[t_Typ+'_'+CatGenForm.t_Sprachen[t_Sprache]];
		t_Zielbezeichner = trim('Vorlage:Kategoriebeschreibung ' + t_Vorlagebezeichner + 'XXX' );
		t_ZielbezeichnerUrl = t_Zielbezeichner;
		t_missingText = '';
		t_missingText = CatGenForm.t_FilesChecked[t_Zielbezeichner];

		out += '<ul><li><span id="Vorlage_' + CatGenForm.t_Sprachen[t_Sprache] + '">' + 
				'<a href="'+catGenFormConf.wgScriptPath+'/index.php?title=' + t_ZielbezeichnerUrl + '" '+ t_missingText + 'title="' + t_ZielbezeichnerUrl + '">' + 
				t_Zielbezeichner + '</a></span></li></ul>';
	}

	return out;
},

CreatePreview : function () {

	var out = '';
	var t_Sprachenparameter = '';

	t_Sprachen_offset = 0;

	for ( t_Sprache = 0; t_Sprache < CatGenForm.t_Sprachen.length; t_Sprache++ ) {
		if ( t_Sprache == 5 ) {
			t_Sprachen_offset += 2;
		}
		t_Hersteller = document.getElementById('Hersteller_'+CatGenForm.t_Sprachen[t_Sprache]).value;
		if ( t_Hersteller != '' ) {
			t_Sprachenparameter += '|' + (t_Sprache + 1 + t_Sprachen_offset) + '=' + t_Hersteller;
		}
	}
	t_Typ = document.getElementById('TypSel').value;

	out += '<h3>Vorschau Kategorievorlagen</h3>';
	for ( t_Sprache = 0; t_Sprache < CatGenForm.t_Sprachen.length; t_Sprache++ ) {
		t_Hersteller = document.getElementById('Hersteller_'+CatGenForm.t_Sprachen[t_Sprache]).value;
		if ( t_Hersteller == '' ) {
			t_Hersteller = document.getElementById('Hersteller_'+CatGenForm.t_Sprachen[0]).value;
		}

		t_Vorlagebezeichner = CatGenForm.t_VorlagenTexte[CatGenForm.t_Sprachen[t_Sprache]] + CatGenForm.t_TypTexte[t_Typ+'_'+CatGenForm.t_Sprachen[t_Sprache]];
		t_Zielbezeichner = trim('Vorlage:' + t_Vorlagebezeichner + t_Hersteller);
		t_ZielbezeichnerUrl = t_Zielbezeichner;

		t_missingText = '';
		t_missingText = CatGenForm.t_FilesChecked[t_Zielbezeichner];
		CatGenForm.t_FilesChecked[t_Zielbezeichner] = '';

		t_Hersteller = t_Hersteller.replace(/&/g, "&amp;");
		t_Inhalt = '&lt;includeonly&gt;{{Bildgalerie '+t_Typ+' XXX Sprachen' +
				t_Sprachenparameter + '}}&lt;/includeonly&gt;&lt;noinclude&gt;[[Kategorie:' + 
				CatGenForm.t_VorlagenKategorie[CatGenForm.t_Sprachen[t_Sprache]] +'|' + t_Hersteller + ']]&lt;/noinclude&gt;';
		t_identText = '';

		if ( (t_Inhalt.replace(/&lt;/g, "<").replace(/&gt;/g, ">").replace(/&amp;/g, "&")) == CatGenForm.t_FilesContentChecked[t_Zielbezeichner] ) {
			t_identText = ' (<span style="color:green;font-size:180%;" title="Inhalt ist bereits aktuell">&#x2714;</span>)';
			CatGenForm.t_FilesContentChecked[t_Zielbezeichner] = '';
		} else
		if ( t_missingText == '' && CatGenForm.t_FilesContentChecked[t_Zielbezeichner] ) {
			t_oldContent = encodeURIComponent( CatGenForm.t_FilesContentChecked[t_Zielbezeichner] );
			t_oldContent = t_oldContent.replace(/\'/g, '&amp;apos;');

			t_identText = ' (<span style="color:red;font-size:180%;" ' +
				'onmouseover="tippon('+"'"+t_oldContent+"'"+')" onmouseout="tippoff()">&#x2718;</span>)';
		}

		t_Zielbezeichner = t_Zielbezeichner.replace(/&/g, "&amp;");
		t_ZielbezeichnerUrl = encodeURIComponent( t_ZielbezeichnerUrl );
		out += '<ul><li><span id="FileV' + CatGenForm.t_Sprachen[t_Sprache] + '">' +
				'<a href="'+catGenFormConf.wgScriptPath+'/index.php?title=' + t_ZielbezeichnerUrl + '" ' +
					t_missingText + 'title="' + t_ZielbezeichnerUrl + '">' + 
					t_Zielbezeichner + '</a></span>' + t_identText + '</li></ul>';

		out += '<dl><dd><span id="InhaltV' + CatGenForm.t_Sprachen[t_Sprache] + '">' + t_Inhalt + '</span></dd></dl>';
	}

	out += '<h3>Vorschau Kategorien</h3>';
	for ( t_Sprache = 0; t_Sprache < CatGenForm.t_Sprachen.length; t_Sprache++ ) {
		t_Hersteller = document.getElementById('Hersteller_'+CatGenForm.t_Sprachen[t_Sprache]).value;
		if ( t_Hersteller == '' ) {
			t_Hersteller = document.getElementById('Hersteller_'+CatGenForm.t_Sprachen[0]).value;
		}

		t_Buchstabenparameter = '';
		for ( i = 1; i <= 2; i++) {
			if ( document.getElementById('Buchstabe' + i + '_'+CatGenForm.t_Sprachen[t_Sprache]).value ) {
				t_Buchstabenparameter += '|' + (i + 5) + '=' +
					document.getElementById('Buchstabe' + i + '_' + CatGenForm.t_Sprachen[t_Sprache]).value.toUpperCase();
			}
		}
		if ( t_Buchstabenparameter == '' ) {
			for ( i = 1; i <= 2;i++) {
				if ( document.getElementById('Buchstabe' + i + '_'+CatGenForm.t_Sprachen[0]).value ) {
					t_Buchstabenparameter += '|' + (i + 5) + '=' +
						document.getElementById('Buchstabe' + i + '_' + CatGenForm.t_Sprachen[0]).value.toUpperCase();
				}
			}
		}
		
		t_Kategoriebezeichner = CatGenForm.t_KategorienTexte[CatGenForm.t_Sprachen[t_Sprache]] +
					CatGenForm.t_TypTexte[t_Typ+'_'+CatGenForm.t_Sprachen[t_Sprache]];
		t_Zielbezeichner = trim('' + t_Kategoriebezeichner + t_Hersteller);
		t_ZielbezeichnerUrl = t_Zielbezeichner;

		t_missingText = '';
		t_missingText = CatGenForm.t_FilesChecked['Kategorie:' + t_Zielbezeichner];
		CatGenForm.t_FilesChecked['Kategorie:' + t_Zielbezeichner] = '';

		t_Inhalt = '{{Kategoriebeschreibung ' + t_Kategoriebezeichner + 'XXX' +
				t_Sprachenparameter + t_Buchstabenparameter + '}}';
		t_identText = '';
		if ( CatGenForm.t_vkdebug ) {
			document.getElementById( 'StatusPrev' ).innerHTML += '<hr>' + 'FilesContentChecked<br>' +
				encodeURIComponent( CatGenForm.t_FilesContentChecked['Kategorie:' + t_Zielbezeichner] ) + '<br>' + 
				encodeURIComponent( t_Inhalt.replace(/&lt;/g, "<").replace(/&gt;/g, ">").replace(/&amp;/g, "&") );
		}

		if ( (t_Inhalt.replace(/&lt;/g, "<").replace(/&gt;/g, ">").replace(/&amp;/g, "&")) == CatGenForm.t_FilesContentChecked['Kategorie:' + t_Zielbezeichner] ) {
			if ( CatGenForm.t_vkdebug ) document.getElementById( 'StatusPrev' ).innerHTML += '<br>' + 'equal';
			t_identText = ' (<span style="color:green;font-size:180%;" title="Inhalt ist bereits aktuell">&#x2714;</span>)';
			CatGenForm.t_FilesContentChecked['Kategorie:' + t_Zielbezeichner] = '';
		} else
		if ( t_missingText == '' && CatGenForm.t_FilesContentChecked['Kategorie:' + t_Zielbezeichner] ) {
			t_oldContent = encodeURIComponent( CatGenForm.t_FilesContentChecked['Kategorie:' + t_Zielbezeichner] );
			t_oldContent = t_oldContent.replace(/\'/g, '&amp;apos;');
			t_identText = ' (<span style="color:red;font-size:180%;" ' +
				'onmouseover="tippon('+"'"+t_oldContent+"'"+')" onmouseout="tippoff()">&#x2718;</span>)';
		}

		t_Zielbezeichner = t_Zielbezeichner.replace(/&/g, "&amp;");
		t_ZielbezeichnerUrl = encodeURIComponent( t_ZielbezeichnerUrl );
                /* Old (out-line-2): '<a href="' + wcatGenFormConfgScriptPath + '/index.php?title=Kategorie:' + t_ZielbezeichnerUrl + '" ' + */
		out += '<ul><li><span id="FileK' + CatGenForm.t_Sprachen[t_Sprache] + '">' + 
				'<a href="https://watch-wiki.org"' + '/index.php?title=Kategorie:' + t_ZielbezeichnerUrl + '" ' +
				t_missingText + 'title="Kategorie:' + t_ZielbezeichnerUrl + '">Kategorie:' + 
				t_Zielbezeichner + '</a></span>' + t_identText + '</li></ul>';
		out += '<dl><dd><span id="InhaltK' + CatGenForm.t_Sprachen[t_Sprache] + '">' + t_Inhalt + '</span></dd></dl>';
	}
	
	return out;
},

CheckPreviewVFiles : function ( t_clear ) {

	if ( document.getElementById('TypSel').value + '' == ''  ) {
		t_msg2 = 'Es ist kein Typ gewählt!';
		document.getElementById( 'PreviewForm' ).innerHTML = t_msg2;
		return;
	}

	if ( document.getElementById( 'InsertCreateForm' ) ) {
		if ( document.getElementById( 'PreviewForm' ) ) {
			document.getElementById( 'PreviewForm' ).innerHTML = '';
		}
		if ( document.getElementById( 'TemplateForm' ) ) {
			document.getElementById( 'TemplateForm' ).innerHTML = '';
		}
		if ( document.getElementById( 'InsertCreateForm' ) && document.getElementById( 'Status' ) ) {
			document.getElementById( 'InsertCreateForm' ).innerHTML = '<b>' + document.getElementById( 'Status' ).innerHTML + '</b>';
		} 
		if ( document.getElementById( 'InsertCreateForm' ) && t_clear == 'c' ) {
			document.getElementById( 'InsertCreateForm' ).innerHTML = '';
		}

		CatGenForm.t_HerstellerPreview = document.getElementById('Hersteller_'+CatGenForm.t_Sprachen[0]).value;
		CatGenForm.t_TypPreview = document.getElementById('TypSel').value;

		setcursor( 'wait' );
		CatGenForm.t_Files.splice( 0, CatGenForm.t_Files.length );

		CatGenForm.InitLanguageVars();

		for ( var t_Page in CatGenForm.t_FilesChecked ) {
			if ( CatGenForm.t_FilesChecked[t_Page] == 'class="new" ' ) {
				CatGenForm.t_FilesChecked[t_Page] = '';
			}
		}

		t_Typ = document.getElementById('TypSel').value;
		for ( t_Sprache = 0; t_Sprache < CatGenForm.t_Sprachen.length; t_Sprache++ ) {
			t_Hersteller = document.getElementById('Hersteller_'+CatGenForm.t_Sprachen[t_Sprache]).value;
			if ( t_Hersteller == '' ) {
				t_Hersteller = document.getElementById('Hersteller_'+CatGenForm.t_Sprachen[0]).value;
			}

			t_Vorlagebezeichner = CatGenForm.t_VorlagenTexte[CatGenForm.t_Sprachen[t_Sprache]] +
						CatGenForm.t_TypTexte[t_Typ+'_'+CatGenForm.t_Sprachen[t_Sprache]];
			t_Zielbezeichner = trim('Vorlage:' + t_Vorlagebezeichner + t_Hersteller);
			CatGenForm.t_Files.push( t_Zielbezeichner);
		}

		for ( t_Sprache = 0; t_Sprache < CatGenForm.t_Sprachen.length; t_Sprache++ ) {
			t_Hersteller = document.getElementById('Hersteller_'+CatGenForm.t_Sprachen[t_Sprache]).value;
			if ( t_Hersteller == '' ) {
				t_Hersteller = document.getElementById('Hersteller_'+CatGenForm.t_Sprachen[0]).value;
			}

			t_Kategoriebezeichner = CatGenForm.t_KategorienTexte[CatGenForm.t_Sprachen[t_Sprache]] +
						CatGenForm.t_TypTexte[t_Typ+'_'+CatGenForm.t_Sprachen[t_Sprache]];
			t_Zielbezeichner = trim('Kategorie:' + t_Kategoriebezeichner + t_Hersteller);
			CatGenForm.t_Files.push( t_Zielbezeichner);
		}

		t_Vorlagebezeichner = 'Bildgalerie '+t_Typ+' XXX Sprachen';
		t_Zielbezeichner = trim('Vorlage:' + t_Vorlagebezeichner );
		CatGenForm.t_Files.push( t_Zielbezeichner);

		for ( t_Sprache = 0; t_Sprache < CatGenForm.t_Sprachen.length; t_Sprache++ ) {

			t_Vorlagebezeichner = CatGenForm.t_KategorienTexte[CatGenForm.t_Sprachen[t_Sprache]] +
						CatGenForm.t_TypTexte[t_Typ+'_'+CatGenForm.t_Sprachen[t_Sprache]];
			t_Zielbezeichner = trim('Vorlage:Kategoriebeschreibung ' + t_Vorlagebezeichner + ' XXX' );
			CatGenForm.t_Files.push( t_Zielbezeichner);
		}

		document.getElementById( 'PreviewForm' ).innerHTML = '<hr style="margin-top:1em;">' + '<b>Vorschau wird erstellt für:</b><p id="PreviewSubForm"></p>';

		CatGenForm.ProcessingPreviewFile();
	}
},

/* ----------------------------------------- */

ProcessingPreviewFile : function ( ) {

	var t_FilesToCheckString;

	if ( CatGenForm.t_Files.length > 0 ) {
		t_FilesToCheckString = CatGenForm.t_Files.splice( 0, 1 );
	}
	if ( CatGenForm.t_Files.length > 0 ) {
		t_FilesToCheckString += '|';
		t_FilesToCheckString += CatGenForm.t_Files.splice( 0, 1 );
	}
	if ( CatGenForm.t_Files.length > 0 ) {
		t_FilesToCheckString += '|';
		t_FilesToCheckString += CatGenForm.t_Files.splice( 0, 1 );
	}




	var t_parameters = '?action=query&format=json&prop=info|revisions&rvprop=content&titles=' + encodeURIComponent( t_FilesToCheckString );
	var t_http_req = null;
	if (window.XMLHttpRequest) {t_http_req = new XMLHttpRequest();}
	else if (window.ActiveXObject) {t_http_req = new ActiveXObject("Microsoft.XMLHTTP");}
	t_http_req.open("POST", CatGenForm.t_wikiurl + t_parameters, true);
        t_http_req.onreadystatechange = function() {
		if(t_http_req.readyState != 4) {
			if ( t_FilesToCheckString != '' ) {
				document.getElementById( 'PreviewSubForm' ).style.height = '75px';
				document.getElementById( 'PreviewSubForm' ).style.overflow = 'auto';
				document.getElementById( 'PreviewSubForm' ).scrollTop = 1000;
				document.getElementById( 'PreviewSubForm' ).innerHTML += String(t_FilesToCheckString).replace(/\|/g, "<br>") + '<br>';
				t_FilesToCheckString = '';
			}
		}
		if(t_http_req.readyState == 4 && t_http_req.status == 200) {
			if ( CatGenForm.t_vkdebug ) {
				document.getElementById( 'StatusPrev' ).style.display = 'block';
				document.getElementById( 'StatusPrev' ).innerHTML += '<hr>' + t_http_req.responseText;
			}
			CatGenForm.ProcessedPreviewFile( eval("(" + t_http_req.responseText + ")") );
		}
	};
	t_http_req.send(null);
},

ProcessedPreviewFile : function ( queryData, rawData ) {

	if ( queryData.query && queryData.query.pages ) {
		for ( var t_Page in queryData.query.pages ) {
			if ( !queryData.query.pages[t_Page].pageid ) {
				if ( queryData.query.normalized ) {
					for ( t_PageNorm= 0; t_PageNorm < queryData.query.normalized.length; t_PageNorm++ ) {
						if ( queryData.query.normalized[t_PageNorm].to == queryData.query.pages[t_Page].title ) {
							CatGenForm.t_FilesChecked[decodeURIComponent( queryData.query.normalized[t_PageNorm].from )] = 'class="new" ';
						}
					}
				}

				CatGenForm.t_FilesChecked[decodeURIComponent(queryData.query.pages[t_Page].title)] = 'class="new" ';
			} else {
				CatGenForm.t_FilesChecked[decodeURIComponent(queryData.query.pages[t_Page].title)] = '';
				if ( queryData.query.pages[t_Page].revisions ) {
					CatGenForm.t_FilesContentChecked[decodeURIComponent(queryData.query.pages[t_Page].title)] =
						queryData.query.pages[t_Page].revisions[0]['*'];
				}
				if ( queryData.query.normalized ) {
					for ( t_PageNorm= 0; t_PageNorm < queryData.query.normalized.length; t_PageNorm++ ) {
						if ( queryData.query.normalized[t_PageNorm].to == queryData.query.pages[t_Page].title ) {
							if ( queryData.query.pages[t_Page].revisions ) {
								CatGenForm.t_FilesContentChecked[decodeURIComponent( queryData.query.normalized[t_PageNorm].from )] =
									queryData.query.pages[t_Page].revisions[0]['*'];
							}
						}
					}
				}
			}
		}
	}

	if ( CatGenForm.t_Files.length > 0 ) {
		CatGenForm.ProcessingPreviewFile();
	} else {
		CatGenForm.PreviewVKFiles();
	}
},

PreviewVKFiles : function () {

	if ( document.getElementById( 'PreviewForm' ) ) {
		document.getElementById( 'PreviewForm' ).innerHTML = '<hr style="margin-top:1em;">' + CatGenForm.CreatePreview() + '';
	}

	if ( document.getElementById( 'TemplateForm' ) ) {
		document.getElementById( 'TemplateForm' ).innerHTML = '<hr style="margin-top:1em;">' + CatGenForm.CreateTemplatePreview() + '';
	}

	document.getElementById( 'InsertCreateForm' ).innerHTML = 
		'<hr style="margin-top:1em; margin-right:.5em;"><div style="margin-top:.5em; margin-right:1em;">' +
		'<h3>Erstellen</h3>' +
		'<label for="Summary" style="vertical-align:top">Zusammenfassung / Kommentar:</label>' +
		'<p><input id="Summary" type="text" size="75" value="Mit neuer Vorlage automatisch erstellt"></p>' +
		'<label for="Status" style="vertical-align:top;">Status:</label>' +
		'<p id="Status" style="border: 1px solid #aaa; padding:.5em;height:75px;" >Vor dem Erstellen der Vorlagen und Kategorien bitte die Namen und Inhalte überprüfen ...</p>' +
		'<p><input type="button" title="Erstellt die Vorlagen und Kategorien gemäß der Vorschau mit den angezeigten Inhalten" ' +
		'value="Erstellen" onClick="StartCreatingVKFiles()">&nbsp;' +
		'<input type="button" value="Abbrechen" title="Die Abarbeitung der Erstellung und des Löschens von Vorlagen und Kategorien wird unterbrochen" ' +
		'onClick="StopProcessingVKFiles()">' +
		'<input type="button" value="Löschen" style="float:right;" title="Löscht die Vorlagen und Kategorien gemäß der Vorschau" ' +
		'onClick="StartDeletingVKFiles()">' +
		'</p></div>';

	document.getElementById('Summary').disabled = document.getElementById('UseTextSummary').checked;

	setcursor( 'auto' );
},

UnloadCatGenForm : function () {

	CatGenForm.t_stopp = true;
	setcursor( 'auto' );

	CatGenForm.t_Sic_GenContent = document.getElementById( 'content' ).innerHTML;
	CatGenForm.t_selectedTyp = document.getElementById( 'Typ' ).selectedIndex;
	CatGenForm.t_Sic_Overwrite = document.getElementById('Overwrite').checked;
	CatGenForm.t_Sic_UseTextSummary = document.getElementById('UseTextSummary').checked;
	for ( t_Sprache = 0; t_Sprache < CatGenForm.t_Sprachen.length; t_Sprache++ ) {
		CatGenForm.t_Sic_Hersteller[CatGenForm.t_Sprachen[t_Sprache]] =
			document.getElementById('Hersteller_'+CatGenForm.t_Sprachen[t_Sprache]).value;
		CatGenForm.t_Sic_Buchstabe1[CatGenForm.t_Sprachen[t_Sprache]] = 
			document.getElementById('Buchstabe1_'+CatGenForm.t_Sprachen[t_Sprache]).value;
		CatGenForm.t_Sic_Buchstabe2[CatGenForm.t_Sprachen[t_Sprache]] = 
			document.getElementById('Buchstabe2_'+CatGenForm.t_Sprachen[t_Sprache]).value;
	}

	if ( CatGenForm.t_Content != '' ) {
		document.getElementById( 'content' ).innerHTML = CatGenForm.t_Content;
		CatGenForm.t_Content = '';
	}
},

LoadCatGenForm : function ( t_status ) {

	if ( typeof my_vkdebug != "undefined" && my_vkdebug != '' ) CatGenForm.t_vkdebug = my_vkdebug;

	if ( catGenFormConf.wgAction != 'view' ) {
		alert( 'Der Vorlagen und Kategorien-Generator kann nur im Anzeigemodus verwendet werden');
		return;
	}

	if ( document.getElementById( 'content' ) ) {

		if ( CatGenForm.t_Content != '' && t_status != 'n' ) {
			return;
		}

		if ( CatGenForm.t_Content == '' ) {
			CatGenForm.t_Content = document.getElementById( 'content' ).innerHTML;
		}

		if ( CatGenForm.t_Sic_GenContent != '' ) {
			document.getElementById( 'content' ).innerHTML = CatGenForm.t_Sic_GenContent;
			document.getElementById( 'Typ' ).selectedIndex = CatGenForm.t_selectedTyp;
			document.getElementById('Overwrite').checked = CatGenForm.t_Sic_Overwrite;
			document.getElementById('UseTextSummary').checked = CatGenForm.t_Sic_UseTextSummary;
			for ( t_Sprache = 0; t_Sprache < CatGenForm.t_Sprachen.length; t_Sprache++ ) {
				document.getElementById('Hersteller_'+CatGenForm.t_Sprachen[t_Sprache]).value =
					CatGenForm.t_Sic_Hersteller[CatGenForm.t_Sprachen[t_Sprache]];
				document.getElementById('Buchstabe1_'+CatGenForm.t_Sprachen[t_Sprache]).value =
					CatGenForm.t_Sic_Buchstabe1[CatGenForm.t_Sprachen[t_Sprache]];
				document.getElementById('Buchstabe2_'+CatGenForm.t_Sprachen[t_Sprache]).value =
					CatGenForm.t_Sic_Buchstabe2[CatGenForm.t_Sprachen[t_Sprache]];
			}
			CatGenForm.t_Sic_GenContent = '';
			return;
		}

		out =	'<form method="get" style="width:100%" name="CatGenForm">' +
			'<fieldset><legend>Vorlagen- und Kategoriegenerator</legend>' +
			'<div style="margin-top:.5em; margin-left:1em; margin-right:1em;">' +
			'<h3>Parameter</h3>' +
			'<table><tr>' +
			'<td style="vertical-align:top"><label for="Hersteller_de">Hersteller (de):</label></td>' +
			'<td><input id="Hersteller_de" type="text" size="50" value="">' +
			'<input type="button" value="&#x2248;" title="Holt den aktuellen Seitentitel" onClick="GetPageName()"></td>' +
			'<td style="vertical-align:top"><label for="Buchstabe_de">Buchstaben (de):</label></td>' +
			'<td><input id="Buchstabe1_de" type="text" size="1" value="" style="text-transform:uppercase;">&nbsp;' +
			'<input id="Buchstabe2_de" type="text" size="1" value="" style="text-transform:uppercase;"></td>' +
			'</tr><tr>' +
			'<td style="vertical-align:top"><label for="Hersteller_en">Hersteller (en):</label></td>' +
			'<td><input id="Hersteller_en" type="text" size="50" value=""></td>' +
			'<td style="vertical-align:top"><label for="Buchstabe_en">Buchstaben (en):</label></td>' +
			'<td><input id="Buchstabe1_en" type="text" size="1" value="" style="text-transform:uppercase;">&nbsp;' +
			'<input id="Buchstabe2_en" type="text" size="1" value="" style="text-transform:uppercase;"></td>' +
			'</tr><tr>' +
			'<td style="vertical-align:top"><label for="Hersteller_es">Hersteller (es):</label></td>' +
			'<td><input id="Hersteller_es" type="text" size="50" value=""></td>' +
			'<td style="vertical-align:top"><label for="Buchstabe_es">Buchstaben (es):</label></td>' +
			'<td><input id="Buchstabe1_es" type="text" size="1" value="" style="text-transform:uppercase;">&nbsp;' +
			'<input id="Buchstabe2_es" type="text" size="1" value="" style="text-transform:uppercase;"></td>' +
			'</tr><tr>' +
			'<td style="vertical-align:top"><label for="Hersteller_it">Hersteller (it):</label></td>' +
			'<td><input id="Hersteller_it" type="text" size="50" value=""></td>' +
			'<td style="vertical-align:top"><label for="Buchstabe_it">Buchstaben (it):</label></td>' +
			'<td><input id="Buchstabe1_it" type="text" size="1" value="" style="text-transform:uppercase;">&nbsp;' +
			'<input id="Buchstabe2_it" type="text" size="1" value="" style="text-transform:uppercase;"></td>' +
			'</tr><tr>' +
			'<td style="vertical-align:top"><label for="Hersteller_nl">Hersteller (nl):</label></td>' +
			'<td><input id="Hersteller_nl" type="text" size="50" value=""></td>' +
			'<td style="vertical-align:top"><label for="Buchstabe_nl">Buchstaben (nl):</label></td>' +
			'<td><input id="Buchstabe1_nl" type="text" size="1" value="" style="text-transform:uppercase;">&nbsp;' +
			'<input id="Buchstabe2_nl" type="text" size="1" value="" style="text-transform:uppercase;"></td>' +
			'</tr><tr>' +
			'<td style="vertical-align:top"><label for="Hersteller_ru">Hersteller (ru):</label></td>' +
			'<td><input id="Hersteller_ru" type="text" size="50" value=""></td>' +
			'<td style="vertical-align:top"><label for="Buchstabe_ru">Buchstaben (ru):</label></td>' +
			'<td><input id="Buchstabe1_ru" type="text" size="1" value="" style="text-transform:uppercase;">&nbsp;' +
			'<input id="Buchstabe2_ru" type="text" size="1" value="" style="text-transform:uppercase;"></td>' +
			'</tr><tr>' +
			'<td style="vertical-align:top">Typ:</td><td colspan="3"><table><tr>' + 
			'<td><select id="Typ" size="8" type="hidden" ' +
			'onchange="this.form.TypSel.value = this.form.Typ.options[this.form.Typ.selectedIndex].value">';

		for ( t_Typ = 0; t_Typ < CatGenForm.t_Typen.length; t_Typ++ ) {
			out +=	'<option value="' + CatGenForm.t_Typen[t_Typ] + '">' + CatGenForm.t_Typen[t_Typ] + '</option>';
		}
	
		out +=	'</select><input id="TypSel" name="TypSel" type="hidden" value=""></td>' +
			'<td style="vertical-align:top; padding-left:1em;">Optionen:</td>' +
			'<td style="vertical-align:top;">' +
			'<table><tr><td><input id="Overwrite" type="checkbox"></td><td>Überschreiben von bestehenden Vorlagen/Kategorien</td></tr>' +
			'<tr><td><input id="UseTextSummary" type="checkbox" ' +
			'onchange="this.form.Summary.disabled = this.form.UseTextSummary.checked"></td><td>Neuen Inhalt als Zusammenfassung / Kommentar benutzen</td></tr></table>' +
			'</td>' +

			'</tr></table></td>' +
			'</tr></table>' +
			'<p><input type="button" value="Vorschau" ' +
			'title="Erzeugt eine Vorschau der Vorlagen und Kategorien mit Inhalten" onClick="CheckPreviewVFiles()">&nbsp;' +
			'<input type="button" value="Neu" title="Setzt die Parameter zurück und löscht alle Eingaben" onClick="LoadCatGenForm()">' +
			'<input type="button" style="float:right;" value="Schließen" title="Beendet den Vorlagen und Kategorien-Generator" onClick="UnloadCatGenForm()">' +
			'<p id="StatusPrev" style="border: 1px solid #aaa; padding:.5em;display:none;">Debuginfo</p></p>' +
			'<div id="PreviewForm"></div>' +
			'<div id="TemplateForm"></div>' +
			'<div id="InsertCreateForm"></div>' +
			'</div></fieldset></form><div id="tippinfo"></div>';

		document.getElementById( 'content' ).innerHTML = out;
		t_tippinfo = document.getElementById('tippinfo');

		if ( typeof catGenFormConf.wgGenOverwrite != "undefined" && catGenFormConf.wgGenOverwrite == 1 ) {
			document.getElementById('Overwrite').checked = true;
		} else {
			document.getElementById('Overwrite').checked = false;
		}
		if ( typeof catGenFormConf.wgGenUseTextSummary != "undefined" && catGenFormConf.wgGenUseTextSummary == 1 ) {
			document.getElementById('UseTextSummary').checked = true;
		} else {
			document.getElementById('UseTextSummary').checked = false;
		}

	}
}

};

var TW_PERSONAL = "p-personal";
var TW_WERKZEUGE = "p-tb";
var TW_REITER = "column-one";

function InsertNode(p_href, p_text, p_id, p_tag, p_before_id)
  {
   var new_a = document.createElement('a');
   new_a.href = p_href;
   new_a.appendChild(document.createTextNode(p_text));
   var new_li = document.createElement('li');
   new_li.appendChild(new_a);
 
   var tmp_nodes = document.getElementById(p_id).getElementsByTagName(p_tag);
   tmp_Node = tmp_nodes[0];
   if (p_before_id)
     {
      tmp_Node.insertBefore(new_li.cloneNode(true), document.getElementById(p_before_id));
     }
   else
     {
      tmp_Node.appendChild(new_li.cloneNode(true));
     }
  }

function setcursor( cursortype ) {

	document.getElementById( 'content' ).style.cursor = cursortype;
	for ( i = 0; i < document.getElementById( 'content' ).getElementsByTagName( 'input' ).length; i++ ) {
		document.getElementById( 'content' ).getElementsByTagName( 'input' )[i].style.cursor = cursortype;
	}
}

function trim( t_string ) {
	return t_string.replace (/^\s+/, '').replace (/\s+$/, '');
}
function CheckPreviewVFiles( ) {
	CatGenForm.CheckPreviewVFiles('c');
}
function LoadCatGenForm( ) {
	CatGenForm.t_stopp = true;
	setcursor( 'auto' );
	CatGenForm.LoadCatGenForm( 'n' );
}
function UnloadCatGenForm( ) {
	CatGenForm.UnloadCatGenForm();
}
function StartCreatingVKFiles( ) {
	CatGenForm.StartCreatingVKFiles();
}
function StopProcessingVKFiles( ) {
	CatGenForm.StopProcessingVKFiles();
}
function StartDeletingVKFiles( ) {
	CatGenForm.StartDeletingVKFiles();
}
function GetPageName( ) {
	t_Hersteller = catGenFormConf.wgPageName.replace( /_/g, " " ).replace( /\/de/g, "" ).replace( /\/en/g, "" ).replace( /\/es/g, "" ).replace( /\/nl/g, "" ).replace( /\/ru/g, "" );
	document.getElementById( 'Hersteller_de' ).value = t_Hersteller;
	if ( t_Hersteller.indexOf( ',' ) == -1 && t_Hersteller.indexOf( ' ' ) != -1 ) {
		t_Herstellernamen = t_Hersteller.split( ' ' );
		t_Herstellernamen = t_Herstellernamen.sort();
		if ( t_Herstellernamen.length > 2 ) {
			document.getElementById( 'Buchstabe1_de' ).value = String(t_Hersteller).substring(0, 1);
		} else {
			document.getElementById( 'Buchstabe1_de' ).value = t_Herstellernamen[0].substring(0, 1);
			document.getElementById( 'Buchstabe2_de' ).value = t_Herstellernamen[1].substring(0, 1);
		}
	} else {
		document.getElementById( 'Buchstabe1_de' ).value = String(t_Hersteller).substring(0, 1);
	}
}

var t_tippinfo = null;

var xoffset = 15;
var yoffset = -50;
var ycompens = 40;

document.onmousemove = function(e) {

	var x, y, right, bottom;

	try { x = e.layerX; y = e.layerY; } // FF
	catch(e) { x = event.x; y = event.y; } // IE

	right = (document.documentElement.clientWidth || document.body.clientWidth || document.body.scrollWidth);
	bottom = (window.scrollY || document.documentElement.scrollTop || document.body.scrollTop) + (window.innerHeight || document.documentElement.clientHeight || document.body.clientHeight || document.body.scrollHeight);

	x += xoffset;
	y += yoffset;

	if ( t_tippinfo ) {

		if(x > right-t_tippinfo.offsetWidth) {
			x = right-t_tippinfo.offsetWidth;
		}

		if(y > bottom-t_tippinfo.offsetHeight-ycompens) {
			y = bottom-t_tippinfo.offsetHeight-ycompens;
		}

		t_tippinfo.style.top = y+'px';
		t_tippinfo.style.left = x+'px';
	}

}

function tippon(text) {
	t_tippinfo.innerHTML = '<div>' + 
		'<b><u>Aktueller Inhalt:</u></b><br>' +
		decodeURIComponent( text ).replace(/&apos;/g, "'").replace(/&/g, "&amp;").replace(/</g, "&lt;").replace(/>/g, "&gt;").replace(/\n/g, "<br>") + '</div>';
	t_tippinfo.style.display = 'block';
}

function tippoff() {
	t_tippinfo.style.display = 'none';
}
/* Load it now */
$( CatGenFormLoad );