/** * 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 (post.length > 2) post += '&'; if (value === null || value === undefined) continue; if (typeof value == 'boolean') value = value ? '1' : '0'; post += key +'='+ encodeURIComponent (value); } return post; } };