
// ***************************************************************************
// SITE/MISC/URLENCODE_URLDECODE.JS
// --------------------------------
// Functions to URL encode and decode in Javascript in a way that emulates
// the way that PHP's urlencode() and urldecode() do it.
//
// See  "Javascript URL Encoding and Decoding"
//      kos Haks
//      http://cass-hacks.com/articles/discussion/js_url_encode_decode/
// ***************************************************************************

function URLEncode (clearString) {
    var output = '';
    var x = 0;
    clearString = clearString.toString();
//  if ( /^\d+$/.test( clearString ) ) {
//      return clearString ;
//      }
    var regex = /(^[a-zA-Z0-9_.]*)/;
    while (x < clearString.length) {
        var match = regex.exec(clearString.substr(x));
        if (match != null && match.length > 1 && match[1] != '') {
    	    output += match[1];
            x += match[1].length;
        } else {
            if (clearString[x] == ' ')
                output += '+';
            else {
                var charCode = clearString.charCodeAt(x);
                var hexVal = charCode.toString(16);
                if ( hexVal.length == 1 ) { hexVal = '0' + hexVal }
                    //  Added by PGN.  25 Aug 2007.  URL encoded
                    //  hex values are supposed to be 2 digits long.
                    //  Single digit hex values cause character
                    //  deletion problems (the two characters
                    //  following the % get swallowed).
                output += '%' + hexVal.toUpperCase();
                }
            x++;
            }
        }
    return output;
    }

function URLDecode (encodedString) {
    var output = encodedString;
    var binVal, thisString;
    var myregexp = /(%[^%]{2})/;
    while ((match = myregexp.exec(output)) != null
                && match.length > 1
                && match[1] != '') {
        binVal = parseInt(match[1].substr(1),16);
        thisString = String.fromCharCode(binVal);
        output = output.replace(match[1], thisString);
        }
    return output;
    }

