Szerkesztő:BáthoryPéter/poziciosTerkepNagyito.js

A Wikipédiából, a szabad enciklopédiából

Megjegyzés: közzététel után frissítened kell a böngésződ gyorsítótárát, hogy lásd a változásokat.

  • Firefox / Safari: tartsd lenyomva a Shift gombot és kattints a Frissítés gombra a címsorban, vagy használd a Ctrl–F5 vagy Ctrl–R (Macen ⌘–R) billentyűkombinációt
  • Google Chrome: használd a Ctrl–Shift–R (Macen ⌘–Shift–R) billentyűkombinációt
  • Internet Explorer / Edge: tartsd nyomva a Ctrl-t, és kattints a Frissítés gombra, vagy nyomj Ctrl–F5-öt
  • Opera: Nyomj Ctrl–F5-öt
////////////////////////////////////////
//
//
//  A script része a Common.js-nek, ez az eredeti csak archiválási célból maradt meg, ne használd
//
////////////////////////////////////////

//<source lang="JavaScript">

function poziciosTerkepInit() {
	var boxes = getElementsByClassName(document, "poziciosTerkepDoboz");
	for (var i=0; i<boxes.length; ++i){
		try{
			var inner = getElementsByClassName(boxes[i], "poziciosTerkepBelso")[0];
			if (inner.getElementsByTagName("img")[0].src.indexOf("/thumb/") == -1) return false;
			if ( inner.getElementsByTagName("img")[1] && inner.getElementsByTagName("img")[1].alt == "Háttér" 
			  && inner.getElementsByTagName("img")[1].src.indexOf("/thumb/") == -1)
				return false;
			var innerA = inner.getElementsByTagName("a")[0];
			innerA.onclick = function() {poziciosTerkepOpen(this); return false;}
			innerA.style.cursor = "move";
		}catch(e){}/*ha nincs meg, akkor nincs értelme továbbmenni*/
	}
}

function getElementsByClassName(node, cl){
	if (node.getElementsByClassName)
		return node.getElementsByClassName(cl);

	var nodes = [];
	var elem = node.getElementsByTagName('DIV');
	for (var i = 0; i < elem.length; i++) {
		if (new RegExp('\\b'+cl+'\\b').test(elem[i].className))
			nodes.push(elem[i]);
	}
	return nodes;
}


