/* imgpopup */
var ImgPopup = new Class({
	options:{
		hide_ie6_selects:true,
		hide_embeds:true,
		startSize:{
			x:50,
			y:50
		},
		shadowSize:{
			x:65,
			y:65
		},
		ie6_shadowSize:{
			x:25,
			y:25
		},
		in_duration:300,
		out_duration:300
	},
	sections:[],
	initialize:function(){
		if(window.ie6){
			this.options.shadowSize = this.options.ie6_shadowSize;
		}
		this.shadow = new Element('div',{id:'imgp_shadow_wrap'}).setHTML('<div id="imgp_shadow_nw"></div><div id="imgp_shadow_n"></div><div id="imgp_shadow_ne"></div><div id="imgp_shadow_w"></div><div id="imgp_shadow"></div><div id="imgp_shadow_e"></div><div id="imgp_shadow_sw"></div><div id="imgp_shadow_s"></div><div id="imgp_shadow_se"></div>');
		this.shadow.injectInside(document.body);
		this.imgwrap = new Element('div',{id:'imgp_imgwrap'}).setHTML('<div id="imgp_img"></div><a id="imgp_close" href=""></a><a id="imgp_prev" href=""></a><a id="imgp_next" href=""></a><div id="imgp_caption"></div>');
		this.imgwrap.injectInside(document.body);
		this.caption = this.imgwrap.getElement('#imgp_caption');
		this.img = this.imgwrap.getElement('#imgp_img');
		this.prev = this.imgwrap.getElement('#imgp_prev');
		this.prev.addEvent('click',function(e){
			this.goTo.bind(this)(-1);
			if(e){
				e.stop();
			}
		}.bindWithEvent(this));
		this.next = this.imgwrap.getElement('#imgp_next');
		this.next.addEvent('click',function(e){
			this.goTo.bind(this)(1);
			if(e){
				e.stop();
			}
		}.bindWithEvent(this));
		this.preimg = new Element('img');
		this.preimg.addEvent('load',this.imgLoaded.bind(this));
		this.effects_in = {
			shadow:new Fx.Styles(this.shadow, {duration: this.options.in_duration, transition: Fx.Transitions.Quad.easeOut}),
			imgwrap:new Fx.Styles(this.imgwrap, {duration: this.options.in_duration, transition: Fx.Transitions.Quad.easeOut}),
			img:new Fx.Styles(this.img, {duration: this.options.in_duration, transition: Fx.Transitions.Quad.easeOut})
		};
		this.effects_out = {
			shadow:new Fx.Styles(this.shadow, {duration: this.options.out_duration, transition: Fx.Transitions.Quad.easeIn}),
			imgwrap:new Fx.Styles(this.imgwrap, {duration: this.options.out_duration, transition: Fx.Transitions.Quad.easeIn}),
			img:new Fx.Styles(this.img, {duration: this.options.out_duration, transition: Fx.Transitions.Quad.easeIn})
		};
		this.imgwrap.getElement('#imgp_close').addEvent('click',function(e){
			this.close();
			if(e){
				e.stop();
			}
		}.bindWithEvent(this));
		/*window.addEvent('scroll',function(){
			if(this.is_opened){
				this.resize.bind(this)();
			}
		}.bind(this));*/
	},
	'addSection':function(section){
		this.sections.push(section);
	},
	start:function(url,caption){
		this.active_section = -1;
		for(i in this.sections){
			for(j in this.sections[i]){
				if(this.sections[i][j].url==url){
					this.active_section = i;
					this.active_item = j;
					break;
				}
			}
		}
		if(this.active_section<0){
			this.addSection([{
				url:url,
				caption:caption
			}]);
			this.active_section = this.sections.length-1;
			this.active_item = 0;
		}
		this.preLoad(this.sections[this.active_section][this.active_item].url);
	},
	preLoad:function(url){
		this.preimg.setProperty('src',url);
	},
	imgLoaded:function(){
		this.preimg.injectInside(document.body);
		this.target_width = this.preimg.getSize().size.x.toInt();
		this.target_height = this.preimg.getSize().size.y.toInt();
		this.preimg.remove();
		this.preimg.setProperty('src','');
		if(!this.is_opened){
			this.open();
		}
		else{
			this.resize();
		}
	},
	goTo:function(offset){
		this.active_item = (this.active_item*1)+(offset*1);
		if(this.active_item<0){
			this.active_item=0;
		}
		if(this.active_item>this.sections[this.active_section].length-1){
			this.active_item = this.sections[this.active_section].length-1;
		}
		this.preLoad(this.sections[this.active_section][this.active_item].url);
	},
	open:function(){
		this.is_opened = true;
		if(window.ie6 && this.options.hide_ie6_selects){
			this.hided_selects = $$('select');
			this.hided_selects.each(function(el){
				el.imgp_restore_style = el.getStyle('visibility');
				el.setStyle('visibility','hidden');
			});
		}
		this.imgwrap.getElements('*').each(function(el){
			el.setStyle('display','none');
		});
		this.img.setStyles({
			display:'block',
			width:this.options.startSize.x,
			height:this.options.startSize.y
		});
		this.shadow.setStyles({
			display:'block',
			left:(window.getScrollLeft()+(document.body.getSize().size.x/2))-(this.options.startSize.x/2)-this.options.shadowSize.x,
			top:(window.getScrollTop()+(window.getHeight()/2))-(this.options.startSize.y/2)-this.options.shadowSize.y,
			width:this.options.startSize.x+(this.options.shadowSize.x*2),
			height:this.options.startSize.y+(this.options.shadowSize.y*2)
		});
		this.imgwrap.setStyles({
			display:'block',
			opacity:0,
			left:(window.getScrollLeft()+(document.body.getSize().size.x/2))-(this.options.startSize.x/2)-this.imgwrap.getStyle('border-left-width').toInt(),
			top:(window.getScrollTop()+(window.getHeight()/2))-(this.options.startSize.y/2)-this.imgwrap.getStyle('border-top-width').toInt(),
			width:this.options.startSize.x,
			height:this.options.startSize.y
		});
		this.resize();
	},
	resize:function(){
		this.img.setStyles({
			opacity:0
		});
		this.prev.setStyle('display','none');
		this.next.setStyle('display','none');
		this.caption.setStyle('display','none');
		this.effects_in.shadow.start({
			left:(window.getScrollLeft()+(document.body.getSize().size.x/2))-(this.target_width/2)-this.options.shadowSize.x,
			top:(window.getScrollTop()+(window.getHeight()/2))-(this.target_height/2)-this.options.shadowSize.y,
			width:this.target_width+(this.options.shadowSize.x*2),
			height:this.target_height+(this.options.shadowSize.x*2)
		});
		this.effects_in.imgwrap.start({
			opacity:1,
			left:(window.getScrollLeft()+(document.body.getSize().size.x/2))-(this.target_width/2)-this.imgwrap.getStyle('border-left-width').toInt(),
			top:(window.getScrollTop()+(window.getHeight()/2))-(this.target_height/2)-this.imgwrap.getStyle('border-top-width').toInt(),
			width:this.target_width,
			height:this.target_height
		});
		this.effects_in.img.start({
			opacity:1,
			width:this.target_width,
			height:this.target_height
		});
		this.img.setStyle('background-image','url('+this.sections[this.active_section][this.active_item].url+')');
		this.caption.setHTML(this.sections[this.active_section][this.active_item].caption);
		this.opened.delay(this.options.in_duration,this);
		
	},
	opened:function(){
		this.imgwrap.getElements('*').each(function(el){
			el.setStyle('display','block');
		});
		if(this.active_item<=0){
			this.prev.setStyle('display','none');
		}
		if(this.active_item>=this.sections[this.active_section].length-1){
			this.next.setStyle('display','none');
		}
		if(!this.caption.innerHTML || this.caption.innerHTML==""){
			this.caption.setStyle('display','none');
		}
	},
	close:function(){
		this.is_opened = false;
		if(window.ie6 && this.options.hide_ie6_selects){
			this.hided_selects.each(function(el){
				el.setStyle('visibility',el.imgp_restore_style);
			});
		}
		this.imgwrap.getElements('*').each(function(el){
			el.setStyle('display','none');
		});
		this.img.setStyle('display','block');
		this.effects_out.shadow.start({
			left:(window.getScrollLeft()+(document.body.getSize().size.x/2))-(this.options.startSize.x/2)-this.options.shadowSize.x,
			top:(window.getScrollTop()+(window.getHeight()/2))-(this.options.startSize.y/2)-this.options.shadowSize.y,
			width:this.options.startSize.x+(this.options.shadowSize.x*2),
			height:this.options.startSize.y+(this.options.shadowSize.y*2)
		});
		this.effects_out.imgwrap.start({
			opacity:0,
			left:(window.getScrollLeft()+(document.body.getSize().size.x/2))-(this.options.startSize.x/2)-this.imgwrap.getStyle('border-left-width').toInt(),
			top:(window.getScrollTop()+(window.getHeight()/2))-(this.options.startSize.y/2)-this.imgwrap.getStyle('border-top-width').toInt(),
			width:this.options.startSize.x,
			height:this.options.startSize.y
		});
		this.effects_out.img.start({
			opacity:0,
			width:this.options.startSize.x,
			height:this.options.startSize.y			
		});
		(function(){
			this.shadow.setStyle('display','none');
			this.imgwrap.setStyle('display','none');
		}).delay(this.options.out_duration,this);
	}
});
ImgPopup.implement(new Options);
