/**
*
*  WebToolKit URL encode / decode component
*  Compiled by Justas Vinevicius <justas.vinevicius(at)gmail.com>
	*  Original code by Tyler Akins <fidian(at)rumkin.com>
		*
		*  Dependencies:
		*  WebToolKit.utf8 (UTF-8 encode / decode) component for correct UTF-8 handling
		*
		*  Homepage:
		*  http://www.webtoolkit.info/
		*
		**/
		
		if (typeof(WebToolKit) == "undefined") {
		var WebToolKit = {};
		};
		
		WebToolKit.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;
								    },
								    
								    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;
										}
										
										};
										
										if (typeof(String.prototype.utf8encode) == "undefined") {
										String.prototype.utf8encode = function () {
										return WebToolKit.utf8.encode(this);
										};
										};
										
										if (typeof(String.prototype.utf8decode) == "undefined") {
										String.prototype.utf8decode = function () {
										return WebToolKit.utf8.decode(this);
										};
										};

		
		
		WebToolKit.url = {
		
		encode : function (string) {
		if (typeof(String.prototype.utf8encode) != "undefined") {
		return escape(string.utf8encode());
		} else {
		return escape(string);
		}
		},
		
		decode : function (string) {
		if (typeof(String.prototype.utf8decode) !== "undefined") {
		return unescape(string).utf8decode();
		} else {
		return unescape(string);
		}
		}
		
		};
		
		if (typeof(String.prototype.urlencode) == "undefined") {
		String.prototype.urlencode = function () {
		return WebToolKit.url.encode(this);
		};
		};
		
		if (typeof(String.prototype.urldecode) == "undefined") {
		String.prototype.urldecode = function () {
		return WebToolKit.url.decode(this);
		};
		};
		