function poziciosTerkepOpen(sender) {
	
	//Kicsi pozíciós térkép megkeresése
	var outer = sender.parentNode;
	while (outer.className != "poziciosTerkepBelso") {
		outer = outer.parentNode;
	}
	
	//Pozíciós térkép átmásolása
	var newDiv = outer.cloneNode(true);
	
	var newImg = new Array();
	newImg[0] = newDiv.getElementsByTagName("img")[0];
	newImg[0].title = newImg[0].src.match(/\/.\/..\/(.*\.[a-zA-z]{3,4})\/[^\/]*$/)[1];
	if (newDiv.getElementsByTagName("img")[1] && newDiv.getElementsByTagName("img")[1].alt == "Háttér"){
		newImg[1] = newDiv.getElementsByTagName("img")[1];
		newImg[1].title = newImg[1].src.match(/\/.\/..\/(.*\.[a-zA-z]{3,4})\/[^\/]*$/)[1];
	}

	//A kép eredeti méreteinek lekérdezése
	for(var i=0; i<newImg.length; ++i){
		if (newImg[i].title.match(/\.[a-zA-z]{3,4}$/) != ".svg") {
			var poziciosTerkepAjax = sajax_init_object();
			if ( ! poziciosTerkepAjax ) return false;
			var url = mw.config.get('wgServer') + mw.config.get('wgScriptPath') + '/api.php' + "?action=query&format=xml&titles=Image:"+newImg[i].title+"&prop=imageinfo&iiprop=size";
			poziciosTerkepAjax.onreadystatechange = function () {
				if (poziciosTerkepAjax.readyState != 4)
					return false;
				var res = poziciosTerkepAjax.responseText;
				var imgWidth  = res.match(/width=\"([0-9]*)\"/)[1];
				var imgHeight = res.match(/height=\"([0-9]*)\"/)[1];
				if (poziciosTerkepKesz && imgWidth < newWidth) {
					for(var j=0; j<newImg.length; ++j){
						newImg[j].width = imgWidth;
						newImg[j].height= imgHeight;
						newImg[j].src = newImg[j].src.replace(/thumb/, "").replace(/\/[0-9]*px-.*\.[a-zA-z]{3,4}$/, "");
						newDiv.style.width = imgWidth+"px";
					}
				}
			};
			poziciosTerkepAjax.open('GET', url, true);
			poziciosTerkepAjax.send(null);
		}
	}
	
	//Méretek meghatározása
	var oldWidth = outer.clientWidth;
	var oldHeight = outer.clientHeight;
	var newWidth  = Math.round(document.getElementsByTagName("html")[0].clientWidth  * 0.90 );
	var newHeight = Math.round(document.getElementsByTagName("html")[0].clientHeight * 0.95 );
	if (oldHeight/oldWidth*newWidth > newHeight){
		newWidth = Math.round(oldWidth/oldHeight*newHeight);
	}else{
		newHeight = Math.round(oldHeight/oldWidth*newWidth);
	}
	
	for(var i=0; i<newImg.length; ++i){
		newImg[i].width=newWidth;
		newImg[i].height=newHeight;
		newImg[i].src = newImg[i].src.replace(new RegExp(oldWidth+"px\-", "g"), newWidth+"px-");
		newImg[i].parentNode.style.cursor = "hand";
	}
	
	newDiv.getElementsByTagName("span")[0].style.cssText = 
		"padding: 1px;font-size:12pt;text-shadow: 0px 0px 4px white;-moz-text-shadow: 0px 0px 4px white;";
	
	newDiv.id="poziciosTerkepNagyitott";
	newDiv.style.cssText =
		"width: "+newWidth+"px; position: absolute; background-color:white; z-index:102;"
		+"top: "+ Math.round(((window.innerHeight || document.getElementsByTagName("html")[0].clientHeight)
					-newHeight)/2 + document.documentElement.scrollTop)+"px;"
		+"left: "+ Math.round(((window.innerWidth || document.getElementsByTagName("html")[0].clientWidth)
					-newWidth) /2) +"px;"
		+"border:solid 1px black;box-shadow:0px 0px 20px #C0C0C0; border-radius: 3px;"
		+"-moz-box-shadow:0px 0px 20px #C0C0C0; -moz-border-radius: 3px;";
		
	var closeButton = document.createElement("div");
	closeButton.style.cssText = "position:absolute;text-align:right;width:100%;";
	closeButton.innerHTML = "<img style='padding:4px;z-index:103;' onclick='poziciosTerkepClose()' "
		+"src='http://upload.wikimedia.org/wikipedia/commons/d/d4/Button_hide.png' />";
	newDiv.insertBefore(closeButton, newDiv.firstChild);

	//Kirakjuk
	var bodyContent = document.body;//getElementById("bodyContent");
	bodyContent.insertBefore(newDiv, bodyContent.firstChild);

	var poziciosTerkepKesz = true;
	
	
	//Háttér elsötétítése
	document.body.style.height = "auto";
	var scrollHeight = document.body.scrollHeight || document.body.offsetHeight;
	document.body.style.height = "100%";
	var opacityDiv = document.createElement("div");
	opacityDiv.id="poziciosTerkepOpacity";
	opacityDiv.onclick = function() {poziciosTerkepClose();};
	opacityDiv.style.cssText =
		"position:absolute; top:0; background:black; opacity:0.3; filter:alpha(opacity=70);"+
		"width:100%; height:"+(scrollHeight+20)+"px;z-index:101";
	document.body.appendChild(opacityDiv);
	
}

function poziciosTerkepClose() {
	document.body.removeChild(document.getElementById("poziciosTerkepNagyitott"));
	document.body.removeChild(document.getElementById("poziciosTerkepOpacity"));
}



$(function() {
   poziciosTerkepInit();
});


//</source>