/**
 * Ergänzung zum 'window'-Objekt
 *
 * @authors		Martin Widemann
 * @copyright	Copyright 2008 - Netigo GmbH
 * @version		1.0
 * @modified	2008-10-30
 */
var Window = {

	/**
	 * Öffnet ein neues Fenster
	 *
	 * @param String url URL der zu öffnenden Seite
	 * @param String name Referenzname des Fensters
	 * @param Number width Breite
	 * @param Number height Höhe
	 * @param Boolean scrollbars Scrollleisten
	 * @param Number left X-Position
	 * @param Number top Y-Position
	 * @param String set_focus Fenster fokussieren
	 * @param Boolean resizable Größe änderbar
	 * @param String parameters Weitere Parameter
	 * @param Boolean reference Object zurückgeben
	 *
	 * @return Object
	 */
	open: function(url, name, width, height, scrollbars, left, top, set_focus, resizable, parameters, reference){
		// Bildschirmauflösung auslesen
		var width_screen = screen.availWidth;
		var height_screen = screen.availHeight;
	
		// Größe maximieren
		width = (width == '__MAX__') ? width_screen - 10 : width;
		height = (height == '__MAX__') ? height_screen - 30 : height;

		// Parameter korrigieren
		scrollbars = scrollbars ? 'yes' : 'no';
		resizable = resizable ? 'yes' : 'no';
	
		// Fenster zentrieren
		left = !left ? Math.round((width_screen - width) / 2) : left;
		top = !top ? Math.round((height_screen - height) / 2) : top;
	
		parameters = parameters ? ',' + parameters : '';
	
		// Fenster öffnen
		var win = window.open(
			url,
			name,
			'width=' + width + ',height=' + height + ',resizable=' + resizable + ',scrollbars=' + scrollbars + ',top=' + top + ',left=' + left + parameters
		);

		// Fenster fokussieren
		Window.setFocus(win, set_focus);

		// Referenz zurückgeben
		return (reference ? win : null);
	}, // function

	/**
	 * Behält Fenster im Fokus
	 *
	 * @param Object Fenster-Objekt
	 */
	keepFocus: function(win){
		win.onblur = function(){
			Window.setFocus(win, true);
		} // function
	}, // function

	/**
	 * Zentriert Fenster
	 *
	 * @param Object Fenster-Objekt
	 * @param Boolean Fenster fokussieren
	 */
	center: function(win, set_focus){
		win.moveTo(
			Math.round((screen.availWidth - Window.getWidth(win)) / 2),
			Math.round((screen.availHeight - Window.getHeight(win)) / 2)
		);

		Window.setFocus(win, set_focus);
	}, // function
	
	/**
	 * Ändert die Größe des Fensters
	 *
	 * @param Object Fenster-Objekt
	 * @param Number Breite
	 * @param Number Höhe
	 * @param Boolean Fenster zentrieren
	 * @param Boolean Fenster fokussieren
	 */
	resize: function(win, width, height, center, set_focus){
		win.resizeTo(width, height);

		if(center){
			Window.center(win);
		} // if

		Window.setFocus(win, set_focus);
	}, // function
	
	/**
	 * Fokussiert Fenster
	 *
	 * @param Object Fenster-Objekt
	 * @param Boolean Fenster fokussieren
	 */
	setFocus: function(win, set_focus){
		if(set_focus){
			win.focus();
		} // if
	}, // function
	
	/**
	 * Ermittelt die Breite des Fensters
	 *
	 * @param Object Fenster-Objekt
	 * @return Number
	 */
	getWidth: function(win){
		return (
			win.innerWidth ? win.innerWidth : (
				win.document.documentElement ? win.document.documentElement.clientWidth : (
					win.document.body ? win.document.body.clientWidth : 0
				)
			)
		);
	}, // function

	/**
	 * Ermittelt die Höhe des Fensters
	 *
	 * @param Object Fenster-Objekt
	 * @return Number
	 */
	getHeight: function(win){
		return (
			win.innerHeight ? win.innerHeight : (
				win.document.documentElement ? win.document.documentElement.clientHeight : (
					win.document.body ? win.document.body.clientHeight : 0
				)
			)
		);
	}, // function

	/**
	 * Ermittelt horizontale Scrollposition innerhalb des Fensters
	 *
	 * @param Object Fenster-Objekt
	 * @return Number
	 */
	getScrollX: function(){
		return (
			win.pageXOffset ? win.pageXOffset : (
				win.document.documentElement ? win.document.documentElement.scrollLeft : (
					win.document.body ? win.document.body.scrollLeft : 0
				)
			)
		);
	}, // function

	/**
	 * Ermittelt vertikale Scrollposition innerhalb des Fensters
	 *
	 * @param Object Fenster-Objekt
	 * @return Number
	 */
	getScrollY: function(){
		return (
			win.pageYOffset ? win.pageYOffset : (
				win.document.documentElement ? win.document.documentElement.scrollTop : (
					win.document.body ? win.document.body.scrollTop : 0
				)
			)
		);
	} // function

} // class
