public/ckeditor/4.4dev/plugins/clipboard/plugin.js
function addListenersToEditable() {
			var editable = editor.editable();

			// We'll be catching all pasted content in one line, regardless of whether
			// it's introduced by a document command execution (e.g. toolbar buttons) or
			// user paste behaviors (e.g. CTRL+V).
			editable.on( mainPasteEvent, function( evt ) {
				if ( CKEDITOR.env.ie && preventBeforePasteEvent )
					return;

				// If you've just asked yourself why preventPasteEventNow() is not here, but
				// in listener for CTRL+V and exec method of 'paste' command
				// you've asked the same question we did.
				//
				// THE ANSWER:
				//
				// First thing to notice - this answer makes sense only for IE,
				// because other browsers don't listen for 'paste' event.
				//
				// What would happen if we move preventPasteEventNow() here?
				// For:
				// * CTRL+V - IE fires 'beforepaste', so we prevent 'paste' and pasteDataFromClipboard(). OK.
				// * editor.execCommand( 'paste' ) - we fire 'beforepaste', so we prevent
				//		'paste' and pasteDataFromClipboard() and doc.execCommand( 'Paste' ). OK.
				// * native context menu - IE fires 'beforepaste', so we prevent 'paste', but unfortunately
				//		on IE we fail with pasteDataFromClipboard() here, because of... we don't know why, but
				//		we just fail, so... we paste nothing. FAIL.
				// * native menu bar - the same as for native context menu.
				//
				// But don't you know any way to distinguish first two cases from last two?
				// Only one - special flag set in CTRL+V handler and exec method of 'paste'
				// command. And that's what we did using preventPasteEventNow().

				pasteDataFromClipboard( evt );
			} );

			// It's not possible to clearly handle all four paste methods (ctrl+v, native menu bar
			// native context menu, editor's command) in one 'paste/beforepaste' event in IE.
			//
			// For ctrl+v & editor's command it's easy to handle pasting in 'beforepaste' listener,
			// so we do this. For another two methods it's better to use 'paste' event.
			//
			// 'paste' is always being fired after 'beforepaste' (except of weird one on opening native
			// context menu), so for two methods handled in 'beforepaste' we're canceling 'paste'
			// using preventPasteEvent state.
			//
			// 'paste' event in IE is being fired before getClipboardDataByPastebin executes its callback.
			//
			// QUESTION: Why didn't you handle all 4 paste methods in handler for 'paste'?
			//		Wouldn't this just be simpler?
			// ANSWER: Then we would have to evt.data.preventDefault() only for native
			//		context menu and menu bar pastes. The same with execIECommand().
			//		That would force us to mark CTRL+V and editor's paste command with
			//		special flag, other than preventPasteEvent. But we still would have to
			//		have preventPasteEvent for the second event fired by execIECommand.
			//		Code would be longer and not cleaner.
			CKEDITOR.env.ie && editable.on( 'paste', function( evt ) {
				if ( preventPasteEvent )
					return;
				// Cancel next 'paste' event fired by execIECommand( 'paste' )
				// at the end of this callback.
				preventPasteEventNow();

				// Prevent native paste.
				evt.data.preventDefault();

				pasteDataFromClipboard( evt );

				// Force IE to paste content into pastebin so pasteDataFromClipboard will work.
				if ( !execIECommand( 'paste' ) )
					editor.openDialog( 'paste' );
			} );

			// [IE] Dismiss the (wrong) 'beforepaste' event fired on context/toolbar menu open. (#7953)
			if ( CKEDITOR.env.ie ) {
				editable.on( 'contextmenu', preventBeforePasteEventNow, null, null, 0 );

				editable.on( 'beforepaste', function( evt ) {
					// Do not prevent event on CTRL+V and SHIFT+INS because it blocks paste (#11970).
					if ( evt.data && !evt.data.$.ctrlKey && !evt.data.$.shiftKey )
						preventBeforePasteEventNow();
				}, null, null, 0 );

			}

			editable.on( 'beforecut', function() {
				!preventBeforePasteEvent && fixCut( editor );
			} );

			var mouseupTimeout;

			// Use editor.document instead of editable in non-IEs for observing mouseup
			// since editable won't fire the event if selection process started within
			// iframe and ended out of the editor (#9851).
			editable.attachListener( CKEDITOR.env.ie ? editable : editor.document.getDocumentElement(), 'mouseup', function() {
				mouseupTimeout = setTimeout( function() {
					setToolbarStates();
				}, 0 );
			} );

			// Make sure that deferred mouseup callback isn't executed after editor instance
			// had been destroyed. This may happen when editor.destroy() is called in parallel
			// with mouseup event (i.e. a button with onclick callback) (#10219).
			editor.on( 'destroy', function() {
				clearTimeout( mouseupTimeout );
			} );

			editable.on( 'keyup', setToolbarStates );
		}
