| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129 | /******************************************************************************** KindEditor - WYSIWYG HTML Editor for Internet* Copyright (C) 2006-2011 kindsoft.net** @author Roddy <luolonghao@gmail.com>* @site http://www.kindsoft.net/* @licence http://www.kindsoft.net/license.php*******************************************************************************/KindEditor.plugin('emoticons', function(K) {	var self = this, name = 'emoticons',		path = (self.emoticonsPath || self.basePath + 'plugins/emoticons/images/'),		allowPreview = self.allowPreviewEmoticons === undefined ? true : self.allowPreviewEmoticons,		currentPageNum = 1;	self.clickToolbar(name, function() {		var rows = 5, cols = 9, total = 135, startNum = 0,			cells = rows * cols, pages = Math.ceil(total / cells),			colsHalf = Math.floor(cols / 2),			wrapperDiv = K('<div class="ke-plugin-emoticons"></div>'),			elements = [],			menu = self.createMenu({				name : name,				beforeRemove : function() {					removeEvent();				}			});		menu.div.append(wrapperDiv);		var previewDiv, previewImg;		if (allowPreview) {			previewDiv = K('<div class="ke-preview"></div>').css('right', 0);			previewImg = K('<img class="ke-preview-img" src="' + path + startNum + '.gif" />');			wrapperDiv.append(previewDiv);			previewDiv.append(previewImg);		}		function bindCellEvent(cell, j, num) {			if (previewDiv) {				cell.mouseover(function() {					if (j > colsHalf) {						previewDiv.css('left', 0);						previewDiv.css('right', '');					} else {						previewDiv.css('left', '');						previewDiv.css('right', 0);					}					previewImg.attr('src', path + num + '.gif');					K(this).addClass('ke-on');				});			} else {				cell.mouseover(function() {					K(this).addClass('ke-on');				});			}			cell.mouseout(function() {				K(this).removeClass('ke-on');			});			cell.click(function(e) {				self.insertHtml('<img src="' + path + num + '.gif" border="0" alt="" />').hideMenu().focus();				e.stop();			});		}		function createEmoticonsTable(pageNum, parentDiv) {			var table = document.createElement('table');			parentDiv.append(table);			if (previewDiv) {				K(table).mouseover(function() {					previewDiv.show();				});				K(table).mouseout(function() {					previewDiv.hide();				});				elements.push(K(table));			}			table.className = 'ke-table';			table.cellPadding = 0;			table.cellSpacing = 0;			table.border = 0;			var num = (pageNum - 1) * cells + startNum;			for (var i = 0; i < rows; i++) {				var row = table.insertRow(i);				for (var j = 0; j < cols; j++) {					var cell = K(row.insertCell(j));					cell.addClass('ke-cell');					bindCellEvent(cell, j, num);					var span = K('<span class="ke-img"></span>')						.css('background-position', '-' + (24 * num) + 'px 0px')						.css('background-image', 'url(' + path + 'static.gif)');					cell.append(span);					elements.push(cell);					num++;				}			}			return table;		}		var table = createEmoticonsTable(currentPageNum, wrapperDiv);		function removeEvent() {			K.each(elements, function() {				this.unbind();			});		}		var pageDiv;		function bindPageEvent(el, pageNum) {			el.click(function(e) {				removeEvent();				table.parentNode.removeChild(table);				pageDiv.remove();				table = createEmoticonsTable(pageNum, wrapperDiv);				createPageTable(pageNum);				currentPageNum = pageNum;				e.stop();			});		}		function createPageTable(currentPageNum) {			pageDiv = K('<div class="ke-page"></div>');			wrapperDiv.append(pageDiv);			for (var pageNum = 1; pageNum <= pages; pageNum++) {				if (currentPageNum !== pageNum) {					var a = K('<a href="javascript:;">[' + pageNum + ']</a>');					bindPageEvent(a, pageNum);					pageDiv.append(a);					elements.push(a);				} else {					pageDiv.append(K('@[' + pageNum + ']'));				}				pageDiv.append(K('@ '));			}		}		createPageTable(currentPageNum);	});});
 |