/**
 * Project: DEUTSCHLAND 24/30
 * Customer: INSM
 *
 * Javascripts for all pages
 *
 * @author Andreas Prockl <ap@okapi.de>
 * @version 1.0
 *
 */


/*
 * Full-Browser Window Background-Image
 * Pages: Alle
 */

var Background = new Class({
	options: { // HTML-Attribute des img-Tags
		container:		"fullsize-img", // (#fullsize-img)
		id:           "background",
		src:          "",
		alt:          "",
		style: { // CSS
		  "width":    1200,
			"height":   800,
			"position": "fixed"
		}
	},

	element: null, // speichert das img-Tag

	ratio: 1, // ursprüngliches seitenverhältnis des bildes festhalten

  initialize: function(options) {
		this.options = $merge(this.options, options);

		// Image-Tag erstellen
		this.element = new Asset.image(this.options.src, {
		  id: this.options.id,
			onload: function() { this.element.fade("in"); }.bind(this)
		}).setStyles(this.options.style).fade("hide").injectInside( $("fullsize-img") );
    this.ratio = this.options.style.width / this.options.style.height;

		// resizen aktivieren
    window.addEvent('resize', this.resizeBackground.bind(this));
    this.resizeBackground();

    // IE-fix für position:fixed
    if (Browser.Engine.name == "trident" && Browser.Engine.version < 5) {
      window.addEvent("resize", this.fixPosition.bind(this));
      window.addEvent("scroll", this.fixPosition.bind(this));
      this.fixPosition();
    }
	},

	resizeBackground: function() { // Hintergrundbild resizen, dabei Seitenverhältnis beibehalten
    if (window.getWidth() / window.getHeight() > this.ratio) { // breite beibehalten
      this.element.setStyle("width", window.getWidth()).setStyle("height", window.getWidth() / this.ratio);
    } else { // höhe beibehalten
      this.element.setStyle("width", window.getHeight() * this.ratio).setStyle("height", window.getHeight());
    }
  },

	fixPosition: function() { // position: fixed im IE6 simulieren
    this.element.setStyles({
      "position":  "absolute",
      "top":       (window.getScroll().y + window.getSize().y - this.element.getSize().y)
    });
  }
});


/*
 * Comments Toggler
 * Pages: Homepage, Blog-Übersicht
 */
 
 
var ToggleComments = new Class({
	Implements: [Chain, Options],
	
	options: {
		buttons: {
			opencomments:			"btn-open-comments",		// open-Link (a.btn-open-comments)
			closecomments:		"btn-close-comments",		// close-Link (a.btn-close-comments)
			writecomments:		"btn-write-comment"			// open-Link (a.btn-write-comment)
		},
		boxes: {
			cmtbody:					"body-comments",				// Container, der auf-/zugeklappt wird (div.body-comments)
			cmtcloselink:			"close-comments",				// Container, der sichtbar wird wenn die comments aufgeklappt sind (span.close-comments)
			cmtwrite:					"write-comment",				// Container, der verschwindet wenn auf den Write-Btn geklickt wird (div.write-comment)
			cmtcreate:				"create-comment"				// Container, der auf-/zugeklappt wird (div.create-comment)
		},
		delays: {
			afterSlideOut:		400,
			beforeSlideIn:		200
		}
	},
	
	elements: {
		buttons: {
			opencomments:			null,
			closecomments:		null,
			writecomments:		null
		},
		boxes: {
			cmtbody:					null,
			cmtcloselink:			null,
			cmtwrite:					null,
			cmtcreate:				null
		}
	},

	target: null,



	initialize: function(options) {
		this.setOptions(options);
		
		this.elements.buttons.opencomments	= $$("." + this.options.buttons.opencomments);
		this.elements.buttons.closecomments	= $$("." + this.options.buttons.closecomments);
		this.elements.buttons.writecomments	= $$("." + this.options.buttons.writecomments);
		
		this.elements.boxes.cmtbody					= $$("." + this.options.boxes.cmtbody);
		this.elements.boxes.cmtcloselink		= $$("." + this.options.boxes.cmtcloselink);
		this.elements.boxes.cmtwrite				= $$("." + this.options.boxes.cmtwrite);
		this.elements.boxes.cmtcreate				= $$("." + this.options.boxes.cmtcreate);
		
		
		
		// Den Buttons Events zuweisen:
		
		this.elements.buttons.opencomments.addEvent("click", this.show.bind(this));
		this.elements.buttons.closecomments.addEvent("click", this.hide.bind(this));
	/*	this.elements.buttons.writecomments.addEvent("click", this.togglewrite.bind(this));	*/
		
		
	
		// Startzustand herstellen
		if ( $('show-comments') )
		{
			this.elements.boxes.cmtbody.setStyle("display", "block");
			this.elements.boxes.cmtbody.slide("in");
		}
		else
		{
			this.elements.boxes.cmtbody.setStyle("display", "none");

			this.elements.boxes.cmtbody.slide("out");
			/* this.elements.boxes.cmtcreate.hide(); */
		}
	},


	show: function() {
		this.elements.boxes.cmtcloselink.setStyle("visibility", "visible");
		
		this.elements.boxes.cmtbody.setStyle("display", "block").slide("in");
		this.callChain();
  },

	hide: function() {
		this.elements.boxes.cmtbody.slide("out");
	/*	this.elements.boxes.cmtwrite.setStyle("display", "block");	*/
	/*	this.elements.boxes.cmtcreate.hide();	*/
		this.elements.boxes.cmtcloselink.setStyle("visibility", "hidden");
		this.callChain.delay(this.options.delays.afterSlideOut, this);
		
		/* IE 6 & 7 Bug-Fix */
		var fixIsNeeded = function() {
			return ((Browser.Engine.name == "trident" && Browser.Engine.version == 4) ||
			(Browser.Engine.name == "trident" && Browser.Engine.version == 5));
		};
		var target = $$(".body-comments")[0];
		
		if (fixIsNeeded())
		{
			target.setStyle("display", target.getStyle("display") == "none" ? "inline" : "none");
		}
	},
	
	togglewrite: function() {
		var cmtbody						= this.elements.boxes.cmtbody;
		var parent						= cmtbody.getParent("div");
		var parent_size				= parent[0].getSize();
		var parent_height			= parent_size.y;
		/*
		var cmtwrite					= this.elements.boxes.cmtcreate[0];
		var cmtwrite_size			= cmtwrite.getSize();
		var cmtwrite_height		= cmtwrite_size.y;
		
		console.log(cmtbody);
		console.log(parent);
		console.log(parent_height);
		console.log(parent_newheight);
		*/
		var parent_newheight	= parent_height + 130;
		parent.setStyle("height", parent_newheight);
		
		this.elements.boxes.cmtwrite.hide();
		this.elements.boxes.cmtcreate.show();
  }
});
 
 