// (c) 2008 mediaunit.de
/**
 * SWF content replacement and fixes for layout issues in IE.
 *
 * @author tc
 * @since 2008-05-01
 */
/*
 * Simulate namespaces.
 */
if (typeof es == "undefined") 
    es = new Object();
if (typeof es.fhecor == "undefined") 
    es.fhecor = new Object();

es.fhecor.Header = {
    PLAYER_VERSION: "9.0.28",
    SWF_SRC: "layout/movies/header.swf",
    XPRESS_SRC: "layout/movies/expressinstall.swf",
	ASSETS_SRC: "layout/movies/assets.swf",
	SOUND_DIR: "layout/sound/",
    WIDTH: "100%",
    HEIGHT: "381px",
	BG_COLOR: "#6686ad"
};

es.fhecor.Layout = Class.create({
	
   noFlash: window.location.search.toQueryParams().noflash || document.cookie.indexOf("noflash=true") > -1,

   initialize: function(){
			
		if (!this.noFlash) {
			this.replaceHeader();
		} else {
			if (document.cookie.indexOf("noflash=true") < 0)
				document.cookie += "noflash=true; path=/";
			Event.observe(document, 'dom:loaded', this.layoutGallery.bindAsEventListener(this));
		} 
	
		if (Prototype.Browser.IE)
			Event.observe(document, 'dom:loaded', this.fixHorizontalRulers.bindAsEventListener(this));
			
		if (Prototype.Browser.IE && (typeof window.XMLHttpRequest == "undefined")) {
			Event.observe(document, 'dom:loaded', this.fixMinWidth.bindAsEventListener(this));
			Event.observe(window, 'resize', this.fixMinWidth.bindAsEventListener(this));
			Event.observe(document, 'dom:loaded', this.layoutFooter.bindAsEventListener(this));
			Event.observe(window, 'resize', this.layoutFooter.bindAsEventListener(this));
			Event.observe(window, 'scroll', this.layoutFooter.bindAsEventListener(this));
		}
		
		Event.observe(document, 'dom:loaded', this.compactText.bindAsEventListener(this));
    },
    
    replaceHeader: function(){
		
		var Header = es.fhecor.Header;
		if (typeof swfobject != "undefined") {
			
			swfobject.embedSWF( Header.SWF_SRC, 
								"header", 
								Header.WIDTH, 
								Header.HEIGHT, 
								Header.PLAYER_VERSION, 
								Header.XPRESS_SRC,
								{assetsUrl: Header.ASSETS_SRC, soundDir: Header.SOUND_DIR},
								{bgcolor: Header.BG_COLOR, menu: 'false'},
								{id: "header"}
			);
		}
    },
	
	fixHorizontalRulers: function() {
		$$('hr').each(function(hr) {
			hr.wrap('div', {'class': "hr"});
		});
	},
	
	compactText: function() {
		$$('.expandable').each( function(expandable) {
			var headline;
			var firstDescendant = expandable.firstDescendant();
			if (firstDescendant.nodeName.toLowerCase() == "h3") {
				headline = firstDescendant.addClassName("resource");
			} else {
				var label = expandable.id.underscore().split("_").join(" ").toUpperCase();
				headline = new Element("h3").addClassName("resource").update(label);
			}
			headline.update(new Element('a', {href: "#"}).update(headline.innerHTML));
			headline.down('a').observe('click', this.toggleMoreHandler.bindAsEventListener(this, expandable));
			expandable.insert({before: headline});
        	expandable.hide();
		}, this);
	},
	
	toggleMoreHandler: function(event, expandable) {
		expandable.toggle();
		event.element().blur();
        event.stop();
	},
	
	layoutGallery: function() {
		var gallery = $('gallery');
		$('header').setStyle({
			background: "url(" + gallery.down('img').readAttribute('src') + ") top center repeat-x"
		});
		$$('#gallery > a').invoke('hide');
	},
	
	fixMinWidth: function() {
		$('header').setStyle({
			width: (document.viewport.getWidth() > 850) ? "100%" : "870px"
		});
	},
	
	layoutFooter: function(){
		var dimensions = document.viewport.getDimensions();
		var offset = document.viewport.getScrollOffsets().top;
		var footer = $('footer');
		footer.absolutize();
		footer.setStyle({
			top: dimensions.height - footer.getHeight() + offset + "px",
			width: dimensions.width + "px"
		});
	}
});

Object.extend(es.fhecor.Layout, {
	
	instance: new es.fhecor.Layout(),
	
	update: function() {
		es.fhecor.Layout.instance.fixHorizontalRulers();
		es.fhecor.Layout.instance.compactText();
	}
});
