1 /*
  2 Copyright (c) 2003-2012, 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 			// Webkit is sometimes failed to focus iframe, blur it first(#3835).
 39 			if ( CKEDITOR.env.webkit && this.$.parent )
 40 				this.$.parent.focus();
 41 			this.$.focus();
 42 		},
 43 
 44 		/**
 45 		 * Gets the width and height of this window's viewable area.
 46 		 * @function
 47 		 * @returns {Object} An object with the "width" and "height"
 48 		 *		properties containing the size.
 49 		 * @example
 50 		 * var win = new CKEDITOR.dom.window( window );
 51 		 * var size = <b>win.getViewPaneSize()</b>;
 52 		 * alert( size.width );
 53 		 * alert( size.height );
 54 		 */
 55 		getViewPaneSize : function()
 56 		{
 57 			var doc = this.$.document,
 58 				stdMode = doc.compatMode == 'CSS1Compat';
 59 			return {
 60 				width : ( stdMode ? doc.documentElement.clientWidth : doc.body.clientWidth ) || 0,
 61 				height : ( stdMode ? doc.documentElement.clientHeight : doc.body.clientHeight ) || 0
 62 			};
 63 		},
 64 
 65 		/**
 66 		 * Gets the current position of the window's scroll.
 67 		 * @function
 68 		 * @returns {Object} An object with the "x" and "y" properties
 69 		 *		containing the scroll position.
 70 		 * @example
 71 		 * var win = new CKEDITOR.dom.window( window );
 72 		 * var pos = <b>win.getScrollPosition()</b>;
 73 		 * alert( pos.x );
 74 		 * alert( pos.y );
 75 		 */
 76 		getScrollPosition : function()
 77 		{
 78 			var $ = this.$;
 79 
 80 			if ( 'pageXOffset' in $ )
 81 			{
 82 				return {
 83 					x : $.pageXOffset || 0,
 84 					y : $.pageYOffset || 0
 85 				};
 86 			}
 87 			else
 88 			{
 89 				var doc = $.document;
 90 				return {
 91 					x : doc.documentElement.scrollLeft || doc.body.scrollLeft || 0,
 92 					y : doc.documentElement.scrollTop || doc.body.scrollTop || 0
 93 				};
 94 			}
 95 		}
 96 	});
 97