
/* Copyright (c) 1999-2010 silvr.net | rev2.65 */

var PopInImg = {
	active:	false,
	viewer:	'',
	pic:	'',
	capt:	'',
	init: function(autobind, blockID) {
		
		var s = '<div id="popin">'+
		'<b id="popin-closer" onclick="PopInImg.hide();" onmouseover="cssClassName.add(this, \'active\');" onmouseout="cssClassName.del(this, \'active\');" title="Schließen [X]">x</b>'+
		'<h2 id="popin-desc">Titel</h2>'+
		'<img src="" id="popin-pic" alt="" />'+
		'</div>';
		document.body.innerHTML += s;
		
		this.viewer	= document.getElementById('popin');
		this.pic	= document.getElementById('popin-pic');
		this.capt	= document.getElementById('popin-desc');
		
		if (autobind) {
			var accA = ((blockID)? document.getElementById(blockID) : document.body).getElementsByTagName('a');
			for (var i = accA.length; i--;) {
				if( cssClassName.has(accA[i], 'popinimg') ) {
					accA[i].onclick = function() { PopInImg.load(this); return false; }
				}
			}
		}
	},
	load: function(anker) {
		
		cssClassName.incl(document.body, 'loading');
		cssClassName.shift(this.active, 'active', anker);
		this.active = anker;
		
		var desc = anker.firstChild.alt;	/* exists, fallback */
		
		var img = new Image();
		img.onload = this.popin;
		img.onerror = this.fucked;
		img.onabort = this.fucked;
		img.alt = desc;
		img.src = anker.href;
		
		this.capt.innerHTML = desc;
		
		return false;
	},
	fucked: function() {
		alert('FEHLER\n\nDas Bild - '+ this.src +' - konnte nicht geladen werden.');
		cssClassName.del(document.body, 'loading');
		PopInImg.hide();
	},
	popin: function() {
	
		PopInImg.pic.src = this.src;
		PopInImg.pic.alt = this.alt;
		
		var el = PopInImg.viewer;
		cssClassName.incl(el, 'active');		
		el.style.width = PopInImg.pic.offsetWidth + 'px'; /* ie-bug <=7, popin-width */

		/* top (+left) immer im viewport (selbst wenn low res + gescrollt) */
		el.style.left = getScroll.X() + Math.max(Math.round((getViewport.W() - el.offsetWidth) / 2), 0) + 'px';
		el.style.top  = getScroll.Y() + Math.max(Math.round((getViewport.H() - el.offsetHeight) / 2), 0) + 'px';
		
		cssClassName.del(document.body, 'loading');
	},
	hide: function() {
		cssClassName.del(this.viewer, 'active');
		cssClassName.del(this.active, 'active');
		this.active = false;
	}
};

if (jscss) onLoad(function() {
	PopInImg.init(false);
});

/* required:
- cssClassName rev3
- getViewport, getScroll rev1
- onLoad rev1.1
*/

