/**
 * @author Marius-Eugen Gerdan
 * requires Mootools 1.2
 */
var overlayBoxPath = '/de/anfrage/overlaybox/'; 
var ov_Settings = Object({
	'bg_transparency':0.5,
	'window_margin':15,
	'bg_fadein_time':100,
	'window_fadein_time':450,
	'bg_fadeout_time': 100,
	'window_fadeout_time': 300
});

window.addEvent('domready', function(){
	$$('.overlaybox').each(function(overlayLink){
		overlayLink.addEvent('click', function(){ov_overlayBox(overlayLink);return false;});
	});
	var headID = document.getElementsByTagName("head")[0];         
	var cssNode = document.createElement('link');
	cssNode.type = 'text/css';
	cssNode.rel = 'stylesheet';
	cssNode.href = overlayBoxPath + 'css/overlaybox.css';
	cssNode.media = 'screen';
	headID.appendChild(cssNode);
	//IE SUCKS
	if (Browser.Engine.trident){
		ov_Settings.bg_fadein_time = 0;
		ov_Settings.window_fadein_time = 0;
		ov_Settings.window_fadeout_time = 0;
		ov_Settings.bg_fadeout_time = 0;
		if(Browser.Engine.version==4){//IE6 css
			var cssNode = document.createElement('link');
			cssNode.type = 'text/css';
			cssNode.rel = 'stylesheet';
			cssNode.href = overlayBoxPath + 'css/overlaybox_ie6.css';
			cssNode.media = 'screen';
			headID.appendChild(cssNode);
		}
	}
});

