 var fieldFocused = null;
 var locked = false;
 
 /**
  * Cria uma ancora via javascript
  * texto - o texto do link da ancora.
  * a - a ancora.
  */
 function ancora(texto,a) {
   document.write("<a href='"+window.location+"#"+a+"'>"+texto+"</a>");
 }

 /**
  * Efetua a conversao de uma moeda em real para double.
  */
 function parseMoneyToDouble(money) {
   
   if (money!=null) {
      var conv = money.replace(',','.');
      var val = "";
      var pt = false;
      for (var i=conv.length-1;i>=0;i--) {
		if ((!pt && conv.charAt(i)=='.') || (conv.charAt(i)>='0' && conv.charAt(i)<='9')) {
			if (conv.charAt(i)=='.') {
				pt = true;
			}
			val = val + conv.charAt(i);
		}
      } // for.
      
      return val!="" ? reverse(val) : "0.0";
   }
   
   return null;
   
 }
 
 /**
  * Reverte uma string.
  */
 function reverse(str) {
   if (!str) return '';
   
   var revstr='';
   
   for (i = str.length-1; i>=0; i--)
       revstr+=str.charAt(i)
       
   return revstr;
 }
 
/** 
 * Formata um numero em moeda R$.
 */
 
function formatCurrency(num) {
	num = num.toString().replace(/\$|\,/g,'');
	if(isNaN(num))
		num = "0";
	sign = (num == (num = Math.abs(num)));
	num = Math.floor(num*100+0.50000000001);
	cents = num%100;
	num = Math.floor(num/100).toString();
	if(cents<10)
	cents = "0" + cents;
	for (var i = 0; i < Math.floor((num.length-(1+i))/3); i++)
	num = num.substring(0,num.length-(4*i+3))+'.'+
	num.substring(num.length-(4*i+3));
	return (((sign)?'':'-') + num + ',' + cents);
}
 
/**
 * Habilita ou desabilita todos os botoes do formulario (incluindo botoes de submissao e reset).
 */ 
function enableDisableAllFormButtons(theForm,operation) {

   for (var i=0;i<theForm.elements.length;i++) {
   
      if (theForm.elements[i].type.indexOf('button')!=-1 ||
      	  theForm.elements[i].type.indexOf('submit')!=-1 ||
      	  theForm.elements[i].type.indexOf('reset')!=-1) {
      	  
      	  if (operation = "disable" ) {
	      	  theForm.elements[i].disabled = true;
	      } else  
      	  if (operation = "enable" ) {
	      	  theForm.elements[i].disabled = false;
	      }   
      } 
      
   } // for.
}

/**
 * Contador para dados digitados em um campo de texto de um formulario.
 */ 
function textCounter( field, countfield, maxlimit ) {
  if ( field.value.length > maxlimit )
  {
    field.value = field.value.substring( 0, maxlimit );
//    alert( 'Textarea value can only be 255 characters in length.' );
    return false;
  }
  else
  {
    countfield.value = maxlimit - field.value.length;
  }
}
 
// Dado um radio button passado como parametro retorna o valor correspondente ou null caso nao tiver sido definido.
function getRadioValue(theRadio) {
  var indexChecked = -1;
  for (i=0;i<theRadio.length;i++){
   if (theRadio[i].checked==true) {
    indexChecked=i;
    break;
   } 
  } // for.

  return indexChecked!=-1 ? theRadio[indexChecked].value : null;  
}


// Coloca o foco no primeiro campo que estiver habilitado e nao estiver em branco
function focusOnFirstEmptyField(theForm) {

   for (var i=0;i<theForm.elements.length;i++) {
	     if (theForm.elements[i].disabled == true || theForm.elements[i].type.indexOf('hidden')!=-1) continue;
	   
  //     if (theForm.elements[i].type.indexOf('text')!=-1) {
         if (trim(theForm.elements[i].value).length==0) {
     //    	alert("focando elemento: "+theForm.elements[i].name);
			theForm.elements[i].focus();
			break;
         } 
	 //  } 
	      	
   } // for.
}

