PageRenderTime 46ms CodeModel.GetById 17ms RepoModel.GetById 0ms app.codeStats 0ms

/js/se.js

http://wse.googlecode.com/
JavaScript | 252 lines | 251 code | 0 blank | 1 comment | 137 complexity | 2aaf82a9acb7a84abe1dc5a06c973041 MD5 | raw file
  1. /*jslint browser: true, onevar: true, white: false, undef: false, forin: true, maxerr: 30*/
  2. function wse() {
  3. var a = arguments[0], t = INI.wse.m.t, m = INI.fujio.m;
  4. f.ajax[t](m.r + m.i + 'wse/wse.' + t, wse['Q' + t], a);
  5. return false;
  6. } wse.init = function () {
  7. var a = arguments[0];
  8. if (!a || !isTxt(a)) { a = 'wse.ini'; }
  9. wse.ini(); f.ajax.ini(a, wse.ini);
  10. }; wse.ini = function () {
  11. var x = arguments[0], i, j, l, o = obj(), t;
  12. o.m = obj(); o.m.t = 'xml'; o.m.gl = list(); o.m.bl = list();
  13. o.q = obj(); o.q.f = 'wse'; o.q.q = 'q'; o.q.g = 'g'; o.q.s = 's';
  14. o.q.b = 'b'; o.q.r = 'r'; o.q.p = 'p'; o.q.n = 'n'; o.q.t = 't';
  15. o.ql = obj(); o.ql.g = 'Genre'; o.ql.s = 'Sort'; o.ql.b = 'By';
  16. o.ql.r = 'Results'; o.ql.p = 'Pages'; o.ql.t = 'Total';
  17. o.qt = obj(); o.qt.s = 'Enter the terms of which you wish to search with';
  18. o.qt.g = 'Select the Categories you want to restrict the search to';
  19. o.qt.s = 'Sort by Ascending or Descending order';
  20. o.qt.b = 'Sort by 1 of the following parameters';
  21. o.qt.r = 'Maximum results to show per page';
  22. o.qt.p = 'Maximum page links to show per page. Example: 3 would produce something like this "...5, 6, 7..."';
  23. o.qt.t = 'Maximum number of results to find, use this if you keep getting messages about script time';
  24. o.qv = obj(); o.qv.q = 'Search...'; o.qv.g = ''; o.qv.s = 'asc';
  25. o.qv.b = 'nsme'; o.qv.r = '10'; o.qv.p = '10'; o.qv.t = '0';
  26. o.qd = obj(); o.qd.ln = '?????'; o.qd.lf = ''; o.qd.ia = '';
  27. o.qd.og = 'None'; o.qd.ot = '';
  28. o.c = obj(); o.c.r = 'result'; o.c.s = 'sticky'; o.c.pl = 'pagelinks';
  29. o.s = obj(); o.s.a = 'A-Z'; o.s.d = 'Z-A'; o.g = obj(); o.b = obj();
  30. if (x) {
  31. for (i in x) {
  32. t = x[i];
  33. switch (i) {
  34. case 'Main': for (j in t) {
  35. switch (j) {
  36. case 'type': o.m.t = t[j]; break;
  37. case 'genreList': o.m.gl = t[j].split(','); break;
  38. case 'byList': o.m.bl = t[j].split(','); break; } } break;
  39. case 'Search': for (j in t) {
  40. switch (j) {
  41. case 'form': o.q.f = t[j]; break;
  42. case 'search': o.q.q = t[j]; break;
  43. case 'genre': o.q.g = t[j]; break;
  44. case 'sort': o.q.s = t[j]; break;
  45. case 'by': o.q.b = t[j]; break;
  46. case 'results': o.q.r = t[j]; break;
  47. case 'pages': o.q.p = t[j]; break;
  48. case 'page': o.q.n = t[j]; break;
  49. case 'total': o.q.t = t[j]; break; } } break;
  50. case 'SearchLabels': for (j in t) {
  51. switch (j) {
  52. case 'search': o.ql.q = t[j]; break;
  53. case 'genre': o.ql.g = t[j]; break;
  54. case 'sort': o.ql.s = t[j]; break;
  55. case 'by': o.ql.b = t[j]; break;
  56. case 'results': o.ql.r = t[j]; break;
  57. case 'pages': o.ql.p = t[j]; break;
  58. case 'total': o.ql.t = t[j]; break; } } break;
  59. case 'SearchTips': for (j in t) {
  60. switch (j) {
  61. case 'search': o.qt.q = t[j]; break;
  62. case 'genre': o.qt.g = t[j]; break;
  63. case 'sort': o.qt.s = t[j]; break;
  64. case 'by': o.qt.b = t[j]; break;
  65. case 'results': o.qt.r = t[j]; break;
  66. case 'pages': o.qt.p = t[j]; break;
  67. case 'total': o.qt.t = t[j]; break; } } break;
  68. case 'SearchValues': for (j in t) {
  69. switch (j) {
  70. case 'search': o.qv.q = t[j]; break;
  71. case 'genre': o.qv.g = t[j]; break;
  72. case 'sort': o.qv.s = t[j]; break;
  73. case 'by': o.qv.b = t[j]; break;
  74. case 'results': o.qv.r = t[j]; break;
  75. case 'pages': o.qv.p = t[j]; break;
  76. case 'total': o.qv.t = t[j]; break; } } break;
  77. case 'SearchData': for (j in t) {
  78. switch (j) {
  79. case 'linkName': o.qd.ln = t[j]; break;
  80. case 'linkFrame': o.qd.lf = t[j]; break;
  81. case 'imgAlt': o.qd.ia = t[j]; break;
  82. case 'otherGenre': o.qd.og = t[j]; break;
  83. case 'otherTags': o.qd.ot = t[j]; break; } } break;
  84. case 'Classes': for (j in t) {
  85. switch (j) {
  86. case 'result': o.c.r = t[j]; break;
  87. case 'sticky': o.c.s = t[j]; break;
  88. case 'pageLinks': o.c.pl = t[j]; break; } } break;
  89. case 'Genres': l = o.m.gl; for (j = 0;j < l.length;j++)
  90. { if (!t[l[j]]) { t[l[j]] = l[j]; } } o.g = t; break;
  91. case 'Sort': for (j in t) {
  92. switch (j) {
  93. case 'asc': o.s.a = t[j]; break;
  94. case 'desc': o.s.d = t[j]; break; } } break;
  95. case 'By': l = o.m.bl; for (j = 0;j < l.length;j++)
  96. { if (!t[l[j]]) { t[l[j]] = l[j]; } } o.b = t; break;
  97. } t = null; l = null;
  98. }
  99. } x = null; INI.wse = o; o = null;
  100. }; wse.Qnull = function () {};
  101. wse.Q = function () {
  102. var a = arguments[0], g = GET, i, j = list(), l = list(), k = list(), m = '', n, o, p = '',
  103. s, sd, st1, st2, st3, st4, st5, st6, r = list(),
  104. r1 = re('^(title|genre)\\:'), r2 = ('^(\\+|\\-)(title|genre)\\:'),
  105. r3 = re('^info\\:'), r4 = re('^(\\+|\\-)info\\:'),
  106. r5 = re('^rating\\:'), r6 = re('^(\\+|\\-)rating\\:'), t, w = INI.wse;
  107. s = g[w.q.q];
  108. for (i = 0;i < s.length;i++) {
  109. sd = lcase(s.charAt(i));
  110. switch (m) {
  111. case 'any':
  112. if (sd === '\\') { t += sd + s.charAt(i + 1); i++; } else {
  113. if (p) { if (sd === p) { p = ''; i++; } t += sd; }
  114. else if (sd === '"' || sd === "'" || sd === '/') { p = sd; t += sd; }
  115. else if (sd === ' ') { l.push(t); m = ''; p = ''; } else { t += sd; }
  116. } break;
  117. case '+any':
  118. if (sd === '\\') { t += sd + s.charAt(i + 1); i++; } else {
  119. if (p) { if (sd === p) { p = ''; i++; } t += sd; }
  120. else if (sd === '"' || sd === "'" || sd === '/') { p = sd; }
  121. else if (sd === ' ') { l.push(t); m = ''; p = ''; } else { t += sd; }
  122. } break;
  123. case '-any':
  124. if (sd === '\\') { t += sd + s.charAt(i + 1); i++; } else {
  125. if (p) { if (sd === p) { p = ''; i++; } t += sd; }
  126. else if (sd === '"' || sd === "'" || sd === '/') { p = sd; t += sd; }
  127. else if (sd === ' ') { l.push(t); m = ''; p = ''; } else { t += sd; }
  128. } break;
  129. case 'var':
  130. if (sd === '\\') { t += sd + s.charAt(i + 1); i++; } else {
  131. if (p) { if (sd === p) {
  132. if (s.charAt(i + 1) === ',') { t += ',';
  133. if (s.charAt(i + 2) === ' ') { i += 2; } else { i++; }
  134. } else { i++; } p = ''; } t += sd; }
  135. else if (sd === '"' || sd === "'" || sd === '/') { p = sd; t += sd; }
  136. else if (sd === ' ') { l.push(t); m = ''; p = ''; } else { t += sd; }
  137. } break;
  138. case '+var':
  139. if (sd === '\\') { t += sd + s.charAt(i + 1); i++; } else {
  140. if (p) { if (sd === p) {
  141. if (s.charAt(i + 1) === ',') { t += ',';
  142. if (s.charAt(i + 2) === ' ') { i += 2; } else { i++; }
  143. } else { i++; } p = ''; } t += sd; }
  144. else if (sd === '"' || sd === "'" || sd === '/') { p = sd; t += sd; }
  145. else if (sd === ' ') { l.push(t); m = ''; p = ''; } else { t += sd; }
  146. } break;
  147. case '-var':
  148. if (sd === '\\') { t += sd + s.charAt(i + 1); i++; } else {
  149. if (p) { if (sd === p) {
  150. if (s.charAt(i + 1) === ',') { t += ',';
  151. if (s.charAt(i + 2) === ' ') { i += 2; } else { i++; }
  152. } else { i++; } p = ''; } t += sd; }
  153. else if (sd === '"' || sd === "'" || sd === '/') { p = sd; t += sd; }
  154. else if (sd === ' ') { l.push(t); m = ''; p = ''; } else { t += sd; }
  155. } break;
  156. default: t = lcase(s.slice(i, 7));
  157. if (r1.test(t)) { t = s.slice(i, 6); i += 6; m = 'var'; }
  158. else if (r2.test(t)) { t = s.slice(i + 1 , 6); i += 7; m = sd + 'var'; }
  159. else if (r3.test(t)) { t = s.slice(i, 5); i += 5; m = 'var'; }
  160. else if (r4.test(t)) { t = s.slice(i + 1, 5); i += 6; m = sd + 'var'; }
  161. else if (r5.test(t)) { t = s.slice(i, 7); i += 7; m = 'var'; }
  162. else if (r6.test(t)) { t = s.slice(i + 1, 7); i += 8; m = sd + 'var'; }
  163. else if (sd === '+' || sd === '-') { m = sd + 'any'; t = ''; }
  164. else if (sd !== ' ') { m = 'any';
  165. if (sd === '\\') { t = s.charAt(i + 1); i++; } t = sd; } break;
  166. }
  167. } p = false;
  168. t = 0; s = (+g[w.q.t]); if (s === 0) { s = a.length; }
  169. for (i = 0;i < a.length;i++) {
  170. if (t < s) {
  171. o = a[i]; o.o.g = o.o.g.split(',').sort().join(','); sd = '';
  172. sd += 'title:' + o.l[0].n + ';'; sd += 'rating:' + o.o.r + ';';
  173. sd += o.o.g.split(',').join(';genre:') + ';';
  174. sd += 'info:' + o.o.c + ';'; sd = lcase(sd);
  175. if (st1.length || st2.length > 0) {
  176. for (j = 0;j < st1.length;j++) {
  177. if (sd.indexOf(st1[j]) >= 0) { p = true; j = st1.length; } }
  178. for (j = 0;j < st2.length;j++) {
  179. if (st1[j].test(sd)) { p = true; j = st1.length; } }
  180. } else { p = true; }
  181. for (j = 0;j < st3.length;j++) {
  182. if (sd.indexOf(st3[j]) < 0) { p = false; j = st3.length; } }
  183. for (j = 0;j < st4.length;j++) {
  184. if (!st4[j].test(sd)) { p = false; j = st4.length; } }
  185. for (j = 0;j < st5.length;j++) {
  186. if (sd.indexOf(st5[j]) >= 0) { p = false; j = st5.length; } }
  187. for (j = 0;j < st6.length;j++) {
  188. if (st6[j].test(sd)) { p = false; j = st6.length; } }
  189. if (p) {
  190. sd = o.o.s + '<!--';
  191. switch (g[w.q.b]) {
  192. case 'genre': sd += o.o.g + ';' + lcase(o.l[0].n) + ';' + o.o.r; break;
  193. case 'rating': sd += o.o.r + ';' + lcase(o.l[0].n) + ';' + o.o.g; break;
  194. default: sd += lcase(o.l[0].n) + ';' + o.o.g + ';' + o.o.r; break;
  195. } sd += '--><div class="result'; if (o.o.s) { sd += ' sticky'; }
  196. sd += '"><div class="title">'; m = o.l; if (m[0].u) {
  197. sd += '<a href="' + m[0].n + '"';
  198. if (m[0].f) { sd += ' target="' + m[0].f + '"'; }
  199. } else { sd += '<b'; }
  200. if (m[0].t) { sd += ' title="' + m[0].t + '"'; } sd += '>' + m[0].n;
  201. if (m[0].u) { sd += '</a>'; } else { sd += '</b>'; }
  202. if (m.l.length > 1) {
  203. sd += '</div><div class="sublinks">';
  204. for (j = 1;j < m.length;j++) {
  205. if (m[j].u) {
  206. sd += '<a href="' + m[j].n + '"';
  207. if (m[j].f) { sd += ' target="' + m[j].f + '"'; }
  208. } else { sd += '<b'; }
  209. if (m[j].t) { sd += ' title="' + m[j].t + '"'; } sd += '>' + m[j].n;
  210. if (m[j].u) { sd += '</a>'; } else { sd += '</b>'; }
  211. }
  212. } m = o.i; if (m.u || o.o.c) { sd += '</div><div class="content">'; }
  213. if (m.u) {
  214. sd += '<img src="' + m.u + '"';
  215. if (m.s || m.w || m.h) {
  216. sd += ' style="';
  217. if (m.s) { sd += 'width:' + m.s + ';height:' + m.s + ';'; }
  218. else {
  219. if (m.w) { sd += 'width:' + m.w + ';'; }
  220. if (m.h) { sd += 'height:' + m.h + ';'; }
  221. } sd += '"';
  222. } sd += ' alt="' + m.a + '" title="' + m.a + '" />';
  223. } m = o.o;
  224. if (m.c) { if (o.i.u) { sd += '<span>' + m.c + '</span>'; }
  225. else { sd += '<div>' + m.c + '</div>'; }
  226. } sd += '</div><div class="data"><div>Genre: ';
  227. if(!m.g) { sd += 'None'; } else {
  228. n = m.g.split(','); sd += w.g[0];
  229. for (k = 1;k < n.length;k++) { sd += ', ' + w.g[n[k]]; }
  230. } sd += '</div><div>Rating: '; n = m.r;
  231. for (k = 0;k < n;k++) { sd += '*'; } sd += '</div><div class="tags">';
  232. n = m.t.split(',');
  233. for (k = 0;k < n.length;k++) { sd += '<a href="?' + w.q.q + '=' + n[k] + '">' + n[k] + '</a>'; }
  234. sd += '</div></div></div>'; r.push(sd); t++;
  235. } sd = null;
  236. } else { i = a.length; }
  237. } wse.show(r);
  238. }; wse.Qxml = function () {
  239. var a = arguments, e, i, j, m, o, r = list(), t; e = a[1]; a = a[0];
  240. if (a) { a = f.tags(a, 'xml')[0]; a = f.kids(a, 'i');
  241. for (i = 0;i < a.length;i++) {
  242. o = obj(); o.l = list(); m = f.tags(f.kids(a[i], 'l')[0], 'i');
  243. for (j = 0;j < m.length;j++) { t = obj(); t.u = m[j].url; t.f = m[j].frame; t.t = m[j].tip; t.v = m[j].nodeValue; o.l.push(t); }
  244. m = f.kids(a[i], 'i'); t = obj();
  245. t.u = m.url; t.s = m.size; t.w = m.width; t.h = m.height; t.a = m.nodeValue;
  246. o.i = t; m = f.kids(a[i], 'o'); t = obj();
  247. t.s = m.sticky; t.g = m.genre; t.t = t.tags; t.r = m.rating; t.c = m.nodeValue.replace('[', '<').replace(']', '>');
  248. o.o = t; r.push(o);
  249. } wse.Q(r);
  250. } else if (e.submit) { e.submit(); }
  251. else { loc.href = e.href; }
  252. }; wse.Qjson = function () {};