function _convertMiddots(div, search, class_name)
{
	var mdot = String.fromCharCode(183);
	var bull = String.fromCharCode(8226);
	var nodes, prevul, i, p, ul, li, np, cp;
	nodes = div.getElementsByTagName("p");
	for (i = 0; i < nodes.length; i++)
	{
		p = nodes[i];
		if ( p.innerHTML.indexOf(search) == 0 )
		{
			ul = new Element("ul");
			if ( class_name ) ul.className = class_name;
			li = new Element("li").update(p.innerHTML.replace(new RegExp('' + mdot+ '|'+ bull+ '|--list--|&nbsp;', "gi"), ''));
			ul.insert(li);
			np = p.nextSibling;
			while (np)
			{
				if ( np.nodeType == 3 && new RegExp('^\\s$', 'm').test(np.nodeValue) )
				{
					np = np.nextSibling;
					continue;
				}
				if ( search == mdot )
				{
					if ( np.nodeType == 1 && new RegExp('^o(\\s+|&nbsp;)').test(np.innerHTML) )
					{
						if ( !prevul )
						{
							prevul = ul;
							ul = new Element("ul");
							prevul.insert(ul);
						}
						np.update(np.innerHTML.replace(/^o/, ''));
					}
					else
					{
						if ( prevul )
						{
							ul = prevul;
							prevul = null;
						}
						if ( np.nodeType != 1 || np.innerHTML.indexOf(search) != 0 )
							break;
					}
				}
				else
				{
					if ( np.nodeType != 1 || np.innerHTML.indexOf(search) != 0 )
						break;
				}
				cp = np.nextSibling;
				li = new Element("li").update(np.innerHTML.replace(new RegExp('' + mdot + '|'+ bull+ '|--list--|&nbsp;',"gi"), ''));
				np.parentNode.removeChild(np);
				ul.insert(li);
				np = cp;
			}
			p.parentNode.replaceChild(ul, p);
			return true;
		}
	}
	return false;
}

function myCleaner(content)
{
	var i = 0;
	var bull = String.fromCharCode(8226);
	var middot = String.fromCharCode(183);
	var rl = new Array('\u2122','<sup>TM</sup>','\u2026','...','\x93|\x94|\u201c|\u201d','"','\x60|\x91|\x92|\u2018|\u2019','\'','\u2013|\u2014|\u2015|\u2212','-');
	
	for ( i = 0; i < rl.length; i += 2) content = content.replace(new RegExp(rl[i], 'gi'), rl[i + 1]);
	
	content = content.replace(new RegExp('<p class=MsoHeading.*?>(.*?)<\/p>','gi'), '<p><b>$1</b></p>'); // covert heading to strong 
	
	content = content.replace(new RegExp('tab-stops: list [0-9]+.0pt">', 'gi'), '">' + "--list--");
	content = content.replace(new RegExp(bull+ "(.*?)<BR>", "gi"), "<p>" + middot+ "$1</p>");
	content = content.replace(new RegExp('<SPAN style="mso-list: Ignore">',	'gi'), "<span>" + bull);
	content = content.replace(/<o:p><\/o:p>/gi, "");
	content = content.replace(new RegExp('<br style="page-break-before: always;.*>', 'gi'), '-- page break --');
	content = content.replace(/<!--([\s\S]*?)-->|<style>[\s\S]*?<\/style>/g, "");
	content = content.replace(/<(meta|link)[^>]+>/g, "");
	
	content = content.replace(new RegExp('<(\\w[^>]*) style="([^"]*)"([^>]*)', 'gi'), "<$1$3"); // remove styles
	
	content = content.replace(/<\/?font[^>]*>/gi, "");
	
	// will strip all class attributes from the pasted content.
	content = content.replace(/<(\w[^>]*) class=([^ |>]*)([^>]*)/gi, "<$1$3");
					
	var s = ""+ document.location;
	var l = "?.\\*[](){}+^$:";
	var o = "";
	for ( i = 0; i < s.length; i++)
	{
		var c = s.charAt(i);
		if ( l.indexOf(c) != -1 ) o += '\\' + c;
		else o += c;
	}
	content = content.replace(new RegExp('href="?' + o + '', 'gi'), 'href="' + window.location);
	
	content = content.replace(/<(\w[^>]*) lang=([^ |>]*)([^>]*)/gi, "<$1$3");
	content = content.replace(/<\\?\?xml[^>]*>/gi, "");
	content = content.replace(/<\/?\w+:[^>]*>/gi, "");
	content = content.replace(/-- page break --\s*<p>&nbsp;<\/p>/gi, "");
	content = content.replace(/-- page break --/gi, "");
	content = content.replace(/<\/?div[^>]*>/gi, "");

	var div = new Element("div").update(content);
	var className = "unIndentedList";
	while (this._convertMiddots(div, "--list--"));
	while (this._convertMiddots(div, middot, className));
	while (this._convertMiddots(div, bull));
	content = div.innerHTML;
	
	content = content.replace(/--list--/gi, "");
	alert(content);
	document.getElementById("text").value = content;
}