// Funcao que verifica se todos os campos textos do formulario estao vazios.
function areTextsInFormBlanks(theForm) {
 var blank = true;
 
 for (var i=0;blank && i<theForm.elements.length;i++) {
     if (theForm.elements[i].type=='text' || 
     	 theForm.elements[i].type=='textarea') {
     	 blank = blank && trim(theForm.elements[i].value).length==0;
     } 
  } // for.
  
  return blank;
}

// Funcao para impressao
 function printWindow(){
	browserVersion = parseInt(navigator.appVersion)
	if (browserVersion >= 4) window.print()
 }

// Trim whitespace from left and right sides of s.
function trim(s) {
      return s.replace( /^\s*/, "" ).replace( /\s*$/, "" );
}

// Trim os campos textos e capitaliza os text-fields.
function trimAndUpperCaseForm(theForm) {
  for (var i=0;i<theForm.elements.length;i++) {
     if (theForm.elements[i].type=='text' || 
     	 theForm.elements[i].type=='textarea') {
     	 theForm.elements[i].value = trim(theForm.elements[i].value);
     	 if (theForm.elements[i].type=='text') {
     	   if (theForm.elements[i].name.toLowerCase().indexOf("url")!=-1) continue;
     	   theForm.elements[i].value = theForm.elements[i].name.toLowerCase().indexOf("email")!=-1 || theForm.elements[i].name.toLowerCase().indexOf("login")!=-1 ?  theForm.elements[i].value.toLowerCase() : theForm.elements[i].value.toUpperCase();
     	 }
     } 
  } // for.
}

// Trim todos os campos textos de um formulario.
function trimForm(theForm) {

  for (var i=0;i<theForm.elements.length;i++) {
     if (theForm.elements[i].type=='text' || 
     	 theForm.elements[i].type=='textarea') {
     	 theForm.elements[i].value = trim(theForm.elements[i].value);
     } 
  } // for.
  
}

/*
 * Esta funcao seleciona o option do select a partir do valor:
 */
 function setOptionValue(obj,value) {
   if (obj!=null) {
 		for (var i=0;i<obj.options.length;i++) {
			if (obj.options[i].value == value) {
			    obj.selectedIndex = i;
			    break;
			}	
		} // for      
   }
 }
 
/*
 * Esta funcao vasculha o historico de URLs do browser e retorna a ultima URL diferente da pagina atual.
 */
function do_back() {
 //alert('Tamanho do history:'+history.length);
 for (var i=1;i<window.history.length;i++) {
    alert("laco "+i+": "+window.history[i]);
    /*
    history = history.previous;
    alert("history="+history.current+",href atual="+location.href);
    if (history.current != location.href) {
       alert("Diferentes!");
       history.go(history.current);
       break;
    }
    */
 }
}
/*
 * Esta funcao limpa os campos do formulario passado como parametro.
 */
function reset(theForm) {
  if (theForm==null) {
     theForm = document.forms[0];
  }
  for (var i=0;i<theForm.elements.length;i++) {
     if (theForm.elements[i].type=='text' || 
     	 theForm.elements[i].type=='textarea') {
     	 theForm.elements[i].value = "";
     } else 
     if (theForm.elements[i].type=='checkbox') {
        theForm.elements[i].checked = false;
     } else
     if (theForm.elements[i].type=='radio' || 
     	 theForm.elements[i].type=='select') {
        theForm.elements[i].selected = false;
     } 
  } // for.
}

