var BoxSlideshow=new Class({
	Implements:Options,
	options:{
		boxes:'a.box-funds-investments'
	},

	initialize: function(options){
		this.setOptions(options);
		$$(this.options.boxes).each(function(e){
			e.store('details',e.getElement('.details').get('html'));
			e.addEvent('click',this.showBox.bind(this,[e]));
		}, this);
		var dimensions = $(document.body).getSize();
		this.shadow = $('shadowcontainer');
		if (!this.shadow) {
			this.shadow = $(document.createElement("DIV"));
			this.shadow.id = 'shadowcontainer';
			this.shadow.setStyle('display','block');
			this.shadow.hide();
			document.body.appendChild(this.shadow);
		}
		this.shadow.setStyles({
			backgroundColor: 'black',
			height: document.documentElement.scrollHeight+'px',
			width: document.documentElement.clientWidth+'px',
			position: 'absolute',
			top: 0,
			left: 0,
			zIndex: 100,
			opacity: 0
		});
		this.shadow.set('tween', {duration: 1});
		//document.documentElement.clientHeight+'px',
		window.addEvent('resize', this.shadowResize.bind(this));
		window.addEvent('resize',this.centerDiv.bind(this));
		this.shadow.addEvent('click', this.hideShadow.bind(this));


		this.contentBox=new Element('div',{
			'class':'slideshowContentBox'
		}).hide();
		this.contentTextBox=new Element('div',{
			'class':'slideshowContentTextBox'
		});
		this.boxTitle=new Element('div',{
			'class':'boxTitle'
		});
		this.boxDetails=new Element('div',{
			'class':'boxDetails'
		});
		this.boxText=new Element('div',{
			'class':'boxText'
		});
		this.closeBoxLink=new Element('a',{
			'href':'javascript:void(0);',
			'class':'closeBox'
		});
		this.printBox=new Element('a',{
			'href':'javascript:window.print();',
			'class':'printBox',
			'html':'Print now'
		});
		this.closeBoxLink.addEvent('click',this.closeDiv.bind(this));
		this.boxTitle.inject(this.contentTextBox);
		this.closeBoxLink.inject(this.contentTextBox);
		this.printBox.inject(this.contentTextBox);
		this.boxDetails.inject(this.contentTextBox);
		this.boxText.inject(this.contentTextBox);
		this.contentTextBox.inject(this.contentBox);
		this.contentBox.inject($(document.body));

		this.shadow.addEvent('click',this.closeDiv.bind(this,[this.contentBox]));
		if (Browser.Engine.trident) {
		/*	var origWidth = element.getSize().x;
			alert(origWidth);*/
			document.body.appendChild(this.contentBox);
		/*	element.setStyle('width', origWidth);*/
			if (Browser.Engine.trident4) this.contentBox.style.position='absolute';
		}
	},

	showBox: function(box){
		this.showShadow();
		$$(this.options.boxes).each(function(e){
			if (e!=box) e.removeClass('view');
		});
		this.boxTitle.set('html',box.getElement('.bigLinkSpan').get('text'));
		this.boxDetails.set('html',box.retrieve('details'));
		this.boxText.set('html',box.getElement('.desc').get('html'));
		this.centerDiv();
		this.contentBox.show();
	},

	centerDiv: function(){
		if (!Browser.Engine.trident4)
		{
			this.contentBox.setStyles({
				position: 'fixed',
				zIndex: 101,
				top: (document.body.getSize().y/2-this.contentBox.getStyle('height').toInt()/2)+'px',
				left: (document.body.getSize().x/2-this.contentBox.getStyle('width').toInt()/2)+'px'
			});
		} else {
			this.contentBox.setStyles({
				position: 'absolute',
				zIndex: 101,
				top: (document.body.getSize().y/2-this.contentBox.getStyle('height').toInt()/2)+'px',
				left: (document.body.getSize().x/2-this.contentBox.getStyle('width').toInt()/2)+'px'
			});
		}
	},

	closeDiv: function(){
		this.contentBox.hide();
		this.hideShadow();
		$$(this.options.boxes).each(function(e){
			e.addClass('view');
		});
	},

	showShadow: function(){
		if (navigator.platform!='Win32') this.toggleTags("EMBED", false);
		this.toggleTags("SELECT", false);
		this.shadow.show().tween('opacity',[0, 0.7]);
		return this.shadow;
	},

	toggleTags: function(tag, show) {
		tag = tag.toUpperCase();
		var flist = document.body.getElementsByTagName(tag);
		for (var x=0, l=flist.length; x<l; ++x) {
			if (!$(flist[x]).hasClass('view_select_menu')&&(!$(flist[x]).getParents().contains($('popup_data_edorins'))))
			{
				if (show)
					$(flist[x]).show();
				else
					$(flist[x]).hide();
			}
		}
	},

	shadowResize: function() {
		var dimensions = document.body.getSize();
		this.shadow.setStyles({
			height: document.documentElement.scrollHeight+'px',
			width: document.documentElement.scrollWidth+'px'
		});
	},

	hideShadow: function() {
		new Fx.Tween(this.shadow, 'opacity', {duration:0.5 }).addEvent('onComplete', function() {
			if (navigator.platform!='Win32') this.toggleTags("EMBED", true);
			this.toggleTags("SELECT", true);
		}.bind(this)).start('opacity', 0.7, 0);
	}
});


window.addEvent('domready',function(){
	new BoxSlideshow();
});
