/*
 * layerOption Objects
 */
var layerOptions = Array();

layerOptions['default'] = {
		position:	'default',
		idprefix:	'lightbox-layer-',
		curtain:	true,
		iframe:		true,
		cssClass:	'lightbox-layer',
		src:		null,
		callbacks: { 	initialize:		false,
						open: 			false,
						close: 			false,
						afterOpen: 		false,
						beforeOpen: 	false,
						afterClose: 	false,
						beforeClose: 	false
					}
}

layerOptions['external'] = {
		position:	'default',
		idprefix:	'lightbox-layer-',
		curtain:	true,
		iframe:		true,
		forcereload:true,
		src:		null,
		cssClass:	null,
		callbacks: {
					// callback examples - delete if not needed
					// initialize: function() { this.debug = false; },
					// beforeClose: function() { return confirm("Close Layer?"); },
					// beforeOpen: function() { return confirm("Open Layer?!?!?"); }
					}
}

layerOptions['internalimage'] = {
		position:	'default',
		idprefix:	'lightbox-layer-',
		curtain:	true,
		iframe:		false,
		forcereload:true,
		src:		null,
		cssClass:	null,
		callbacks: {
						beforeOpen: function() { 
							this.currentScrollOffset = $$("body")[0].cumulativeScrollOffset();
							//build image to insert into layer 
							var imgstr = '<div class=\'level-3\'><div class=\'image clearfix\'><img id=\'magnified-image-' +this.idstring+ '\' src=\''+ $(this.idstring).href +'\' /></div></div>';
							//inject image into layer
							$('layer-content-'+this.idstring).update(imgstr);
							
							$('lightbox-layer-'+this.idstring).setStyle({width: '0px'});
							
							//get image dimensions and resize layer accordingly
							$('magnified-image-'+this.idstring).observe('load', function(e) {
								var imwdth = $('magnified-image-' + this.idstring).getWidth();
								var lftpd = parseInt($('lightbox-layer-'+this.idstring).down('.layer-content').getStyle('padding-left'));
								var rgtpd = parseInt($('lightbox-layer-'+this.idstring).down('.layer-content').getStyle('padding-right'));
								var boxwidth =  imwdth + lftpd + rgtpd;
								$('lightbox-layer-'+this.idstring).setStyle({
									width: boxwidth + 'px'
								});
							}.bind(this));
							return true;
						},
						afterClose: function() {
							window.scrollTo(this.currentScrollOffset.left, this.currentScrollOffset.top);
							return true;
						}
					}
}

layerOptions['fullcontent'] = {
		position:	'default',
		idprefix:	'lightbox-layer-',
		curtain:	true,
		iframe:		true,
		forcereload:true,
		src:		null,
		cssClass:	'lightbox-layer publayer-fullcontent',
		callbacks: {
			            rechunkIframe: function (layerframe) {
			                $(layerframe.getElementsByTagName('html')[0]).addClassName('iframe-fullcontent');
			            }
			        }
}

layerOptions['fullcontentfooter'] = {
		position:	'default',
		idprefix:	'lightbox-layer-',
		curtain:	true,
		iframe:		true,
		forcereload:true,
		src:		null,
		cssClass:	'lightbox-layer publayer-fullcontentfooter',
		callbacks: {
			            rechunkIframe: function (layerframe) {
			                $(layerframe.getElementsByTagName('html')[0]).addClassName('iframe-fullcontentfooter');
			            }
			        }
}

layerOptions['toolbar'] = {
		position: 		'toolbar',
		idprefix:		'toolbar-layer-',
		curtain:		false,
		iframe:			true,
		cssClass:		'toolbar-layer',
		src:			null,
		callbacks:  	{
							rechunkIframe: function(iframedoc) {
								var contZone = $(iframedoc.getElementById('content-zone'));
								contZone.style.backgroundColor = '#e7e8eb';
								contZone.down('.right-content').style.display = 'none';
							},
							afterOpen: function() {
								//if no width is set via CSS.. set max width
								if($(this.layerIdstring).style.width == "") {
									var newWidth = $('search-zone').cumulativeOffset().left 
													+ $('search-zone').getDimensions().width 
													- $(this.layerIdstring).up().up().cumulativeOffset().left;
									$(this.layerIdstring).up().up().setStyle({'width': newWidth+"px"});
								}
							}
						}
}

