var StringUtils = function(){ return; }
/**
 * Formalise une chaine
 */
StringUtils.toFileName = function( pString, pReplacer ){
	var replacer = ( pReplacer == null ) ? "-" : pReplacer;
	str = pString.toLowerCase();
	str = html_entity_decode( str, "ENT_QUOTES" );
	accents = new Object();
	accents.o = new Array("Ò","Ó","Ô","Õ","Ö","Ø","ò","ó","ô","õ","ö","ø");
	accents.a = new Array("À","Á","Â","Ã","Ä","Å","à","á","â","ã","ä","å");
	accents.u = new Array("Ù","Ú","Û","Ü","ù","ú","û","ü");
	accents.e = new Array("È","É","Ê","Ë","è","é","ê","ë");
	accents.i = new Array("Ì","Í","Î","Ï","ì","í","î","ï");
	accents.n = new Array("Ñ","ñ" );
	accents.y = new Array("ÿ","Ÿ" );
	accents.c = new Array("Ç","ç" );
	var regex;
	for( var prop in accents ){
		for( var i = 0; i < accents[ prop ].length; i++ ){
			regex = new RegExp( "[" + accents[ prop ][ i ] + "]", "g" );
			str = str.replace( regex, prop );
		}			
	}
	str = str.split( " " ).join( replacer ); // Supression des espaces
	regex = new RegExp( "[^a-z0-9-_]", "g" );
	str = str.replace( regex, replacer ); //Remplace dans une chaîne tous les caractères non-alphanumériques par pReplacer
	regex = new RegExp( "(\\"+ replacer +")+", "g" );
	str = str.replace( regex, replacer ); //Remplace dans une chaîne les replacers multiples.
	return StringUtils.trim( str );
}
// Remplace toutes les occurences d'une chaine
StringUtils.replaceAll = function ( str, search, replacer ){
	while( str.indexOf( search ) != -1 ) str = str.replace( search, replacer );
	return str;
	}

/**
 * "Cache" une adresse mail aux crawlers de mail
 * @param	pPrename
 * @param	pName
 * @param	pProvider
 * @param	pExtension
 */
StringUtils.encodeMail = function( pPrename, pName, pProvider, pExtension ){
	var maboitepostale="<a href=mailto:";	
		maboitepostale += pPrename + pName + "@";
		maboitepostale += pProvider + "." + pExtension + ">";	
		return document.write( maboitepostale + "</a>" );
}
/**
 * 
 */
StringUtils.cut = function( pString, pCount ){
		var string = pString;
		string = string.replace( "\n", "" );
		string = string.replace( "\r", "" );
		string = StringUtils.stipTags( string );
		if( string.length >= pCount ){
			string = string.substr( 0, pCount );
			var whiteSpace = string.lastIndexOf( " " );
			string = string.substr( 0, whiteSpace )+"...";
		}
		return string;
	}
/**
 * Supprime les espaces blancs en debut et fin de chaine.
 * @param	pString [String]
 */
