/*
 createElement
 removeChild
 addEvent
*/
function modalWindow(){

   var self=this;

   //Создание
   this.init=function(){

		self.body=document.getElementsByTagName('body')[0];
		self.html=document.documentElement;

		//Создаём фон
		//Оверлей должен отменять события выделения !!!
		self.overlay=createElement('div');
		self.body.insertBefore(self.overlay,self.body.firstChild);

		var style = {
			'position':'absolute',
			'top':'0px',
			'left':'0px',
			'width':'100%',
			'height':'100%',
			'backgroundColor':'#000',
			'filter':'progid:DXImageTransform.Microsoft.Alpha(opacity=50)', //ie
			'MozOpacity':'0.5',
			'KhtmlOpacity':'0.5',
			'opacity':'0.5',
			'display':'none',
			'zIndex':'9998'
		}

		for(var name in style){
			self.overlay.style[name] = style[name]
		}

		//Создаём окно
		self.win = createElement('div');
		self.body.insertBefore(self.win,self.body.firstChild);

		var style = {
			'position':'absolute',
			'top':'0px',
			'left':'0px',
			'background':'#fff',
			'fontSize':'0px',
			'lineHeight':'0px',
			'border':'6px solid #ccc',
			'padding':'20px',
			'display':'none',
			'zIndex':'9999'
		}

		for(var name in style){
			self.win.style[name] = style[name]
		}
   }

	//Показываем окно
	this.show=function(){

		//Запоминаем позицию прокрутки по Y
		self.scroll = getScroll();

		//Отменяем прокрутку на странице
		self._disableScroll();

		self.overlay.style.top = self.scroll.y + 'px';

		self.overlay.style.display='block';
		self.win.style.display='block';

		//Позиционируем
		self.reposition();

		self.html.scrollTop = self.scroll.y; // ff >= 3.6

		//Вешаем обработчик onresize
		addEvent(window,'resize',self.reposition);
	}

	//Скрываем окно
	this.hide=function(){

		self.win.style.display='none'
		self.overlay.style.display='none';

		self._enableScroll();

		self.html.scrollTop = self.scroll.y; // ff >= 3.6

		removeEvent(window,'resize',self.reposition);

   }

	//Наполняем содержимым
	this.create=function(funcContent){

		funcContent(self.win);
	}

	//Позиционируем по центру
	this.reposition=function(){

		var hidden;

		//Если окно спрятано
		if(self.win.style.display=='none'){
			self.win.style.display='block';
			hidden=1
		}

		//Получаем фактические размеры
		self.winWidth=parseInt(self.win.offsetWidth);
		self.winHeight=parseInt(self.win.offsetHeight);

		//Прячем если было спрятано
		if(hidden)self.win.style.display='none';

		//Позиционируем по центру экрана
		self._top = self.scroll.y + ((document.documentElement.clientHeight - self.winHeight) / 2);
		self.win.style.top = self._top+'px';
		self.win.style.left='50%';
		self.win.style.marginLeft='-'+(self.winWidth/2)+'px';
	}

	//Отменяем прокрутку на странице
	this._disableScroll=function(){

		//Запоминаем css свойства страницы
		self.oldHtmlStyle = {
			'position':self.body.style.position,
			'overflow':self.body.style.overflow,
			'width':self.body.style.width
		};

		self.html.style.position='absolute';
		self.html.style.overflow='hidden';
		self.html.style.width='100%';
		self.html.style.height='100%';

		//Запоминаем css свойства страницы
		self.oldBodyStyle = {
			'height':self.body.style.height // ie6
		};

		self.body.style.height = '100%'; //ie6

	}

	//Возвращаем значения параметров
	this._enableScroll=function(){

		for(var name in self.oldBodyStyle)
			self.body.style[name] = self.oldBodyStyle[name];

		for(var name in self.oldHtmlStyle)
			self.html.style[name] = self.oldHtmlStyle[name];
	}

}