/* Function for showing and hiding elements that use 'display:none' to hide */
function toggleDisplay(targetId) {
   if (document.getElementById) {
       target = document.getElementById(targetId);
       if (target.style.display == "none"){
           target.style.display = "";
       } else {
           target.style.display = "none";
       }
   }
} 

 function checkUncheck(controllerObj,checkboxesStr) {
   var formFound = false;
   for (var f=0;!formFound && f<document.forms.length;f++) {
      for (var e=0;e<document.forms[f].elements.length;e++) {
         if (document.forms[f].elements[e].type=='checkbox' && (checkboxesStr==null || document.forms[f].elements[e].name==checkboxesStr)) {
            formFound = true;
            document.forms[f].elements[e].checked = controllerObj.checked;
         }
      } // for e.
   } // for f.
 }
 
 function focusField(field) {
    if (field!=null && (fieldFocused==null || field.name != fieldFocused.name) ) {
      	  var found = false;
	      for (var f=0;!found && f<document.forms.length;f++) {
      		 for (i=0;!found && i<document.forms[f].elements.length;i++) {
      		     if (document.forms[f].elements[i].name == field.name) {
			          fieldFocused = field;
			          locked = true;
			          found = true;
      		     } 
      		 } // for i.
      	  } // for f.
    }
    
 }

 /**
  * Da um forward para o proximo campo.
  * @param field - O campo atual.
  * @param enabled - Se esta funcionalidade esta habilitada.
  * @param force - Se forca passar para o outro campo mesmo que nao se tenha completado o maximo que o campo atual permite.
  */
 function forwardField(field,enabled,force) {
    if (enabled && field!=null) {
       var maxsize = (field.maxLength>0) ? field.maxLength : field.size;
       var pos = field.value.length;
       
   //    alert (field.name+": maxsize="+maxsize+", pos="+pos);
   //    alert("locked : "+locked);
       
       if (force || (pos>=maxsize && !locked)) {
          //alert("Max size reached:"+maxsize);
      	  var found = false;
	      for (var f=0;!found && f<document.forms.length;f++) {
	          var i = getElementsIndex(document.forms[f],field.name);
	          if (i==-1) continue;
		 
	          while (i!=-1 && (i+1 < document.forms[f].elements.length) && (document.forms[f].elements[i+1].disabled || document.forms[f].elements[i+1].type=='hidden')) { i++; }        
	          
	          if (i+1 < document.forms[f].elements.length) {
	          	//alert ("atual elements name:"+document.forms[f].elements[i+1].name+" disabled: "+document.forms[f].elements[i+1].disabled);
	          	document.forms[f].elements[i+1].focus();
	          	document.forms[f].elements[i+1].select();
	          	found = true;
	          }
	          
	          
	      } // for f.
       }	
       
       locked = false;
    }
 }
 
 /**
  * Da um forward para o proximo campo.
  * @param field - O campo atual.
  * @param enabled - Se esta funcionalidade esta habilitada.
  * @param force - Se forca passar para o outro campo mesmo que nao se tenha completado o maximo que o campo atual permite.
  */
 
 function forwardFieldFichaAluno(field) {
	    if (field!=null) {
	       var maxsize = (field.maxLength>0) ? field.maxLength : field.size;
	      	  var found = false;
		      for (var f=0;!found && f<document.forms.length;f++) {
		          var i = getElementsIndex(document.forms[f],field);
		          if (i==-1) continue;
		          while (i!=-1 && (i+1 < document.forms[f].elements.length) && (document.forms[f].elements[i+1].disabled || document.forms[f].elements[i+1].type=='hidden')) { i++; }        
		          
		          if (i+1 < document.forms[f].elements.length) {
		          	document.forms[f].elements[i+1].focus();
		          	document.forms[f].elements[i+1].select();
		          	found = true;
		          }
		          
		      } // for f.
	       locked = false;
	    }
	 }
 
 function getElementsIndex(form,fieldname) {
    
    if (form==null) {
      form = document.forms[0];
    }
    
    for (var i=0;i<form.elements.length;i++) {
        if (form.elements[i].name == fieldname) {
           return i;
        }
    }
    
    return -1;
 }
 
 /*
  * Coloca os dados de um determinado campo de um formulario em letra maiuscula.
  */
 function toUppercase(field) {
    if (field!=null) {
      	  var found = false;
	      for (var f=0;!found && f<document.forms.length;f++) {
      		 for (i=0;!found && i<document.forms[f].elements.length;i++) {
      		     if (document.forms[f].elements[i].name == field.name) {
      		          document.forms[f].elements[i].value =  document.forms[f].elements[i].value.toUpperCase();
			          found = true;
      		     } 
      		 } // for i.
      	  } // for f.
    }
 }
 
 /*
  * Coloca os dados de um determinado campo de um formulario em letra minuscula.
  */
 function toLowercase(field) {
    if (field!=null) {
      	  var found = false;
	      for (var f=0;!found && f<document.forms.length;f++) {
      		 for (i=0;!found && i<document.forms[f].elements.length;i++) {
      		     if (document.forms[f].elements[i].name == field.name) {
      		          document.forms[f].elements[i].value =  document.forms[f].elements[i].value.toLowerCase();
			          found = true;
      		     } 
      		 } // for i.
      	  } // for f.
    }
 }
 
 function filterField(field,ignore) {
    if (field!=null && !ignore) {
      	  var found = false;
	      for (var f=0;!found && f<document.forms.length;f++) {
      		 for (i=0;!found && i<document.forms[f].elements.length;i++) {
      		     if (document.forms[f].elements[i].name == field.name) {
      		         field.value = filterString(document.forms[f].elements[i].value,ignore);
			         found = true;
      		     } 
      		 } // for i.
      	  } // for f.
    }
    
 }

  
 function filterString(str,ignore) {
    var newstr = "";
    if (!ignore) {
    
	  for (var i=0;i<str.length;i++) {
		
	      var code = charcode(str.charAt(i));
	      //alert('charcode from '+str.charAt(i)+':'+code);

		  if ( code >= 192 && code<=195) {
		    newstr = newstr + "A";
		  } else
		  if ( code >= 224 && code<=227) { 
		    newstr = newstr + "a";
		  } else
	  	  if (code >= 200 && code<=202) {
		    newstr = newstr + "E";
	      } else
	      if ( code >= 232 && code<=234) {
	    	newstr = newstr + "e";
	   	  } else
	  	  if ( code >= 204 && code<=206) {
	    	newstr = newstr + "I";
	   	  } else
	  	  if ( code >= 236 && code<=238) {
	  	  	newstr = newstr + "i";
	  	  } else
	  	  if (code >= 210 && code<=213) {
	    	newstr = newstr + "O";
	      } else
	  	  if (code >= 242 && code<=245) {
	  	  	newstr = newstr + "o";
	  	  } else
	  	  if (code >= 217 && code<=219) {
	  	  	newstr = newstr + "U";
	  	  } else
	  	  if (code >= 249 && code<=251) {
	  	  	newstr = newstr + "u";
	  	  } else
	  	  if (code == 199) {
	  	  	newstr = newstr + "C";
	  	  } else 
	  	  if (code == 231) {
	  	  	newstr = newstr + "c";
	  	  } else {
	    	newstr = newstr + ""+str.charAt(i);
	      }
      
       } // for.
    }
    return newstr;
 }
 
 function charcode(ch) {
   var character = ""+ch;
   return character.charCodeAt(0);       
 }
 
 function filterChar(newch,ch,ignore) {
    
    if (!ignore) {
  
      var code = charcode(ch);
      //      alert('charcode from '+ch+':'+code);
      
	  if ( code >= 192 && code<=195) { //����
	     return 'A';
	  } else 
	  if ( code >= 224 && code<=227) { //����
	    return 'a';
	  } else
	  if ( code >= 200 && code<=202) { //���
	    newch = "E";
	  } else
	  if ( code >= 232 && code<=234) { //���
	    return 'e';
	  } else
	  if ( code >= 204 && code<=206) { //���
	    return 'I';
	  } else
	  if ( code >= 236 && code<=238) { //���
	    return 'i';
	  } else
	  if (code >= 210 && code<=213) { //����
	    return 'O';
	  } else
	  if (code >= 242 && code<=245) { //����
	    return 'o';
	  } else
	  if (code >= 217 && code<=219) { //���
	    return 'U';
	  } else
	  if (code >= 249 && code<=251) { //���
	    return 'u';
	  } else
	  if (code == 199) { //�
	    return 'C';
	  } else 
	  if (code == 231) { //�
	    return 'c';
	  } else {
	    return ch;
	  }
	  
   }
 }
 
 /**
  * Esta funcao habilita/desabilita os campos passados no 1o parametro e separados por virgulas.
  */
 function toggleFields(fields,disabled) {
    var tokenField = fields.tokenize(","," ",true);
  //  alert("number of tokens: "+tokenField.length);
    
    for (var i=0;i<tokenField.length;i++) {
        var found = false;
	    for (var f=0;!found && f<document.forms.length;f++) {
	      for (j=0;!found && j<document.forms[f].elements.length;j++) {
		        if (document.forms[f].elements[j].name == tokenField[i]) {
			 //   	alert("element name: "+document.forms[f].elements[j].name);
			    	document.forms[f].elements[j].disabled = disabled;
			    	found = true;
			    }
	      } // for j.
	    } // for f.
    } // for i.
    
}
 
 function showHiddenItem(itemId) {
	 document.getElementById(itemId).style.display = "block";
 }
 
 function hiddenItem(itemId) {
	 document.getElementById(itemId).style.display = "none";
 }
 
