/*
 * 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: {}
}

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';
                                if(contZone.down('.right-content'))contZone.down('.right-content').style.display = 'none';
                                if($(iframedoc.getElementById('header-zone')))$(iframedoc.getElementById('header-zone')).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"});
                                }
                            }
                        }
}

/* Special case, since in /cc/corp_contact/ has content NOT in content-zone */
layerOptions['toolbar-contact'] = {
        position:       'toolbar',
        idprefix:       'toolbar-layer-',
        curtain:        false,
        iframe:         true, 
        cssClass:       'toolbar-layer',
        src:            null,
        callbacks:      {
                            initialize: function() {
                                /* the following 4 functions are needed to show/hide an iframe onunload of the page */
                                this.showIFrame =  function () {
                                    this.removePreloader();
                                }.bind(this);
                                this.hideIFrame = function () {
                                    this.addPreloader();
                                }.bind(this);
                                
                                this.addPreloader = function () {
                                    if (!$(this.layerIdstring).down("div.lightbox-preloader")) {
                                        new Insertion.Before($(this.iframeidstring), "<div class='lightbox-preloader'>&nbsp;</div>")
                                    }
                                    $(this.iframeidstring).style.visibility = "hidden";
                                }.bind(this);
                                this.removePreloader = function () {
                                    $$("div.lightbox-preloader").invoke('remove');
									
                                    $(this.iframeidstring).style.visibility = "visible";
                                }
                            },
                            rechunkIframe: function (layerframe) {
                                $(layerframe.getElementsByTagName('html')[0]).addClassName('iframe-contact');
                                $(layerframe.getElementsByTagName('html')[0]).removeClassName('iframe');
                            },
                            afterRechunk: function(layerframe, iframeroot) {            
                                var h, ch = 0;
                                if (layerframe.getElementById('toolbar-layer-contact')) {
                                    ch = layerframe.getElementById('toolbar-layer-contact').offsetHeight + 0;
                                }
                                this.iframeheight = ch;
                                iframeroot.height = this.iframeheight;
                                
                                if(this.options.curtain) {
                                    this.correctCurtain();
                                }
                            },
                            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"});
                                }
                            }
                        }
}

/* Special case, since siteIDlayer has content NOT in content-zone */
layerOptions['toolbar-siteid'] = {
        position:       'toolbar',
        idprefix:       'toolbar-layer-',
        curtain:        false,
        iframe:         true, 
        cssClass:       'toolbar-layer',
        src:            null,
        callbacks:      {
                            rechunkIframe: function (layerframe) {
								layerframe.getElementsByTagName('html')[0].className = 'iframe-siteid';
                            },
                            afterRechunk: function(layerframe, iframeroot) {
                                var h, ch = 0;
                                if (layerframe.getElementById('site-id-layer')) {
                                    ch = layerframe.getElementById('site-id-layer').offsetHeight + 0;
                                }
                                this.iframeheight = ch;
                                iframeroot.height = this.iframeheight;
                                
                                if(this.options.curtain) {
                                    this.correctCurtain();
                                }
                            },
                            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                           */
/********************************************************************/
function showSocialIFrame() {
    var a = GLOBAL_LAYER_CONTROLLER['social'];
    //a.showIFrame();
}
function hideSocialIFrame() {
    var a = GLOBAL_LAYER_CONTROLLER['social'];
    //a.hideIFrame();
};


/* 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);
        Event.stop(e);
        
        var manualTriggerId = trigger.identify();
        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;
    }
}