function ov_overlayBox(overlayLink){
	var properties = JSON.decode(overlayLink.get('rel'));
	var bg_overlay = new Element('div', {
		'id':'bg_overlay',
    'styles': {
        'height': $(document.body).getScrollSize().y,
        'opacity':0
    }
  });
  var topOffset = 0; 
	$(window).addEvent('resize', function(){ov_onScroll();});
	if(Browser.Engine.trident && Browser.Engine.version==4){//IE braucht wieder mehr ;-)
		$(window).addEvent('scroll', function(){ov_onScroll();});
		bg_overlay.setStyle('top',window.getScrollTop());
		topOffset = window.getScrollTop();
	}

  /* Sprung zum Anfang des Fensters, damit das Formular komplett angezeigt wird */
  var myFx = new Fx.Scroll(window).set(0,0);

  bg_overlay.inject($(document.body));
	
	var overlay_window = new Element('div', {
		'id':'overlay_window',
		'styles': {'opacity':0,'width':properties.size.x +ov_Settings.window_margin*2}
  });
  overlay_window.inject($(document.body));
  
  var overlay_header = new Element('div', {
		'id':'overlay_header',
    'styles': {'background-image':'url("'+overlayBoxPath+'img/overlaybox_borders.png")'}
  });
  var overlay_footer = new Element('div', {
		'id':'overlay_footer',
    'styles': {'background-image':'url("'+overlayBoxPath+'img/overlaybox_borders.png")'}
  });
  var overlay_middle = new Element('div', {
		'id':'overlay_middle',
    'styles': {'background-image':'url("'+overlayBoxPath+'img/overlaybox_bg.png")'}
  });
  var overlay_content = new Element('div', {
		'id':'overlay_content',
    'styles': {
        'width': properties.size.x,
        'height': 0,
        'background-image':'url("'+overlayBoxPath+'/img/ajax-loader.gif")'
    }
  });
  var overlay_title = new Element('h1');
  var overlay_close = new Element('a',{
  	'id':'overlay_close',
  	'styles':{
  		'background-image':'url("'+overlayBoxPath+'/img/close.gif")'
  	},
  	'events':{
  		'click': function(){ov_close();}
  	}
  });
  overlay_window.inject($(document.body));
  overlay_header.inject(overlay_window);
  overlay_middle.inject(overlay_window);
  overlay_footer.inject(overlay_window);
  overlay_content.inject(overlay_middle);
  overlay_title.inject(overlay_header);
  overlay_title.inject(overlay_header);
  overlay_close.inject(overlay_header);
  overlay_title.set('text', overlayLink.get('title'));
  overlay_close.set('text', 'Schliessen');
  $('overlay_window').setStyle('left',parseInt(($(document.body).getSize().x-$('overlay_window').getSize().x)/2));
	$('overlay_window').setStyle('top',parseInt(($(document.body).getSize().y-$('overlay_window').getSize().y)/2)+topOffset);

  var morphObjectBG = new Fx.Morph($('bg_overlay'), {
		duration: ov_Settings.bg_fadein_time,
		transition: 'quad:in:out'
	});
	var morphObjectWindow = new Fx.Morph($('overlay_window'), {
		duration: ov_Settings.window_fadein_time,
		transition: 'quad:in:out'
	});
	var morphObjectContent = new Fx.Morph($('overlay_content'), {
		duration: ov_Settings.window_fadein_time,
		transition: 'quad:in:out'
	});
	var window_top = $('overlay_window').getPosition().y;
	var content_offset = $('overlay_content').getPosition().y -window_top;
	var newPosition = parseInt(($(document.body).getSize().y-(properties.size.y + content_offset + ov_Settings.window_margin))/2+topOffset);
	
	morphObjectBG.start({'opacity': ov_Settings.bg_transparency});
	morphObjectWindow.start({'opacity': 1,'top':newPosition});
	morphObjectContent.start({'height':properties.size.y});
  
	var req = new Request.HTML({
		url:overlayLink.get('href'),
		update: $('overlay_content'), 
		onSuccess: function(html) {
			overlay_content.setStyle('background-image','none');
			call_external();
		},
		evalScripts: true,
		onFailure: function() {
			overlay_content.set('text', 'Seite konnte nicht geladen werden.');
		}
	});
	req.send();	
	
}
function ov_close(){
	$('overlay_close').removeEvents('click');
	$(window).removeEvents('resize');
	
	var window_top = $('overlay_window').getPosition().y;
	var content_offset = $('overlay_content').getPosition().y -window_top;
	var content_height = $('overlay_content').getSize().y;
	var newPosition = window_top + content_offset + parseInt(content_height/2);
	
	var morphObjectBG = new Fx.Morph($('bg_overlay'), {
		duration: ov_Settings.bg_fadeout_time,
		transition: 'quad:in:out',
		onComplete: function(passes_tween_element){
			$('overlay_window').destroy();
			$('bg_overlay').destroy();
		}
	});
	var morphObjectContent = new Fx.Morph($('overlay_content'), {
		duration: ov_Settings.window_fadeout_time,
		transition: 'quad:in:out'
	});
	var morphObjectWindow = new Fx.Morph($('overlay_window'), {
		duration: ov_Settings.window_fadeout_time,
		transition: 'quad:in:out',
		onComplete: function(passes_tween_element){
			morphObjectBG.start({'opacity':0});
		}
	});
	morphObjectContent.start({'height': 0});
	morphObjectWindow.start({'top': newPosition,'opacity':0});
}

function ov_onScroll(){
	if($('bg_overlay')){
		$('bg_overlay').setStyle('height',$(document.body).getSize().y);
		if (Browser.Engine.trident && Browser.Engine.version <=4){
			$('bg_overlay').setStyle('top',window.getScrollTop());
		}
	}
	if($('overlay_window')){
		$('overlay_window').setStyle('left',parseInt(($(document.body).getSize().x-$('overlay_window').getSize().x)/2));
		$('overlay_window').setStyle('top',parseInt(($(document.body).getSize().y-$('overlay_window').getSize().y)/2));
		if (Browser.Engine.trident && Browser.Engine.version <=4){//ätz...
			$('overlay_window').setStyle('top',parseInt(($(document.body).getSize().y-$('overlay_window').getSize().y)/2)+window.getScrollTop());
		}
	}
}