
/*
 * Application: Popup, by Limarc /Alexander Lobashev/
 * 
 * (c) 2008-2009 by Limarc, Lim-on Media
 * _link: http://www.free-lance.ru/users/Limarc
 *
 * _version: 1.13
 *
 */

 var iPops = new Class
 ({
	 Implements : [Options, Events],
	 
	 options:
	 {
		 width: 600,
		 height: 500
	 },
	 
	 initialize: function(options)
	 {
		 //
		 // -> set options
		 //
		 if (options)
		 {
			 this.setOptions(options);
		 }
		 
		 //
		 // -> create structure
		 //
		 this.setStructure();
		 
		 //
		 // -> set effects
		 //
		 this.fx = { overlay: new Fx.Tween(this.box.overlay, {property: "opacity"}), element: new Fx.Tween(this.box.wrapper, {property: "opacity"}) }
	 },
	 
	 
	 //
	 // -> alert: set structure
	 //
	 setStructure: function()
	 {
		 this.box = {overlay: new Element("div", {id: "popup-overlay", zIndex: 999998}), wrapper: new Element("div", {id: "popup-wrapper", zIndex: 999999}), content: new Element("div", {id: "popup-content"})}
		 this.corner =
		 {
		     top: new Element('div', {'class': 'top', html: "<img class='corner' style='display: none;' alt='' src='" + site.design + "/images/corners/popup-top-left.png' /><img class='fill' alt='' src='" + site.design + "/images/common-pixel.gif' />"}),
		     bottom: new Element('div', {'class': 'bottom', html: "<img class='corner' style='display: none;' alt='' src='" + site.design + "/images/corners/popup-bottom-left.png' /><img class='fill' alt='' src='" + site.design + "/images/common-pixel.gif' />"})
		 }
		 
		 //
		 // -> add in dom
		 //
		 document.id(document.body).adopt(this.box.overlay);
		 document.id(document.body).adopt(this.box.wrapper);
		 
		 //
		 // -> set content
		 //
		 this.box.wrapper.grab(this.box.content);
		 
		 this.corner.top.inject(this.box.wrapper, 'top');
		 this.corner.bottom.inject(this.box.wrapper, 'bottom');
		 
		 //
		 // -> event close to overlay
		 //
		 //this.box.overlay.addEvent("click", this.setHidden.bind(this));
		 
		 //
		 // -> set load in structure
		 //
		 this.setStructureLoad(this);
	 },
	 
	 
	 //
	 // -> alert: set load in structure
	 //
	 setStructureLoad: function()
	 {
		 this.load =
		 {
		     h1: new Element("h1", {'class': "popup-title"}),
		     content: new Element("div", {'class': "popup-information"}),
		     close: new Element("img", {'class': "popup-close", src: '' + site.design + '/images/icon/close.png', alt: 'Закрыть', title: 'Закрыть'})
		 }
		 
		 //
		 // -> load structure in wrapper
		 //
		 this.box.content.grab(this.load.h1);
		 this.box.content.adopt(this.load.content);
		 this.box.content.adopt(this.load.close);
		 
		 //
		 // -> event close to image `close`
		 //
		 this.load.close.addEvent("click", this.setHidden.bind(this));
	 },
	 
	 
	 //
	 // -> alert: set show
	 //
	 setAction: function(title, content)
	 {
		 //
		 // -> set title
		 //
		 this.load.h1.set('html', title);
		 
		 //
		 // -> set content
		 //
		 this.load.content.set('html', "");
		 this.load.content.set('load', {encoding: 'utf-8', evalScripts: true});
		 
		 if (content.contains('url:'))
		 {
			 this.load.content.load('' + content.replace(/url:/i, "") + '');
		 }
		 else if (content)
		 {
			 this.load.content.set('html', content);
		 }
		 
		 //
		 // -> set structure
		 //
		 this.setPosition(this);
		 
		 //
		 // -> show alert
		 //
		 this.fx.overlay.start(0, 0.7);
		 //this.fx.element.start(0, 1);
		 this.box.wrapper.setStyles({'display': 'block'});
	 },
	 
	 //
	 // -> alert: set hidden
	 //
	 setHidden: function()
	 {
		 this.fx.overlay.start(0.7, 0);
		 //this.fx.element.start(1, 0);
		 this.box.wrapper.setStyles({'display': 'none'});
	 },
	 
	 //
	 // -> set position
	 //
	 setPosition: function()
	 {
		 var scroll = window.getScroll(), size = window.getSize();
		 
		 //
		 // -> get dimension scroll
		 //
		 this.scroll = document.id(document.body).getScrollSize();
		 this.scrolled = document.id(document.body).getScroll();
		 
		 if (((size.y/4 + this.scrolled.y) + this.options.height) > this.scroll.y)
		 {
			 this.scroll.y = this.scroll.y + ((size.y/4 + this.scrolled.y) + this.options.height - this.scroll.y) + 200;
		 }
		 var r = this.size;
		 
		 //
		 // -> set style overlay
		 //
		 this.box.overlay.setStyles
		 ({
			 "width": '100%',
			 "height": this.scroll.y
		 });
		 
		 this.box.overlay.setPosition({x: 0, y: 0});
		 
		 //
		 // -> fixed dimension
		 //
		 this.box.wrapper.setStyles({'width': (this.options.width + 40)});
		 this.box.wrapper.setPosition({x: size.x/4 - 1, y: (size.y/4 + this.scrolled.y)});
		 
		 //
		 // -> ie
		 //
		 if (navigator.userAgent.indexOf('MSIE 7') != -1 || Browser.Engine.version < 5)
		 {
			 this.box.overlay.setStyles ({"display": 'block' });
			 this.box.wrapper.setStyles({"display": 'block'});
		 }
	 }
 });