wp/wp-includes/js/wplink.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
var wpLink;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
     2
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
     3
(function($){
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
     4
	var inputs = {}, rivers = {}, ed, River, Query;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
     5
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
     6
	wpLink = {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
     7
		timeToTriggerRiver: 150,
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
     8
		minRiverAJAXDuration: 200,
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
     9
		riverBottomThreshold: 5,
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    10
		keySensitivity: 100,
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    11
		lastSearch: '',
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    12
		textarea: '',
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    13
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    14
		init : function() {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    15
			inputs.dialog = $('#wp-link');
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    16
			inputs.submit = $('#wp-link-submit');
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    17
			// URL
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    18
			inputs.url = $('#url-field');
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    19
			inputs.nonce = $('#_ajax_linking_nonce');
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    20
			// Secondary options
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    21
			inputs.title = $('#link-title-field');
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    22
			// Advanced Options
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    23
			inputs.openInNewTab = $('#link-target-checkbox');
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    24
			inputs.search = $('#search-field');
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    25
			// Build Rivers
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    26
			rivers.search = new River( $('#search-results') );
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    27
			rivers.recent = new River( $('#most-recent-results') );
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    28
			rivers.elements = $('.query-results', inputs.dialog);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    29
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    30
			// Bind event handlers
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    31
			inputs.dialog.keydown( wpLink.keydown );
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    32
			inputs.dialog.keyup( wpLink.keyup );
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    33
			inputs.submit.click( function(e){
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    34
				e.preventDefault();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    35
				wpLink.update();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    36
			});
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    37
			$('#wp-link-cancel').click( function(e){
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    38
				e.preventDefault();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    39
				wpLink.close();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    40
			});
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    41
			$('#internal-toggle').click( wpLink.toggleInternalLinking );
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    42
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    43
			rivers.elements.bind('river-select', wpLink.updateFields );
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    44
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    45
			inputs.search.keyup( wpLink.searchInternalLinks );
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    46
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    47
			inputs.dialog.bind('wpdialogrefresh', wpLink.refresh);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    48
			inputs.dialog.bind('wpdialogbeforeopen', wpLink.beforeOpen);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    49
			inputs.dialog.bind('wpdialogclose', wpLink.onClose);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    50
		},
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    51
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    52
		beforeOpen : function() {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    53
			wpLink.range = null;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    54
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    55
			if ( ! wpLink.isMCE() && document.selection ) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    56
				wpLink.textarea.focus();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    57
				wpLink.range = document.selection.createRange();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    58
			}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    59
		},
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    60
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    61
		open : function() {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    62
			if ( !wpActiveEditor )
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    63
				return;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    64
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    65
			this.textarea = $('#'+wpActiveEditor).get(0);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    66
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    67
			// Initialize the dialog if necessary (html mode).
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    68
			if ( ! inputs.dialog.data('wpdialog') ) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    69
				inputs.dialog.wpdialog({
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    70
					title: wpLinkL10n.title,
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    71
					width: 480,
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    72
					height: 'auto',
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    73
					modal: true,
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    74
					dialogClass: 'wp-dialog'
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    75
				});
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    76
			}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    77
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    78
			inputs.dialog.wpdialog('open');
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    79
		},
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    80
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    81
		isMCE : function() {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    82
			return tinyMCEPopup && ( ed = tinyMCEPopup.editor ) && ! ed.isHidden();
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
		refresh : function() {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    86
			// Refresh rivers (clear links, check visibility)
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    87
			rivers.search.refresh();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    88
			rivers.recent.refresh();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    89
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    90
			if ( wpLink.isMCE() )
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    91
				wpLink.mceRefresh();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    92
			else
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    93
				wpLink.setDefaultValues();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    94
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    95
			// Focus the URL field and highlight its contents.
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    96
			//     If this is moved above the selection changes,
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    97
			//     IE will show a flashing cursor over the dialog.
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    98
			inputs.url.focus()[0].select();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    99
			// Load the most recent results if this is the first time opening the panel.
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   100
			if ( ! rivers.recent.ul.children().length )
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   101
				rivers.recent.ajax();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   102
		},
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   103
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   104
		mceRefresh : function() {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   105
			var e;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   106
			ed = tinyMCEPopup.editor;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   107
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   108
			tinyMCEPopup.restoreSelection();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   109
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   110
			// If link exists, select proper values.
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   111
			if ( e = ed.dom.getParent(ed.selection.getNode(), 'A') ) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   112
				// Set URL and description.
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   113
				inputs.url.val( ed.dom.getAttrib(e, 'href') );
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   114
				inputs.title.val( ed.dom.getAttrib(e, 'title') );
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   115
				// Set open in new tab.
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   116
				inputs.openInNewTab.prop('checked', ( "_blank" == ed.dom.getAttrib( e, 'target' ) ) );
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   117
				// Update save prompt.
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   118
				inputs.submit.val( wpLinkL10n.update );
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   119
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   120
			// If there's no link, set the default values.
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   121
			} else {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   122
				wpLink.setDefaultValues();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   123
			}
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
		close : function() {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   127
			if ( wpLink.isMCE() )
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   128
				tinyMCEPopup.close();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   129
			else
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   130
				inputs.dialog.wpdialog('close');
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   131
		},
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   132
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   133
		onClose: function() {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   134
			if ( ! wpLink.isMCE() ) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   135
				wpLink.textarea.focus();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   136
				if ( wpLink.range ) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   137
					wpLink.range.moveToBookmark( wpLink.range.getBookmark() );
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   138
					wpLink.range.select();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   139
				}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   140
			}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   141
		},
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   142
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   143
		getAttrs : function() {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   144
			return {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   145
				href : inputs.url.val(),
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   146
				title : inputs.title.val(),
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   147
				target : inputs.openInNewTab.prop('checked') ? '_blank' : ''
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   148
			};
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   149
		},
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   150
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   151
		update : function() {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   152
			if ( wpLink.isMCE() )
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   153
				wpLink.mceUpdate();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   154
			else
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   155
				wpLink.htmlUpdate();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   156
		},
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   157
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   158
		htmlUpdate : function() {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   159
			var attrs, html, begin, end, cursor,
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   160
				textarea = wpLink.textarea;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   161
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   162
			if ( ! textarea )
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   163
				return;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   164
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   165
			attrs = wpLink.getAttrs();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   166
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   167
			// If there's no href, return.
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   168
			if ( ! attrs.href || attrs.href == 'http://' )
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   169
				return;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   170
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   171
			// Build HTML
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   172
			html = '<a href="' + attrs.href + '"';
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   173
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   174
			if ( attrs.title )
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   175
				html += ' title="' + attrs.title + '"';
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   176
			if ( attrs.target )
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   177
				html += ' target="' + attrs.target + '"';
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   178
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   179
			html += '>';
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   180
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   181
			// Insert HTML
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   182
			if ( document.selection && wpLink.range ) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   183
				// IE
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   184
				// Note: If no text is selected, IE will not place the cursor
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   185
				//       inside the closing tag.
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   186
				textarea.focus();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   187
				wpLink.range.text = html + wpLink.range.text + '</a>';
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   188
				wpLink.range.moveToBookmark( wpLink.range.getBookmark() );
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   189
				wpLink.range.select();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   190
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   191
				wpLink.range = null;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   192
			} else if ( typeof textarea.selectionStart !== 'undefined' ) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   193
				// W3C
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   194
				begin       = textarea.selectionStart;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   195
				end         = textarea.selectionEnd;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   196
				selection   = textarea.value.substring( begin, end );
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   197
				html        = html + selection + '</a>';
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   198
				cursor      = begin + html.length;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   199
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   200
				// If no next is selected, place the cursor inside the closing tag.
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   201
				if ( begin == end )
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   202
					cursor -= '</a>'.length;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   203
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   204
				textarea.value = textarea.value.substring( 0, begin )
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   205
				               + html
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   206
				               + textarea.value.substring( end, textarea.value.length );
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   207
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   208
				// Update cursor position
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   209
				textarea.selectionStart = textarea.selectionEnd = cursor;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   210
			}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   211
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   212
			wpLink.close();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   213
			textarea.focus();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   214
		},
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   215
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   216
		mceUpdate : function() {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   217
			var ed = tinyMCEPopup.editor,
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   218
				attrs = wpLink.getAttrs(),
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   219
				e, b;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   220
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   221
			tinyMCEPopup.restoreSelection();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   222
			e = ed.dom.getParent(ed.selection.getNode(), 'A');
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 the values are empty, unlink and return
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   225
			if ( ! attrs.href || attrs.href == 'http://' ) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   226
				if ( e ) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   227
					b = ed.selection.getBookmark();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   228
					ed.dom.remove(e, 1);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   229
					ed.selection.moveToBookmark(b);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   230
					tinyMCEPopup.execCommand("mceEndUndoLevel");
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   231
					wpLink.close();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   232
				}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   233
				return;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   234
			}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   235
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   236
			if (e == null) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   237
				ed.getDoc().execCommand("unlink", false, null);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   238
				tinyMCEPopup.execCommand("mceInsertLink", false, "#mce_temp_url#", {skip_undo : 1});
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   239
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   240
				tinymce.each(ed.dom.select("a"), function(n) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   241
					if (ed.dom.getAttrib(n, 'href') == '#mce_temp_url#') {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   242
						e = n;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   243
						ed.dom.setAttribs(e, attrs);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   244
					}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   245
				});
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   246
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   247
				// Sometimes WebKit lets a user create a link where
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   248
				// they shouldn't be able to. In this case, CreateLink
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   249
				// injects "#mce_temp_url#" into their content. Fix it.
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   250
				if ( tinymce.isWebKit && $(e).text() == '#mce_temp_url#' ) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   251
					ed.dom.remove(e);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   252
					e = null;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   253
				}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   254
			} else {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   255
				ed.dom.setAttribs(e, attrs);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   256
			}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   257
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   258
			// Move the caret if selection was not an image.
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   259
			if ( e && (e.childNodes.length != 1 || e.firstChild.nodeName != 'IMG') ) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   260
				ed.selection.select(e);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   261
				ed.selection.collapse(0);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   262
				tinyMCEPopup.storeSelection();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   263
			}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   264
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   265
			ed.execCommand("mceEndUndoLevel");
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   266
			wpLink.close();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   267
			ed.focus();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   268
		},
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   269
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   270
		updateFields : function( e, li, originalEvent ) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   271
			inputs.url.val( li.children('.item-permalink').val() );
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   272
			inputs.title.val( li.hasClass('no-title') ? '' : li.children('.item-title').text() );
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   273
			if ( originalEvent && originalEvent.type == "click" )
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   274
				inputs.url.focus();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   275
		},
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   276
		setDefaultValues : function() {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   277
			// Set URL and description to defaults.
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   278
			// Leave the new tab setting as-is.
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   279
			inputs.url.val('http://');
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   280
			inputs.title.val('');
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   281
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   282
			// Update save prompt.
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   283
			inputs.submit.val( wpLinkL10n.save );
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
		searchInternalLinks : function() {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   287
			var t = $(this), waiting,
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   288
				search = t.val();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   289
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   290
			if ( search.length > 2 ) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   291
				rivers.recent.hide();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   292
				rivers.search.show();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   293
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   294
				// Don't search if the keypress didn't change the title.
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   295
				if ( wpLink.lastSearch == search )
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   296
					return;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   297
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   298
				wpLink.lastSearch = search;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   299
				waiting = t.parent().find('.spinner').show();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   300
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   301
				rivers.search.change( search );
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   302
				rivers.search.ajax( function(){ waiting.hide(); });
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   303
			} else {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   304
				rivers.search.hide();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   305
				rivers.recent.show();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   306
			}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   307
		},
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   308
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   309
		next : function() {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   310
			rivers.search.next();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   311
			rivers.recent.next();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   312
		},
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   313
		prev : function() {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   314
			rivers.search.prev();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   315
			rivers.recent.prev();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   316
		},
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   317
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   318
		keydown : function( event ) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   319
			var fn, key = $.ui.keyCode;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   320
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   321
			switch( event.which ) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   322
				case key.UP:
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   323
					fn = 'prev';
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   324
				case key.DOWN:
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   325
					fn = fn || 'next';
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   326
					clearInterval( wpLink.keyInterval );
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   327
					wpLink[ fn ]();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   328
					wpLink.keyInterval = setInterval( wpLink[ fn ], wpLink.keySensitivity );
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   329
					break;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   330
				default:
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   331
					return;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   332
			}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   333
			event.preventDefault();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   334
		},
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   335
		keyup: function( event ) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   336
			var key = $.ui.keyCode;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   337
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   338
			switch( event.which ) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   339
				case key.ESCAPE:
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   340
					event.stopImmediatePropagation();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   341
					if ( ! $(document).triggerHandler( 'wp_CloseOnEscape', [{ event: event, what: 'wplink', cb: wpLink.close }] ) )
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   342
						wpLink.close();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   343
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   344
					return false;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   345
					break;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   346
				case key.UP:
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   347
				case key.DOWN:
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   348
					clearInterval( wpLink.keyInterval );
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   349
					break;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   350
				default:
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   351
					return;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   352
			}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   353
			event.preventDefault();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   354
		},
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   355
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   356
		delayedCallback : function( func, delay ) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   357
			var timeoutTriggered, funcTriggered, funcArgs, funcContext;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   358
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   359
			if ( ! delay )
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   360
				return func;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   361
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   362
			setTimeout( function() {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   363
				if ( funcTriggered )
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   364
					return func.apply( funcContext, funcArgs );
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   365
				// Otherwise, wait.
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   366
				timeoutTriggered = true;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   367
			}, delay);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   368
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   369
			return function() {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   370
				if ( timeoutTriggered )
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   371
					return func.apply( this, arguments );
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   372
				// Otherwise, wait.
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   373
				funcArgs = arguments;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   374
				funcContext = this;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   375
				funcTriggered = true;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   376
			};
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   377
		},
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   378
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   379
		toggleInternalLinking : function( event ) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   380
			var panel = $('#search-panel'),
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   381
				widget = inputs.dialog.wpdialog('widget'),
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   382
				// We're about to toggle visibility; it's currently the opposite
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   383
				visible = !panel.is(':visible'),
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   384
				win = $(window);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   385
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   386
			$(this).toggleClass('toggle-arrow-active', visible);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   387
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   388
			inputs.dialog.height('auto');
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   389
			panel.slideToggle( 300, function() {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   390
				setUserSetting('wplink', visible ? '1' : '0');
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   391
				inputs[ visible ? 'search' : 'url' ].focus();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   392
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   393
				// Move the box if the box is now expanded, was opened in a collapsed state,
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   394
				// and if it needs to be moved. (Judged by bottom not being positive or
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   395
				// bottom being smaller than top.)
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   396
				var scroll = win.scrollTop(),
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   397
					top = widget.offset().top,
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   398
					bottom = top + widget.outerHeight(),
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   399
					diff = bottom - win.height();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   400
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   401
				if ( diff > scroll ) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   402
					widget.animate({'top': diff < top ?  top - diff : scroll }, 200);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   403
				}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   404
			});
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   405
			event.preventDefault();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   406
		}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   407
	}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   408
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   409
	River = function( element, search ) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   410
		var self = this;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   411
		this.element = element;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   412
		this.ul = element.children('ul');
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   413
		this.waiting = element.find('.river-waiting');
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   414
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   415
		this.change( search );
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   416
		this.refresh();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   417
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   418
		element.scroll( function(){ self.maybeLoad(); });
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   419
		element.delegate('li', 'click', function(e){ self.select( $(this), e ); });
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   420
	};
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   421
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   422
	$.extend( River.prototype, {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   423
		refresh: function() {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   424
			this.deselect();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   425
			this.visible = this.element.is(':visible');
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   426
		},
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   427
		show: function() {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   428
			if ( ! this.visible ) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   429
				this.deselect();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   430
				this.element.show();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   431
				this.visible = true;
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
		hide: function() {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   435
			this.element.hide();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   436
			this.visible = false;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   437
		},
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   438
		// Selects a list item and triggers the river-select event.
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   439
		select: function( li, event ) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   440
			var liHeight, elHeight, liTop, elTop;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   441
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   442
			if ( li.hasClass('unselectable') || li == this.selected )
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   443
				return;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   444
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   445
			this.deselect();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   446
			this.selected = li.addClass('selected');
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   447
			// Make sure the element is visible
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   448
			liHeight = li.outerHeight();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   449
			elHeight = this.element.height();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   450
			liTop = li.position().top;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   451
			elTop = this.element.scrollTop();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   452
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   453
			if ( liTop < 0 ) // Make first visible element
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   454
				this.element.scrollTop( elTop + liTop );
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   455
			else if ( liTop + liHeight > elHeight ) // Make last visible element
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   456
				this.element.scrollTop( elTop + liTop - elHeight + liHeight );
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   457
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   458
			// Trigger the river-select event
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   459
			this.element.trigger('river-select', [ li, event, this ]);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   460
		},
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   461
		deselect: function() {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   462
			if ( this.selected )
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   463
				this.selected.removeClass('selected');
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   464
			this.selected = false;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   465
		},
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   466
		prev: function() {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   467
			if ( ! this.visible )
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   468
				return;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   469
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   470
			var to;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   471
			if ( this.selected ) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   472
				to = this.selected.prev('li');
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   473
				if ( to.length )
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   474
					this.select( to );
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   475
			}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   476
		},
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   477
		next: function() {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   478
			if ( ! this.visible )
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   479
				return;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   480
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   481
			var to = this.selected ? this.selected.next('li') : $('li:not(.unselectable):first', this.element);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   482
			if ( to.length )
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   483
				this.select( to );
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   484
		},
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   485
		ajax: function( callback ) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   486
			var self = this,
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   487
				delay = this.query.page == 1 ? 0 : wpLink.minRiverAJAXDuration,
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   488
				response = wpLink.delayedCallback( function( results, params ) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   489
					self.process( results, params );
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   490
					if ( callback )
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   491
						callback( results, params );
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   492
				}, delay );
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   493
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   494
			this.query.ajax( response );
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   495
		},
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   496
		change: function( search ) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   497
			if ( this.query && this._search == search )
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   498
				return;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   499
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   500
			this._search = search;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   501
			this.query = new Query( search );
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   502
			this.element.scrollTop(0);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   503
		},
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   504
		process: function( results, params ) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   505
			var list = '', alt = true, classes = '',
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   506
				firstPage = params.page == 1;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   507
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   508
			if ( !results ) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   509
				if ( firstPage ) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   510
					list += '<li class="unselectable"><span class="item-title"><em>'
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   511
					+ wpLinkL10n.noMatchesFound
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   512
					+ '</em></span></li>';
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   513
				}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   514
			} else {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   515
				$.each( results, function() {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   516
					classes = alt ? 'alternate' : '';
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   517
					classes += this['title'] ? '' : ' no-title';
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   518
					list += classes ? '<li class="' + classes + '">' : '<li>';
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   519
					list += '<input type="hidden" class="item-permalink" value="' + this['permalink'] + '" />';
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   520
					list += '<span class="item-title">';
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   521
					list += this['title'] ? this['title'] : wpLinkL10n.noTitle;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   522
					list += '</span><span class="item-info">' + this['info'] + '</span></li>';
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   523
					alt = ! alt;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   524
				});
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   525
			}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   526
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   527
			this.ul[ firstPage ? 'html' : 'append' ]( list );
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   528
		},
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   529
		maybeLoad: function() {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   530
			var self = this,
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   531
				el = this.element,
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   532
				bottom = el.scrollTop() + el.height();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   533
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   534
			if ( ! this.query.ready() || bottom < this.ul.height() - wpLink.riverBottomThreshold )
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   535
				return;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   536
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   537
			setTimeout(function() {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   538
				var newTop = el.scrollTop(),
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   539
					newBottom = newTop + el.height();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   540
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   541
				if ( ! self.query.ready() || newBottom < self.ul.height() - wpLink.riverBottomThreshold )
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   542
					return;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   543
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   544
				self.waiting.show();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   545
				el.scrollTop( newTop + self.waiting.outerHeight() );
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   546
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   547
				self.ajax( function() { self.waiting.hide(); });
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   548
			}, wpLink.timeToTriggerRiver );
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   549
		}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   550
	});
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   551
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   552
	Query = function( search ) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   553
		this.page = 1;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   554
		this.allLoaded = false;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   555
		this.querying = false;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   556
		this.search = search;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   557
	};
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   558
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   559
	$.extend( Query.prototype, {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   560
		ready: function() {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   561
			return !( this.querying || this.allLoaded );
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   562
		},
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   563
		ajax: function( callback ) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   564
			var self = this,
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   565
				query = {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   566
					action : 'wp-link-ajax',
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   567
					page : this.page,
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   568
					'_ajax_linking_nonce' : inputs.nonce.val()
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   569
				};
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   570
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   571
			if ( this.search )
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   572
				query.search = this.search;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   573
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   574
			this.querying = true;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   575
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   576
			$.post( ajaxurl, query, function(r) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   577
				self.page++;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   578
				self.querying = false;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   579
				self.allLoaded = !r;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   580
				callback( r, query );
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   581
			}, "json" );
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   582
		}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   583
	});
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   584
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   585
	$(document).ready( wpLink.init );
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   586
})(jQuery);