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('&'); } uri.parameters = {}; for (var i = 0; i < uri.query.length; i++) { var parameter = uri.query[i].split('='); uri.parameters[parameter[0]] = parameter[1]; } } return uri }