layerOptions['logo'] = {
		position: 		'default',
		idprefix:		'layer-',
		curtain:		true,
		iframe:			false,
		cssClass:		'logolayer',
		src:			'../logolayer.html',
		callbacks:  	{
			initialize: function() {
				new Insertion.Before($('layer-content-logolayer').up(),'<div class="blankline">&nbsp;</div>');
				
				// example for setting src dynamically - relative to the page location 
				// this.options.src = pageVars.root + PAGE_LANG + somevar + ".html";
			},
			afterOpen: function() {
				$$("#layer-content-logolayer a").filter(function(link) {
					return !$(link).hasClassName('c');
				}).each(function(link) {
					link.observe("mouseover", function() {
						$(link).up("li").addClassName("hover");
					});
					link.observe("mouseout", function() {
						$(link).up("li").removeClassName("hover");
					});
				});
				
				//Hightlight Active Language
				$$("#layer-logolayer li.active a").filter(function(link) {
					return !$(link).hasClassName('c');
				}).each(function(link) {
					link.addClassName("active");
				});
			}
		}
}

layerOptions['share'] = {
		position:		'default',
		idprefix: 		'tools-layer-',
		curtain:		false,
		iframe:			true,
		forcereload:	false,
		cssClass:		'lightbox-layer',
		//src:			'../../apps/share/tools-share.php',
		callbacks: {
				initialize: function() { 
					$('tools-layer-share').setStyle({ width:'276px' }); 
					this.isFooter = false;
					
					if(this.trigger != $('footer-tools-share') ) {
						$('footer-tools-share').href = 'javascript:void(0);';
						$('footer-tools-share').observe("click", function(e) {this.toggle(e);  Event.stop(e); }.bindAsEventListener(this) );
					}
				},
				show: function(e) {
					var _parent = {};
					if(e) {
						_parent 	= Event.element(e).up('div'); //Event.findElement(e,'div');
					} else if (this.listener.event) {
						_parent 	= Event.element(this.listener.event).up('div');
					}
			    	if( _parent.id == 'pagetools-zone') {
			    		if(this.debug) this.debugOut("top sharelayer");
			    		var pos 		= $('pagetools-zone').cumulativeOffset();
			    		this.isFooter	= false;
			    		$('tools-layer-share').setStyle({ top: (pos.top + $('pagetools-zone').getHeight() + 5) +'px', left: (pos.left -1)+'px' });
			    	} else {
			    		if(this.debug) this.debugOut("bottom sharelayer");
			    		var footerpos 	= $('footer-pagetools-zone').cumulativeOffset();
			    		var iconpos		= $('footer-tools-share').cumulativeOffset();
			    		this.isFooter	= true;
			    		$('tools-layer-share').setStyle({ top: (footerpos.top + 10 ) +'px', left: (iconpos.left - $('tools-layer-share').getWidth() - 6 )+'px' });
			    	}
					
			        //$("tools-layer-share").addClassName("active-layer");
			        this.trigger.addClassName("clicked"); // avoids hover effect (only for the first time)
			        this.trigger.observe("mouseout",
			            function(e) {
			                this.trigger.removeClassName("clicked");
			                this.trigger.stopObserving("mouseout");
			            }.bindAsEventListener(this)
			        );
			        
			        this.node.setStyle({'display':'block'});
			        
			        if(this.isFooter) {
			        	var footerpos 	= $('footer-pagetools-zone').cumulativeOffset();
			        	var iconpos		= $('footer-tools-share').cumulativeOffset();
			        	$('tools-layer-share').setStyle({ 	top:  ( footerpos.top - $('tools-layer-share').getHeight() + 11 ) +'px',
			        										left: ( iconpos.left - $('tools-layer-share').getWidth() - 4 )+'px' });
			        	if(Info.browser.isIEpre7) { this.iframeLining.refresh(); }
			        }
			    },
			    rechunkIframe: function(iframedoc) {
			    	//hide EVERYTHING in bodytag except the social-bookmarking div (now done in custom.css)
			    	$(iframedoc.getElementsByTagName('html')[0]).addClassName('iframe-share');
			    },
			    afterRechunk: function() {
			    	if(this.isFooter) {
			        	var footerpos 	= $('footer-pagetools-zone').cumulativeOffset();
			        	var iconpos		= $('footer-tools-share').cumulativeOffset();
			        	$('tools-layer-share').setStyle({ 	top:  ( footerpos.top - $('tools-layer-share').getHeight() + 11 ) +'px',
			        										left: ( iconpos.left - $('tools-layer-share').getWidth() - 4 )+'px' });
			        	if(Info.browser.isIEpre7) { this.iframeLining.refresh(); }
			        }
			    }
		}		
}

/********************************************************************/
/* START: Fix for Footer-PageTools Fontsize                         
 * Important: To take effect this .js has to be inlcuded
 *            AFTER VI's script.js and/or module.fontsize.js
*/