function addListenersToEditable() {
			var editable = editor.editable();

			// We'll be catching all pasted content in one line, regardless of whether
			// it's introduced by a document command execution (e.g. toolbar buttons) or
			// user paste behaviors (e.g. CTRL+V).
			editable.on( mainPasteEvent, function( evt ) {
				if ( CKEDITOR.env.ie && preventBeforePasteEvent )
					return;

				// If you've just asked yourself why preventPasteEventNow() is not here, but
				// in listener for CTRL+V and exec method of 'paste' command
				// you've asked the same question we did.
				//
				// THE ANSWER:
				//
				// First thing to notice - this answer makes sense only for IE,
				// because other browsers don't listen for 'paste' event.
				//
				// What would happen if we move preventPasteEventNow() here?
				// For:
				// * CTRL+V - IE fires 'beforepaste', so we prevent 'paste' and pasteDataFromClipboard(). OK.
				// * editor.execCommand( 'paste' ) - we fire 'beforepaste', so we prevent
				//		'paste' and pasteDataFromClipboard() and doc.execCommand( 'Paste' ). OK.
				// * native context menu - IE fires 'beforepaste', so we prevent 'paste', but unfortunately
				//		on IE we fail with pasteDataFromClipboard() here, because of... we don't know why, but
				//		we just fail, so... we paste nothing. FAIL.
				// * native menu bar - the same as for native context menu.
				//
				// But don't you know any way to distinguish first two cases from last two?
				// Only one - special flag set in CTRL+V handler and exec method of 'paste'
				// command. And that's what we did using preventPasteEventNow().

				pasteDataFromClipboard( evt );
			} );

			// It's not possible to clearly handle all four paste methods (ctrl+v, native menu bar
			// native context menu, editor's command) in one 'paste/beforepaste' event in IE.
			//
			// For ctrl+v & editor's command it's easy to handle pasting in 'beforepaste' listener,
			// so we do this. For another two methods it's better to use 'paste' event.
			//
			// 'paste' is always being fired after 'beforepaste' (except of weird one on opening native
			// context menu), so for two methods handled in 'beforepaste' we're canceling 'paste'
			// using preventPasteEvent state.
			//
			// 'paste' event in IE is being fired before getClipboardDataByPastebin executes its callback.
			//
			// QUESTION: Why didn't you handle all 4 paste methods in handler for 'paste'?
			//		Wouldn't this just be simpler?
			// ANSWER: Then we would have to evt.data.preventDefault() only for native
			//		context menu and menu bar pastes. The same with execIECommand().
			//		That would force us to mark CTRL+V and editor's paste command with
			//		special flag, other than preventPasteEvent. But we still would have to
			//		have preventPasteEvent for the second event fired by execIECommand.
			//		Code would be longer and not cleaner.
			CKEDITOR.env.ie && editable.on( 'paste', function( evt ) {
				if ( preventPasteEvent )
					return;
				// Cancel next 'paste' event fired by execIECommand( 'paste' )
				// at the end of this callback.
				preventPasteEventNow();

				// Prevent native paste.
				evt.data.preventDefault();

				pasteDataFromClipboard( evt );

				// Force IE to paste content into pastebin so pasteDataFromClipboard will work.
				if ( !execIECommand( 'paste' ) )
					editor.openDialog( 'paste' );
			} );

			// [IE] Dismiss the (wrong) 'beforepaste' event fired on context/toolbar menu open. (#7953)
			if ( CKEDITOR.env.ie ) {
				editable.on( 'contextmenu', preventBeforePasteEventNow, null, null, 0 );

				editable.on( 'beforepaste', function( evt ) {
					// Do not prevent event on CTRL+V and SHIFT+INS because it blocks paste (#11970).
					if ( evt.data && !evt.data.$.ctrlKey && !evt.data.$.shiftKey )
						preventBeforePasteEventNow();
				}, null, null, 0 );

			}

			editable.on( 'beforecut', function() {
				!preventBeforePasteEvent && fixCut( editor );
			} );

			var mouseupTimeout;

			// Use editor.document instead of editable in non-IEs for observing mouseup
			// since editable won't fire the event if selection process started within
			// iframe and ended out of the editor (#9851).
			editable.attachListener( CKEDITOR.env.ie ? editable : editor.document.getDocumentElement(), 'mouseup', function() {
				mouseupTimeout = setTimeout( function() {
					setToolbarStates();
				}, 0 );
			} );

			// Make sure that deferred mouseup callback isn't executed after editor instance
			// had been destroyed. This may happen when editor.destroy() is called in parallel
			// with mouseup event (i.e. a button with onclick callback) (#10219).
			editor.on( 'destroy', function() {
				clearTimeout( mouseupTimeout );
			} );

			editable.on( 'keyup', setToolbarStates );
		}
