// JavaScript Document
   /** 
   * 
   *  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;  
       }  
     
  }  
