function StringBuffer() { 
   this.buffer = []; 
   this.m_len = 0;
} 

 StringBuffer.prototype.append = function append(string) { 
   //this.buffer.push(string); 
   this.buffer[this.m_len++] = string;
   return this; 
 }; 
 StringBuffer.prototype.isEmpty = function isEmpty() { 
 	return (this.buffer.length==0)
 };
 ; 
 StringBuffer.prototype.clean = function clean() { 
 	delete this.buffer;
 	this.buffer = [];
 };

 StringBuffer.prototype.toString = function toString() { 
   return this.buffer.join(""); 
 };
/* 
  StringBuffer.prototype.concat = function concat(_stringBuffer) { 
   return this.buffer.concat(_stringBuffer.buffer); 
 }; */
 
 /*
  StringBuffer.prototype.toString = function clear() { 
   delete this.buffer;
   this.buffer = [];
 }; */
 
 
function cutString(_string, _length)
{
	if (!_string) return "";
	if (!_length) return "";
	
	//LDF("cutString");
	//LOGDEBUG("_string:"+_string);
	//LOGDEBUG("_string.length:"+_string.length);
	
	if (_string.length <= _length) {
		//LOGDEBUG("_length <= _length");LDB("cutString");
		return _string;}
	if (_length <= 0 ) {
		//LOGDEBUG("_length <= 0");LDB("cutString");
		return "...";}
	
	var before = _string.substring(0,_length);
	before += "..." ;
	//LOGDEBUG("OK:"+before);
	//LDB("cutString");
	return before;
} 
 
function trim(string)
{
	return string.replace(/(^\s*)|(\s*$)/g,'');
} 
var loop = 0;
function remplace(_string, _org, _des)
{
	//
	//loop++;
	//if (loop>3) return "";
	//if (!_string) return "STR_NULL";
	if (!_string) return "";
	var ret;
	var re = new RegExp(_org);
	var pos = _string.search(re);
	
	if (pos==-1) return _string;
	else {
		//alert(" _string:"+_string+" _org:"+_org+" _des:"+_des+" pos:"+pos);
		var before = _string.substring(before,pos);
		var ret = before+_des;
		var rest = _string.substring(pos+_org.length,_string.length);
		//LOGDEBUG("rest:"+rest);
		return ret + remplace(rest, _org, _des);
	}
} 

function htmlspecialchars(_text)
{
		_text = remplace(_text,"&","&amp;");
		_text = remplace(_text,"<","&lt;");
		_text = remplace(_text,">","&gt;");
		_text = remplace(_text,"'","&#039;");
		_text = remplace(_text,"\"","&quot;");
		
		return _text;
}
function htmlspecialchars_decode(_text)
{
		_text = remplace(_text,"&lt;","<");
		_text = remplace(_text,"&gt;",">");
		_text = remplace(_text,"&#039;","'");
		_text = remplace(_text,"&quot;","\"");
		_text = remplace(_text,"&amp;","&");
		return _text;
}

function myCompareString(_a, _b)
{
	if (_a.length !=  _b.length) {
		//LOGDEBUG("length not same");
		return false;
	}

	var maxl = 20;
	var maxloop = 2000;	
	var ta=_a;
	var tb=_b;
	var i=0;
	while (i<maxloop) {
		if (ta.length<maxl) {
			//LOGDEBUG("0ta:"+ta);
			//LOGDEBUG("0tb:"+tb);
			return (ta == tb);
		}
		var ta2 = ta.substring(0,maxl);
		var tb2 = tb.substring(0,maxl);
		if (ta2!=tb2) {
			//LOGDEBUG("difference ta2:"+ta2);
			//LOGDEBUG("difference tb2:"+tb2);
			return false;
		}
		
			////LOGDEBUG("avant ta:"+ta);
			////LOGDEBUG("avant tb:"+tb);
		ta = ta.substring(maxl,ta.length-1);
		tb = tb.substring(maxl,tb.length-1);
			////LOGDEBUG("apres ta:"+ta);
			////LOGDEBUG("apres tb:"+tb);
		i++;
	}
}