function addListenersToEditable ( ) { var editable = editor . editable ( ) ; // We'll be catching all pasted content in one line, regardless of whether
 // it's introduced by a document command execution (e.g. toolbar buttons) or
 // user paste behaviors (e.g. CTRL+V).
 editable . on ( mainPasteEvent , function ( evt ) { if ( CKEDITOR . env . ie && preventBeforePasteEvent ) return ; // If you've just asked yourself why preventPasteEventNow() is not here, but
 // in listener for CTRL+V and exec method of 'paste' command
 // you've asked the same question we did.
 //
 // THE ANSWER:
 //
 // First thing to notice - this answer makes sense only for IE,
 // because other browsers don't listen for 'paste' event.
 //
 // What would happen if we move preventPasteEventNow() here?
 // For:
 // * CTRL+V - IE fires 'beforepaste', so we prevent 'paste' and pasteDataFromClipboard(). OK.
 // * editor.execCommand( 'paste' ) - we fire 'beforepaste', so we prevent
 //		'paste' and pasteDataFromClipboard() and doc.execCommand( 'Paste' ). OK.
 // * native context menu - IE fires 'beforepaste', so we prevent 'paste', but unfortunately
 //		on IE we fail with pasteDataFromClipboard() here, because of... we don't know why, but
 //		we just fail, so... we paste nothing. FAIL.
 // * native menu bar - the same as for native context menu.
 //
 // But don't you know any way to distinguish first two cases from last two?
 // Only one - special flag set in CTRL+V handler and exec method of 'paste'
 // command. And that's what we did using preventPasteEventNow().
 pasteDataFromClipboard ( evt ) ; } ) ; // It's not possible to clearly handle all four paste methods (ctrl+v, native menu bar
 // native context menu, editor's command) in one 'paste/beforepaste' event in IE.
 //
 // For ctrl+v & editor's command it's easy to handle pasting in 'beforepaste' listener,
 // so we do this. For another two methods it's better to use 'paste' event.
 //
 // 'paste' is always being fired after 'beforepaste' (except of weird one on opening native
 // context menu), so for two methods handled in 'beforepaste' we're canceling 'paste'
 // using preventPasteEvent state.
 //
 // 'paste' event in IE is being fired before getClipboardDataByPastebin executes its callback.
 //
 // QUESTION: Why didn't you handle all 4 paste methods in handler for 'paste'?
 //		Wouldn't this just be simpler?
 // ANSWER: Then we would have to evt.data.preventDefault() only for native
 //		context menu and menu bar pastes. The same with execIECommand().
 //		That would force us to mark CTRL+V and editor's paste command with
 //		special flag, other than preventPasteEvent. But we still would have to
 //		have preventPasteEvent for the second event fired by execIECommand.
 //		Code would be longer and not cleaner.
 CKEDITOR . env . ie && editable . on ( 'paste' , function ( evt ) { if ( preventPasteEvent ) return ; // Cancel next 'paste' event fired by execIECommand( 'paste' )
 // at the end of this callback.
 preventPasteEventNow ( ) ; // Prevent native paste.
 evt . data . preventDefault ( ) ; pasteDataFromClipboard ( evt ) ; // Force IE to paste content into pastebin so pasteDataFromClipboard will work.
 if ( ! execIECommand ( 'paste' ) ) editor . openDialog ( 'paste' ) ; } ) ; // [IE] Dismiss the (wrong) 'beforepaste' event fired on context/toolbar menu open. (#7953)
 if ( CKEDITOR . env . ie ) { editable . on ( 'contextmenu' , preventBeforePasteEventNow , null , null , 0 ) ; editable . on ( 'beforepaste' , function ( evt ) { // Do not prevent event on CTRL+V and SHIFT+INS because it blocks paste (#11970).
 if ( evt . data && ! evt . data . $ . ctrlKey && ! evt . data . $ . shiftKey ) preventBeforePasteEventNow ( ) ; } , null , null , 0 ) ; } editable . on ( 'beforecut' , function ( ) { ! preventBeforePasteEvent && fixCut ( editor ) ; } ) ; var mouseupTimeout ; // Use editor.document instead of editable in non-IEs for observing mouseup
 // since editable won't fire the event if selection process started within
 // iframe and ended out of the editor (#9851).
 editable . attachListener ( CKEDITOR . env . ie ? editable : editor . document . getDocumentElement ( ) , 'mouseup' , function ( ) { mouseupTimeout = setTimeout ( function ( ) { setToolbarStates ( ) ; } , 0 ) ; } ) ; // Make sure that deferred mouseup callback isn't executed after editor instance
 // had been destroyed. This may happen when editor.destroy() is called in parallel
 // with mouseup event (i.e. a button with onclick callback) (#10219).
 editor . on ( 'destroy' , function ( ) { clearTimeout ( mouseupTimeout ) ; } ) ; editable . on ( 'keyup' , setToolbarStates ) ; }
Add events listeners to editable.
Add events listeners to editable .