var charCode = new function(){
this.REGX_HTML_ENCODE = /"|&|'|<|>|[\x00-\x20]|[\x7F-\xFF]|[\u0100-\u2700]/g;
this.REGX_HTML_DECODE = /&\w{1,};|&#\d{1,};/g;
this.REGX_ENTITY_NUM = /\d{1,}/;
this.REGX_TRIM = /(^\s*)|(\s*$)/g;
this.HTML_DECODE = {
"<" : "<",
">" : ">",
"&" : "&",
" ": " ",
""": "\"",
"©": "©"
// Add more
};
this.encodeHtml = function(s){
s = (s != undefined) ? s : this;
return (typeof s != "string") ? s :
s.replace(this.REGX_HTML_ENCODE,
function($0){
var c = $0.charCodeAt(0), r = ["&#"];
c = (c == 0x20) ? 0xA0 : c;
r.push(c); r.push(";");
return r.join("");
});
};
this.decodeHtml = function(s){
var HTML_DECODE = this.HTML_DECODE,
REGX_NUM = this.REGX_ENTITY_NUM;
s = (s != undefined) ? s : this;
return (typeof s != "string") ? s :
s.replace(this.REGX_HTML_DECODE,
function($0){
var c = HTML_DECODE[$0];
if(c == undefined){
// Maybe is Entity Number
var m = $0.match(REGX_NUM);
if(m){
var cc = m[0];
cc = (cc == 160) ? 32: cc;
c = String.fromCharCode(cc);
}else{
c = $0;
}
}
return c;
});
};
this.trim = function(s){
s = (s != undefined) ? s : this;
return (typeof s != "string") ? s :
s.replace(this.REGX_TRIM, "");
};
this.hashCode = function(){
var hash = this.__hash__, _char;
if(hash == undefined || hash == 0){
hash = 0;
for (var i = 0, len=this.length; i < len; i++) {
_char = this.charCodeAt(i);
hash = 31*hash + _char;
hash = hash & hash; // Convert to 32bit integer
}
hash = hash & 0x7fffffff;
}
this.__hash__ = hash;
return this.__hash__;
};
};