/**************************************************************

	Script		: overlay
	Version		: 1.2
	Authors		: Samuel birch
	Desc		  : Covers the window with a semi-transparent layer.
	Licence		: Open Source MIT Licence

**************************************************************/

var Overlay = new Class({

	getOptions: function(){
		return {
			colour: '#000',
			opacity: 0.7,
			zIndex: 100,
			container: document.body,
			_onClick: $empty
		};
	},

	initialize: function(options){
		this.setOptions(this.getOptions(), options);

		this.options.container = $(this.options.container);

		this.container = new Element('div').setProperty('id', 'OverlayContainer').setStyles({
			position: 'absolute',
			left: '0px',
			top: '0px',
			width: '100%',
			zIndex: this.options.zIndex
		}).injectInside(this.options.container);

		this.iframe = new Element('iframe').setProperties({
			'id': 'OverlayIframe',
			'name': 'OverlayIframe',
			'src': 'javascript:void(0);',
			'frameborder': 0,
			'scrolling': 'no'
		}).setStyles({
			'position': 'absolute',
			'top': 0,
			'left': 0,
			'width': '100%',
			'height': '100%',
			'filter': 'progid:DXImageTransform.Microsoft.Alpha(style=0,opacity=0)',
			'opacity': 0,
			'zIndex': 1
		}).injectInside(this.container);

		this.overlay = new Element('div').setProperty('id', 'Overlay').setStyles({
			position: 'absolute',
			left: '0px',
			top: '0px',
			width: '100%',
			height: '100%',
			zIndex: 2,
			backgroundColor: this.options.colour
		}).injectInside(this.container);

		if(this.options._onClick){
			this.container.addEvent('click', function(){
        if(this.options.closeable) {
          this.options._onClick.call(this)
        }
			}.bind(this));
		}

		//this.fade = new Fx.Tween(this.container).set('opacity', 0);
		this.container.fade('hide');
		this.position();

		window.addEvent('resize', this.position.bind(this));
	},

	setOnClick: function(func){
		this.container.addEvent('click', func);
	},

	position: function(){
		if(this.options.container == document.body){
			var h = window.getScrollHeight()+'px';
			this.container.setStyles({top: '0px', height: h});
		}else{
			var myCoords = this.options.container.getCoordinates();
			this.container.setStyles({
				top: myCoords.top+'px',
				height: myCoords.height+'px',
				left: myCoords.left+'px',
				width: myCoords.width+'px'
			});
		}
	},

	show: function(){
		//this.fade.start(0,this.options.opacity);
		this.container.fade(this.options.opacity);
	},

	hide: function(){
		//this.fade.start(this.options.opacity,0);
		this.container.fade('out');
	}

});
Overlay.implement(new Options);

/*************************************************************/

/*
Script: Assets.js
	Provides methods to dynamically load JavaScript, CSS, and Image files into the document.

License:
	MIT-style license.
*/

var Asset = new Hash({

	javascript: function(source, properties){
		properties = $extend({
			onload: $empty,
			document: document,
			check: $lambda(true)
		}, properties);

		var script = new Element('script', {'src': source, 'type': 'text/javascript'});

		var load = properties.onload.bind(script), check = properties.check, doc = properties.document;
		delete properties.onload;delete properties.check;delete properties.document;

		script.addEvents({
			load: load,
			readystatechange: function(){
				if (['loaded', 'complete'].contains(this.readyState)) load();
			}
		}).setProperties(properties);


		if (Browser.Engine.webkit419) var checker = (function(){
			if (!$try(check)) return;
			$clear(checker);
			load();
		}).periodical(50);

		return script.inject(doc.head);
	},

	css: function(source, properties){
		return new Element('link', $merge({
			'rel': 'stylesheet', 'media': 'screen', 'type': 'text/css', 'href': source
		}, properties)).inject(document.head);
	},

	image: function(source, properties){
		properties = $merge({
			'onload': $empty,
			'onabort': $empty,
			'onerror': $empty
		}, properties);
		var image = new Image();
		var element = $(image) || new Element('img');
		['load', 'abort', 'error'].each(function(name){
			var type = 'on' + name;
			var event = properties[type];
			delete properties[type];
			image[type] = function(){
				if (!image) return;
				if (!element.parentNode){
					element.width = image.width;
					element.height = image.height;
				}
				image = image.onload = image.onabort = image.onerror = null;
				event.delay(1, element, element);
				element.fireEvent(name, element, 1);
			};
		});
		image.src = element.src = source;
		if (image && image.complete) image.onload.delay(1);
		return element.setProperties(properties);
	},

	images: function(sources, options){
		options = $merge({
			onComplete: $empty,
			onProgress: $empty
		}, options);
		if (!sources.push) sources = [sources];
		var images = [];
		var counter = 0;
		sources.each(function(source){
			var img = new Asset.image(source, {
				'onload': function(){
					options.onProgress.call(this, counter, sources.indexOf(source));
					counter++;
					if (counter == sources.length) options.onComplete();
				}
			});
			images.push(img);
		});
		return new Elements(images);
	}

});

