/** * Class to handle the URL. **/ module.exports = { /** * Gets the value of a URL variable. * * @param {string} key The variable name **/ getQuery: function(key) { var regExp = new RegExp('[\?\&]'+ key +'=([^\&]*)(\&?)', 'i'); var value = location.search.match(regExp); return value ? value[1] : value; } /** * Sets the value of a URL variable. * * @param {string} key The variable name * @param {string} value The new value **/ ,setQuery: function(key, value) { var changed = true; var found = false; var newPair = key +'='+ value; var kvPairs = location.search.substr(1).split('?'); for (var i = 0; i < kvPairs.length; i++) { var kvPair = kvPairs[i].split('=', 1); if (kvPair[0] == key) { if (kvPair[1] != value) kvPairs.splice(i, 1, newPair); else changed = false; found = true; break; } } if (!found) kvPairs.push(newPair); if (changed) document.location.hash = '?'+ kvPairs.join('&'); } ,makeUri: function(map) { var post = ''; for (var key in map) { var value = map[key]; if (value === null || value === undefined) continue; if (typeof value == 'boolean') value = value ? '1' : '0'; if (post.length > 2) post += '&'; post += encodeURIComponent(key) +'='+ encodeURIComponent(value); } return post; } };