(function() {

	tinymce.create('tinymce.plugins.AdvancedLinkPlugin', {

		init : function(ed, url) {

			this.editor = ed;



			// Register commands

			ed.addCommand('mceAdvLink', function() {

				var se = ed.selection;



				// No selection and not in link

				if (se.isCollapsed() && se.getNode().nodeName != 'A')

					return;



				ed.windowManager.open({

					file : ed.getParam('site_url') + 'index.php?option=com_jce&task=plugin&plugin=advlink&file=advlink',

					width : 500 + ed.getLang('advlink.delta_width', 0),

					height : 480 + ed.getLang('advlink.delta_height', 0),

					inline : 1

				}, {

					plugin_url : url

				});

			});



			// Register buttons

			ed.addButton('advlink', {

				title : 'advlink.desc',

				cmd : 'mceAdvLink',

				image : url + '/img/advlink.gif'

			});



			ed.addShortcut('ctrl+k', 'advlink.desc', 'mceAdvLink');



			ed.onNodeChange.add(function(ed, cm, n, co) {

				cm.setDisabled('advlink', co && n.nodeName != 'A');

				cm.setActive('advlink', n.nodeName == 'A' && !n.name);

			});

			

			ed.onInit.add(function() {

				if (ed && ed.plugins.contextmenu) {

					ed.plugins.contextmenu.onContextMenu.add(function(th, m, e) {

						if((e.nodeName == 'A' && !ed.dom.getAttrib(e, 'name')) || !ed.selection.isCollapsed()){

							m.addSeparator();

							m.add({title : 'advlink.desc', icon_src : url + '/img/advlink.gif', cmd : 'mceAdvLink', ui : true});

							m.add({title : 'advanced.unlink_desc', icon : 'unlink', cmd : 'UnLink'});

						}

					});

				}

			});

		},



		getInfo : function() {

			return {

				longname : 'Advanced link',

				author : 'Moxiecode Systems AB',

				authorurl : 'http://tinymce.moxiecode.com',

				infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/advlink',

				version : tinymce.majorVersion + "." + tinymce.minorVersion

			};

		}

	});



	// Register plugin

	tinymce.PluginManager.add('advlink', tinymce.plugins.AdvancedLinkPlugin);

})();