function VerificaData(obj)	{
	var bissexto = 0;
	var data = obj.value; 
	var tam = data.length;
	if (tam == 10) {
		var dia = data.substr(0,2);
		var mes = data.substr(3,2);
		var ano = data.substr(6,4);
		if ((ano > 1900)||(ano < 2100)) {
			switch (mes) {
                                case '01':
                                case '03':
                                case '05':
                                case '07':
                                case '08':
                                case '10':
                                case '12':
                                        if  (dia <= 31) 
                                        {
                                                return true;
                                        }
                                        break
                                
                                case '04':              
                                case '06':
                                case '09':
                                case '11':
                                        if  (dia <= 30) 
                                        {
                                                return true;
                                        }
                                        break
                                case '02':
                                        /* Validando ano Bissexto / fevereiro / dia */ 
                                        if ((ano % 4 == 0) || (ano % 100 == 0) || (ano % 400 == 0)) 
                                        { 
                                                bissexto = 1; 
                                        } 
                                        if ((bissexto == 1) && (dia <= 29)) 
                                        { 
                                                return true;                             
                                        } 
                                        if ((bissexto != 1) && (dia <= 28)) 
                                        { 
                                                return true; 
                                        }                       
                                        break                                        
                        }
		}
	}       
        
        return false;
}

