stuppid_bot

Untitled

Apr 16th, 2013
156
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. /**
  2.  * © All rights reserved x9a.ru, 2013
  3.  */
  4. function parseQueryParam(name, value, params) {
  5.     if (name == '') {
  6.         return false;
  7.     }
  8.  
  9.     var pos = name.indexOf('['), parts = [];
  10.  
  11.     if (pos == 0) {
  12.         return false;
  13.     }
  14.  
  15.     parts[0] = pos != -1 ? name.substr(0, pos) : name;
  16.     parts = pos != -1 ? parts.concat( name.substr(++pos).split('][') ) : parts;
  17.  
  18.     if ( parts.length > 1 ) {  
  19.         parts.push( parts.pop().split(']')[0] );
  20.     }
  21.  
  22.     var part, cur = params, i = 0, len = parts.length;
  23.  
  24.     while (1) {
  25.         part = parts[i];
  26.  
  27.         if ( i && /^(|0|[1-9]\d*)$/.test(part) ) {
  28.             if (cur[''] === undefined) {
  29.                 part = cur[''] = part * 1;
  30.             }
  31.             else if (part == '') {
  32.                 part = ++cur[''];
  33.             }
  34.             else if (part > cur['']) {
  35.                 cur[''] = part;
  36.             }
  37.         }        
  38.  
  39.         if (++i == len) {
  40.             break;
  41.         }
  42.  
  43.         if (cur[part] === undefined) {
  44.             cur[part] = {};    
  45.         }                  
  46.  
  47.         cur = cur[part];
  48.     }
  49.  
  50.     cur[part] = decodeURIComponent(value);
  51. }
  52.  
  53. function cleanQueryParams(obj) {
  54.     delete obj[''];
  55.  
  56.     for (var i in obj) {
  57.         if (typeof obj[i] == 'object') {
  58.             cleanQueryParams(obj[i]);
  59.         }
  60.     }
  61. }
  62.  
  63. function parseQueryString(str, sep, eq) {
  64.     if (typeof str != 'string') {
  65.         return str;
  66.     }
  67.  
  68.     eq = eq || '=';
  69.     var parts = str.split(sep || '&'), i = 0, len = parts.length, params = {};
  70.  
  71.     while (i < len) {
  72.         var part = parts[i++].split(eq);
  73.         parseQueryParam(part[0], part[1], params);
  74.     }
  75.  
  76.     cleanQueryParams(params);
  77.     return params;
  78. }
  79.  
  80. function parseQuery() {
  81.     return parseQueryString( location.search.substr(1) );
  82. }
  83.  
  84. function completeQueryParams(params, obj, parts) {      
  85.     for (var i in obj) {  
  86.         if (typeof obj[i] == 'object') {
  87.             parts.push(i);
  88.             completeQueryParams(params, obj[i], parts);
  89.             parts.pop();
  90.             continue;
  91.         }
  92.  
  93.         var temp = parts.concat(i);
  94.         params.push([temp[0] + ( temp.length > 1 ? '[' + temp.slice(1).join('][') + ']' : '' ), obj[i]]);
  95.     }
  96. }
  97.  
  98. function buildQueryString(obj, sep, eq) {
  99.     sep = sep || '&';
  100.     eq = eq || '=';
  101.     var params = [];
  102.     completeQueryParams(params, obj, []);
  103.     var i = 0, len = params.length, out = '';
  104.  
  105.     while (1) {
  106.         out += params[i][0] + eq + encodeURIComponent(params[i][1]);
  107.  
  108.         if (++i == len) {
  109.             break;
  110.         }
  111.  
  112.         out += sep;
  113.     }
  114.  
  115.     return out;
  116. }
  117.  
  118. function getCookies() {
  119.     return parseQueryString(document.cookie, /;\s*/);
  120. }
  121.  
  122. function setCookie(name, value, expires, path, domain, secure, httponly) {
  123.     document.cookie = name + '=' + encodeURIComponent(value) + (expires === undefined ? '' : '; Expires=' + new Date(expires).toUTCString()) + (path ? '; Path=' + path : '')
  124.         + (domain ? '; Domain=' + domain : '') + (secure ? '; Secure' : '') + (httponly ? '; HttpOnly' : '');
  125. }
  126. // setCookie('test', 'Test', new Date().getTime() + 24 * 3600000);
  127.  
  128. function deleteCookie(name, path, domain) {
  129.     setCookie(name, '', 0, path, domain);
  130. }
  131.  
  132.  
  133. function parseURL(str) {
  134.     var matches = /^(?:(\S+):\/\/)?(?:([^:\s]*)(?::(\S*))?@)?(?:([^:/\s]*)(?::(\d*))?)([^?\s]*)?(?:\?([^#\s]*))?(?:#(\S*))?$/.exec(str);
  135.     // console.log(matches);
  136.  
  137.     if (matches !== null) {
  138.         var scheme = ['protocol', 'user', 'password', 'host', 'port', 'path', 'query', 'hash'], i = scheme.length, obj = {};
  139.  
  140.         while (i) {
  141.             obj[ scheme[i - 1] ] = matches[i--];
  142.         }
  143.  
  144.         obj.query = parseQueryString(obj.query);
  145.         return obj;
  146.     }
  147.  
  148.     return false;
  149. }
  150.    
  151. function buildURL(obj) {
  152.     return (obj.protocol ? obj.protocol + '://' : '') + (obj.user ? obj.user + (obj.password ? ':' + obj.password : '') + '@' : '') + (obj.host ? obj.host : '')
  153.         + (obj.port ? ':' + obj.port : '')  + (obj.path ? obj.path : '') + (obj.query ? '?' + queryString.stringify(obj.query) : '') + (obj.hash ? '#' + obj.hash : '')
  154. }
Advertisement
Add Comment
Please, Sign In to add comment