User:Peti610/monobook.js

Source: Wikipedia, the free encyclopedia.
Note: After saving, you have to bypass your browser's cache to see the changes. Google Chrome, Firefox, Microsoft Edge and Safari: Hold down the ⇧ Shift key and click the Reload toolbar button. For details and instructions about other browsers, see Wikipedia:Bypass your cache.
//interwikiFordító (interwikiTranslator)
//Báthory Péter, 2008  ([[:hu:User:BáthoryPéter]])
//További információk: [[User:BáthoryPéter/interwikiFordito]]
//
//A program szabadon felhasználható, GNU GPL licensz szerint. / This program uses GNU GPL licence.
//If you want to use the script in your language, copy the code to your Wikipedia, and translate the content of variable "LangList"
//   and in function createMenu change: Eredeti -> Original; Magyar -> your language; Vegyes -> Both
/////////////////////////////////////////////////////////////////////////////////////////////////////
 
 
function iwTranslator() {}
 
iwTranslator.prototype={
	LangList : new Object({
		'en': 'Angol',
		'aa': 'Afar',
		'ab': 'Abház',
		'af': 'Afrikaans',
		'ak': 'Akan',
		'als': 'Alemann',
		'am': 'Amhara',
		'an': 'Aragóniai spanyol',
		'ang': 'Óangol/angoszász',
		'ast': 'Asztúriai spanyol',
		'ar': 'Arab',
		'arc': 'Asszír újarámi',
		'arz': 'Egyiptomi arab',
		'as': 'Asszámi',
		'av': 'Avar',
		'ay': 'Ajmara',
		'az': 'Azeri',
		'bcl': 'Bikol',
		'ba': 'Baskír',
		'bar': 'Bajor',
		'bat-smg': 'Szamogitiai litván',
		'be': 'Fehérorosz',
		'be-x-old': 'Taraskevica fehérorosz',
		'bg': 'Bolgár',
		'bh': 'Bhódzspuri/bihári',
		'bi': 'Biszlama',
		'bm': 'Manding/bambara',
		'bn': 'Bengáli',
		'bo': 'Tibeti',
		'bpy': 'Bisnuprija manipuri',
		'br': 'Breton',
		'bs': 'Bosnyák',
		'bug': 'Bugisz',
		'bxr': 'Burját',
		'ca': 'Katalán',
		'cbk-zam': 'Zamboangai chavacano',
		'cdo': 'Min-tung',
		'ce': 'Csecsen',
		'ceb': 'Szebuano',
		'ch': 'Csamorro',
		'chr': 'Cseroki',
		'chy': 'Cheyenne',
		'co': 'Korzikai',
		'cr': 'Krí',
		'crh': 'Krími tatár',
		'cs': 'Cseh',
		'csb': 'Kasub',
		'cu': 'Óegyházi szláv',
		'cv': 'Csuvas',
		'cy': 'Walesi',
		'da': 'Dán',
		'de': 'Német',
		'diq': 'Zázá',
		'dsb': 'Alsószorb',
		'dv': 'Divehi',
		'dz': 'Dzongkha',
		'ee': 'Eve',
		'el': 'Görög',
		'eml': 'Emiliano-romagnolo',
		'eo': 'Eszperantó',
		'es': 'Spanyol',
		'et': 'Észt',
		'eu': 'Baszk',
		'ext': 'Extremadurai',
		'fa': 'Perzsa',
		'fi': 'Finn',
		'fiu-vro': 'Võro',
		'fj': 'Fidzsi',
		'ff': 'Ful',
		'fy': 'Nyugati fríz',
		'fo': 'Feröeri',
		'fr': 'Francia',
		'frp': 'Frankoprovanszál',
		'fur': 'Friuli',
		'ga': 'Ír',
		'gan': 'Kan',
		'gd': 'Skót',
		'gl': 'Galiciai',
		'glk': 'Gilaki',
		'gn': 'Guarani',
		'got': 'Gót',
		'gu': 'Gudzsaráti',
		'gv': 'Manx',
		'ha': 'Hausza',
		'hak': 'Hakka',
		'haw': 'Hawaii',
		'he': 'Héber',
		'hi': 'Hindi',
		'hif': 'Fidzsi hindi',
		'ho': 'Hiri-motu',
		'hr': 'Horvát',
		'hsb': 'Felsőszorb',
		'ht': 'Haiti kreol',
		'hu': 'Magyar',
		'hy': 'Örmény',
		'ia': 'Interlingva',
		'ie': 'Occidental',
		'ii': 'Szecsuáni ji/lolo',
		'ig': 'Igbo',
		'id': 'Indonéz',
		'ik': 'Inupiak',
		'ilo': 'Ilokano',
		'io': 'Ido',
		'is': 'Izlandi',
		'it': 'Olasz',
		'iu': 'Inuktitut',
		'ja': 'Japán',
		'jbo': 'Lojban',
		'jv': 'Jávai',
		'ka': 'Grúz',
		'kaa': 'Karakalpak',
		'kab': 'Kabyle',
		'kg': 'Kikongo',
		'ki': 'Kikuju',
		'kj': 'Kvanyama',
		'kk': 'Kazah',
		'kl': 'Grönlandi',
		'km': 'Khmer',
		'kn': 'Kannada',
		'ko': 'Koreai',
		'ks': 'Kasmíri',
		'ksh': 'Ripuári',
		'ku': 'Kurd',
		'kv': 'Komi',
		'kw': 'Korni',
		'ky': 'Kirgiz',
		'la': 'Latin',
		'lad': 'Ladino',
		'lb': 'Luxemburgi',
		'lbe': 'Lak',
		'lg': 'Ganda',
		'li': 'Limburgi',
		'lij': 'Ligur',
		'lmo': 'Lombard',
		'ln': 'Lingala',
		'lo': 'Lao',
		'lt': 'Litván',
		'lv': 'Lett',
		'map-bms': 'Malajálam',
		'mdf': 'Moksa',
		'mg': 'Malgas',
		'mh': 'Marshall-szigeteki',
		'mi': 'Maori',
		'ml': 'Malajálam',
		'mk': 'Macedón',
		'mn': 'Mongol',
		'mo': 'Moldovai',
		'mr': 'Maráthi',
		'ms': 'Maláj',
		'mt': 'Máltai',
		'my': 'Burmai',
		'myv': 'Erza',
		'mzn': 'Mázandaráni',
		'na': 'Naurui',
		'nah': 'Azték',
		'nap': 'Nápolyi',
		'nds': 'Alnémet',
		'nds-nl': 'Holland alsószász',
		'ne': 'Nepáli',
		'new': 'Névári',
		'ng': 'Ndonga',
		'nl': 'Holland',
		'nn': 'Újnorvég',
		'no': 'Norvég',
		'nov': 'Novial',
		'nrm': 'Normandiai',
		'nv': 'Navahó',
		'ny': 'Cseva',
		'oc': 'Okcitán',
		'om': 'Oromo',
		'or': 'Orija',
		'os': 'Oszét',
		'pa': 'Pandzsábi',
		'pag': 'Pangasinan',
		'pam': 'Pampanga',
		'pap': 'Papiamentu',
		'pdc': 'Pennsylvaniai német',
		'pi': 'Páli',
		'pih': 'Norfuk',
		'pl': 'Lengyel',
		'pms': 'Piemontei',
		'ps': 'Pasto',
		'pt': 'Portugál',
		'qu': 'Kecsua',
		'ro': 'Román',
		'roa-rup': 'Aromán',
		'roa-tara': 'Tarantino',
		'rm': 'Rétoromán',
		'rmy': 'Romani',
		'rn': 'Kirundi',
		'ru': 'Orosz',
		'rw': 'Kinyarvanda',
		'sa': 'Szanszkrit',
		'sah': 'Jakut/szaha',
		'se': 'Északi számi',
		'sc': 'Szárd',
		'scn': 'Szicíliai',
		'sco': 'Skóciai angol',
		'sd': 'Szindhi',
		'sh': 'Szerbhorvát',
		'sg': 'Szango',
		'si': 'Szingaléz',
		'simple': 'Egyszerűsített angol',
		'sk': 'Szlovák',
		'sl': 'Szlovén',
		'sm': 'Szamoai',
		'sn': 'Sona',
		'so': 'Szomáli',
		'sq': 'Albán',
		'sr': 'Szerb',
		'srn': 'Sranan',
		'ss': 'Swati',
		'st': 'Szoto',
		'stq': 'Saterlandi fríz',
		'su': 'Szundai',
		'sv': 'Svéd',
		'sw': 'Szuahéli',
		'szl': 'Sziléz',
		'ta': 'Tamil',
		'te': 'Telugu',
		'tet': 'Tetum',
		'tg': 'Tádzsik',
		'th': 'Thai',
		'ti': 'Tigrinya',
		'tk': 'Türkmén',
		'tl': 'Tagalog',
		'tn': 'Csvana',
		'to': 'Tonga',
		'tpi': 'Tok-piszin',
		'tr': 'Török',
		'ts': 'Conga',
		'tt': 'Tatár',
		'tum': 'Tumbuka',
		'tw': 'Tvi',
		'ty': 'Tahiti',
		'udm': 'Udmurt',
		'ug': 'Ujgur',
		'uk': 'Ukrán',
		'ur': 'Urdu',
		'uz': 'Üzbég',
		've': 'Venda',
		'vec': 'Velencei',
		'vi': 'Vietnami',
		'vls': 'Nyugati flamand',
		'vo': 'Volapük',
		'wa': 'Vallon',
		'war': 'Waray',
		'wo': 'Volof',
		'wuu': 'Wu',
		'xal': 'Kalmük',
		'xh': 'Yhosza',
		'yi': 'Jiddis',
		'yo': 'Joruba',
		'za': 'Csuang',
		'zea': 'Zeelandi',
		'zh': 'Kínai',
		'zh-classical': 'Klasszikus kínai',
		'zh-min-nan': 'Min Nan',
		'zh-yue': 'Kantoni',
		'zu': 'Zulu'
	}),
	LangSpecABC : new Array(['á','a'],['é','e'],['í','i'],['ó','o'],['ö','oz'],['ő','ou'],['ú','u'],['ü','uz'],['ű','uz'])
};
 
 
iwTranslator.prototype.init = function() {
	var langdiv = document.getElementById('p-lang');
	if (!langdiv) return;
 
	var i=0;
	while( (i < langdiv.childNodes.length) && (langdiv.childNodes[i].nodeName != 'DIV') && (langdiv.childNodes[i].className!=='pBody') )
		++i;
 
	if (i < langdiv.childNodes.length) {
		this.langul = langdiv.getElementsByTagName('ul')[0];
		var i=0; var j=1;
		var nodes=this.langul.childNodes;
		if (nodes[nodes.length-1].id == 'interwiki-completelist') //enwiki miatt, mert ott a completelist nem class hanem id
			nodes[nodes.length-1].setAttribute('class','interwiki-completelist');
		while( nodes[i] !== undefined) {
			if (nodes[i].childNodes[0] !== undefined && nodes[i].className.indexOf('interwiki-') > -1
					 && nodes[i].childNodes[0].nodeName == 'A') {
				this.bovit(nodes[i], j);
				++j;
			}
			++i;
		}
 
		this.createMenu();
		var nyelvsuti=getCookie('interwikiNyelv') - 1;
		if ( nyelvsuti !== '') {
			this.changeLang(nyelvsuti, true);
		}else
			this.changeLang(0, true);
	}
}
 