StringUtils.trim = function( pString ) {return pString.replace( /^\s+/g, '' ).replace( /\s+$/g, '' )}
StringUtils.isEmpty = function( pString ) {return ( pString.replace( /^\s+/g, '' ).replace( /\s+$/g, '' ) == "" );}
StringUtils.stripslashes = function( pString ) {	return ( pString + '' ).replace( /\0/g, '0' ).replace( /\\([\\'"])/g, '$1' );}
StringUtils.stipTags = function( pString ){return pString.replace(/(<([^>]+)>)/ig,"");}
StringUtils.encode_utf8 = function( pString ){	return unescape( encodeURIComponent( pString ) );}
StringUtils.decode_utf8 = function( pString ){	return decodeURIComponent( escape( pString ) );}
StringUtils.decode_html = function( pString ){return unescape( pString );}
StringUtils.toSimpleQuote = function( pString ){return pString.replace( new RegExp( "\"", "g" ), "'" );}
StringUtils.toDoubleQuote = function( pString ){return pString.replace( new RegExp( "'", "g" ), "\"" );}
/**
 * 
 */
StringUtils.encode_html = function( pString ){
     var string = escape( pString );
     string = string.replace(/\//g,"%2F");
     string = string.replace(/\?/g,"%3F");
     string = string.replace(/=/g,"%3D");
     string = string.replace(/&/g,"%26");
     return string = string.replace(/@/g,"%40");
}
/**
 * Remplace les quotes javascript.
 */
StringUtils.replaceMicrosoftQuotes = function( pString ){
	var reg = new RegExp( "«|»|“|”|&laquo;|&raquo;|&ldquo;|&rdquo;", "g" );
	var string = pString.replace( reg, "&quot;" );
	reg = new RegExp( "&rsquo;", "g" );
	return string.replace( reg, "&apos;" );
}
/**
 * 
 */
StringUtils.replaceMSWordTags = function( pString ){
	var str = pString.replace(/<o:p>\s*<\/o:p>/g, "") ;
	str = str.replace(/<o:p>.*?<\/o:p>/g, "&nbsp;") ;
	str = str.replace( /\s*mso-[^:]+:[^;"]+;?/gi, "" ) ;
	str = str.replace( /\s*MARGIN: 0cm 0cm 0pt\s*;/gi, "" ) ;
	str = str.replace( /\s*MARGIN: 0cm 0cm 0pt\s*"/gi, "\"" ) ;
	str = str.replace( /\s*TEXT-INDENT: 0cm\s*;/gi, "" ) ;
	str = str.replace( /\s*TEXT-INDENT: 0cm\s*"/gi, "\"" ) ;
	str = str.replace( /\s*TEXT-ALIGN: [^\s;]+;?"/gi, "\"" ) ;
	str = str.replace( /\s*PAGE-BREAK-BEFORE: [^\s;]+;?"/gi, "\"" ) ;
	str = str.replace( /\s*FONT-VARIANT: [^\s;]+;?"/gi, "\"" ) ;
	str = str.replace( /\s*tab-stops:[^;"]*;?/gi, "" ) ;
	str = str.replace( /\s*tab-stops:[^"]*/gi, "" ) ;
	str = str.replace( /\s*face="[^"]*"/gi, "" ) ;
	str = str.replace( /\s*face=[^ >]*/gi, "" ) ;
	str = str.replace( /\s*FONT-FAMILY:[^;"]*;?/gi, "" ) ;
	str = str.replace(/<(\w[^>]*) class=([^ |>]*)([^>]*)/gi, "<$1$3") ;
	str = str.replace( /<(\w[^>]*) style="([^\"]*)"([^>]*)/gi, "<$1$3" ) ;
	str = str.replace( /\s*style="\s*"/gi, '' ) ; 
	str = str.replace( /<SPAN\s*[^>]*>\s*&nbsp;\s*<\/SPAN>/gi, '&nbsp;' ) ; 
	str = str.replace( /<SPAN\s*[^>]*><\/SPAN>/gi, '' ) ; 
	str = str.replace(/<(\w[^>]*) lang=([^ |>]*)([^>]*)/gi, "<$1$3") ; 
	str = str.replace( /<SPAN\s*>(.*?)<\/SPAN>/gi, '$1' ) ; 
	str = str.replace( /<FONT\s*>(.*?)<\/FONT>/gi, '$1' ) ;
	str = str.replace(/<\\?\?xml[^>]*>/gi, "") ; 
	str = str.replace(/<\/?\w+:[^>]*>/gi, "") ; 
	str = str.replace( /<H\d>\s*<\/H\d>/gi, '' ) ;
	str = str.replace( /<H1([^>]*)>/gi, '' ) ;
	str = str.replace( /<H2([^>]*)>/gi, '' ) ;
	str = str.replace( /<H3([^>]*)>/gi, '' ) ;
	str = str.replace( /<H4([^>]*)>/gi, '' ) ;
	str = str.replace( /<H5([^>]*)>/gi, '' ) ;
	str = str.replace( /<H6([^>]*)>/gi, '' ) ;
	str = str.replace( /<\/H\d>/gi, '<br>' ) ; //remove this to take out breaks where Heading tags were 
	str = str.replace( /<(U|I|STRIKE)>&nbsp;<\/\1>/g, '&nbsp;' ) ;
	str = str.replace( /<(B|b)>&nbsp;<\/\b|B>/g, '' ) ;
	str = str.replace( /<([^\s>]+)[^>]*>\s*<\/\1>/g, '' ) ;
	str = str.replace( /<([^\s>]+)[^>]*>\s*<\/\1>/g, '' ) ;
	str = str.replace( /<([^\s>]+)[^>]*>\s*<\/\1>/g, '' ) ;
	//some RegEx code for the picky browsers
	var re = new RegExp("(<P)([^>]*>.*?)(<\/P>)","gi") ;
	str = str.replace( re, "<div$2</div>" ) ;
	var re2 = new RegExp("(<font|<FONT)([^*>]*>.*?)(<\/FONT>|<\/font>)","gi") ; 
	str = str.replace( re2, "<div$2</div>") ;
	str = str.replace( /size|SIZE = ([\d]{1})/g, '' ) ;
	return str ;
}