|
/** |
|
* |
|
* URL encode / decode |
|
* http://www.webtoolkit.info/ |
|
* |
|
*/ |
|
|
|
var Url = { |
|
|
|
// public method for url encoding |
|
encode : function (string) { |
|
return escape(this._utf8_encode(string)); |
|
}, |
|
|
|
// public method for url decoding |
|
decode : function (string) { |
|
return this._utf8_decode(unescape(string)); |
|
}, |
|
|
|
// private method for UTF-8 encoding |
|
_utf8_encode : function (string) { |
|
string = string.replace(/\r\n/g,"\n"); |
|
var utftext = ""; |
|
|
|
for (var n = 0; n < string.length; n++) { |
|
|
|
var c = string.charCodeAt(n); |
|
|
|
if (c < 128) { |
|
utftext += String.fromCharCode(c); |
|
} |
|
else if((c > 127) && (c < 2048)) { |
|
utftext += String.fromCharCode((c >> 6) | 192); |
|
utftext += String.fromCharCode((c & 63) | 128); |
|
} |
|
else { |
|
utftext += String.fromCharCode((c >> 12) | 224); |
|
utftext += String.fromCharCode(((c >> 6) & 63) | 128); |
|
utftext += String.fromCharCode((c & 63) | 128); |
|
} |
|
|
|
} |
|
|
|
return utftext; |
|
}, |
|
|
|
// private method for UTF-8 decoding |
|
_utf8_decode : function (utftext) { |
|
var string = ""; |
|
var i = 0; |
|
var c = c1 = c2 = 0; |
|
|
|
while ( i < utftext.length ) { |
|
|
|
c = utftext.charCodeAt(i); |
|
|
|
if (c < 128) { |
|
string += String.fromCharCode(c); |
|
i++; |
|
} |
|
else if((c > 191) && (c < 224)) { |
|
c2 = utftext.charCodeAt(i+1); |
|
string += String.fromCharCode(((c & 31) << 6) | (c2 & 63)); |
|
i += 2; |
|
} |
|
else { |
|
c2 = utftext.charCodeAt(i+1); |
|
c3 = utftext.charCodeAt(i+2); |
|
string += String.fromCharCode(((c & 15) << 12) | ((c2 & 63) << 6) | (c3 & 63)); |
|
i += 3; |
|
} |
|
|
|
} |
|
|
|
return string; |
|
} |
|
|
|
} |