/**
 * Efetua a mascara da moeda com pontos e duas casas decimais.
 * Para chama-lo, use o seguinte evento:
 * onKeyPress="return(formataMoeda(this,'.',',',event))"
 * Referencia:
 * http://fellipeeduardo.com/blog/formatar-moeda-com-javascript-onkeypress/pt/
 */ 
function formataMoeda(objTextBox, SeparadorMilesimo, SeparadorDecimal, e){
    var sep = 0;
    var key = '';
    var i = j = 0;
    var len = len2 = 0;
    var strCheck = '0123456789';
    var aux = aux2 = '';
    var whichCode = (window.Event) ? e.which : e.keyCode;
    // 13=enter, 8=backspace as demais retornam 0(zero)
    // whichCode==0 faz com que seja possivel usar todas as teclas como delete, setas, etc
    if ((whichCode == 13) || (whichCode == 0) || (whichCode == 8))
    	return true;
    key = String.fromCharCode(whichCode); // Valor para o código da Chave

    if (strCheck.indexOf(key) == -1)
    	return false; // Chave invalida
    len = objTextBox.value.length;
    for(i = 0; i < len; i++)
        if ((objTextBox.value.charAt(i) != '0') && (objTextBox.value.charAt(i) != SeparadorDecimal))
        	break;
    aux = '';
    for(; i < len; i++)
        if (strCheck.indexOf(objTextBox.value.charAt(i))!=-1)
        	aux += objTextBox.value.charAt(i);
    aux += key;
    len = aux.length;
    if (len == 0)
    	objTextBox.value = '';
    if (len == 1)
    	objTextBox.value = '0'+ SeparadorDecimal + '0' + aux;
    if (len == 2)
    	objTextBox.value = '0'+ SeparadorDecimal + aux;
    if (len > 2) {
        aux2 = "";
        for (j = 0, i = len - 3; i >= 0; i--) {
            if (j == 3) {
                aux2 += SeparadorMilesimo;
                j = 0;
            }
            aux2 += aux.charAt(i);
            j++;
        }
        objTextBox.value = "";
        len2 = aux2.length;
        for (i = len2 - 1; i >= 0; i--)
        	objTextBox.value += aux2.charAt(i);
        objTextBox.value += SeparadorDecimal + aux.substr(len - 2, len);
    }
    return false;
}
 
 /**
  * Seleciona todos os valores do campo.
  */
 function selectAll(field) {
    field.focus();
    field.select();
 }