/**************************************************************

	Script		: multiBox
	Version		: 1.4
	Authors		: Samuel Birch
	Desc		: Supports jpg, gif, png, flash, flv, mov, wmv, mp3, html, iframe
	Licence		: Open Source MIT Licence


**************************************************************/

var multiBox = new Class({

	getOptions: function(){
		return {
			initialWidth: 100,
			initialHeight: 400,
			container: document.body, //this will need to be setup to the box open in relation to this.
			overlay: false, //this will be a reference to an overlay instance. - TODO: implement below.
			contentColor: '#FFF',
			showNumbers: true,
			showControls: true,
			//showThumbnails: false,
			//autoPlay: false,
			//waitDuration: 2000,
			descClassName: false,
			descMinWidth: 400,
			descMaxWidth: 600,
      defaultWidth : 650,
      defaultHeight: 350,
      defaultContainerHeight: 500,
			movieWidth: 450,
			movieHeight: 400,
			offset: {x:-50, y:-100},
			fixedTop: false,
			path: 'files/',
			_onOpen: $empty,
			_onClose: $empty,
			openFromLink: true,
      closeable: true,
      padding: {
        top: 50,
        right: 100,
        bottom: 50,
        left: 100
      }
			//relativeToWindow: true
		};
	},

  oldHash : '',

	initialize: function(className, options){

    if($$('.'+className).length == 0) {
      return;
    }

		this.setOptions(this.getOptions(), options);

		this.openClosePos = {};
		this.timer = 0;
		this.contentToLoad = {};
		this.index = 0;
		this.opened = false;
		this.contentObj = {};
		this.containerDefaults = {};
		this.createArray = [];

		if(this.options.useOverlay){
			this.overlay = new Overlay({container: this.options.container, onClick:this.close.bind(this)});
		}
		this.overlay = this.options.overlay;
		if(this.overlay && this.options.closeable){
			this.overlay.setOnClick(this.close.bind(this));
		}

		this.content = $$('.'+className);
		if(this.options.descClassName){
			this.descriptions = $$('.'+this.options.descClassName);
			this.descriptions.each(function(el){
				el.setStyle('display', 'none');
			});
		}

		this.container = new Element('div').addClass('MultiBoxContainer').injectInside(this.options.container);
		this.iframe = new Element('iframe').setProperties({
			'id': 'multiBoxIframe',
			'name': 'mulitBoxIframe',
			'src': 'javascript:void(0);',
			'frameborder': 0,
			'scrolling': 'no'
		}).setStyles({
			'position': 'absolute',
			'top': -20,
			'left': -20,
			'filter': 'progid:DXImageTransform.Microsoft.Alpha(style=0,opacity=0)',
			'opacity': 0
		}).inject(this.container);
		this.box = new Element('div').addClass('MultiBoxContent').inject(this.container);

    this.headerContainer = new Element('div', {'class' : 'MultiBoxHeader'}).inject(this.container);
    this.header = new Element('div', {'class' : 'header'}).inject(this.headerContainer);
    this.headerSymbol = new Element('span', {'class' : 'icon'}).inject(this.header);
    this.headerText = new Element('span', {'class' : 'desc'}).inject(this.header);

    if(this.options.closeable) {
      this.closeButton = new Element('div', {'html' : 'Schlie&szlig;en'}).addClass('MultiBoxClose').inject(this.headerContainer).addEvent('click', this.close.bind(this));
    }

    this.headerContainer.hide();

		this.controlsContainer = new Element('div').addClass('MultiBoxControlsContainer').inject(this.container);
		this.controls = new Element('div').addClass('MultiBoxControls').inject(this.controlsContainer);

		this.previousButton = new Element('div').addClass('MultiBoxPrevious').inject(this.container).addEvent('click', this.previous.bind(this));
		this.nextButton = new Element('div').addClass('MultiBoxNext').inject(this.container).addEvent('click', this.next.bind(this));

		this.title = new Element('div').addClass('MultiBoxTitle').inject(this.controls);
		this.titleMargin = this.title.getStyle('margin-left');
		this.number = new Element('div').addClass('MultiBoxNumber').inject(this.controls);
		this.description = new Element('div').addClass('MultiBoxDescription').inject(this.controls);



		if(this.content.length == 1){
			this.title.setStyles({
				'margin-left': 0
			});
			this.description.setStyles({
				'margin-left': 0
			});
			this.previousButton.setStyle('display', 'none');
			this.nextButton.setStyle('display', 'none');
			this.number.setStyle('display', 'none');
		}

		new Element('div').setStyle('clear', 'both').inject(this.controls);

		this.content.each(function(el,i){
			el.index = i;
			el.addEvent('click', function(e){
				new Event(e).stop();
				this.open(el);
			}.bind(this));
			if(el.href.indexOf('#') > -1){
				el.content = $(el.href.substr(el.href.indexOf('#')+1));
				if(el.content){el.content.setStyle('display','none');}
			}
		}, this);

		this.containerEffects = new Fx.Morph(this.container, {duration: 400, transition: Fx.Transitions.Sine.easeInOut});
		this.iframeEffects = new Fx.Morph(this.iframe, {duration: 400, transition: Fx.Transitions.Sine.easeInOut});
		this.controlEffects = new Fx.Morph(this.controlsContainer, {duration: 300, transition: Fx.Transitions.Sine.easeInOut});

		this.reset();

    var self = this;
    window.addEvent('keyup', function(ev) {
      switch(ev.code) {
        case 39: // right
          self.next();
        break;
        case 37: // left
          self.previous();
        break;
        case 27: // esc
          if(self.options.closeable) {
            self.close();
          }
        break;
      }
    });
    this.oldImageShown = false;
    this.currentImageShown = true;
	},

	setContentType: function(link){
		var str = link.href.substr(link.href.lastIndexOf('.')+1).toLowerCase();
		var contentOptions = {};
		if($chk(link.rel)){
			var optArr = link.rel.split(',');
			optArr.each(function(el){
				var ta = el.split(':');
				contentOptions[ta[0]] = ta[1];
			});
		}

		if(contentOptions.type != undefined){
			str = contentOptions.type;
		}

		this.contentObj = {};
		this.contentObj.url = link.href;
		this.contentObj.src = link.href;
		this.contentObj.xH = 0;

		if(contentOptions.width){
			this.contentObj.width = contentOptions.width;
		}else{
			this.contentObj.width = this.options.movieWidth;
		}
		if(contentOptions.height){
			this.contentObj.height = contentOptions.height;
		}else{
			this.contentObj.height = this.options.movieHeight;
		}
		if(contentOptions.panel){
			this.panelPosition = contentOptions.panel;
		}else{
			this.panelPosition = this.options.panel;
		}

		switch(str){
			case 'jpg':
			case 'image':
			case 'gif':
			case 'png':
				this.type = 'image';
				break;
			case 'swf':
				this.type = 'flash';
				break;
			case 'youtube':
				this.type = 'youtube';
				break;
			case 'flv':
				this.type = 'flashVideo';
				this.contentObj.xH = 70;
				break;
			case 'mov':
				this.type = 'quicktime';
				break;
			case 'wmv':
				this.type = 'windowsMedia';
				break;
			case 'rv':
			case 'rm':
			case 'rmvb':
				this.type = 'real';
				break;
			case 'mp3':
				this.type = 'flashMp3';
				this.contentObj.width = 320;
				this.contentObj.height = 70;
				break;
			case 'element':
				this.type = 'htmlelement';
				this.elementContent = link.content;
				this.elementContent.setStyles({
					display: 'block',
					opacity: 0
				})

        
				if(this.elementContent.getStyle('width') != 'auto'){
					this.contentObj.width = this.elementContent.getStyle('width');
				}

				this.contentObj.height = this.elementContent.getSize().y;
				this.elementContent.setStyles({
					display: 'none',
					opacity: 1
				})
				break;

			default:

				this.type = 'iframe';
				if(contentOptions.ajax){
					this.type = 'ajax';
				}
				break;
		}
	},

	reset: function(){
		this.container.setStyles({
			'opacity': 0,
			'display': 'none',
      'height' : 0,
      'width'  : 0,
      'left'   : 0,
      'top'    : 0
		});
		this.controlsContainer.setStyles({
			'height': 0
		});
		this.removeContent();
		this.previousButton.removeClass('MultiBoxButtonDisabled');
		this.nextButton.removeClass('MultiBoxButtonDisabled');
		this.opened = false;
	},

	getOpenClosePos: function(el){
		if (this.options.openFromLink) {
      //console.log(el.getFirst() ? "getFirst" + el.getFirst().getCoordinates().height : "el" + el.getCoordinates().height);
			if (el.getFirst()) {
				var w = el.getFirst().getCoordinates().width - (this.container.getStyle('border').toInt() * 2);
				if (w < 0) {
					w = 0
				}
				var h = el.getFirst().getCoordinates().height - (this.container.getStyle('border').toInt() * 2);
				if (h < 0) {
					h = 0
				}
				this.openClosePos = {
					width: w,
					height: h,
					top: el.getFirst().getCoordinates().top,
					//top: (window.getHeight()/2),
					left: el.getFirst().getCoordinates().left
				};
        //console.log(window.getCoordinates().height, window.getHeight());
			}
			else {
				var w = el.getCoordinates().width - (this.container.getStyle('border').toInt() * 2);
				if (w < 0) {
					w = 0
				}
				var h = el.getCoordinates().height - (this.container.getStyle('border').toInt() * 2);
				if (h < 0) {
					h = 0
				}
				this.openClosePos = {
					width: w,
					height: h,
          //height: (window.getHeight()/2),
					top: el.getCoordinates().top,
					left: el.getCoordinates().left
				};
			}
		}else{
			var border = this.container.getStyle('border').toInt();
      //console.log(el);
			if(this.options.fixedTop){
				var top = this.options.fixedTop;
			}else{
				//var top = ((window.getHeight()/2)-(this.options.initialHeight/2) - border)+this.options.offset.y;
				var top = ((window.getHeight()/2));
			}
			this.openClosePos = {
				width: this.options.initialWidth,
				height: this.options.initialHeight,
				top: top,
				left: ((window.getWidth()/2)-(this.options.initialWidth/2)-border)+this.options.offset.x
			};
		}
		return this.openClosePos;
	},

	open: function(el){

		this.options._onOpen();

		this.index = this.content.indexOf(el);

		this.openId = el.getProperty('id');

		var border = this.container.getStyle('border').toInt();

		if(!this.opened){
			this.opened = true;

			if(this.options.overlay){
				this.overlay.show();
			}

      var top;
			if(this.options.fixedTop){
				top = this.options.fixedTop;
			}else{
				//top = ((window.getHeight()/2)-(this.options.initialHeight/2) - border)+this.options.offset.y;
				//top = ((window.getHeight()/2));
        top   = el.getCoordinates().top;
			}
      //console.log(el.getCoordinates(), el.getScrollSize(), el.getPosition(), el.getPosition(window));
			this.container.setStyles(this.getOpenClosePos(el));
			this.container.setStyles({
				opacity: 0,
				display: 'block',
        height: this.options.defaultHeight+140
			});

      /*
			this.containerEffects.start({
				width: this.options.initialWidth,
				height: this.options.defaultHeight,
				top: top,
				left: ((window.getWidth()/2)-(this.options.initialWidth/2)-border)+this.options.offset.x,
				opacity: [0, 1]
			});
      */
			this.load(this.index);

      if(el.get('name')) {
        this.headerText.set('text', el.get('name'));
        switch(el.get('name')) {
          case 'Impressum':
            this.headerSymbol.set('class', 'icon imprint');
          break;
          case 'AGB':
            this.headerSymbol.set('class', 'icon agb');
          break;
          case 'Foto melden':
            this.headerSymbol.set('class', 'icon report');
          break;
          case 'Kontakt':
            this.headerSymbol.set('class', 'icon contact');
          break;
          case 'Seite weiterleiten':
            this.headerSymbol.set('class', 'icon forward');
          break;
          case 'Detailansicht':
            this.headerSymbol.set('class', 'icon detail');
            /*
            if(!this.controls.getElement('a.evilImage')) {
              var evil = new Element('a', {
                'class' : 'evilImage',
                'text'  : 'Bild melden'
              });
              evil.inject(this.controls);
              evil.addEvent('click', function(ev) {
                ev.preventDefault();
                var image = this.contentContainer.getElement('img');
                var thumb = el.getElement('img');
                image.fade('out');
                initializeEvilForm(this, this.contentContainer, thumb);
              }.bind(this));
            }
            */
          break;
        }
      }

		}else{
			if (this.options.showControls) {
				this.hideControls();
			}
			this.getOpenClosePos(this.content[this.index]);
			this.timer = this.hideContent.bind(this).delay(500);
			this.timer = this.load.pass(this.index, this).delay(1100);
		}

    this.headerContainer.show();
    this.headerContainer.setStyle('opacity', 0);
	},

	create: function(obj){
		/*
		obj = {
			url: 'myurl',  *
			title: 'my title',
			description: 'my description',
			type: 'image',
			width: 400,
			height: 300
		}
		*/
		if(this.createArray.contains(obj.url)){
			var index = this.createArray.indexOf(obj.url);
			var a = this.content[index];
		}else{
			var id = 'mbDirect_' + $time();
			var rel = [];
			if(obj.type){rel.push('type:'+obj.type)}
			if(obj.width){rel.push('width:'+obj.width)}
			if(obj.height){rel.push('height:'+obj.height)}

			var a = new Element('a', {
				'href': obj.url,
				'id': id,
				'title': obj.title || '',
				'rel': rel.join(',')
			});
			var desc = new Element('div', {
				'class': id,
				'html': obj.description || ''
			})

			this.createArray.push(obj.url);
			this.content.push(a);
			var index = this.content.length-1;

			if(this.options.descClassName){
				this.descriptions.include(desc);
			}
		}
		this.open(a);
	},

	getContent: function(index){
		this.setContentType(this.content[index]);
		var desc = false;
		if(this.options.descClassName){
		this.descriptions.each(function(el,i){
			if(el.hasClass(this.openId)){
				desc = el.clone();
			}
		},this);
		}
		this.contentToLoad = {
			title: this.content[index].title || '&nbsp;',
			desc: desc,
			number: index+1
		};
	},

	close: function(){
		if(this.options.overlay){
			this.overlay.hide();
		}
		if (this.options.showControls) {
			this.hideControls();
		}
		this.hideContent();
		this.containerEffects.cancel();
		this.zoomOut.bind(this).delay(500);
		this.options._onClose();

    parent.location.hash = '/#';

	},

	zoomOut: function(){
		this.iframeEffects.start({
			width: this.openClosePos.width,
			height: this.openClosePos.height
		});
		this.containerEffects.start({
			width: this.openClosePos.width,
			height: this.openClosePos.height,
			top: this.openClosePos.top,
			left: this.openClosePos.left,
			opacity: 0
		});
		this.reset.bind(this).delay(500);
	},

	load: function(index){
      this.box.addClass('MultiBoxLoading');
      this.getContent(index);
      var self = this;
      if(this.type == 'image'){
        this.oldImageShown = this.currentImageShown;
        this.currentImageShown = index;

        var xH = this.contentObj.xH;
        this.contentObj = new Asset.image(this.content[index].href, {
          onload: function() {
            self.resize();
            (function() {
              self.headerContainer.fade('in');
            }).delay(1000);
          }
        });
        this.contentObj.xH = xH;
        this.headerSymbol.set('class', 'icon detail');
        this.headerText.set('text', 'Detailansicht');
      }else{
        this.resize();
        (function() {
              self.headerContainer.fade('in');
        }).delay(1500);
      }

      if(typeof(this.currentImageShown) == 'number') {
        var imageId = this.content[this.currentImageShown].href.split("/").getLast();
        location.hash = '#'+imageId;
      }
	},

	resize: function(){
		if(this.tempSRC != this.contentObj.src){
/*
      var width  = parseInt(this.contentObj.width) + this.options.padding.left + this.options.padding.right;
      var height = Number(this.contentObj.height) + this.contentObj.xH + this.options.padding.top + this.options.padding.bottom;
*/
      var width = this.options.defaultWidth;
      var height = this.options.defaultHeight;
			var border = this.container.getStyle('border').toInt();

			if (this.options.fixedTop) {
				var top = this.options.fixedTop;
			}
			else {
				var top = ((window.getHeight() / 2) - ((height) / 2) - border + window.getScrollTop()) + this.options.offset.y;
			}
			var left = ((window.getWidth() / 2) - (width / 2) - border) + this.options.offset.x;

			if (top < 0) {
				top = 0
			}
			if (left < 0) {
				left = 0
			}
			this.containerEffects.cancel();
			this.containerEffects.start({
				width: width,
				//height: height,
				top: top,
				left: left,
				opacity: 1
			});
			this.iframeEffects.start({
				//width: Number(this.contentObj.width) + (border*2),
				//height: Number(this.contentObj.height) + this.contentObj.xH + (border*2)
				width: width + (border*2),
				height: height + this.contentObj.xH + (border*2)
			});
			this.timer = this.showContent.bind(this).delay(500);
			this.tempSRC = this.contentObj.src;
      if(this.type == 'image') {
        if(!this.controls.getElement('a.evilImage')) {
          var evil = new Element('a', {
            'class' : 'evilImage',
            'text'  : 'Bild melden'
          });
          evil.inject(this.controls);
          evil.addEvent('click', function(ev) {
            ev.preventDefault();
            var image = this.contentContainer.getElement('img');
            var imagePath = image.get('src').split("/");
            var thumb = $('image-'+imagePath.getLast().split(".")[0]);
            image.fade('out'); 
            initializeEvilForm.delay(500, this, [this, this.contentContainer, thumb]);
          }.bind(this));
        }else{
          var evil = this.controls.getElement('a.evilImage');
          if(evil) {
            evil.removeEvent('click');
            evil.addEvent('click', function(ev) {
              ev.preventDefault();
              var image = this.contentContainer.getElement('img');
              var imagePath = image.get('src').split("/");
              var thumb = $('image-'+imagePath.getLast().split(".")[0]);
              image.fade('out');
              initializeEvilForm.delay(500, this, [this, this.contentContainer, thumb]);
            }.bind(this));
          }
        }
      }



		}
	},

	showContent: function(){
		this.tempSRC = '';
		this.box.removeClass('MultiBoxLoading');
		this.removeContent();

    if(this.type == 'image') {
      this.contentContainer = new Element('div').setProperties(
        {id: 'MultiBoxContentContainer'}).setStyles(
          {opacity: 0,
            width: this.contentObj.width,
            //height: (Number(this.contentObj.height)+this.contentObj.xH),
            height: 400+'px',
            'margin-left' : -(100+(this.contentObj.width/2))+"px"
        }).injectInside(this.box);
      this.contentContainer.addClass('image');
    }else{
      this.contentContainer = new Element('div').setProperties(
        {id: 'MultiBoxContentContainer'}).setStyles(
          {opacity: 0,
            width: this.contentObj.width,
            height: (Number(this.contentObj.height)+this.contentObj.xH)
        }).injectInside(this.box);
    }

		if(this.type == 'image'){
      this.contentObj.setStyle('opacity',0);
			this.contentObj.injectInside(this.contentContainer);
      this.contentObj.fade('in');
		}else if(this.type == 'iframe'){
			new Element('iframe').setProperties({
				id: 'iFrame'+new Date().getTime(),
				width: this.contentObj.width,
				height: this.contentObj.height,
				src: this.contentObj.url,
				frameborder: 0,
				scrolling: 'auto'
			}).injectInside(this.contentContainer);

		}else if(this.type == 'htmlelement'){
			this.elementContent.clone().setStyle('display','block').injectInside(this.contentContainer);

		}else if(this.type == 'ajax'){
			new Request.HTML({
				update: $('MultiBoxContentContainer'),
				autoCancel: true
			}).get(this.contentObj.url);

		}else{
			var obj = this.createEmbedObject().injectInside(this.contentContainer);
			if(this.str != ''){
				$('MultiBoxMediaObject').innerHTML = this.str;
			}
		}

    if(this.type == 'image') {
      this.contentObj.setStyle('padding-top', (this.contentContainer.getStyle('height').toInt() - this.contentObj.getScrollSize().y)/2 + "px");
    }

		this.contentEffects = new Fx.Morph(this.contentContainer, {duration: 250, transition: Fx.Transitions.linear});
		this.contentEffects.start({
			opacity: 1
		});



		this.title.set('html', this.contentToLoad.title);
		if(this.content.length > 1){
			this.number.set('html', this.contentToLoad.number+' of '+this.content.length);
		}else{
			this.number.set('html','');
		}
		if (this.options.descClassName) {
			if (this.description.getFirst()) {
				this.description.getFirst().destroy();
			}
			if(this.contentToLoad.desc){
				this.contentToLoad.desc.inject(this.description).setStyles({
					display: 'block'
				});
			}
		}
		//this.removeContent.bind(this).delay(500);
		if (this.options.showControls) {
			if(this.contentToLoad.title != '&nbsp;' || this.content.length > 1){
				this.timer = this.showControls.bind(this).delay(0);
			}
		}
	}, 

	hideContent: function(){
		this.box.addClass('MultiBoxLoading');
    if($defined(this.contentEffects)) {
      this.contentEffects.start({
        opacity: 0
      });
    }
		this.removeContent.bind(this).delay(500);
	},

	removeContent: function(){
		if($('MultiBoxMediaObject')){
			$('MultiBoxMediaObject').empty();
			$('MultiBoxMediaObject').destroy();
		}
		if($('MultiBoxContentContainer')){
			//$('MultiBoxContentContainer').empty();
			$('MultiBoxContentContainer').destroy();
		}
	},

	showControls: function(){
		this.clicked = false;
    
		if(this.container.getStyle('height') != 'auto'){
			this.containerDefaults.height = this.container.getStyle('height')
			this.containerDefaults.backgroundColor = this.options.contentColor;
		}

		this.container.setStyles({
			//'backgroundColor': this.controls.getStyle('backgroundColor'),
			'height': this.options.defaultContainerHeight
		});

		if(this.content.length > 1){
			this.previousButton.setStyle('visibility', 'visible');
			this.nextButton.setStyle('visibility', 'visible');
			this.title.setStyle('margin-left', this.titleMargin);

			if(this.contentToLoad.number == 1){
				this.previousButton.addClass('MultiBoxPreviousDisabled');
			}else{
				this.previousButton.removeClass('MultiBoxPreviousDisabled');
			}
			if(this.contentToLoad.number == this.content.length){
				this.nextButton.addClass('MultiBoxNextDisabled');
			}else{
				this.nextButton.removeClass('MultiBoxNextDisabled');
			}
		}else{
			this.previousButton.setStyle('visibility', 'hidden');
			this.nextButton.setStyle('visibility', 'hidden');
			this.title.setStyle('margin-left', 0);
		}

		//this.controlEffects.start({'height': this.controls.getCoordinates().height});
		//this.iframeEffects.start({'height': this.iframe.getStyle('height').toInt()+this.controls.getStyle('height').toInt()});
    this.controlsContainer.setStyle('height', this.controls.getCoordinates().height);
		this.iframe.setStyle('height' , this.iframe.getStyle('height').toInt() + this.controls.getStyle('height').toInt() );

		if(this.options.overlay){
			this.options.overlay.position();
		}

	},

	hideControls: function(num){
		this.iframeEffects.start({'height': this.iframe.getStyle('height').toInt()-this.controls.getStyle('height').toInt()});
		this.controlEffects.start({'height': 0}).chain(function(){
			this.container.setStyles(this.containerDefaults);
		}.bind(this));
	},

	showThumbnails: function(){

	},

	next: function(){
		if(this.index < this.content.length-1){
			this.index++;
			this.openId = this.content[this.index].getProperty('id');
			if (this.options.showControls) {
				//this.hideControls();
			}
			this.getOpenClosePos(this.content[this.index]);
			//this.getContent(this.index);
			this.timer = this.hideContent.bind(this).delay(100);
			this.timer = this.load.pass(this.index, this).delay(250);
		}
	},

	previous: function(){
		if(this.index > 0){
			this.index--;
			this.openId = this.content[this.index].getProperty('id');
			if (this.options.showControls) {
				//this.hideControls();
			}
			this.getOpenClosePos(this.content[this.index]);
			//this.getContent(this.index);
			this.timer = this.hideContent.bind(this).delay(100);
			this.timer = this.load.pass(this.index, this).delay(250);
		}
	},

	createEmbedObject: function(){
		if(this.type == 'flash'){
			var url = this.contentObj.url;

			var obj = new Element('div').setProperties({id: 'MultiBoxMediaObject'});
			this.str = '<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,28,0" '
			this.str += 'width="'+this.contentObj.width+'" ';
			this.str += 'height="'+this.contentObj.height+'" ';
			this.str += 'title="MultiBoxMedia">';
  			this.str += '<param name="movie" value="'+url+'" />'
  			this.str += '<param name="quality" value="high" />';
  			this.str += '<embed src="'+url+'" ';
  			this.str += 'quality="high" pluginspage="http://www.adobe.com/shockwave/download/download.cgi?P1_Prod_Version=ShockwaveFlash" type="application/x-shockwave-flash" ';
  			this.str += 'width="'+this.contentObj.width+'" ';
  			this.str += 'height="'+this.contentObj.height+'"></embed>';
			this.str += '</object>';

		}

		if(this.type == 'youtube'){
			var url = this.contentObj.url;

			var obj = new Element('div').setProperties({id: 'MultiBoxMediaObject'});
			this.str = '<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,28,0" '
			this.str += 'width="'+this.contentObj.width+'" ';
			this.str += 'height="'+this.contentObj.height+'" ';
			this.str += 'title="MultiBoxMedia">';
  			this.str += '<param name="movie" value="'+url+'" />'
  			this.str += '<param name="quality" value="high" />';
  			this.str += '<param name="allowFullScreen" value="true"></param>';
  			this.str += '<embed src="'+url+'" ';
  			this.str += 'quality="high" pluginspage="http://www.adobe.com/shockwave/download/download.cgi?P1_Prod_Version=ShockwaveFlash" type="application/x-shockwave-flash" ';
  			this.str += 'allowfullscreen="true" ';
  			this.str += 'width="'+this.contentObj.width+'" ';
  			this.str += 'height="'+this.contentObj.height+'"></embed>';
			this.str += '</object>';

		}

		if(this.type == 'flashVideo'){
			//var url = this.contentObj.url.substring(0, this.contentObj.url.lastIndexOf('.'));
			var url = this.contentObj.url;

			var obj = new Element('div').setProperties({id: 'MultiBoxMediaObject'});
			this.str = '<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,28,0" '
			this.str += 'width="'+this.contentObj.width+'" ';
			this.str += 'height="'+(Number(this.contentObj.height)+this.contentObj.xH)+'" ';
			this.str += 'title="MultiBoxMedia">';
  			this.str += '<param name="movie" value="'+this.options.path+'flvplayer.swf" />'
  			this.str += '<param name="quality" value="high" />';
  			this.str += '<param name="salign" value="TL" />';
  			this.str += '<param name="scale" value="noScale" />';
  			this.str += '<param name="FlashVars" value="path='+url+'" />';
  			this.str += '<embed src="'+this.options.path+'flvplayer.swf" ';
  			this.str += 'quality="high" pluginspage="http://www.adobe.com/shockwave/download/download.cgi?P1_Prod_Version=ShockwaveFlash" type="application/x-shockwave-flash" ';
  			this.str += 'width="'+this.contentObj.width+'" ';
  			this.str += 'height="'+(Number(this.contentObj.height)+this.contentObj.xH)+'"';
  			this.str += 'salign="TL" ';
  			this.str += 'scale="noScale" ';
  			this.str += 'FlashVars="path='+url+'"';
  			this.str += '></embed>';
			this.str += '</object>';

		}

		if(this.type == 'flashMp3'){
			var url = this.contentObj.url;

			var obj = new Element('div').setProperties({id: 'MultiBoxMediaObject'});
			this.str = '<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,28,0" '
			this.str += 'width="'+this.contentObj.width+'" ';
			this.str += 'height="'+this.contentObj.height+'" ';
			this.str += 'title="MultiBoxMedia">';
  			this.str += '<param name="movie" value="'+this.options.path+'mp3player.swf" />'
  			this.str += '<param name="quality" value="high" />';
  			this.str += '<param name="salign" value="TL" />';
  			this.str += '<param name="scale" value="noScale" />';
  			this.str += '<param name="FlashVars" value="path='+url+'" />';
  			this.str += '<embed src="'+this.options.path+'mp3player.swf" ';
  			this.str += 'quality="high" pluginspage="http://www.adobe.com/shockwave/download/download.cgi?P1_Prod_Version=ShockwaveFlash" type="application/x-shockwave-flash" ';
  			this.str += 'width="'+this.contentObj.width+'" ';
  			this.str += 'height="'+this.contentObj.height+'"';
  			this.str += 'salign="TL" ';
  			this.str += 'scale="noScale" ';
  			this.str += 'FlashVars="path='+url+'"';
  			this.str += '></embed>';
			this.str += '</object>';
		}

		if(this.type == 'quicktime'){
			var obj = new Element('div').setProperties({id: 'MultiBoxMediaObject'});
			this.str = '<object  type="video/quicktime" classid="clsid:02BF25D5-8C17-4B23-BC80-D3488ABDDC6B" codebase="http://www.apple.com/qtactivex/qtplugin.cab"';
			this.str += ' width="'+this.contentObj.width+'" height="'+this.contentObj.height+'">';
			this.str += '<param name="src" value="'+this.contentObj.url+'" />';
			this.str += '<param name="autoplay" value="true" />';
			this.str += '<param name="controller" value="true" />';
			this.str += '<param name="enablejavascript" value="true" />';
			this.str += '<embed src="'+this.contentObj.url+'" autoplay="true" pluginspage="http://www.apple.com/quicktime/download/" width="'+this.contentObj.width+'" height="'+this.contentObj.height+'"></embed>';
			this.str += '<object/>';

		}

		if(this.type == 'windowsMedia'){
			var obj = new Element('div').setProperties({id: 'MultiBoxMediaObject'});
			this.str = '<object  type="application/x-oleobject" classid="CLSID:22D6f312-B0F6-11D0-94AB-0080C74C7E95" codebase="http://activex.microsoft.com/activex/controls/mplayer/en/nsmp2inf.cab#Version=6,4,7,1112"';
			this.str += ' width="'+this.contentObj.width+'" height="'+this.contentObj.height+'">';
			this.str += '<param name="filename" value="'+this.contentObj.url+'" />';
			this.str += '<param name="Showcontrols" value="true" />';
			this.str += '<param name="autoStart" value="true" />';
			this.str += '<embed type="application/x-mplayer2" src="'+this.contentObj.url+'" Showcontrols="true" autoStart="true" width="'+this.contentObj.width+'" height="'+this.contentObj.height+'"></embed>';
			this.str += '<object/>';

		}

		if(this.type == 'real'){
			var obj = new Element('div').setProperties({id: 'MultiBoxMediaObject'});
			this.str = '<object classid="clsid:CFCDAA03-8BE4-11cf-B84B-0020AFBBCCFA"';
			this.str += ' width="'+this.contentObj.width+'" height="'+this.contentObj.height+'">';
			this.str += '<param name="src" value="'+this.contentObj.url+'" />';
			this.str += '<param name="controls" value="ImageWindow" />';
			this.str += '<param name="autostart" value="true" />';
			this.str += '<embed src="'+this.contentObj.url+'" controls="ImageWindow" autostart="true" width="'+this.contentObj.width+'" height="'+this.contentObj.height+'"></embed>';
			this.str += '<object/>';

		}

		return obj;
	}

});
multiBox.implement(new Options);
multiBox.implement(new Events);