iwTranslator.prototype.zeroFill = function(num) {
	num=String(num);
	for (var i=num.length; num.length < 4; ++i)
		num="0"+num;
	return num;
}
 
iwTranslator.prototype.huABCtoEN = function(str) {
	str=str.toLowerCase();
	for (var i=0; i<this.LangSpecABC.length;++i){
		str=str.replace(this.LangSpecABC[i][0],this.LangSpecABC[i][1]);
		}
	return str;
}
 
iwTranslator.prototype.nyelv2magyar = function(nyelv) {
	if (this.LangList[nyelv])
		return this.LangList[nyelv];
	else
		return nyelv;
}
 
iwTranslator.prototype.bovit = function(node, eredetiSorrend) {
	//Nyelvkód meghatározása a LI id-jából (pl: interwiki-en)
	var nyelv=new String(node.className);
	if (nyelv.indexOf(' ',10) > -1)
		nyelv=nyelv.slice(10,nyelv.indexOf(' ',10));
	else
		nyelv=nyelv.substr(10);
	var magyarul=this.nyelv2magyar(nyelv);
 
	if (node.childNodes[1] !== undefined && node.childNodes[1].nodeName == "#text")
		node.removeChild(node.childNodes[1]);	//IE hiba jav
 
	//Magyar név hozzáadása zárójel nélküli alakban
	var ujlink1 = document.createElement('a');
	ujlink1.href=node.childNodes[0].href;
	ujlink1.style.display='none';
	ujlink1.appendChild(document.createTextNode( magyarul ));
	ujlink1.setAttribute('rendnyelv',this.huABCtoEN(magyarul));
 
	node.appendChild(ujlink1);
 
	//Magyar név hozzáadása zárójeles alakban
	var ujlink2 = document.createElement('a');
	ujlink2.href=node.childNodes[0].href;
	ujlink2.style.display='none';
	ujlink2.style.color='black';
	ujlink2.appendChild(document.createTextNode( ' ('+magyarul+')'));
	ujlink2.setAttribute('rendnyelv',this.zeroFill(eredetiSorrend));
 
	node.appendChild(ujlink2);
	node.childNodes[0].setAttribute('rendnyelv',this.zeroFill(eredetiSorrend));
}
 
 
iwTranslator.prototype.sort = function(type) {
	function listSort(a, b) {
		if (a.childNodes[2] !== undefined && b.childNodes[2] !== undefined) {
			if (a.childNodes[type].getAttribute('rendnyelv') < b.childNodes[type].getAttribute('rendnyelv')) return -1;
			if (a.childNodes[type].getAttribute('rendnyelv') > b.childNodes[type].getAttribute('rendnyelv')) return 1;
			return 0;
		}
	}
	var list_temp = this.langul.getElementsByTagName('li');
	//Ezt az Objektum listát még nem lehet rendezni (IE6), ezért átmásoljuk egy "rendes" tömbbe
	var list = new Array();
	for (var i=0; i < list_temp.length; ++i)
		list[i]=list_temp[i];
	//A főoldalon a rendezés idejére kivesszük a "Teljes lista"-t, hogy legalul maradjon
	if (list[list.length-1].className == 'interwiki-completelist')
		var IWcompletelist = list.pop();
 
	//Rendezés
	list.sort(listSort);
 
	if (IWcompletelist)
		list.push(IWcompletelist);
 
	//Végül újraépítjük a listát
	for (var i=0; i < list.length; ++i)
		this.langul.appendChild(list[i]);
}
 
