1 /*
  2 Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
  3 For licensing, see LICENSE.html or http://ckeditor.com/license
  4 */
  5
  6 /**
  7  * @fileOverview Defines the {@link CKEDITOR.dom.document} class, which
  8  *		represents a DOM document.
  9  */
 10
 11 /**
 12  * Represents a DOM window.
 13  * @constructor
 14  * @augments CKEDITOR.dom.domObject
 15  * @param {Object} domWindow A native DOM window.
 16  * @example
 17  * var document = new CKEDITOR.dom.window( window );
 18  */
 19 CKEDITOR.dom.window = function( domWindow )
 20 {
 21 	CKEDITOR.dom.domObject.call( this, domWindow );
 22 };
 23
 24 CKEDITOR.dom.window.prototype = new CKEDITOR.dom.domObject();
 25
 26 CKEDITOR.tools.extend( CKEDITOR.dom.window.prototype,
 27 	/** @lends CKEDITOR.dom.window.prototype */
 28 	{
 29 		/**
 30 		 * Moves the selection focus to this window.
 31 		 * @function
 32 		 * @example
 33 		 * var win = new CKEDITOR.dom.window( window );
 34 		 * <b>win.focus()</b>;
 35 		 */
 36 		focus : function()
 37 		{
 38 			this.$.focus();
 39 		},
 40
 41 		/**
 42 		 * Gets the width and height of this window's viewable area.
 43 		 * @function
 44 		 * @returns {Object} An object with the "width" and "height"
 45 		 *		properties containing the size.
 46 		 * @example
 47 		 * var win = new CKEDITOR.dom.window( window );
 48 		 * var size = <b>win.getViewPaneSize()</b>;
 49 		 * alert( size.width );
 50 		 * alert( size.height );
 51 		 */
 52 		getViewPaneSize : function()
 53 		{
 54 			var doc = this.$.document,
 55 				stdMode = doc.compatMode == 'CSS1Compat';
 56 			return {
 57 				width : ( stdMode ? doc.documentElement.clientWidth : doc.body.clientWidth ) || 0,
 58 				height : ( stdMode ? doc.documentElement.clientHeight : doc.body.clientHeight ) || 0
 59 			};
 60 		},
 61
 62 		/**
 63 		 * Gets the current position of the window's scroll.
 64 		 * @function
 65 		 * @returns {Object} An object with the "x" and "y" properties
 66 		 *		containing the scroll position.
 67 		 * @example
 68 		 * var win = new CKEDITOR.dom.window( window );
 69 		 * var pos = <b>win.getScrollPosition()</b>;
 70 		 * alert( pos.x );
 71 		 * alert( pos.y );
 72 		 */
 73 		getScrollPosition : function()
 74 		{
 75 			var $ = this.$;
 76
 77 			if ( 'pageXOffset' in $ )
 78 			{
 79 				return {
 80 					x : $.pageXOffset || 0,
 81 					y : $.pageYOffset || 0
 82 				};
 83 			}
 84 			else
 85 			{
 86 				var doc = $.document;
 87 				return {
 88 					x : doc.documentElement.scrollLeft || doc.body.scrollLeft || 0,
 89 					y : doc.documentElement.scrollTop || doc.body.scrollTop || 0
 90 				};
 91 			}
 92 		}
 93 	});
 94