/********************************************************************************
* file:		mrclean.js v1.3.030404 [ HTML Cleaning Object ]
* author:	Christopher Sheldon [ MicroAge Solutions www.microagesolutions.com ]
* notes:	Beta Build
*****/

function fMCSInitialize() {
	this.cleanOnPaste = fMCSCleanOnPaste;
	this.cleanFormat = fMCSCleanFormat;
	this.cleanFont = fMCSCleanFont;
	this.ignoreClass = new Array();
}

var oMRClean = new fMCSInitialize();

/********************************************************************************
* function:	fMCSCleanOnPaste(sHTML);
* notes:	
* returns:	String
*****/

function fMCSCleanOnPaste(sHTML) {
	var sCleaned = sHTML;
	var re = /<script[A-Z*0-9*"*'*=*\/*\s*.*\\*_*\-*]*>[A-Z*0-9*!*@*#*$*%*^*&*\**\(*\)*"*'*:*;*\+*\-*\[*\]*.*,*\{*\}*<*>*_*=*\/*\\*|*\?*~*`*\s]*<\/script>/ig;	
	var sCleaned = sCleaned.replace(re, '');											// Inline scripts
	var re = /<style[A-Z*0-9*"*'*=*\/*\s*.*\\*_*\-*]*>[A-Z*0-9*!*@*#*$*%*^*&*\**\(*\)*"*'*:*;*\+*\-*\[*\]*.*,*\{*\}*<*>*_*=*\/*\\*|*\?*~*`*\s]*<\/style>/ig;
	var sCleaned = sCleaned.replace(re, '');											// Inline style blocks
	var re = /<{1}\/{0,1}(img)[A-Z*0-9*_*\=*"*\s*\-*:*;*#*.*\/*]*>{1}\s*/ig;
	var sCleaned = sCleaned.replace(re, '');											// IMG tags
	var re = /\s*mso[A-Za-z0-9_*\-*]*:\s*[A-Za-z0-9_*\-*\s*.*]*(;|^"){0,1}/ig;			
	sCleaned = sCleaned.replace(re, '');												// MSO styles
	var re = /<\/{0,1}\?{0,1}[A-Z*0-9*]*:[A-Z*0-9*][A-Z*0-9*\=*_*"*.*,*:*;*\-*#*@*#*\s*]*\s*\/{0,1}>/ig;
	sCleaned = sCleaned.replace(re, '');												// Xml 
	var re = /class\="{0,1}[A-Z*0-9*_*\-*]*"{0,1}\s/ig;
	sCleaned = sCleaned.replace(re, '');												// Class names
	return fMCSCleanDefault(sCleaned);
}

/********************************************************************************
* function:	fMCSCleanFormat(sHTML);
* notes:
* returns:	String
*****/

function fMCSCleanFormat(sHTML) {
	var sCleaned = sHTML;
	var re = /<{1}\/{0,1}(span|div)[A-Z*0-9*_*\=*"*\s*\-*:*;*#*.*]*>{1}\s*/ig;
	var sCleaned = sCleaned.replace(re, '');											// Remove Span & Div tags
	var re = /\s(class|style)="{0,1}[A-Z*0-9*_*\=*"*\s*\-*:*'*;*#*.*%*]*"{0,1}/ig;
	sCleaned = sCleaned.replace(re, '');												// Remove style & class from tags
	
	// width & height attributes from table cells ?
	
	return fMCSCleanDefault(sCleaned);
}

/********************************************************************************
* function:	fMCSCleanFont(sHTML);
* notes:	
* returns:	String
*****/

function fMCSCleanFont(sHTML) {
	var sCleaned = sHTML;
	var re = /<{1}\/{0,1}font[A-Z*0-9*_*\=*"*\s*\-*:*;*#*.*]*>{1}\s*/ig;
	sCleaned = sCleaned.replace(re, '');												// Font tags
	
	// stylesheet font attributes patterns ?

	return fMCSCleanDefault(sCleaned);
}


/********************************************************************************
* function:	fMCSCleanDefault(sHTML);
* notes:	
* returns:	String
*****/

function fMCSCleanDefault(sHTML) {
	var sCleaned = sHTML;
	
	// cleanup of empty tags
	
	return sCleaned;
}