iwTranslator.prototype.createMenu = function() {
	var menu=document.createElement('div');
	 menu.setAttribute('id','interwikiNyelvValtMenu');
	 menu.style.marginLeft='-15px';
	 menu.style.marginBottom='5px';
	 menu.style.fontSize='.9em';
	var menuA1=document.createElement('a');
	 menuA1.href='javascript:interwikiTranslator.changeLang(0)';
	 menuA1.appendChild(document.createTextNode('Eredeti'));
	var menuA2=document.createElement('a');
	 menuA2.href='javascript:interwikiTranslator.changeLang(1)';
	 menuA2.appendChild(document.createTextNode('Magyar'));
	var menuA3=document.createElement('a');
	 menuA3.href='javascript:interwikiTranslator.changeLang(2)';
	 menuA3.appendChild(document.createTextNode('Vegyes'));
	var menuSpacer=document.createTextNode(' / ');
 
	//Menüelemek egyás után rakása: Eredeti  /  Magyar  /  Vegyes
	menu.appendChild(menuA1);
	menu.appendChild(menuSpacer);
	menu.appendChild(menuA2);
	menu.appendChild(menuSpacer.cloneNode(true));
	menu.appendChild(menuA3);
 
	this.langul.insertBefore(menu,this.langul.firstChild);
}
 
