(function($) { 
	$.fn.iframeoverlay = function(options) {
		$.fn.iframeoverlay.defaults = {
			overlay_id: 'overlay_box',
			overlay_content_id: 'overlay_box_content',
			bg_id: 'lightbox_bg',
			animationSpeed: 'normal', /* fast/slow/normal */
			opacity: 0.80, /* Value between 0 and 1 -  */
			close: 'close &nbsp;x',
			empty_file: '',
			auto_file: '',
			allowClose: true,
			standalone : false,
			centerBoxVertical : false,
			centerBoxHorizontal : false,
			layout : ""
		};
		
					
		// build main options before element iteration
		var opts = $.extend({}, $.fn.iframeoverlay.defaults, options);
		
		var bgEl;
		var boxEl;
		var i_width;
		var i_height;
		reDirect = false;  /* true if url is 50yop.com or equivalent */	
		reDirectLang =	''; /* if user switches language in flash - NOT IMPLEMENTED IN FLASH */	
		
		$scrollPos = _getScroll();
		
		$(window).resize(function(){ _resizeOverlay(); });
		$(window).scroll(function(){ $scrollPos = _getScroll(); _resizeOverlay(); });
		if (!opts.standalone) {
			$(this).each(function() {
				//click event open buttons
				$(this).bind('click',function(){
					url = $(this).attr('href');
					openOverlay(url);
					return false;
				});
			});
		}
		 
		/* URL is 50yop.com or equivalent */
		if(opts.allowClose == false)
			reDirect = true;
		
		var openOverlay = function(url) {
			hideElemMainPage();
			
			if($('#'+opts.overlay_id).size() == 0) {
				_buildOverlay(url); // If the overlay is not there, inject it!
			}
			
			
			
			bgEl = $('#'+opts.bg_id);
			boxEl = $('#'+opts.overlay_id);
			
			i_width = ( parseFloat(grab_param('width',url)) ) ? grab_param('width',url) : "425";
			i_height = ( parseFloat(grab_param('height',url)) ) ? grab_param('height',url) : "344";
			
			_resizeOverlay();
			
			bgEl.css('opacity',0).show().fadeTo(opts.animationSpeed,opts.opacity, function(){
				boxEl.fadeIn(opts.animationSpeed,function(){
					markup = '<iframe src ="'+url+'" width="'+i_width+'" height="'+i_height+'" frameborder="no" allowtransparency="true"></iframe>';
					
					boxEl.animate({
						'width': i_width,
						'height': i_height	
					},opts.animationSpeed,function(){
						_resizeOverlay();
						boxEl.find('#'+opts.overlay_content_id).html(markup);
						
						boxEl.find('iframe').load(function(e){
							if (opts.empty_file == $(this).attr('src')) closeOverlayAnim();
						});
							
					});
					
				});	
			});

			
		};
		
		var closeOverlay = function() {
			if (opts.empty_file != '') boxEl.find('iframe').attr('src',opts.empty_file);
			else closeOverlayAnim();
		};	
		
		var closeOverlayAnim = function() {
			bgEl.hide();
			boxEl.hide();
			boxEl.attr('style', 'display:none');
			showElemMainPage();
			_removeOverlay();
			
			i_width = 0;
			i_height = 0;
		};	
		
		var _buildOverlay = function(url) {
			var markup = '<div id="'+opts.overlay_id+'"'
			if (opts.layout != "") 	markup += ' class="'+opts.layout+'" ';
			markup += '>';
			var cssClass = grab_param('cssClass',url);
			if (cssClass != 'dark' && cssClass != 'light') {
				cssClass = '';
			}
			if (opts.close == '') {
				closeStyle='display:none;';
			}else {
				closeStyle='';
			}
			markup += '<a style="'+closeStyle+'" class="close '+cssClass+'" id="close_iframe_overlay">'+opts.close+'</a>';
			markup += '<a style="'+closeStyle+'" class="close '+cssClass+'" id="close_iframe_overlay2">'+opts.close+'</a>';
			markup += '<div id="'+opts.overlay_content_id+'"></div>';
			markup += '</div>';
			
			$('body').append(markup);
			if($('#'+opts.bg_id).size() == 0) $('body').append('<div id="'+opts.bg_id+'"></div>');
			
			
			if (opts.allowClose) {
				$('#'+opts.overlay_id).find('a.close').bind('click',function(){					
					closeOverlay();
					return false;
				});
			}
			$(window).unload( function () {
				closeOverlay();
			});
			
			$('#close_iframe_overlay').bind('click',function(){
				closeOverlay();
				return false;
			});
		};
		
		var _removeOverlay = function() {
			/* don't try this at home! */
			window.setTimeout("$('#"+opts.overlay_id+",#"+opts.bg_id+"').remove()",1000);
		};
		
		var _resizeOverlay = function() {
			if($.browser.opera) {
				windowHeight = window.innerHeight;
				windowWidth = window.innerWidth;
			}else{
				windowHeight = $(window).height();
				windowWidth = $(window).width();
			};
			
			$('#'+opts.bg_id).css({
				'height':(windowHeight+$scrollPos['scrollTop']),
				'width':(windowWidth)
			});
			
			
			if($('#'+opts.overlay_id).size() != 0 && i_width > 0 && i_height > 0) {
				var projectedTop = 0;
				if (opts.centerBoxVertical) {
					projectedTop = (windowHeight/2) + $scrollPos['scrollTop'] - (i_height/2);
					if(projectedTop < 0) projectedTop = 20;
				}
				
				var projectedLeft = 0;
				if (opts.centerBoxHorizontal) projectedLeft =  (windowWidth/2) + $scrollPos['scrollLeft'] - (i_width/2);
				
				boxEl.css({
						'top': projectedTop,
						'left': projectedLeft
				});
			}
		};
		
		
		function grab_param(name,url){
		  name = name.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]");
		  var regexS = "[\\?&]"+name+"=([^&#]*)";
		  var regex = new RegExp( regexS );
		  var results = regex.exec( url );
		  if( results == null )
			return "";
		  else
			return results[1];
		}
		
		function _getScroll(){
			if (self.pageYOffset) {
				scrollTop = self.pageYOffset;
				scrollLeft = self.pageXOffset;
			} else if (document.documentElement && document.documentElement.scrollTop) { // Explorer 6 Strict
				scrollTop = document.documentElement.scrollTop;
				scrollLeft = document.documentElement.scrollLeft;
			} else if (document.body) {// all other Explorers
				scrollTop = document.body.scrollTop;
				scrollLeft = document.body.scrollLeft;	
			}
			
			return {scrollTop:scrollTop,scrollLeft:scrollLeft};
		}
		
		function hideElemMainPage() {
			// To fix the bug with IE select boxes
			if($.browser.msie && $.browser.version == 6){
				$('select').css('visibility','hidden');
			};
					
			// Hide the flash
			$('object,embed').css('visibility','hidden');
		}
		
		function showElemMainPage() {
			// To fix the bug with IE select boxes
			if($.browser.msie && $.browser.version == 6){
				$('select').css('visibility','visible');
			};
					
			// Hide the flash
			$('object,embed').css('visibility','visible');
		}
		
		
		if (opts.auto_file != "") openOverlay(opts.auto_file);	
	};
	
	
})(jQuery);

function closeIframeoverlay() {		
	if(reDirect == true) {
		reDirectLang = arguments[0];
		//alert(reDirectLang);
		if(reDirectLang == 'de')
			window.location = "http://www.bayerscheringpharma.de";
		else
			window.location = "http://www.bayerscheringpharma.de/en/index.php";		
	}
	else 		
		$('#close_iframe_overlay').trigger('click');		
}

