wp/wp-admin/js/wp-fullscreen.js
author ymh <ymh.work@gmail.com>
Wed, 06 Nov 2013 03:21:17 +0000
changeset 0 d970ebf37754
child 5 5e2f62d02dcd
permissions -rw-r--r--
first import
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
     1
/**
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
     2
 * PubSub
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
     3
 *
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
     4
 * A lightweight publish/subscribe implementation.
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
     5
 * Private use only!
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
     6
 */
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
     7
var PubSub, fullscreen, wptitlehint;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
     8
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
     9
PubSub = function() {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    10
	this.topics = {};
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    11
};
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    12
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    13
PubSub.prototype.subscribe = function( topic, callback ) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    14
	if ( ! this.topics[ topic ] )
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    15
		this.topics[ topic ] = [];
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    16
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    17
	this.topics[ topic ].push( callback );
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    18
	return callback;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    19
};
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    20
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    21
PubSub.prototype.unsubscribe = function( topic, callback ) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    22
	var i, l,
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    23
		topics = this.topics[ topic ];
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    24
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    25
	if ( ! topics )
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    26
		return callback || [];
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    27
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    28
	// Clear matching callbacks
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    29
	if ( callback ) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    30
		for ( i = 0, l = topics.length; i < l; i++ ) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    31
			if ( callback == topics[i] )
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    32
				topics.splice( i, 1 );
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    33
		}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    34
		return callback;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    35
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    36
	// Clear all callbacks
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    37
	} else {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    38
		this.topics[ topic ] = [];
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    39
		return topics;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    40
	}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    41
};
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    42
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    43
PubSub.prototype.publish = function( topic, args ) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    44
	var i, l, broken,
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    45
		topics = this.topics[ topic ];
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    46
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    47
	if ( ! topics )
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    48
		return;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    49
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    50
	args = args || [];
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    51
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    52
	for ( i = 0, l = topics.length; i < l; i++ ) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    53
		broken = ( topics[i].apply( null, args ) === false || broken );
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    54
	}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    55
	return ! broken;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    56
};
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    57
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    58
/**
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    59
 * Distraction Free Writing
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    60
 * (wp-fullscreen)
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    61
 *
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    62
 * Access the API globally using the fullscreen variable.
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    63
 */
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    64
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    65
(function($){
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    66
	var api, ps, bounder, s;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    67
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    68
	// Initialize the fullscreen/api object
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    69
	fullscreen = api = {};
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    70
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    71
	// Create the PubSub (publish/subscribe) interface.
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    72
	ps = api.pubsub = new PubSub();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    73
	timer = 0;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    74
	block = false;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    75
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    76
	s = api.settings = { // Settings
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    77
		visible : false,
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    78
		mode : 'tinymce',
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    79
		editor_id : 'content',
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    80
		title_id : '',
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    81
		timer : 0,
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    82
		toolbar_shown : false
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    83
	}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    84
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    85
	/**
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    86
	 * Bounder
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    87
	 *
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    88
	 * Creates a function that publishes start/stop topics.
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    89
	 * Used to throttle events.
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    90
	 */
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    91
	bounder = api.bounder = function( start, stop, delay, e ) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    92
		var y, top;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    93
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    94
		delay = delay || 1250;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    95
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    96
		if ( e ) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    97
			y = e.pageY || e.clientY || e.offsetY;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    98
			top = $(document).scrollTop();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    99
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   100
			if ( !e.isDefaultPrevented ) // test if e ic jQuery normalized
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   101
				y = 135 + y;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   102
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   103
			if ( y - top > 120 )
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   104
				return;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   105
		}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   106
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   107
		if ( block )
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   108
			return;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   109
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   110
		block = true;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   111
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   112
		setTimeout( function() {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   113
			block = false;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   114
		}, 400 );
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   115
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   116
		if ( s.timer )
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   117
			clearTimeout( s.timer );
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   118
		else
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   119
			ps.publish( start );
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   120
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   121
		function timed() {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   122
			ps.publish( stop );
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   123
			s.timer = 0;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   124
		}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   125
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   126
		s.timer = setTimeout( timed, delay );
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   127
	};
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   128
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   129
	/**
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   130
	 * on()
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   131
	 *
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   132
	 * Turns fullscreen on.
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   133
	 *
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   134
	 * @param string mode Optional. Switch to the given mode before opening.
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   135
	 */
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   136
	api.on = function() {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   137
		if ( s.visible )
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   138
			return;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   139
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   140
		// Settings can be added or changed by defining "wp_fullscreen_settings" JS object.
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   141
		if ( typeof(wp_fullscreen_settings) == 'object' )
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   142
			$.extend( s, wp_fullscreen_settings );
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   143
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   144
		s.editor_id = wpActiveEditor || 'content';
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   145
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   146
		if ( $('input#title').length && s.editor_id == 'content' )
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   147
			s.title_id = 'title';
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   148
		else if ( $('input#' + s.editor_id + '-title').length ) // the title input field should have [editor_id]-title HTML ID to be auto detected
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   149
			s.title_id = s.editor_id + '-title';
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   150
		else
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   151
			$('#wp-fullscreen-title, #wp-fullscreen-title-prompt-text').hide();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   152
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   153
		s.mode = $('#' + s.editor_id).is(':hidden') ? 'tinymce' : 'html';
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   154
		s.qt_canvas = $('#' + s.editor_id).get(0);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   155
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   156
		if ( ! s.element )
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   157
			api.ui.init();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   158
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   159
		s.is_mce_on = s.has_tinymce && typeof( tinyMCE.get(s.editor_id) ) != 'undefined';
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   160
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   161
		api.ui.fade( 'show', 'showing', 'shown' );
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   162
	};
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   163
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   164
	/**
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   165
	 * off()
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   166
	 *
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   167
	 * Turns fullscreen off.
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   168
	 */
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   169
	api.off = function() {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   170
		if ( ! s.visible )
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   171
			return;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   172
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   173
		api.ui.fade( 'hide', 'hiding', 'hidden' );
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   174
	};
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   175
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   176
	/**
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   177
	 * switchmode()
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   178
	 *
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   179
	 * @return string - The current mode.
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   180
	 *
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   181
	 * @param string to - The fullscreen mode to switch to.
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   182
	 * @event switchMode
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   183
	 * @eventparam string to   - The new mode.
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   184
	 * @eventparam string from - The old mode.
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   185
	 */
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   186
	api.switchmode = function( to ) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   187
		var from = s.mode;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   188
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   189
		if ( ! to || ! s.visible || ! s.has_tinymce )
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   190
			return from;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   191
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   192
		// Don't switch if the mode is the same.
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   193
		if ( from == to )
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   194
			return from;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   195
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   196
		ps.publish( 'switchMode', [ from, to ] );
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   197
		s.mode = to;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   198
		ps.publish( 'switchedMode', [ from, to ] );
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   199
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   200
		return to;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   201
	};
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   202
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   203
	/**
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   204
	 * General
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   205
	 */
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   206
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   207
	api.save = function() {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   208
		var hidden = $('#hiddenaction'), old = hidden.val(), spinner = $('#wp-fullscreen-save .spinner'),
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   209
			message = $('#wp-fullscreen-save span');
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   210
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   211
		spinner.show();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   212
		api.savecontent();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   213
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   214
		hidden.val('wp-fullscreen-save-post');
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   215
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   216
		$.post( ajaxurl, $('form#post').serialize(), function(r){
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   217
			spinner.hide();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   218
			message.show();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   219
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   220
			setTimeout( function(){
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   221
				message.fadeOut(1000);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   222
			}, 3000 );
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   223
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   224
			if ( r.last_edited )
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   225
				$('#wp-fullscreen-save input').attr( 'title',  r.last_edited );
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   226
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   227
		}, 'json');
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   228
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   229
		hidden.val(old);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   230
	}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   231
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   232
	api.savecontent = function() {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   233
		var ed, content;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   234
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   235
		if ( s.title_id )
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   236
			$('#' + s.title_id).val( $('#wp-fullscreen-title').val() );
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   237
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   238
		if ( s.mode === 'tinymce' && (ed = tinyMCE.get('wp_mce_fullscreen')) ) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   239
			content = ed.save();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   240
		} else {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   241
			content = $('#wp_mce_fullscreen').val();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   242
		}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   243
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   244
		$('#' + s.editor_id).val( content );
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   245
		$(document).triggerHandler('wpcountwords', [ content ]);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   246
	}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   247
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   248
	set_title_hint = function( title ) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   249
		if ( ! title.val().length )
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   250
			title.siblings('label').css( 'visibility', '' );
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   251
		else
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   252
			title.siblings('label').css( 'visibility', 'hidden' );
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   253
	}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   254
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   255
	api.dfw_width = function(n) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   256
		var el = $('#wp-fullscreen-wrap'), w = el.width();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   257
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   258
		if ( !n ) { // reset to theme width
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   259
			el.width( $('#wp-fullscreen-central-toolbar').width() );
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   260
			deleteUserSetting('dfw_width');
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   261
			return;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   262
		}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   263
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   264
		w = n + w;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   265
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   266
		if ( w < 200 || w > 1200 ) // sanity check
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   267
			return;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   268
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   269
		el.width( w );
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   270
		setUserSetting('dfw_width', w);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   271
	}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   272
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   273
	ps.subscribe( 'showToolbar', function() {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   274
		s.toolbars.removeClass('fade-1000').addClass('fade-300');
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   275
		api.fade.In( s.toolbars, 300, function(){ ps.publish('toolbarShown'); }, true );
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   276
		$('#wp-fullscreen-body').addClass('wp-fullscreen-focus');
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   277
		s.toolbar_shown = true;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   278
	});
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   279
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   280
	ps.subscribe( 'hideToolbar', function() {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   281
		s.toolbars.removeClass('fade-300').addClass('fade-1000');
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   282
		api.fade.Out( s.toolbars, 1000, function(){ ps.publish('toolbarHidden'); }, true );
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   283
		$('#wp-fullscreen-body').removeClass('wp-fullscreen-focus');
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   284
	});
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   285
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   286
	ps.subscribe( 'toolbarShown', function() {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   287
		s.toolbars.removeClass('fade-300');
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   288
	});
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   289
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   290
	ps.subscribe( 'toolbarHidden', function() {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   291
		s.toolbars.removeClass('fade-1000');
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   292
		s.toolbar_shown = false;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   293
	});
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   294
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   295
	ps.subscribe( 'show', function() { // This event occurs before the overlay blocks the UI.
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   296
		var title;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   297
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   298
		if ( s.title_id ) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   299
			title = $('#wp-fullscreen-title').val( $('#' + s.title_id).val() );
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   300
			set_title_hint( title );
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   301
		}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   302
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   303
		$('#wp-fullscreen-save input').attr( 'title',  $('#last-edit').text() );
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   304
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   305
		s.textarea_obj.value = s.qt_canvas.value;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   306
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   307
		if ( s.has_tinymce && s.mode === 'tinymce' )
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   308
			tinyMCE.execCommand('wpFullScreenInit');
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   309
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   310
		s.orig_y = $(window).scrollTop();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   311
	});
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   312
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   313
	ps.subscribe( 'showing', function() { // This event occurs while the DFW overlay blocks the UI.
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   314
		$( document.body ).addClass( 'fullscreen-active' );
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   315
		api.refresh_buttons();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   316
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   317
		$( document ).bind( 'mousemove.fullscreen', function(e) { bounder( 'showToolbar', 'hideToolbar', 2000, e ); } );
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   318
		bounder( 'showToolbar', 'hideToolbar', 2000 );
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   319
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   320
		api.bind_resize();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   321
		setTimeout( api.resize_textarea, 200 );
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   322
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   323
		// scroll to top so the user is not disoriented
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   324
		scrollTo(0, 0);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   325
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   326
		// needed it for IE7 and compat mode
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   327
		$('#wpadminbar').hide();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   328
	});
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   329
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   330
	ps.subscribe( 'shown', function() { // This event occurs after the DFW overlay is shown
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   331
		var interim_init;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   332
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   333
		s.visible = true;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   334
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   335
		// init the standard TinyMCE instance if missing
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   336
		if ( s.has_tinymce && ! s.is_mce_on ) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   337
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   338
			interim_init = function(mce, ed) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   339
				var el = ed.getElement(), old_val = el.value, settings = tinyMCEPreInit.mceInit[s.editor_id];
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   340
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   341
				if ( settings && settings.wpautop && typeof(switchEditors) != 'undefined' )
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   342
					el.value = switchEditors.wpautop( el.value );
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   343
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   344
				ed.onInit.add(function(ed) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   345
					ed.hide();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   346
					ed.getElement().value = old_val;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   347
					tinymce.onAddEditor.remove(interim_init);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   348
				});
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   349
			};
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   350
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   351
			tinymce.onAddEditor.add(interim_init);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   352
			tinyMCE.init(tinyMCEPreInit.mceInit[s.editor_id]);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   353
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   354
			s.is_mce_on = true;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   355
		}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   356
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   357
		wpActiveEditor = 'wp_mce_fullscreen';
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   358
	});
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   359
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   360
	ps.subscribe( 'hide', function() { // This event occurs before the overlay blocks DFW.
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   361
		var htmled_is_hidden = $('#' + s.editor_id).is(':hidden');
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   362
		// Make sure the correct editor is displaying.
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   363
		if ( s.has_tinymce && s.mode === 'tinymce' && !htmled_is_hidden ) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   364
			switchEditors.go(s.editor_id, 'tmce');
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   365
		} else if ( s.mode === 'html' && htmled_is_hidden ) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   366
			switchEditors.go(s.editor_id, 'html');
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   367
		}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   368
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   369
		// Save content must be after switchEditors or content will be overwritten. See #17229.
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   370
		api.savecontent();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   371
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   372
		$( document ).unbind( '.fullscreen' );
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   373
		$(s.textarea_obj).unbind('.grow');
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   374
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   375
		if ( s.has_tinymce && s.mode === 'tinymce' )
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   376
			tinyMCE.execCommand('wpFullScreenSave');
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   377
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   378
		if ( s.title_id )
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   379
			set_title_hint( $('#' + s.title_id) );
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   380
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   381
		s.qt_canvas.value = s.textarea_obj.value;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   382
	});
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   383
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   384
	ps.subscribe( 'hiding', function() { // This event occurs while the overlay blocks the DFW UI.
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   385
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   386
		$( document.body ).removeClass( 'fullscreen-active' );
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   387
		scrollTo(0, s.orig_y);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   388
		$('#wpadminbar').show();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   389
	});
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   390
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   391
	ps.subscribe( 'hidden', function() { // This event occurs after DFW is removed.
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   392
		s.visible = false;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   393
		$('#wp_mce_fullscreen, #wp-fullscreen-title').removeAttr('style');
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   394
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   395
		if ( s.has_tinymce && s.is_mce_on )
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   396
			tinyMCE.execCommand('wpFullScreenClose');
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   397
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   398
		s.textarea_obj.value = '';
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   399
		api.oldheight = 0;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   400
		wpActiveEditor = s.editor_id;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   401
	});
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   402
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   403
	ps.subscribe( 'switchMode', function( from, to ) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   404
		var ed;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   405
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   406
		if ( !s.has_tinymce || !s.is_mce_on )
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   407
			return;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   408
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   409
		ed = tinyMCE.get('wp_mce_fullscreen');
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   410
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   411
		if ( from === 'html' && to === 'tinymce' ) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   412
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   413
			if ( tinyMCE.get(s.editor_id).getParam('wpautop') && typeof(switchEditors) != 'undefined' )
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   414
				s.textarea_obj.value = switchEditors.wpautop( s.textarea_obj.value );
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   415
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   416
			if ( 'undefined' == typeof(ed) )
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   417
				tinyMCE.execCommand('wpFullScreenInit');
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   418
			else
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   419
				ed.show();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   420
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   421
		} else if ( from === 'tinymce' && to === 'html' ) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   422
			if ( ed )
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   423
				ed.hide();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   424
		}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   425
	});
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   426
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   427
	ps.subscribe( 'switchedMode', function( from, to ) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   428
		api.refresh_buttons(true);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   429
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   430
		if ( to === 'html' )
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   431
			setTimeout( api.resize_textarea, 200 );
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   432
	});
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   433
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   434
	/**
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   435
	 * Buttons
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   436
	 */
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   437
	api.b = function() {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   438
		if ( s.has_tinymce && 'tinymce' === s.mode )
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   439
			tinyMCE.execCommand('Bold');
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   440
	}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   441
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   442
	api.i = function() {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   443
		if ( s.has_tinymce && 'tinymce' === s.mode )
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   444
			tinyMCE.execCommand('Italic');
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   445
	}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   446
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   447
	api.ul = function() {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   448
		if ( s.has_tinymce && 'tinymce' === s.mode )
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   449
			tinyMCE.execCommand('InsertUnorderedList');
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   450
	}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   451
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   452
	api.ol = function() {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   453
		if ( s.has_tinymce && 'tinymce' === s.mode )
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   454
			tinyMCE.execCommand('InsertOrderedList');
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   455
	}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   456
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   457
	api.link = function() {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   458
		if ( s.has_tinymce && 'tinymce' === s.mode )
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   459
			tinyMCE.execCommand('WP_Link');
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   460
		else
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   461
			wpLink.open();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   462
	}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   463
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   464
	api.unlink = function() {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   465
		if ( s.has_tinymce && 'tinymce' === s.mode )
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   466
			tinyMCE.execCommand('unlink');
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   467
	}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   468
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   469
	api.atd = function() {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   470
		if ( s.has_tinymce && 'tinymce' === s.mode )
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   471
			tinyMCE.execCommand('mceWritingImprovementTool');
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   472
	}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   473
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   474
	api.help = function() {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   475
		if ( s.has_tinymce && 'tinymce' === s.mode )
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   476
			tinyMCE.execCommand('WP_Help');
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   477
	}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   478
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   479
	api.blockquote = function() {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   480
		if ( s.has_tinymce && 'tinymce' === s.mode )
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   481
			tinyMCE.execCommand('mceBlockQuote');
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   482
	}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   483
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   484
	api.medialib = function() {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   485
		if ( typeof wp !== 'undefined' && wp.media && wp.media.editor )
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   486
			wp.media.editor.open(s.editor_id);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   487
	}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   488
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   489
	api.refresh_buttons = function( fade ) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   490
		fade = fade || false;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   491
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   492
		if ( s.mode === 'html' ) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   493
			$('#wp-fullscreen-mode-bar').removeClass('wp-tmce-mode').addClass('wp-html-mode');
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   494
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   495
			if ( fade )
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   496
				$('#wp-fullscreen-button-bar').fadeOut( 150, function(){
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   497
					$(this).addClass('wp-html-mode').fadeIn( 150 );
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   498
				});
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   499
			else
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   500
				$('#wp-fullscreen-button-bar').addClass('wp-html-mode');
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   501
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   502
		} else if ( s.mode === 'tinymce' ) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   503
			$('#wp-fullscreen-mode-bar').removeClass('wp-html-mode').addClass('wp-tmce-mode');
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   504
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   505
			if ( fade )
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   506
				$('#wp-fullscreen-button-bar').fadeOut( 150, function(){
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   507
					$(this).removeClass('wp-html-mode').fadeIn( 150 );
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   508
				});
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   509
			else
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   510
				$('#wp-fullscreen-button-bar').removeClass('wp-html-mode');
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   511
		}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   512
	}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   513
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   514
	/**
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   515
	 * UI Elements
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   516
	 *
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   517
	 * Used for transitioning between states.
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   518
	 */
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   519
	api.ui = {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   520
		init: function() {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   521
			var topbar = $('#fullscreen-topbar'), txtarea = $('#wp_mce_fullscreen'), last = 0;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   522
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   523
			s.toolbars = topbar.add( $('#wp-fullscreen-status') );
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   524
			s.element = $('#fullscreen-fader');
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   525
			s.textarea_obj = txtarea[0];
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   526
			s.has_tinymce = typeof(tinymce) != 'undefined';
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   527
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   528
			if ( !s.has_tinymce )
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   529
				$('#wp-fullscreen-mode-bar').hide();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   530
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   531
			if ( wptitlehint && $('#wp-fullscreen-title').length )
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   532
				wptitlehint('wp-fullscreen-title');
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   533
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   534
			$(document).keyup(function(e){
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   535
				var c = e.keyCode || e.charCode, a, data;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   536
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   537
				if ( !fullscreen.settings.visible )
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   538
					return true;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   539
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   540
				if ( navigator.platform && navigator.platform.indexOf('Mac') != -1 )
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   541
					a = e.ctrlKey; // Ctrl key for Mac
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   542
				else
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   543
					a = e.altKey; // Alt key for Win & Linux
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   544
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   545
				if ( 27 == c ) { // Esc
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   546
					data = {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   547
						event: e,
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   548
						what: 'dfw',
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   549
						cb: fullscreen.off,
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   550
						condition: function(){
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   551
							if ( $('#TB_window').is(':visible') || $('.wp-dialog').is(':visible') )
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   552
								return false;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   553
							return true;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   554
						}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   555
					};
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   556
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   557
					if ( ! jQuery(document).triggerHandler( 'wp_CloseOnEscape', [data] ) )
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   558
						fullscreen.off();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   559
				}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   560
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   561
				if ( a && (61 == c || 107 == c || 187 == c) ) // +
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   562
					api.dfw_width(25);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   563
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   564
				if ( a && (45 == c || 109 == c || 189 == c) ) // -
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   565
					api.dfw_width(-25);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   566
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   567
				if ( a && 48 == c ) // 0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   568
					api.dfw_width(0);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   569
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   570
				return false;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   571
			});
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   572
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   573
			// word count in Text mode
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   574
			if ( typeof(wpWordCount) != 'undefined' ) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   575
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   576
				txtarea.keyup( function(e) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   577
					var k = e.keyCode || e.charCode;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   578
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   579
					if ( k == last )
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   580
						return true;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   581
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   582
					if ( 13 == k || 8 == last || 46 == last )
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   583
						$(document).triggerHandler('wpcountwords', [ txtarea.val() ]);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   584
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   585
					last = k;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   586
					return true;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   587
				});
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   588
			}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   589
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   590
			topbar.mouseenter(function(e){
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   591
				s.toolbars.addClass('fullscreen-make-sticky');
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   592
				$( document ).unbind( '.fullscreen' );
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   593
				clearTimeout( s.timer );
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   594
				s.timer = 0;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   595
			}).mouseleave(function(e){
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   596
				s.toolbars.removeClass('fullscreen-make-sticky');
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   597
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   598
				if ( s.visible )
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   599
					$( document ).bind( 'mousemove.fullscreen', function(e) { bounder( 'showToolbar', 'hideToolbar', 2000, e ); } );
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   600
			});
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   601
		},
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   602
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   603
		fade: function( before, during, after ) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   604
			if ( ! s.element )
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   605
				api.ui.init();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   606
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   607
			// If any callback bound to before returns false, bail.
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   608
			if ( before && ! ps.publish( before ) )
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   609
				return;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   610
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   611
			api.fade.In( s.element, 600, function() {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   612
				if ( during )
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   613
					ps.publish( during );
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   614
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   615
				api.fade.Out( s.element, 600, function() {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   616
					if ( after )
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   617
						ps.publish( after );
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   618
				})
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   619
			});
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   620
		}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   621
	};
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   622
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   623
	api.fade = {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   624
		transitionend: 'transitionend webkitTransitionEnd oTransitionEnd',
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   625
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   626
		// Sensitivity to allow browsers to render the blank element before animating.
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   627
		sensitivity: 100,
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   628
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   629
		In: function( element, speed, callback, stop ) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   630
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   631
			callback = callback || $.noop;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   632
			speed = speed || 400;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   633
			stop = stop || false;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   634
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   635
			if ( api.fade.transitions ) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   636
				if ( element.is(':visible') ) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   637
					element.addClass( 'fade-trigger' );
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   638
					return element;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   639
				}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   640
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   641
				element.show();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   642
				element.first().one( this.transitionend, function() {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   643
					callback();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   644
				});
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   645
				setTimeout( function() { element.addClass( 'fade-trigger' ); }, this.sensitivity );
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   646
			} else {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   647
				if ( stop )
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   648
					element.stop();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   649
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   650
				element.css( 'opacity', 1 );
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   651
				element.first().fadeIn( speed, callback );
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   652
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   653
				if ( element.length > 1 )
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   654
					element.not(':first').fadeIn( speed );
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   655
			}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   656
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   657
			return element;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   658
		},
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   659
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   660
		Out: function( element, speed, callback, stop ) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   661
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   662
			callback = callback || $.noop;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   663
			speed = speed || 400;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   664
			stop = stop || false;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   665
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   666
			if ( ! element.is(':visible') )
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   667
				return element;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   668
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   669
			if ( api.fade.transitions ) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   670
				element.first().one( api.fade.transitionend, function() {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   671
					if ( element.hasClass('fade-trigger') )
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   672
						return;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   673
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   674
					element.hide();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   675
					callback();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   676
				});
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   677
				setTimeout( function() { element.removeClass( 'fade-trigger' ); }, this.sensitivity );
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   678
			} else {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   679
				if ( stop )
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   680
					element.stop();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   681
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   682
				element.first().fadeOut( speed, callback );
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   683
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   684
				if ( element.length > 1 )
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   685
					element.not(':first').fadeOut( speed );
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   686
			}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   687
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   688
			return element;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   689
		},
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   690
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   691
		transitions: (function() { // Check if the browser supports CSS 3.0 transitions
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   692
			var s = document.documentElement.style;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   693
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   694
			return ( typeof ( s.WebkitTransition ) == 'string' ||
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   695
				typeof ( s.MozTransition ) == 'string' ||
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   696
				typeof ( s.OTransition ) == 'string' ||
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   697
				typeof ( s.transition ) == 'string' );
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   698
		})()
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   699
	};
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   700
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   701
	/**
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   702
	 * Resize API
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   703
	 *
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   704
	 * Automatically updates textarea height.
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   705
	 */
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   706
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   707
	api.bind_resize = function() {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   708
		$(s.textarea_obj).bind('keypress.grow click.grow paste.grow', function(){
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   709
			setTimeout( api.resize_textarea, 200 );
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   710
		});
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   711
	}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   712
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   713
	api.oldheight = 0;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   714
	api.resize_textarea = function() {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   715
		var txt = s.textarea_obj, newheight;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   716
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   717
		newheight = txt.scrollHeight > 300 ? txt.scrollHeight : 300;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   718
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   719
		if ( newheight != api.oldheight ) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   720
			txt.style.height = newheight + 'px';
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   721
			api.oldheight = newheight;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   722
		}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   723
	};
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   724
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   725
})(jQuery);