diff options
Diffstat (limited to 'www/js/utils.js')
-rw-r--r-- | www/js/utils.js | 49 |
1 files changed, 49 insertions, 0 deletions
diff --git a/www/js/utils.js b/www/js/utils.js index 86c369b..c09628c 100644 --- a/www/js/utils.js +++ b/www/js/utils.js @@ -118,3 +118,52 @@ function get_rd_week(msEpoch) { var week = Math.floor((((sEpoch + 259200)/604800) + 2) % 4) + 1; return week; } + +function parseLocationHref() { + var matches = window.location.href.match(/(https?):\/\/(.*)/); + if(matches === null) { + return null; + } + + var uri = {}; + uri.scheme = matches[1]; + uri.servername = ''; + uri.path = []; + uri.query = []; + uri.fragment = ''; + + if(matches[2].indexOf('/') < 0) { + uri.servername = parts[2]; + return uri; + } + + var parts = matches[2].split('/'); + uri.servername = parts[0]; + uri.path = parts.slice(1); + + var tmp = uri.path[uri.path.length-1]; + if(tmp.length > 0) { + var qidx = tmp.indexOf('?'); + var fidx = tmp.indexOf('#'); + + var query = ''; + if(qidx >= 0 && fidx >= 0) { + uri.path[uri.path.length-1] = tmp.substring(0, qidx); + if(qidx < fidx) { + query = tmp.substring(qidx+1, fidx); + } + uri.fragment = tmp.substring(fidx+1); + } else if (qidx >= 0 && fidx < 0) { + uri.path[uri.path.length-1] = tmp.substring(0, qidx); + query = tmp.substring(qidx+1); + } else if (qidx < 0 && fidx >= 0) { + uri.path[uri.path.length-1] = tmp.substring(0, fidx); + uri.fragment = tmp.substring(fidx+1); + } + if(query.length > 0) { + uri.query = query.split('&'); + } + } + + return uri +} |