function init_fontsize() {
	if ($('pagetools-fontsize') || $('footer-tools-fontsize-decrease') ) {
		var font = new FontSize;
		var title = new Cookie('text-size').read(font.getDefaultStyleSheet());
		font.setActiveStyleSheet(title);
	}
}

FontSize.prototype.setActiveStyleSheetDefault = FontSize.prototype.setActiveStyleSheet;
FontSize.prototype.initializeDefault = FontSize.prototype.initialize;

FontSize.prototype.initialize = function() {
	//this.initializeDefault();
	if ($('pagetools-zone')) {
		$("tools-fontsize-decrease").observe("click", function() {
			this.fontSizeDown();
		}.bindAsEventListener(this));
		$("tools-fontsize-enlarge").observe("click", function() {
			this.fontSizeUp();
		}.bindAsEventListener(this));
	}
	
	if($("footer-pagetools-zone")) {
		$("footer-tools-fontsize-decrease").observe("click", function() {this.fontSizeDown();}.bindAsEventListener(this));
		$("footer-tools-fontsize-enlarge").observe("click", function() {this.fontSizeUp();}.bindAsEventListener(this));
	}
};

FontSize.prototype.setActiveStyleSheet = function(title) {
	//this.setActiveStyleSheetDefault(title);
	
	var i, a;
	for(i = 0; (a = document.getElementsByTagName("link")[i]); i++) {
		if (/\bstylesheet\b/.test(a.rel) && a.title) {
			a.disabled = true; // always set true first for IE7 
			if (a.title == title) {
				a.disabled = false;
			}
		}
	}

	if($("pagetools-zone")) {
		switch(title) {
			case 'A+':
				$('tools-fontsize-enlarge').removeClassName('deactivated');
				$('tools-fontsize-decrease').removeClassName('deactivated');
				break;
			case 'A++':
				$('tools-fontsize-enlarge').addClassName('deactivated');
				break;
			default:
				$('tools-fontsize-decrease').addClassName('deactivated');
				break;
		}
	}
	
	if($("footer-pagetools-zone")) {
		switch(title) {
			case 'A+':
				$('footer-tools-fontsize-enlarge').removeClassName('deactivated');
				$('footer-tools-fontsize-decrease').removeClassName('deactivated');
				break;
			case 'A++':
				$('footer-tools-fontsize-enlarge').addClassName('deactivated');
				break;
			default:
				$('footer-tools-fontsize-decrease').addClassName('deactivated');
				break;
		}
	}
	
	new Cookie('text-size').write(title, 365 * 24 * 3600);
};
/* END: Fix for Footer-PageTools Fontsize                           */
/********************************************************************/
/* Overwrite Magnifier funtion */

var Magnifier = Class.create();

Magnifier.getInstance = function() {
	if (!Magnifier.instance) {
		Magnifier.instance = new Magnifier();
	}
	return Magnifier.instance;
}

Magnifier.prototype = {
	initialize: function() {

		$A(zone.content.getElementsByTagName("a")).findAll( function(link) {
			return $(link).hasClassName("magnifier");
		}).each( function(magnifier) {
			magnifier.observe("click", function(e) {Magnifier.getInstance().open(e); }.bindAsEventListener($(magnifier)));
		});
	},

	open: function(e) {
		var trigger = Event.element(e);
		var rndStr = trigger._prototypeEventID[0];
		var manualTriggerId = "id_" + rndStr;
		trigger.id = manualTriggerId;
		
		if(typeof(GLOBAL_LAYER_CONTROLLER[manualTriggerId]) == 'undefined'){
			if(!layerOptions['internalimage']) alert("LayerOptions for " + options + " are missing!");	
			GLOBAL_LAYER_CONTROLLER[manualTriggerId] = new pubLayer(null, trigger, manualTriggerId, layerOptions['internalimage'], 'internalimage');
			GLOBAL_LAYER_CONTROLLER[manualTriggerId].toggle();
		}
		 	

		Event.stop(e);
	},

	closeCurrent: function(reopen) {
		document.body.removeChild(this.currentMiWrapper);
		this.currentMiWrapper = null;
	}
}

function setOverColor(id)
{
	$('icon-'+id).setStyle({backgroundColor: '#88cc88'});
	$('link-'+id).setStyle({backgroundColor: '#88cc88'});
}
function setOutColor(id)
{
	$('icon-'+id).setStyle({backgroundColor: '#009933'});
	$('link-'+id).setStyle({backgroundColor: '#009933'});
}