iwTranslator.prototype.changeLang = function(type, nemrendez) {
	var nyelvMenu = document.getElementById('interwikiNyelvValtMenu');
	//Menü átváltása, és rendezés
	switch (type) {
	case 0: { if ( !nemrendez) this.sort(0);
			nyelvMenu.childNodes[0].style.color='black';
			nyelvMenu.childNodes[2].style.color='';
			nyelvMenu.childNodes[4].style.color='';
	break;}
	case 1: {// if ( !nemrendez)  Betöltéskor csak a magyart rendezzük
			this.sort(1);
			nyelvMenu.childNodes[0].style.color='';
			nyelvMenu.childNodes[2].style.color='black';
			nyelvMenu.childNodes[4].style.color='';
	break;}
	case 2: { if ( !nemrendez) this.sort(2);
			nyelvMenu.childNodes[0].style.color='';
			nyelvMenu.childNodes[2].style.color='';
			nyelvMenu.childNodes[4].style.color='black';
	break;}
	}
	//Minden nyelvre beállítja a láthatóságot 
	for (var i=0; i < this.langul.childNodes.length; ++i) {
		if (this.langul.childNodes[i].nodeName=='LI' && this.langul.childNodes[i].childNodes[2] != undefined
				&& this.langul.childNodes[i].className !== 'interwiki-completelist') {
			switch(type) {
			case 0: {
				this.langul.childNodes[i].childNodes[0].style.display='inline';
				this.langul.childNodes[i].childNodes[1].style.display='none';
				this.langul.childNodes[i].childNodes[2].style.display='none';
			break;}
			case 1: {
				this.langul.childNodes[i].childNodes[0].style.display='none';
				this.langul.childNodes[i].childNodes[1].style.display='inline';
				this.langul.childNodes[i].childNodes[2].style.display='none';
			break;}
			case 2: {
				this.langul.childNodes[i].childNodes[0].style.display='inline';
				this.langul.childNodes[i].childNodes[1].style.display='none';
				this.langul.childNodes[i].childNodes[2].style.display='inline';
			break;}}
		}
	}
 
	if ( !nemrendez) {	//Csak akkor mentjük a sütit, ha kattintással hívódott meg ez a függvény
		var time=new Date();
		time.setTime(time.getTime() + 60*24*3600000); //60 napig
		// type+1, mert 0-nál IE törli a sütit
		setCookie('interwikiNyelv',type+1, time);
	}
}
 
//Ez a magyar wikiben benne van, de az angolon nincs, így ott nem működnének a sütik
function getCookie(name) {
	var cookieText;
	var cookiePos = document.cookie.indexOf(name + '=');
	if(cookiePos!=-1) {
		var results = document.cookie.match(name+'=(.*?)(;|$)');
		if(results) cookieText = unescape(results[1]);
			return cookieText;
	} else return null;
}
function setCookie(name, text, expires) {
	if(text) {
		if(expires) {
			document.cookie = name + '=' + escape(text) + '; expires=' + expires.toUTCString() + '; path=/';
		} else {
			document.cookie = name + '=' + escape(text) + '; path=/';
		}
	} else {
		document.cookie = name + '=; expires=Thu, 01-Jan-1970 00:00:01 GMT; path=/'; // delete cookie
	}
}
 
 
var interwikiTranslator = new iwTranslator();
$(function() {interwikiTranslator.init()})