PopImage = {
	
	scr_width: 0,
	scr_height: 0,
	img_margin: 38, // рамка вокруг фото + отступы
	text_top_height: 35, // высота верхнего текста с отступами
	text_bot_height: 40, // высота нижнего текста с отступами
	selects: [],
	overlay: '',
	div: '',
	img: '',
	text_top: '',
	text_bot: '',
	last_width: 0,
	last_height: 0,
	last_file: '',
	ie6: 0,

	build: function() {
			
		this.ie6 = !!(window.attachEvent && !window.opera);
		this.setScrDimensions();
		this.addEvent(window, 'resize', function() {PopImage.setScrDimensions(); PopImage.setPosition();});
		this.addEvent(window, 'scroll', function() {PopImage.setPosition();});

		var o = document.createElement("div");
		o.style.display = 'none';
		o.style.position = this.ie6?'absolute':'fixed';
		o.id = 'popimage_overlay';
		o.onclick = function() {PopImage.hide();};
		document.body.appendChild(o);
		
		var d = document.createElement("div");
		d.style.display = 'none';
		d.style.position = this.ie6?'absolute':'fixed';
		d.onclick = function() {PopImage.hide();};
		d.id = 'popimage_div';
		document.body.appendChild(d);

		var t = document.createElement("div");
		t.id = 'popimage_text_top';
		document.getElementById('popimage_div').appendChild(t);
				
		var i = document.createElement("img");
		i.alt = 'Кликните для того чтобы закрыть';
		i.text_top = 'Кликните для того чтобы закрыть';
		i.onclick = function() {PopImage.hide();};
		i.onload = function() {PopImage.setOpacity(this, 1);};
		i.style.cursor = 'pointer';
		i.id = 'popimage_img';
		document.getElementById('popimage_div').appendChild(i);
		
		var c = document.createElement("div");
		c.id = 'popimage_text_bot';
		document.getElementById('popimage_div').appendChild(c);
		
		this.overlay = document.getElementById('popimage_overlay');
		this.div = document.getElementById('popimage_div');
		this.img = document.getElementById('popimage_img');
		this.text_top = document.getElementById('popimage_text_top');
		this.text_bot = document.getElementById('popimage_text_bot');
					
	},
	
	show: function(file, file_width, file_height, text_top, text_bot) {
	
		if (!this.div) this.build();
		
		this.selects = document.getElementsByTagName('select');
		var selects_len = this.selects.length;
		for(n=0; n<selects_len; n++)
			this.selects[n].style.visibility = 'hidden';

		var height_add = 0;
		if (text_top) {
			this.text_top.innerHTML = text_top;
			this.text_top.style.display = 'block';
			height_add += this.text_top_height;
		} else {
			this.text_top.style.display = 'none';
		}
		if (text_bot) {
			this.text_bot.innerHTML = text_bot;
			this.text_bot.style.display = 'block';
			height_add += this.text_bot_height;
		} else {
			this.text_bot.style.display = 'none';
		}
		var width = file_width + this.img_margin;
		var height = file_height + this.img_margin + height_add;
				
		this.div.style.width = width+'px';
		this.div.style.height = height+'px';

		this.img.style.width = file_width+'px';
		this.img.style.height = file_height+'px';
		if (file != this.last_file) {
			this.setOpacity(this.img, 0.01);
			this.img.src = file;
			this.last_file = file;
		}
		
		this.last_width = width;
		this.last_height = height;
		
		this.setPosition();
		
		this.overlay.style.display = 'block';
		this.div.style.display = 'block';
	},

	hide: function() {
		this.div.style.display = 'none';
		this.overlay.style.display = 'none';
		var selects_len = this.selects.length;
		for(n=0; n<selects_len; n++)
			this.selects[n].style.visibility = 'visible';
	},
	
	setPosition: function() {
		var left = Math.floor((this.scr_width-this.last_width)/2 + (this.ie6?document.body.scrollLeft:0) )+'px';
		var top = Math.floor((this.scr_height-this.last_height)/2 + (this.ie6?document.body.scrollTop:0) )+'px';
		if (this.ie6) {
			this.overlay.style.top = document.body.scrollTop;
			this.overlay.style.left = document.body.scrollLeft;
		}
		this.div.style.left = left;
		this.div.style.top = top;
	},
	
	setScrDimensions: function() {
		this.scr_width = (typeof(window.innerWidth)=='number')?window.innerWidth:(document.documentElement&&document.documentElement.clientWidth?document.documentElement.clientWidth:(document.body&&document.body.clientWidth?document.body.clientWidth:800));
		this.scr_height = (typeof(window.innerHeight)=='number')?window.innerHeight:(document.documentElement&&document.documentElement.clientHeight?document.documentElement.clientHeight:(document.body&&document.body.clientHeight?document.body.clientHeight:600));
	},
	
	addEvent: function(obj, event, func, cascade) {
		if (obj.addEventListener) obj.addEventListener(event, func, cascade);
		else obj.attachEvent('on'+event, func);
	},
	
	setOpacity: function(obj, val) {
		if (this.ie6) obj.style.filter = 'alpha(opacity='+(val*100)+')';
		else obj.style.opacity = val;
	}
	
}
