Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /**
- * © All rights reserved x9a.ru, 2013
- */
- function parseQueryParam(name, value, params) {
- if (name == '') {
- return false;
- }
- var pos = name.indexOf('['), parts = [];
- if (pos == 0) {
- return false;
- }
- parts[0] = pos != -1 ? name.substr(0, pos) : name;
- parts = pos != -1 ? parts.concat( name.substr(++pos).split('][') ) : parts;
- if ( parts.length > 1 ) {
- parts.push( parts.pop().split(']')[0] );
- }
- var part, cur = params, i = 0, len = parts.length;
- while (1) {
- part = parts[i];
- if ( i && /^(|0|[1-9]\d*)$/.test(part) ) {
- if (cur[''] === undefined) {
- part = cur[''] = part * 1;
- }
- else if (part == '') {
- part = ++cur[''];
- }
- else if (part > cur['']) {
- cur[''] = part;
- }
- }
- if (++i == len) {
- break;
- }
- if (cur[part] === undefined) {
- cur[part] = {};
- }
- cur = cur[part];
- }
- cur[part] = decodeURIComponent(value);
- }
- function cleanQueryParams(obj) {
- delete obj[''];
- for (var i in obj) {
- if (typeof obj[i] == 'object') {
- cleanQueryParams(obj[i]);
- }
- }
- }
- function parseQueryString(str, sep, eq) {
- if (typeof str != 'string') {
- return str;
- }
- eq = eq || '=';
- var parts = str.split(sep || '&'), i = 0, len = parts.length, params = {};
- while (i < len) {
- var part = parts[i++].split(eq);
- parseQueryParam(part[0], part[1], params);
- }
- cleanQueryParams(params);
- return params;
- }
- function parseQuery() {
- return parseQueryString( location.search.substr(1) );
- }
- function completeQueryParams(params, obj, parts) {
- for (var i in obj) {
- if (typeof obj[i] == 'object') {
- parts.push(i);
- completeQueryParams(params, obj[i], parts);
- parts.pop();
- continue;
- }
- var temp = parts.concat(i);
- params.push([temp[0] + ( temp.length > 1 ? '[' + temp.slice(1).join('][') + ']' : '' ), obj[i]]);
- }
- }
- function buildQueryString(obj, sep, eq) {
- sep = sep || '&';
- eq = eq || '=';
- var params = [];
- completeQueryParams(params, obj, []);
- var i = 0, len = params.length, out = '';
- while (1) {
- out += params[i][0] + eq + encodeURIComponent(params[i][1]);
- if (++i == len) {
- break;
- }
- out += sep;
- }
- return out;
- }
- function getCookies() {
- return parseQueryString(document.cookie, /;\s*/);
- }
- function setCookie(name, value, expires, path, domain, secure, httponly) {
- document.cookie = name + '=' + encodeURIComponent(value) + (expires === undefined ? '' : '; Expires=' + new Date(expires).toUTCString()) + (path ? '; Path=' + path : '')
- + (domain ? '; Domain=' + domain : '') + (secure ? '; Secure' : '') + (httponly ? '; HttpOnly' : '');
- }
- // setCookie('test', 'Test', new Date().getTime() + 24 * 3600000);
- function deleteCookie(name, path, domain) {
- setCookie(name, '', 0, path, domain);
- }
- function parseURL(str) {
- var matches = /^(?:(\S+):\/\/)?(?:([^:\s]*)(?::(\S*))?@)?(?:([^:/\s]*)(?::(\d*))?)([^?\s]*)?(?:\?([^#\s]*))?(?:#(\S*))?$/.exec(str);
- // console.log(matches);
- if (matches !== null) {
- var scheme = ['protocol', 'user', 'password', 'host', 'port', 'path', 'query', 'hash'], i = scheme.length, obj = {};
- while (i) {
- obj[ scheme[i - 1] ] = matches[i--];
- }
- obj.query = parseQueryString(obj.query);
- return obj;
- }
- return false;
- }
- function buildURL(obj) {
- return (obj.protocol ? obj.protocol + '://' : '') + (obj.user ? obj.user + (obj.password ? ':' + obj.password : '') + '@' : '') + (obj.host ? obj.host : '')
- + (obj.port ? ':' + obj.port : '') + (obj.path ? obj.path : '') + (obj.query ? '?' + queryString.stringify(obj.query) : '') + (obj.hash ? '#' + obj.hash : '')
- }
Advertisement
Add Comment
Please, Sign In to add comment