Add analytics
[bus.git] / busui / owa / modules / base / js / includes / url_encode.js
blob:a/busui/owa/modules/base/js/includes/url_encode.js -> blob:b/busui/owa/modules/base/js/includes/url_encode.js
  /**
  *
  * 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;
  }
   
  }