function CleanWordTeste( oNode, bIgnoreFont, bRemoveStyles )
{
	var html = document.getElementById(oNode).value ;

	html = html.replace(/<o:p>\s*<\/o:p>/g, '') ;
	html = html.replace(/<o:p>[\s\S]*?<\/o:p>/g, '&nbsp;') ;

	// Remove mso-xxx styles.
	html = html.replace( /\s*mso-[^:]+:[^;"]+;?/gi, '' ) ;

	// Remove margin styles.
	html = html.replace( /\s*MARGIN: 0cm 0cm 0pt\s*;/gi, '' ) ;
	html = html.replace( /\s*MARGIN: 0cm 0cm 0pt\s*"/gi, "\"" ) ;

	html = html.replace( /\s*TEXT-INDENT: 0cm\s*;/gi, '' ) ;
	html = html.replace( /\s*TEXT-INDENT: 0cm\s*"/gi, "\"" ) ;

	html = html.replace( /\s*TEXT-ALIGN: [^\s;]+;?"/gi, "\"" ) ;

	html = html.replace( /\s*PAGE-BREAK-BEFORE: [^\s;]+;?"/gi, "\"" ) ;

	html = html.replace( /\s*FONT-VARIANT: [^\s;]+;?"/gi, "\"" ) ;

	html = html.replace( /\s*tab-stops:[^;"]*;?/gi, '' ) ;
	html = html.replace( /\s*tab-stops:[^"]*/gi, '' ) ;

	// Remove FONT face attributes.
	if ( bIgnoreFont )
	{
		html = html.replace( /\s*face="[^"]*"/gi, '' ) ;
		html = html.replace( /\s*face=[^ >]*/gi, '' ) ;

		html = html.replace( /\s*FONT-FAMILY:[^;"]*;?/gi, '' ) ;
	}

	// Remove Class attributes
	html = html.replace(/<(\w[^>]*) class=([^ |>]*)([^>]*)/gi, "<$1$3") ;

	// Remove styles.
	if ( bRemoveStyles )
		html = html.replace( /<(\w[^>]*) style="([^\"]*)"([^>]*)/gi, "<$1$3" ) ;

	// Remove style, meta and link tags
	html = html.replace( /<STYLE[^>]*>[\s\S]*?<\/STYLE[^>]*>/gi, '' ) ;
	html = html.replace( /<(?:META|LINK)[^>]*>\s*/gi, '' ) ;

	// Remove empty styles.
	html =  html.replace( /\s*style="\s*"/gi, '' ) ;

	html = html.replace( /<SPAN\s*[^>]*>\s*&nbsp;\s*<\/SPAN>/gi, '&nbsp;' ) ;

	html = html.replace( /<SPAN\s*[^>]*><\/SPAN>/gi, '' ) ;

	// Remove Lang attributes
	html = html.replace(/<(\w[^>]*) lang=([^ |>]*)([^>]*)/gi, "<$1$3") ;

	html = html.replace( /<SPAN\s*>([\s\S]*?)<\/SPAN>/gi, '$1' ) ;

	html = html.replace( /<FONT\s*>([\s\S]*?)<\/FONT>/gi, '$1' ) ;

	// Remove XML elements and declarations
	html = html.replace(/<\\?\?xml[^>]*>/gi, '' ) ;

	// Remove w: tags with contents.
	html = html.replace( /<w:[^>]*>[\s\S]*?<\/w:[^>]*>/gi, '' ) ;

	// Remove Tags with XML namespace declarations: <o:p><\/o:p>
	html = html.replace(/<\/?\w+:[^>]*>/gi, '' ) ;

	// Remove comments [SF BUG-1481861].
	html = html.replace(/<\!--[\s\S]*?-->/g, '' ) ;

	html = html.replace( /<(U|I|STRIKE)>&nbsp;<\/\1>/g, '&nbsp;' ) ;

	html = html.replace( /<H\d>\s*<\/H\d>/gi, '' ) ;

	// Remove "display:none" tags.
	html = html.replace( /<(\w+)[^>]*\sstyle="[^"]*DISPLAY\s?:\s?none[\s\S]*?<\/\1>/ig, '' ) ;

	// Remove language tags
	html = html.replace( /<(\w[^>]*) language=([^ |>]*)([^>]*)/gi, "<$1$3") ;

	// Remove onmouseover and onmouseout events (from MS Word comments effect)
	html = html.replace( /<(\w[^>]*) onmouseover="([^\"]*)"([^>]*)/gi, "<$1$3") ;
	html = html.replace( /<(\w[^>]*) onmouseout="([^\"]*)"([^>]*)/gi, "<$1$3") ;

	html = html.replace( /<H1([^>]*)>/gi, '<div$1><b><font size="6">' ) ;
	html = html.replace( /<H2([^>]*)>/gi, '<div$1><b><font size="5">' ) ;
	html = html.replace( /<H3([^>]*)>/gi, '<div$1><b><font size="4">' ) ;
	html = html.replace( /<H4([^>]*)>/gi, '<div$1><b><font size="3">' ) ;
	html = html.replace( /<H5([^>]*)>/gi, '<div$1><b><font size="2">' ) ;
	html = html.replace( /<H6([^>]*)>/gi, '<div$1><b><font size="1">' ) ;

	html = html.replace( /<\/H\d>/gi, '<\/font><\/b><\/div>' ) ;

	// Transform <P> to <DIV>
	var re = new RegExp( '(<P)([^>]*>[\\s\\S]*?)(<\/P>)', 'gi' ) ;	// Different because of a IE 5.0 error
	html = html.replace( re, '<div$2<\/div>' ) ;

	// Remove empty tags (three times, just to be sure).
	// This also removes any empty anchor
	html = html.replace( /<([^\s>]+)(\s[^>]*)?>\s*<\/\1>/g, '' ) ;
	html = html.replace( /<([^\s>]+)(\s[^>]*)?>\s*<\/\1>/g, '' ) ;
	html = html.replace( /<([^\s>]+)(\s[^>]*)?>\s*<\/\1>/g, '' ) ;

	return html ;
}

