/*******************************************************************************

* 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('quickformat', function(K) {

	var self = this, name = 'quickformat',

		blockMap = K.toMap('blockquote,center,div,h1,h2,h3,h4,h5,h6,p');

	function getFirstChild(knode) {

		var child = knode.first();

		while (child && child.first()) {

			child = child.first();

		}

		return child;

	}

	self.clickToolbar(name, function() {

		self.focus();

		var doc = self.edit.doc,

			range = self.cmd.range,

			child = K(doc.body).first(), next,

			nodeList = [], subList = [],

			bookmark = range.createBookmark(true);

		while(child) {

			next = child.next();

			var firstChild = getFirstChild(child);

			if (!firstChild || firstChild.name != 'img') {

				if (blockMap[child.name]) {

					child.html(child.html().replace(/^(\s|&nbsp;|　)+/ig, ''));

					child.css('text-indent', '2em');

				} else {

					subList.push(child);

				}

				if (!next || (blockMap[next.name] || blockMap[child.name] && !blockMap[next.name])) {

					if (subList.length > 0) {

						nodeList.push(subList);

					}

					subList = [];

				}

			}

			child = next;

		}

		K.each(nodeList, function(i, subList) {

			var wrapper = K('<p style="text-indent:2em;"></p>', doc);

			subList[0].before(wrapper);

			K.each(subList, function(i, knode) {

				wrapper.append(knode);

			});

		});

		range.moveToBookmark(bookmark);

		self.addBookmark();

	});

});



/**

--------------------------

abcd<br />

1234<br />



to



<p style="text-indent:2em;">

	abcd<br />

	1234<br />

</p>



--------------------------



&nbsp; abcd<img>1233

<p>1234</p>



to



<p style="text-indent:2em;">abcd<img>1233</p>

<p style="text-indent:2em;">1234</p>



--------------------------

*/