X-Git-Url: https://scm.cri.ensmp.fr/git/ckeditor.git/blobdiff_plain/256592bf803e851aa7fc953e08a6e9e58d970f8c..871bad8291b6dbc29d489d95d185458caab25158:/skins/ckeditor/_source/core/env.js
diff --git a/skins/ckeditor/_source/core/env.js b/skins/ckeditor/_source/core/env.js
new file mode 100644
index 0000000..9b73aea
--- /dev/null
+++ b/skins/ckeditor/_source/core/env.js
@@ -0,0 +1,291 @@
+/*
+Copyright (c) 2003-2011, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+/**
+ * @fileOverview Defines the {@link CKEDITOR.env} object, which constains
+ * environment and browser information.
+ */
+
+if ( !CKEDITOR.env )
+{
+ /**
+ * @namespace Environment and browser information.
+ */
+ CKEDITOR.env = (function()
+ {
+ var agent = navigator.userAgent.toLowerCase();
+ var opera = window.opera;
+
+ var env =
+ /** @lends CKEDITOR.env */
+ {
+ /**
+ * Indicates that CKEditor is running on Internet Explorer.
+ * @type Boolean
+ * @example
+ * if ( CKEDITOR.env.ie )
+ * alert( "I'm on IE!" );
+ */
+ ie : /*@cc_on!@*/false,
+
+ /**
+ * Indicates that CKEditor is running on Opera.
+ * @type Boolean
+ * @example
+ * if ( CKEDITOR.env.opera )
+ * alert( "I'm on Opera!" );
+ */
+ opera : ( !!opera && opera.version ),
+
+ /**
+ * Indicates that CKEditor is running on a WebKit based browser, like
+ * Safari.
+ * @type Boolean
+ * @example
+ * if ( CKEDITOR.env.webkit )
+ * alert( "I'm on WebKit!" );
+ */
+ webkit : ( agent.indexOf( ' applewebkit/' ) > -1 ),
+
+ /**
+ * Indicates that CKEditor is running on Adobe AIR.
+ * @type Boolean
+ * @example
+ * if ( CKEDITOR.env.air )
+ * alert( "I'm on AIR!" );
+ */
+ air : ( agent.indexOf( ' adobeair/' ) > -1 ),
+
+ /**
+ * Indicates that CKEditor is running on Macintosh.
+ * @type Boolean
+ * @example
+ * if ( CKEDITOR.env.mac )
+ * alert( "I love apples!" );
+ */
+ mac : ( agent.indexOf( 'macintosh' ) > -1 ),
+
+ /**
+ * Indicates that CKEditor is running on a quirks mode environemnt.
+ * @type Boolean
+ * @example
+ * if ( CKEDITOR.env.quirks )
+ * alert( "Nooooo!" );
+ */
+ quirks : ( document.compatMode == 'BackCompat' ),
+
+ /**
+ * Indicates that CKEditor is running on a mobile like environemnt.
+ * @type Boolean
+ * @example
+ * if ( CKEDITOR.env.mobile )
+ * alert( "I'm running with CKEditor today!" );
+ */
+ mobile : ( agent.indexOf( 'mobile' ) > -1 ),
+
+ /**
+ * Indicates that the browser has a custom domain enabled. This has
+ * been set with "document.domain".
+ * @returns {Boolean} "true" if a custom domain is enabled.
+ * @example
+ * if ( CKEDITOR.env.isCustomDomain() )
+ * alert( "I'm in a custom domain!" );
+ */
+ isCustomDomain : function()
+ {
+ if ( !this.ie )
+ return false;
+
+ var domain = document.domain,
+ hostname = window.location.hostname;
+
+ return domain != hostname &&
+ domain != ( '[' + hostname + ']' ); // IPv6 IP support (#5434)
+ },
+
+ /**
+ * Indicates that page is running under an encrypted connection.
+ * @returns {Boolean} "true" if the page has an encrypted connection.
+ * @example
+ * if ( CKEDITOR.env.secure )
+ * alert( "I'm in SSL!" );
+ */
+ secure : location.protocol == 'https:'
+ };
+
+ /**
+ * Indicates that CKEditor is running on a Gecko based browser, like
+ * Firefox.
+ * @name CKEDITOR.env.gecko
+ * @type Boolean
+ * @example
+ * if ( CKEDITOR.env.gecko )
+ * alert( "I'm riding a gecko!" );
+ */
+ env.gecko = ( navigator.product == 'Gecko' && !env.webkit && !env.opera );
+
+ var version = 0;
+
+ // Internet Explorer 6.0+
+ if ( env.ie )
+ {
+ version = parseFloat( agent.match( /msie (\d+)/ )[1] );
+
+ /**
+ * Indicates that CKEditor is running on Internet Explorer 8.
+ * @name CKEDITOR.env.ie8
+ * @type Boolean
+ * @example
+ * if ( CKEDITOR.env.ie8 )
+ * alert( "I'm on IE8!" );
+ */
+ env.ie8 = !!document.documentMode;
+
+ /**
+ * Indicates that CKEditor is running on Internet Explorer 8 on
+ * standards mode.
+ * @name CKEDITOR.env.ie8Compat
+ * @type Boolean
+ * @example
+ * if ( CKEDITOR.env.ie8Compat )
+ * alert( "Now I'm on IE8, for real!" );
+ */
+ env.ie8Compat = document.documentMode == 8;
+
+ /**
+ * Indicates that CKEditor is running on Internet Explorer 9's standards mode.
+ * @name CKEDITOR.env.ie9Compat
+ * @type Boolean
+ * @example
+ * if ( CKEDITOR.env.ie9Compat )
+ * alert( "IE9, the beauty of the web!" );
+ */
+ env.ie9Compat = document.documentMode == 9;
+
+ /**
+ * Indicates that CKEditor is running on an IE7-like environment, which
+ * includes IE7 itself and IE8's IE7 document mode.
+ * @name CKEDITOR.env.ie7Compat
+ * @type Boolean
+ * @example
+ * if ( CKEDITOR.env.ie8Compat )
+ * alert( "I'm on IE7 or on an IE7 like IE8!" );
+ */
+ env.ie7Compat = ( ( version == 7 && !document.documentMode )
+ || document.documentMode == 7 );
+
+ /**
+ * Indicates that CKEditor is running on an IE6-like environment, which
+ * includes IE6 itself and IE7 and IE8 quirks mode.
+ * @name CKEDITOR.env.ie6Compat
+ * @type Boolean
+ * @example
+ * if ( CKEDITOR.env.ie6Compat )
+ * alert( "I'm on IE6 or quirks mode!" );
+ */
+ env.ie6Compat = ( version < 7 || env.quirks );
+ }
+
+ // Gecko.
+ if ( env.gecko )
+ {
+ var geckoRelease = agent.match( /rv:([\d\.]+)/ );
+ if ( geckoRelease )
+ {
+ geckoRelease = geckoRelease[1].split( '.' );
+ version = geckoRelease[0] * 10000 + ( geckoRelease[1] || 0 ) * 100 + ( geckoRelease[2] || 0 ) * 1;
+ }
+ }
+
+ // Opera 9.50+
+ if ( env.opera )
+ version = parseFloat( opera.version() );
+
+ // Adobe AIR 1.0+
+ // Checked before Safari because AIR have the WebKit rich text editor
+ // features from Safari 3.0.4, but the version reported is 420.
+ if ( env.air )
+ version = parseFloat( agent.match( / adobeair\/(\d+)/ )[1] );
+
+ // WebKit 522+ (Safari 3+)
+ if ( env.webkit )
+ version = parseFloat( agent.match( / applewebkit\/(\d+)/ )[1] );
+
+ /**
+ * Contains the browser version.
+ *
+ * For gecko based browsers (like Firefox) it contains the revision
+ * number with first three parts concatenated with a padding zero
+ * (e.g. for revision 1.9.0.2 we have 10900).
+ *
+ * For webkit based browser (like Safari and Chrome) it contains the
+ * WebKit build version (e.g. 522).
+ * @name CKEDITOR.env.version
+ * @type Boolean
+ * @example
+ * if ( CKEDITOR.env.ie && CKEDITOR.env.version <= 6 )
+ * alert( "Ouch!" );
+ */
+ env.version = version;
+
+ /**
+ * Indicates that CKEditor is running on a compatible browser.
+ * @name CKEDITOR.env.isCompatible
+ * @type Boolean
+ * @example
+ * if ( CKEDITOR.env.isCompatible )
+ * alert( "Your browser is pretty cool!" );
+ */
+ env.isCompatible =
+ !env.mobile && (
+ ( env.ie && version >= 6 ) ||
+ ( env.gecko && version >= 10801 ) ||
+ ( env.opera && version >= 9.5 ) ||
+ ( env.air && version >= 1 ) ||
+ ( env.webkit && version >= 522 ) ||
+ false );
+
+ /**
+ * The CSS class to be appended on the main UI containers, making it
+ * easy to apply browser specific styles to it.
+ * @name CKEDITOR.env.cssClass
+ * @type String
+ * @example
+ * myDiv.className = CKEDITOR.env.cssClass;
+ */
+ env.cssClass =
+ 'cke_browser_' + (
+ env.ie ? 'ie' :
+ env.gecko ? 'gecko' :
+ env.opera ? 'opera' :
+ env.webkit ? 'webkit' :
+ 'unknown' );
+
+ if ( env.quirks )
+ env.cssClass += ' cke_browser_quirks';
+
+ if ( env.ie )
+ {
+ env.cssClass += ' cke_browser_ie' + (
+ env.version < 7 ? '6' :
+ env.version >= 8 ? document.documentMode:
+ '7' );
+
+ if ( env.quirks )
+ env.cssClass += ' cke_browser_iequirks';
+ }
+
+ if ( env.gecko && version < 10900 )
+ env.cssClass += ' cke_browser_gecko18';
+
+ if ( env.air )
+ env.cssClass += ' cke_browser_air';
+
+ return env;
+ })();
+}
+
+// PACKAGER_RENAME( CKEDITOR.env )
+// PACKAGER_RENAME( CKEDITOR.env.ie )