Kartom

GR-Tools 2.38 some source code to work with/GR-Tools 2.38

Oct 31st, 2012
726
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. // ==UserScript==
  2. // @name          GR-Tools - Pimp your GayRomeo! *Unpacked*
  3. // @namespace     http://gr-tools.justlep.net/
  4. // @description   Thumbnail-Zoom, BMI-Filter, opens Profiles without Popups, etc. etc.
  5. // @include http*://www.gayromeo.com/*main/top.php
  6. // @include http*://www.gayromeo.com/*setcard/cluide/navigation.php*
  7. // @include http*://www.planetromeo.com/*main/top.php
  8. // @include http*://www.planetromeo.com/*setcard/cluide/navigation.php*
  9. // @include http*://www.planetromeo.com/*setcard/cluide/club.php*
  10. // @include http*://83.98.143.20/*main/top.php
  11. // @include http*://83.98.143.20/*setcard/cluide/navigation.php*
  12. // @include http*://83.98.143.20/*auswertung/setcard/index.php*
  13. // @include http*://www.planetromeo.com/*auswertung/setcard/index.php*
  14. // @include http*://www.gayromeo.com/*auswertung/setcard/index.php*
  15.  
  16. // Partly fixes bug #3 (Zoom works but GRT Config menu still won't open)
  17. // @include /http?://www\.(gay|planet)romeo\.com.*setcard/cluide/club\.php*
  18.  
  19. // @version $Revision: 2.38 $
  20. // @date    $Date: 2012/01/14 11:53:11 $
  21. // @author LeP <gr-tools@justlep.net>
  22. // @icon data:image/gif;base64,R0lGODlhHgAeAPcAAFhRjNVbKgRVjPmLKVd7x1ZVUzlcqC1Ztfh1KbFxUQJNikl/rkVdp9o3BWtpa7i6vQZkmuldCgVFelRimjdYeP6JHv53Ggh7tdZZEx04g8pvRzRhvudbC56mxi1VrPynGiRDk5iXmA2TzYN9d3hrYIWFh6s4KqlUQy9cudTV1ZxQTElPYyRbw7QWEBkyeXhRQ+liC3Z0dBcsc/anY1NndQdclIulupozOSoqKiE9i9tTDABLlTZmxHRFaQgRTQZrpPRhASdKnQyFvfj9/zBbtoeBeAl0rjBatHqGiDJfuvRiCywxUmt0dGOEybG74hArUtxEDhMladYrBAoUUylevpR7WwU4diVavtBLDPRxBa03Dc4bAOu0boduSjFZsuhWBbs9FytSp+lpDaYnCM7Ozrg4CiZgwg0aWgcFBypOozJduOLi4ShZvoyGntQ8EzNgu+dgCzJeuP/Ie7ctAS1cutZDDoac0vVfAFpMUzJguwQ8awYNSTNfvsgpDBEhZOdZByJVwRUobgIIPy9Yry9XsOheDQAUUidHmgwYV////zRgu/+2EslFC/G2e7dDMejHoJeThnt6kAB7xEtfSUhwwrxMJuxfC/z8/K+pqzdwmKOvurGrpIuDWvpvGKKUT9zc3GphcuxlFPDw73Nod+iqZfWxXfKhePitMTJqpsyedP+VRM9nHepTD8svEc4yC/CeZ840Erd1YImDkd+mNxAfYJF6lmhdhPDy+PdoDDhcsIJtW5d/QqpGFL/DxYqg1zRfuZGm3J+BdM2lX/r7+6SAZCtbuyxfu//Jbf/cektJRIRSac3Hu+hGCQ1HZx9SfvB/L1czMv+TL7CyzkBOn/aACdBHEOxgByNVvq6qyKGw2+CMV9BBBClXuRAdXfplCMlOEaNMJRdbkqlULehcCx9Mg+hZDfP194VuZzBcuDFcu9uqbW+ZqXKIuXOctKliLAAcT4YwSa654oSAl4aCmFuIrA+JxMLIz6WlpQ9MsqCprbq/5Y6JoMhqLd91N3phTjFctiH5BAAAAAAALAAAAAAeAB4AAAj/AP9tACEjh5ocLkD8+pcniAuEIDao+fcvSRxFIILkSTJxgwsfGWR42eNiT8Q3h2QICgTCg4cNb8J44OEnw4YwhNQQ2RNmAyFCPtKcycEjyQZFU5LkmDIlSAZEU9IEyhGlGwhFg/aoCSIIxBQfZ3gEOuPlyJQwPuKAgJqHakEZtMIYPRPlyJ6lg3y0TKNmpIcph1xEQRREhoxAGeIEmrIhDiE/iAKFkaGG4AaOXgIdOXTGz5EgnYnkyJChW443FWFeRv0GNUWB/xRtkChbYpLbbxS93s2boprfvYMLf220r4dBavikGx6cDop/am5m0COhugRyBthce878HwoDufIc/3Hx7p2eGkZqSGg2yRMSOle6s1BhC987QU9GUIBQ74IACUusssgsE7BAhHDoGAOGCSucQ4I2RSggxA9G/ACBHku488EADBQjHApegPFFJ51YgAAFkogghAgiXCDBO4a8UIEGE3jYWzEMRBDBH3988cUYK0DAohDpSaCAFeJYkAALwbGQABBwjCPlONsgwMQFFxgBgQAKKEBBABX04xxvV0yAgTVRSvnFM+v8YKEAAtQQTg0UVPDBMx3yhkIuJwAhBgeWRKDEADQoAKcCmbRjw6IznFJBLPHxZgY/fo6DxRx4MFGoofTkM0IBBYzQiBzREAOInsZUkgUcOoyB6Q6wKv+wgCYkjEDGGiF0wcUxSFzDGzpsmECNGDqUUUYh/jizQgKPFBFCIms8kIg9XSDDDje9sXBDFmL8wcg3WJQTijeqqEOCOYnc48AliUAijB0oHLibGT3cAQMH5WCggxZa8BIMCSUMwwQOOBSQwjK6APOLvK8ZM00DaXJQCAbQGIJKCTEM80kJyaRwySay+KJTb2bAAzEcEYxjiRLgjIIJCb0kQsazojiAjR1EMNywFy1IUY0rHKAMBC4zkOLPA7cMkUIyaLThBAFHBGfGNC1s0UIfdWQNRQCmcLELJ1VUAQoaaOzz9EQk53LDFlv00QosbrgRwCtylJKKNPrIQ3Yb2VA8ckBwxVwBgAlSSNFAA1Aww4oGtRBASRNO6I1GB038HRw6VLABQA8qOHKCMgB4ccUBpBMQTyQrdEDAAQEBADs%3D
  23. // ==/UserScript==
  24. /**
  25.  * The GR-Tools are available on userscripts.org:
  26.  * http://userscripts.org/scripts/show/33184
  27.  */
  28.  
  29. /* Unpacked Version                     <-  made by Djamana (Nov 2012)
  30.  
  31.  Known bugs:
  32.  
  33.     #1 You tube links are not parse when profile is opened in popup mode
  34.     #2 In club page main page pictures are not zoomable
  35.     #3 In club page clicking on 'Clubmodul' will disable zoom and clicks on GR-Tool ccnfig menu
  36.        until you reload the page or upper frame
  37.        ->partly fixed by adding http*://www.planetromeo.com/*setcard/cluide/club.php* to includes
  38.  
  39.     #4 If you open on a profil of your favorites and you've not opened visitor or search in the mainframe (and in config no popup is selected)
  40.        the profil is opened in the wrong frame. (the left/'persoenliches'-frame instead of main 'mitte'-frame )
  41.        
  42.  Changes:
  43.  
  44.     #1 removing SRC[] String array and wrapper code
  45.     #2 Added function 'bugFixes'
  46.     #3 and wrapped some code into function 'RestoreOriginalHosts'
  47.        to deal with return that else stops Execution
  48.     #4 Replaced in the original source code
  49.        f.main.contentWindow.openUrl
  50.        with
  51.        f.main.contentWindow.wrappedJSObject.openUrl
  52.        3 x times.
  53.     #5 added '|| self' & '(f.top.contentWindow || f.top)' in
  54.        findTopFrameBody incase current window has no frames(like the profil for ex.)
  55.     #6 enabled console.log output via LOG = {STD: 1...}  
  56.        
  57.  */
  58. // modify links within profiles opened via "secret click" to be opened via the original host (except for partner profile)..
  59. if (location.href.indexOf('auswertung/setcard/index.php') > 0) {
  60.     (function RestoreOriginalHosts() {
  61.         if (!/GRT_REF_(PR|GR|IP)(_S)?/.exec(location.hash || '')) return;
  62.         var domain = RegExp.$1,
  63.             ssl = !! RegExp.$2,
  64.             sidebar = self.document.getElementById('sidebar'),
  65.             picbar = self.document.getElementById('picbar'),
  66.             topbar = self.document.getElementById('tabse'),
  67.             urlPrefix1 = (ssl) ? 'https://' : 'http://',
  68.             urlPrefix2 = (domain == 'PR') ? 'www.planetromeo.com' : (domain == 'GR') ? 'www.gayromeo.com' : '83.98.143.20',
  69.             replaceLinks = function (links) {
  70.                 if (!links) return;
  71.                 for (var i = links.length - 1; i >= 0; i--) {
  72.                     var oldURL = links[i].href || '',
  73.                         newURL = '';
  74.                     if (!oldURL) continue;
  75.                     if (oldURL.indexOf('auswertung/setcard/index.php') >= 0) {
  76.                         newURL = oldURL + location.hash; // partner link to be opened anonymously
  77.                     } else if (oldURL.indexOf('page=status') > 0) {
  78.                         newURL = oldURL; // probably an XXX pic which can't be viewed anonymously
  79.                     } else {
  80.                         newURL = urlPrefix1 + urlPrefix2 + '/' + oldURL.replace(/^(https?:\/\/[^\/]+)?\//, '');
  81.                     }
  82.                     // console.log(oldURL + ' -> ' + newURL);
  83.                     links[i].href = newURL;
  84.                 }
  85.             };
  86.  
  87.         replaceLinks((sidebar) ? sidebar.getElementsByTagName('a') : 0);
  88.         replaceLinks((picbar) ? picbar.getElementsByTagName('a') : 0);
  89.         replaceLinks((topbar) ? topbar.getElementsByTagName('a') : 0);
  90.         return;
  91.     })();
  92. }
  93.  
  94. var DEBUG = 0,
  95.     revisions = {
  96.         used: '$Revision: 2.38 $'.match(/ion: ([^ ]*)/)[1], // auto-insert by cvs
  97.         live: '?' // set asynch. later via GRT.setLiveRevision()
  98.     };
  99.  
  100. // skip if GR-Tools already loaded..
  101. if (typeof top.GRT === 'object') return;
  102.  
  103. if (!top.GRT) top.GRT = (function () {
  104.     var LOG = {
  105.         STD: 1,
  106.         T: 0
  107.     },
  108.  
  109.     lang = 'de',
  110.  
  111.         L = {
  112.             close: {
  113.                 de: 'Zum Schließen klicken',
  114.                 en: 'Click to close'
  115.             },
  116.             inv: {
  117.                 de: 'Bild invertieren',
  118.                 en: 'Invert image'
  119.             },
  120.             hist: {
  121.                 de: 'Message-Verlauf',
  122.                 en: 'Message history'
  123.             },
  124.             secret: {
  125.                 de: 'Profil geheim ansehen (falls Profil oeffentlich)',
  126.                 en: 'View profile secretly (if profile is public)'
  127.             },
  128.             sett: {
  129.                 de: 'Einstellungen',
  130.                 en: 'Settings'
  131.             },
  132.             upd: {
  133.                 de: 'jetzt updaten!',
  134.                 en: 'update available!'
  135.             }
  136.         },
  137.  
  138.        
  139.        
  140.         f = {
  141.             top: null,
  142.             main: null,
  143.             msg: null
  144.         },
  145.  
  146.         win = 0,
  147.         grtDiv = null,
  148.         started = 0,
  149.         ic = -1,
  150.  
  151.         gmVersion = {
  152.             used: '?',
  153.             live: '??'
  154.         },
  155.  
  156.         C = {
  157.             NAME: 'GRTCFG',
  158.             TTL: 14
  159.         },
  160.  
  161.         Ds = {
  162.             GAY: 'www.gayromeo.com',
  163.             PLANET: 'www.planetromeo.com',
  164.             IP: '83.98.143.20'
  165.         },
  166.  
  167.         linkFixHash = '',
  168.  
  169.         ZOOM_APPLIED = '_grtZoomApplied',
  170.         PAGE_PREPARED = '_grtPagePrepared',
  171.         ZOOM_ADDED = '_grtZDone',
  172.         TABLE_PREPARED = '_grtTableDone',
  173.  
  174.         tmp = {},
  175.  
  176.         config = {
  177.             showBMI: 1,
  178.             bmiClickHP: 1,
  179.             filterBMI: 1,
  180.             minBMI: 0,
  181.             maxBMI: 25,
  182.             filterAge: 1,
  183.             minAge: 18,
  184.             maxAge: 100,
  185.             clickTapse: 1,
  186.             zoom: 1,
  187.             bigZoom: 1,
  188.             useIF: 1,
  189.             thumbIF: 1,
  190.             histInMsg: 1,
  191.             histInRes: 1,
  192.             histHighl: 1,
  193.             bigPaging: 1,
  194.             ytHead: 1,
  195.             ytProf: 1,
  196.             ytPreview: 1,
  197.             newsRead: 0
  198.         },
  199.  
  200.         CONFIG_TRANSKEY = {
  201.             showBMI: 68,
  202.             bmiClickHP: 12,
  203.             filterBMI: 41,
  204.             minBMI: 31,
  205.             maxBMI: 21,
  206.             clickTapse: 14,
  207.             zoom: 9,
  208.             bigZoom: 3,
  209.             useIF: 5,
  210.             thumbIF: 91,
  211.             histInMsg: 44,
  212.             histInRes: 93,
  213.             histHighl: 2,
  214.             bigPaging: 95,
  215.             ytHead: 50,
  216.             ytProf: 49,
  217.             ytPreview: 71,
  218.             newsRead: 15,
  219.             filterAge: 94,
  220.             minAge: 51,
  221.             maxAge: 43
  222.         },
  223.  
  224.         URLS = {
  225.             BASE: (self.location.protocol.match(/https/)) ?
  226.                 'https://ssl-account.com/gr-tools.justlep.net/' :
  227.                 'http://gr-tools.justlep.net/',
  228.  
  229.             iB: 'img/',
  230.             IMG: {
  231.                 HISTORY: 'hist.gif',
  232.                 LOAD: 'load.gif',
  233.                 ZOOM1: 'lupe.png',
  234.                 ZOOM2: 'lupe2.png',
  235.                 CLOSE: 'close.cur',
  236.                 CFG: 'tool.png',
  237.                 CLUB: 'home.png',
  238.                 NEWS: 'charts04.png',
  239.                 UPD: 'flag.png',
  240.                 NONEWS: 'charts04gray.png',
  241.                 YTLOAD: 'ytload.gif'
  242.             },
  243.  
  244.             hB: 'html/',
  245.             HTML: {
  246.                 CONFIG: 'config_',
  247.                 NEWS: 'news2.php',
  248.                 UPD: 'update.php'
  249.             },
  250.             YTIMG: 'http://ref.justlep.net/ytimg',
  251.             aPu: '/auswertung/setcard/index.php?set=',
  252.             ABOUT_BLANK: 'about:blank'
  253.         },
  254.  
  255.  
  256.         BMI = {
  257.             COLOR: {
  258.                 egal:  '#E4EAF9',
  259.                 below: '#fed14a',
  260.                 ok:    '#85e854',
  261.                 above: '#ff8868'
  262.             },
  263.             RANGE: {
  264.                 VISIBLE: {
  265.                     min: 15,
  266.                     max: 40
  267.                 },
  268.                 HEALTHY: {
  269.                     min: 20,
  270.                     max: 25
  271.                 }
  272.             },
  273.             minS: null,
  274.             maxS: null
  275.         },
  276.  
  277.         AGE = {
  278.             minI: null,
  279.             maxI: null
  280.         },
  281.  
  282.         zoomVisible = false,
  283.         currentZoomUID = null,
  284.         hideTimer = null,
  285.         zoomWin = 0,
  286.         zoomDoc = 0,
  287.  
  288.         cfg = {
  289.             div: 0,
  290.             html: 'config'
  291.         },
  292.  
  293.         gray = 0,
  294.         zoomDiv = 0,
  295.         iframe = 0,
  296.         zoomedImg = 0,
  297.         closeDiv = 0,
  298.         anonDiv = 0,
  299.         mode = 0,
  300.  
  301.         MsS = {
  302.             IMAGE: 1,
  303.             PROFILE: 2,
  304.             HISTORY: 3,
  305.             CONFIG: 4,
  306.             OTHER: 5
  307.         },
  308.  
  309.  
  310.         HTML = { STYLES:
  311.                 '<style type="text/css">        \
  312.                     .grt-thumb {        \
  313.                         display:block;      \
  314.                         position:relative       \
  315.                     }       \
  316.                             \
  317.                     div#grtZDiv {       \
  318.                         position:fixed;     \
  319.                         top:10px;       \
  320.                         right:6px;      \
  321.                         z-index:6000;       \
  322.                         border:1px solid #ccc;      \
  323.                         width:100px;        \
  324.                         height:100px;       \
  325.                         background:transparent url('+ URLS.BASE + 'img/load.gif) center center no-repeat;       \
  326.                         display:none        \
  327.                     }       \
  328.                             \
  329.                     div#grtZDiv>img {       \
  330.                         cursor:url('+ URLS.BASE + 'img/close.cur), default      \
  331.                     }       \
  332.                             \
  333.                     img.grtZIcon {      \
  334.                         position:absolute;      \
  335.                         right:1px;      \
  336.                         bottom:1px;     \
  337.                         border:none;        \
  338.                         cursor:pointer;     \
  339.                         z-index:2000;       \
  340.                         opacity:0.7     \
  341.                     }       \
  342.                             \
  343.                     img.grtZIcon:hover {        \
  344.                         opacity:1       \
  345.                     }       \
  346.                             \
  347.                     #grtCfgDiv {        \
  348.                         background-color:#305AB1;       \
  349.                         overflow:auto       \
  350.                     }       \
  351.                             \
  352.                     div.grtZUserName {      \
  353.                         position:absolute;      \
  354.                         right:0;        \
  355.                         top:0;      \
  356.                         padding:0px 5px 3px 9px;        \
  357.                         border:1px solid #ccc;      \
  358.                         border-width:0 0 1px 1px;       \
  359.                         -moz-border-radius-bottomleft:8px;      \
  360.                         background:#305AB1 none;        \
  361.                         opacity:0.8;        \
  362.                         color:yellow;       \
  363.                         z-index:6005        \
  364.                     }       \
  365.                             \
  366.                     #grtZDiv iframe,        \
  367.                     #grtZDiv #grtCfgDiv {       \
  368.                         border:none;        \
  369.                         width:500px;        \
  370.                         height:500px;       \
  371.                         display:none        \
  372.                     }       \
  373.                             \
  374.                     #grtZDiv.grtPLoaded {       \
  375.                         right:10px;     \
  376.                         background-image:none;      \
  377.                         opacity:1       \
  378.                     }       \
  379.                             \
  380.                     #grtZDiv.grtILoaded {       \
  381.                         background-image:none       \
  382.                     }       \
  383.                             \
  384.                     #grtZDiv.grtPLoaded iframe,         \
  385.                     #grtZDiv.grtPLoaded #grtZCl,        \
  386.                     #grtZDiv.grtPLoaded .grtZoom,       \
  387.                     #grtZDiv.grtPLoaded #grtCfgDiv {        \
  388.                         display:block       \
  389.                     }       \
  390.                             \
  391.                     #grtZCl {       \
  392.                         position:absolute;      \
  393.                         left:-51px;     \
  394.                         top:-1px;       \
  395.                         background:#236 url('+ URLS.BASE + 'img/close.png) center center no-repeat;     \
  396.                         width:50px;     \
  397.                         height:300px;       \
  398.                         border:1px solid #ccc;      \
  399.                         border-width:1px 0 1px 1px;     \
  400.                         -moz-border-radius-bottomleft:20px;     \
  401.                         -moz-border-radius-topleft:20px;        \
  402.                         opacity:0.6;        \
  403.                         cursor:pointer      \
  404.                     }       \
  405.                             \
  406.                     div#grtZCl:hover {      \
  407.                         opacity:0.8     \
  408.                     }       \
  409.                             \
  410.                     #grtZAnon {     \
  411.                         position:absolute;      \
  412.                         left:-38px;     \
  413.                         top:10px;       \
  414.                         background:transparent url('+ URLS.BASE + 'img/nogo.png) center center no-repeat;       \
  415.                         width:26px;     \
  416.                         height:26px;        \
  417.                         opacity:0.3;        \
  418.                         cursor:pointerz-index:999;      \
  419.                         display:none        \
  420.                     }       \
  421.                             \
  422.                     .grtPLoaded #grtZAnon {     \
  423.                         display:block       \
  424.                     }       \
  425.                             \
  426.                     div#grtZCl {        \
  427.                         display:none        \
  428.                     }       \
  429.                             \
  430.                     #grtGray {      \
  431.                         position:fixed;     \
  432.                         left:0;     \
  433.                         top:0;      \
  434.                         width:100%;     \
  435.                         height:100%;        \
  436.                         background:#000 none;       \
  437.                         opacity:0.7;        \
  438.                         z-index:5000;       \
  439.                         display:none        \
  440.                     }       \
  441.                             \
  442.                     #grtNext, #grtPrev {        \
  443.                         text-decoration:none;       \
  444.                         outline:none;       \
  445.                         background:transparent url('+ URLS.BASE + 'img/next.png) center center no-repeat;       \
  446.                         opacity:0.6;        \
  447.                         padding:8px 39px;       \
  448.                         margin:0 5px;       \
  449.                         border:1px dotted #6890E5       \
  450.                     }       \
  451.                             \
  452.                     a#grtPrev {     \
  453.                         background-image:url('+ URLS.BASE + 'img/prev.png)      \
  454.                     }       \
  455.                             \
  456.                     #grtPrev:hover,         \
  457.                     #grtNext:hover {        \
  458.                         opacity:1       \
  459.                     }       \
  460.                             \
  461.                     #grtIv {        \
  462.                         width:24px;     \
  463.                         height:24px;        \
  464.                         bottom:6px;     \
  465.                         opacity:0.7     \
  466.                     }       \
  467.                             \
  468.                     #grtIv {        \
  469.                         position:absolute;      \
  470.                         right:7px;      \
  471.                         cursor:pointer !important;      \
  472.                         background:transparent url('+ URLS.BASE + 'img/object_15.png) 0 0 no-repeat;        \
  473.                         z-index:6005        \
  474.                     }       \
  475.                             \
  476.                     #grtIv:hover {      \
  477.                         opacity:1       \
  478.                     }       \
  479.                             \
  480.                     #grtFull {      \
  481.                         left:0;     \
  482.                         top:0;      \
  483.                         z-index:6004        \
  484.                     }       \
  485.                  </style>'
  486.                  ,
  487.             DIV: '<div id="grtZDiv"></div>',
  488.             GRAY: '<div id="grtGray"></div>',
  489.  
  490.             BUTTON_STYLES:
  491.                 '#grtDiv {      \
  492.                     position:absolute;      \
  493.                     right:310px;        \
  494.                     top:0;      \
  495.                     overflow:visible;       \
  496.                     border:1px solid #A2B3DE;       \
  497.                     border-top:none;        \
  498.                     padding:1px 5px 2px 5px;        \
  499.                     z-index:9999;       \
  500.                     background:transparent none 0 0 no-repeat;      \
  501.                     color:#E1DEF1;      \
  502.                     font-family:Tahoma, Arial, Verdana, Helvetica;      \
  503.                     font-size:11px;     \
  504.                     line-height:14px;       \
  505.                     -moz-border-radius: 0 0 6px 6px;        \
  506.                 }       \
  507.                 #grtDiv:hover {     \
  508.                     border-color:#D1D8EB        \
  509.                 }       \
  510.                 #grtPimp {      \
  511.                     float:left;     \
  512.                     padding:0 5px 0 2px;        \
  513.                     position:static;        \
  514.                     overflow:hidden;        \
  515.                     display:none        \
  516.                 }       \
  517.                 #grtPimp b {        \
  518.                     display:block;      \
  519.                     color:#AEE451;      \
  520.                     font-style:normal       \
  521.                 }       \
  522.                 #grtDiv img {       \
  523.                     float:left;     \
  524.                     display:none        \
  525.                 }       \
  526.                 #grtDiv:hover img,          \
  527.                 #grtDiv:hover #grtPimp,         \
  528.                 #grtDiv:hover #grtNewsTxt {     \
  529.                     display:block       \
  530.                 }       \
  531.                 body #grtDiv #grtCfg,       \
  532.                 body #grtDiv #grtNews {     \
  533.                     display:block       \
  534.                 }       \
  535.                 #grtDiv.grtUpd img#grtUpd,      \
  536.                 #grtDiv.grtRomeo #grtPimp,      \
  537.                 #grtDiv #grtNews {      \
  538.                     display:block       \
  539.                 }       \
  540.                 #grtDiv.grtRomeo {      \
  541.                     right:311px     \
  542.                 }       \
  543.                 #grtDiv.grtNews #grtNews {      \
  544.                     cursor:pointer !important       \
  545.                 }       \
  546.                 .grtNewsRead #grtNews {     \
  547.                     opacity:0.5     \
  548.                 }       \
  549.                 #grtNewsTxt {       \
  550.                     float:left;     \
  551.                     position:static;        \
  552.                     color:#FE9B2C;      \
  553.                     padding:0 0 0 3px;      \
  554.                     cursor:pointer;     \
  555.                     display:none        \
  556.                 }       \
  557.                 #grtNewsTxt:hover {     \
  558.                     text-decoration:underline;      \
  559.                     opacity:1!important     \
  560.                 }       \
  561.                 .grtNewsRead #grtNewsTxt {      \
  562.                     opacity:0.7     \
  563.                 }       \
  564.                 body.grtClub #grtDiv {      \
  565.                     left:auto;      \
  566.                     right:82px !important       \
  567.                 }       \
  568.                 body.grtGuideClub #grtDiv {     \
  569.                     left:225px;     \
  570.                     right:auto !important       \
  571.                 }       \
  572.                 #grtDiv img {       \
  573.                     cursor:pointer;     \
  574.                     vertical-align:middle;      \
  575.                     opacity:0.8;        \
  576.                     margin:1px 2px 0        \
  577.                 }       \
  578.                 #grtDiv img:hover {     \
  579.                     opacity:1 !important        \
  580.                 }       \
  581.                 body.grtClub #grtDiv #grtPimp,      \
  582.                 body.grtGuideClub #grtDiv #grtPimp,         \
  583.                 body.grtClub #grtDiv #grtClub,      \
  584.                 body.grtGuideClub #grtDiv #grtClub {        \
  585.                     display:block !important        \
  586.                 }'
  587.         },
  588.  
  589.         YT = {
  590.             PROFILE_XPATH: '//table[contains(@class,"prfl")]/tbody/tr/td[contains(.,"http:")][contains(.,"youtube")]',
  591.             RE: /(">)?http:\/\/(?:<wbr>)?(?:[a-z]+\.)?(?:<wbr>)?youtube.(<wbr>)?com\/[^\s\t\n\r\]\)]+/ig,
  592.             FN: function (s) {
  593.                 if (!s.indexOf('">')) return s;
  594.                 var
  595.                     url = s.replace(/(<wbr>| |<br>?)/g, '').replace('&amp;', '&'),
  596.                     jumpURL = '/jump.php?jump=' + encodeURIComponent(url),
  597.                     link = '<a class="ytlink" href="' + jumpURL + '" target="_blank">' +
  598.                             s + '</a>';
  599.  
  600.                 return link;
  601.  
  602.             },
  603.  
  604.             DIVHTML:
  605.                 '<div id = "grtYT" \
  606.                     style = " \
  607.                         position: fixed ;\
  608.                         display  : none"\
  609.                 ><img /><img /></div>',
  610.             div: 0
  611.         },
  612.  
  613.         lcc = function () {
  614.             var c = cookie(C.NAME);
  615.             if (!c) {
  616.                 log('no GRT config cookie');
  617.                 return;
  618.             }
  619.             var trans = {};
  620.             for (var i in CONFIG_TRANSKEY)
  621.             trans[CONFIG_TRANSKEY[i]] = i;
  622.             var a = c.split('_');
  623.             for (var i = 0; i < a.length; i++) {
  624.                 var p = a[i].split('-'),
  625.                     k = trans[p[0]] || 0,
  626.                     v = p[1];
  627.                 if (!k) continue;
  628.                 if (typeof config[k] == 'undefined') {
  629.                     log('unknown key: ' + k);
  630.                     continue;
  631.                 }
  632.                 log('restoring key %s = %s', k, v);
  633.                 config[k] = parseInt(v, 10);
  634.             }
  635.  
  636.             saveConfigCookie();
  637.         },
  638.  
  639.         saveConfigCookie = function () {
  640.             var a = [];
  641.             for (var i in config) {
  642.                 a[a.length] = CONFIG_TRANSKEY[i] + '-' + config[i];
  643.             }
  644.             var data = a.join('_');
  645.             cookie(C.NAME, data, {
  646.                 path: '/',
  647.                 expires: C.TTL
  648.             });
  649.             log('config cookie saved');
  650.         },
  651.  
  652.  
  653.         delConfigCookie = function () {
  654.             cookie(C.NAME, null, {
  655.                 path: '/'
  656.             });
  657.             log('config cookie removed');
  658.         },
  659.  
  660.  
  661.         i18n = function (k) {
  662.             return (L[k]) ? L[k][lang] : '???';
  663.         },
  664.  
  665.         addClass = function (o, s, check) {
  666.             if (!o) return;
  667.             if (check && (o.className || '').indexOf(s) >= 0) return;
  668.             o.className = s + ' ' + (o.className || '');
  669.         },
  670.  
  671.         removeClass = function (o, s) {
  672.             if (!o || !o.className) return;
  673.             o.className = o.className.replace(s, '');
  674.         },
  675.  
  676.         findTopFrameBody = function (frameName) {
  677.             if (!f.top) f.top = self.frameElement || self;
  678.             try {
  679.                 if (frameName) return top.frames[frameName].document.body;
  680.                 return (f.top.contentWindow || f.top).document.body;
  681.             } catch (e) {
  682.                 log('findTopFrameBody failed: ' + e.toString());
  683.                 return null;
  684.             }
  685.         },
  686.  
  687.         log = function (s) {
  688.             if (!LOG.STD || typeof console == 'undefined') return;
  689.  
  690.             console.log.apply(console,
  691.             arguments || []);
  692.         },
  693.         hS = {
  694.             mFl: function () {
  695.                 var doc = this.contentWindow.document;
  696.                 var userList = doc.getElementById('favoritesOnlineList');
  697.                 if (userList) {
  698.                     if (!config.useIF) return;
  699.                     cZ();
  700.                     var links = xpath('//a[contains(@href,"auswertung\/setcard\/")]', userList);
  701.                     for (var i = links.length - 1; i >= 0; i--) {
  702.                         var a = links[i],
  703.                             userID = a.parentNode.id.match(/row(\d*)/)[1],
  704.                             smileys = a.parentNode.getElementsByTagName('img');
  705.                         if (smileys.length && smileys[0].src.match(/(club|guide)/)) continue;
  706.                         a.parentNode.setAttribute('userid', userID);
  707.                         a.onclick = null;
  708.                         a.addEventListener('click', hS.iC, false);
  709.                     }
  710.                     return;
  711.                 }
  712.                 var msgList = doc.getElementById('newMessageList');
  713.                 if (!msgList || !config.histInMsg) return;
  714.                 var pics = xpath('//a[contains(@href,"\/msg\/\?id=")]/img', msgList),
  715.                     title = i18n('hist');
  716.                 for (var i = pics.length - 1; i >= 0; i--) {
  717.                     var p = pics[i],
  718.                         userID = p.parentNode.parentNode.id.match(/row(\d*)_/)[1];
  719.                     p.setAttribute('userid', userID);
  720.                     p.addEventListener('click', hS.hC, false);
  721.                     p.src = URLS.IMG.HISTORY;
  722.                     p.className = 'grtHist';
  723.                     p.title = title;
  724.                     p.style.left = 0;
  725.                     p.style.padding = '0 4px';
  726.                 }
  727.             },
  728.  
  729.             hC: function (e) {
  730.                 var userID = this.getAttribute('userid') || '???';
  731.                 cZ();
  732.                 hS.iC('HISTORY', '/msg/history.php?uid=' + userID);
  733.                 e.stopPropagation();
  734.                 e.preventDefault();
  735.                 e.cancelBubble = 1;
  736.                 return false;
  737.             },
  738.             tc: function (e) {
  739.                 var tr = this.parentNode.parentNode,
  740.                     userID = 0;
  741.                 while (!userID && tr) {
  742.                     if (tr.getAttribute) userID = tr.getAttribute('userid');
  743.                     tr = tr.previousSibling;
  744.                 }
  745.                 if (!userID) {
  746.                     log('no userID found.');
  747.                     return;
  748.                 }
  749.                 f.main.contentWindow.wrappedJSObject.openUrl('/auswertung/setcard/romeo/footprint.php?receiverId=' + userID);
  750.             },
  751.             yO: function (e) {
  752.                 if (!(/%3Fv%3D([a-z0-9_\-]*)/i).exec(this.href)) return;
  753.                 this.ytdiv.childNodes[0].style.display = 'none';
  754.                 this.ytdiv.childNodes[1].style.display = 'block';
  755.                 this.ytdiv.style.display = 'block';
  756.                 this.ytdiv.childNodes[0].src = this.ytbase + RegExp.$1;
  757.             },
  758.             YT_OUT: function (e) {
  759.                 this.ytdiv.style.display = 'none';
  760.             },
  761.             yM: function (e) {
  762.                 this.ytdiv.style.left = 20 + e.clientX + 'px';
  763.                 this.ytdiv.style.top = 15 + e.clientY + 'px';
  764.             },
  765.             yIl: function (e) {
  766.                 this.nextSibling.style.display = 'none';
  767.                 this.style.display = 'block';
  768.             },
  769.             aC: function (a) {
  770.                 tmp.anonUserInfo = {
  771.                     u: a.getAttribute('username'),
  772.                     a: a
  773.                 };
  774.                 if (!tmp.sessUnlockImg) {
  775.                     tmp.sessUnlockImg = document.createElement('img');
  776.                     tmp.sessUnlockImg.addEventListener('error', function () {
  777.                         var o = tmp.anonUserInfo;
  778.                         if (!o) return;
  779.                         if (config.useIF) {
  780.                             hS.iC.apply(o.a, [0]);
  781.                             return;
  782.                         }
  783.                         f.main.contentWindow.wrappedJSObject.openUrl(o.a.href);
  784.                         delete tmp.anonUserInfo;
  785.                     }, false);
  786.                 }
  787.                 tmp.sessUnlockImg.src = URLS.aH + tmp.anonUserInfo.u;
  788.                 return false;
  789.             },
  790.             iHo: function () {
  791.                 iLi(this.getAttribute('username'), this.getAttribute('userid'), this.getAttribute('picname'));
  792.             },
  793.             iOu: function () {
  794.                 if (mode != MsS.IMAGE) return;
  795.                 hvD();
  796.             },
  797.             iC: function (e, histLink) {
  798.                 var showHistory = (e === 'HISTORY'),
  799.                     url = (showHistory) ? histLink : (this.href || this.parentNode.href);
  800.                 if (e && !showHistory && url.match(/(&page=club|&t=3)/)) {
  801.                     zoomWin.openUrl(url);
  802.                     e.stopPropagation();
  803.                     e.preventDefault();
  804.                     e.cancelBubble = true;
  805.                     return false;
  806.                 }
  807.                 setGray(1);
  808.                 sLsg();
  809.                 mode = (showHistory) ? MsS.HISTORY : MsS.PROFILE;
  810.                 iframe.src = URLS.ABOUT_BLANK;
  811.                 zoomDiv.appendChild(iframe);
  812.                 zoomDiv.appendChild(closeDiv);
  813.                 iframe.src = url;
  814.                 if (mode == MsS.PROFILE && iframe.src.indexOf('://' + top.location.host) < 0) {
  815.                     zoomDiv.appendChild(anonDiv);
  816.                 }
  817.                 if (!showHistory && e) {
  818.                     e.stopPropagation();
  819.                     e.preventDefault();
  820.                     e.cancelBubble = true;
  821.                     return false;
  822.                 }
  823.             },
  824.             dCl: function () {
  825.                 hvD(1);
  826.                 setGray(0);
  827.             },
  828.             dHo: function () {
  829.                 clt();
  830.             },
  831.             IMG_LOAD: function () {
  832.                 if (mode != MsS.IMAGE) return;
  833.                 var div = zoomDiv,
  834.                     win = div.ownerDocument.defaultView,
  835.                     userName = this.getAttribute('username') || '???',
  836.                     userID = this.getAttribute('userid') || 0,
  837.                     noRefresh = !! this.getAttribute('norefresh');
  838.                 div.innerHTML = '<div class="grtZUserName">User: ' + userName.replace(/</g, '&lt;').replace(/>/g, '&gr') + '</div>';
  839.                 div.className = 'grtILoaded';
  840.                 div.style.width = 'auto';
  841.                 div.style.height = 'auto';
  842.                 this.style.maxWidth = win.innerWidth - 103 + 'px';
  843.                 this.style.maxHeight = win.innerHeight - 20 + 'px';
  844.                 this.style.opacity = 1;
  845.                 this.style.position = 'static';
  846.                 div.appendChild(this);
  847.             },
  848.             iiL: function () {
  849.                 if (mode != MsS.IMAGE) return;
  850.                 var imgs = tmp.imgIF.contentWindow.document.getElementsByTagName('img');
  851.                 if (!imgs || !imgs.length) return;
  852.                 zoomedImg.src = imgs[0].src;
  853.             },
  854.             iLoF: function () {
  855.                 if (iframe.src == URLS.ABOUT_BLANK) return;
  856.                 log('GRTZoom iframe loaded');
  857.                 snIO();
  858.                 if (config.ytProf) Cv.ytL();
  859.                 if (mode == MsS.HISTORY) {
  860.                     if (config.histHighl) Cv.hLa();
  861.                     iframe.contentWindow.document.body.scrollTop = 9999999;
  862.                 }
  863.             },
  864.             bCh: function () {
  865.                 if (BMI.minS.selectedIndex && BMI.maxS.selectedIndex) {
  866.                     if (this == BMI.minS) {
  867.                         log('min changed, value is ' + this.value);
  868.                         if (this.value && BMI.maxS.selectedIndex < this.selectedIndex) BMI.maxS.selectedIndex = this.selectedIndex;
  869.                     } else if (this == BMI.maxS) {
  870.                         log('max changed, value is ' + this.value);
  871.                         if (this.value && BMI.minS.selectedIndex > this.selectedIndex) BMI.minS.selectedIndex = this.selectedIndex;
  872.                     } else {
  873.                         log('this should not happen');
  874.                     }
  875.                 }
  876.                 tmp.tConfig.minBMI = BMI.minS.value;
  877.                 tmp.tConfig.maxBMI = BMI.maxS.value;
  878.                 uBC();
  879.             },
  880.             aCh: function () {
  881.                 var min = AGE.minI.value = parseInt(AGE.minI.value, 10) || 18,
  882.                     max = AGE.maxI.value = parseInt(AGE.maxI.value, 10) || 100;
  883.                 if (this == AGE.minI) {
  884.                     if (max < min) AGE.maxI.value = this.value;
  885.                 } else if (this == AGE.maxI) {
  886.                     if (min > max) AGE.minI.value = this.value;
  887.                 } else {
  888.                     log('this should not happen');
  889.                 }
  890.                 tmp.tConfig.minAge = min;
  891.                 tmp.tConfig.maxAge = max;
  892.             },
  893.             AGE_UPDOWN: function (e) {
  894.                 switch (e.keyCode) {
  895.                     case 39:
  896.                     case 38:
  897.                         this.value = parseInt(this.value, 10) + 1;
  898.                         break;
  899.                     case 37:
  900.                     case 40:
  901.                         this.value = parseInt(this.value, 10) - 1;
  902.                         break;
  903.                     default:
  904.                         return;
  905.                 }
  906.                 hS.aCh.apply(this, []);
  907.                 e.preventDefault();
  908.                 return false;
  909.             },
  910.             cBc: function () {
  911.                 var cfgID = this.getAttribute('cfgid') || '';
  912.                 if (typeof tmp.tConfig[cfgID] == 'undefined') return;
  913.                 tmp.tConfig[cfgID] = (this.checked) ? 1 : 0;
  914.                 log('cfg->%s changed to %s', cfgID, !! this.checked);
  915.             },
  916.             cSC: function () {
  917.                 var changed = 0;
  918.                 for (var i in tmp.tConfig) {
  919.                     if (typeof config[i] == 'undefined' || config[i] == tmp.tConfig[i]) continue;
  920.                     config[i] = tmp.tConfig[i];
  921.                     changed = 1;
  922.                 }
  923.                 if (this.ownerDocument.getElementById('grtSaveCookie').checked) {
  924.                     saveConfigCookie();
  925.                 } else {
  926.                     delConfigCookie();
  927.                 }
  928.                 if (changed) {
  929.                     f.main.contentWindow.location.reload();
  930.                     if (f.msg) f.msg.contentWindow.location.reload();
  931.                     return;
  932.                 }
  933.                 hS.dCl();
  934.             }
  935.         },
  936.  
  937.  
  938.         //
  939.         // ---------------   init   --------------------------------
  940.         //
  941.  
  942.         init = function (version, _cfg) {
  943.             checkClub();
  944.             var T_CLUB = (ic) ? '(club)' : '';
  945.             initButtonStyles();
  946.             if (!ic && !self.location.href.match(/(?:left|top)\.php/)) {
  947.                 log('cannot work in frame ' + self.location.href);
  948.                 return;
  949.             }
  950.             if (ic) {
  951.                 lang = (self.document.body.innerHTML.indexOf('Speichern') > 0) ? 'de' : 'en';
  952.             } else {
  953.                 var sels = self.document.getElementsByTagName('select') || [];
  954.                 for (var i = 0; i < sels.length; i++) {
  955.                     if (sels[i].name != 'lang') continue;
  956.                     lang = (sels[i].value == 'de') ? 'de' : 'en';
  957.                 }
  958.             }
  959.             var h = location.host || 'gayromeo',
  960.                 hashPt1 = '#GRT_REF_',
  961.                 hashPt2 = (h.indexOf('planetromeo') >= 0) ? 'PR' : (h.indexOf('gayromeo') >= 0) ? 'GR' : 'IP',
  962.                 hashPt3 = (/https/.test(location.protocol || '')) ? '_S' : '';
  963.             linkFixHash = hashPt1 + hashPt2 + hashPt3;
  964.             URLS.iB = URLS.BASE + URLS.iB;
  965.             URLS.hB = URLS.BASE + URLS.hB;
  966.             for (var i in URLS.IMG) {
  967.                 var url = URLS.iB + URLS.IMG[i];
  968.                 URLS.IMG[i] = url;
  969.                 (new Image()).src = url;
  970.             }
  971.             log('GRT::init()');
  972.             var altHost = top.location.protocol + '//';
  973.             if (altHost == 'https://') altHost += ((top.location.host == Ds.PLANET) ? Ds.GAY : Ds.PLANET);
  974.             else altHost += ((top.location.host == Ds.IP) ? Ds.PLANET : Ds.IP);
  975.             URLS.aH = altHost + '/';
  976.             URLS.aPu = altHost + URLS.aPu;
  977.             if (started) {
  978.                 log('GRT already running.');
  979.                 return;
  980.             }
  981.             if (typeof _cfg == 'object') {
  982.                 log('taking config vals from given config object');
  983.                 for (var i in _cfg) {
  984.                     if (typeof config[i] == 'undefined') continue;
  985.                     config[i] = _cfg[i];
  986.                 }
  987.             } else {
  988.                 lcc();
  989.             }
  990.             gmVersion = version;
  991.             smf();
  992.             f.msg = (ic) ? null : top.frames.persoenliches.frameElement;
  993.             if (f.msg) {
  994.                 f.msg.addEventListener('load', hS.mFl, false);
  995.             }
  996.             var topBody = findTopFrameBody(),
  997.                 div = document.createElement('div');
  998.             div.id = 'grtDiv';
  999.             div.style.backgroundImage = 'url(' + URLS.iB + 'bg.jpg)';
  1000.             if (ic) {
  1001.                 var className = (xpath('//img[contains(@src,"logoGuideClub")]', topBody).length) ? 'grtGuideClub' : 'grtClub';
  1002.                 addClass(topBody, className);
  1003.             }
  1004.             if (top.location.hostname == Ds.GAY) addClass(div, 'grtRomeo');
  1005.             grtDiv = div;
  1006.             div.innerHTML = '<div id="grtPimp"><i>pimped by<b>GR-Tools</b></i></div>' + '<img id="grtClub" src="' + URLS.IMG.CLUB + '" alt="" title="GR-Tools Club"/>' + '<img id="grtCfg" src="' + URLS.IMG.CFG + '" alt="" title="GR-Tools ' + i18n('sett') + '"/>' + '<img src="' + URLS.IMG.NONEWS + '" alt="" title="GR-Tools News" id="grtNews" />';
  1007.             tmp.nBu = div.childNodes[3];
  1008.             div.childNodes[2].addEventListener('click', function () {
  1009.                 cZ();
  1010.                 sCf();
  1011.             }, false);
  1012.             div.childNodes[1].addEventListener('click', openClub, false);
  1013.             topBody.appendChild(div);
  1014.             started = 1;
  1015.             log('GRT::init() done');
  1016.             track('initDone' + T_CLUB + '(gm' + gmVersion.used + ')');
  1017.         }, setNewsDate = function (d) {
  1018.             if (!d) {
  1019.                 setStyles(tmp.nBu, {
  1020.                     opacity: 0.3,
  1021.                     cursor: 'default'
  1022.                 });
  1023.                 return;
  1024.             }
  1025.             addClass(grtDiv, 'grtNews');
  1026.             tmp.nBu.src = URLS.IMG.NEWS;
  1027.             tmp.newsNum = parseInt(d.replace(/\./g, ''), 10), frag = document.createElement('div');
  1028.             frag.innerHTML = '<div id="grtNewsTxt"><b>News!</b><br/><small style="font-size:9px">' + d + '</small></div>';
  1029.             if (config.newsRead == tmp.newsNum) {
  1030.                 addClass(grtDiv, 'grtNewsRead', 1);
  1031.             }
  1032.             tmp.nBu.addEventListener('click', function (e) {
  1033.                 track('newsClick');
  1034.                 cZ();
  1035.                 lep(gnu());
  1036.                 setNewsRead();
  1037.             }, false);
  1038.             if (tmp.uAv) return;
  1039.             var newsTxt = frag.childNodes[0];
  1040.             grtDiv.appendChild(newsTxt);
  1041.             newsTxt.addEventListener('click', function (e) {
  1042.                 track('newsClick');
  1043.                 cZ();
  1044.                 lep(gnu());
  1045.                 setNewsRead();
  1046.             }, false);
  1047.         },
  1048.  
  1049.         smf = function () {
  1050.             try {
  1051.                 f.main = (ic) ? top.frames[1].frames[1].frameElement : top.frames.mitte.frameElement;
  1052.             } catch (e) {
  1053.                 log('GR-Tools cannot find main frame. Retry in a second.');
  1054.                 setTimeout(smf, 1000);
  1055.                 return;
  1056.             }
  1057.             f.main.addEventListener('load', function () {
  1058.                 log('frame loaded');
  1059.                 af();
  1060.                 log('apply filter done');
  1061.             }, false);
  1062.             log('load handler attached');
  1063.         },
  1064.         setNewsRead = function () {
  1065.             addClass(grtDiv, 'grtNewsRead', 1);
  1066.             if ( !! cookie(C.NAME)) {
  1067.                 config.newsRead = tmp.newsNum || 1;
  1068.                 saveConfigCookie();
  1069.             }
  1070.         },
  1071.         gcu = function (ver) {
  1072.             var url = URLS.hB + URLS.HTML.CONFIG + (ver || Date.parse(new Date()).toString(16)) + '.' + lang + '.html';
  1073.             return url;
  1074.         },
  1075.         gnu = function () {
  1076.             var url = URLS.hB + URLS.HTML.NEWS + '?lang=' + lang + '&revision=' + gmVersion.used;
  1077.             return url;
  1078.         },
  1079.         setConfigHTML = function (html) {
  1080.             cfg.html = html.replace(/##PICBASE/g, URLS.BASE + 'img/cfg/');
  1081.         },
  1082.         af = function () {
  1083.             var body = null;
  1084.             log('GRT::af()');
  1085.             try {
  1086.                 body = f.main.contentWindow.document.body;
  1087.                 if (body.className != 'searchResults') throw 'no result page';
  1088.             } catch (e) {
  1089.                 if (body.className == 'mainPage') {
  1090.                     cZ();
  1091.                 }
  1092.                 log(e.toString());
  1093.                 return;
  1094.             }
  1095.             var tbodies = body.getElementsByTagName('tbody');
  1096.             if (tbodies.length < 2) {
  1097.                 log('skipped: no result table in page.');
  1098.                 return;
  1099.             }
  1100.             var doc = body.ownerDocument,
  1101.                 head = doc.getElementsByTagName('head')[0],
  1102.                 sI = !! (doc.getElementById('grtBMIStyles'));
  1103.             if (iE(doc)) return;
  1104.             if (!sI) {
  1105.                 var bmiStyle = doc.createElement('style');
  1106.                 bmiStyle.type = 'text/css';
  1107.                 bmiStyle.id = 'grtBMIStyles';
  1108.                 bmiStyle.innerHTML = '.bmiF1 td {opacity:0.5}' + '.bmiF1 td:first-child img {opacity:0.5}' + '.bmiF1 td:first-child, .bmiF1 td:first-child .grtZIcon {opacity:1}' + '.bmiF2, .bmiF3 {opacity:0.5}' + '.grtAF {opacity:0.6}' + '.grtAF a {color:#eee}' + '.grtHist {margin:3px 0 0 2px;vertical-align:top;cursor:pointer;width:10px;height:10px;opacity:0.6}' + 'img.grtHist:hover {opacity:1}';
  1109.                 head.appendChild(bmiStyle);
  1110.             }
  1111.             if (config.bigPaging && !body.getAttribute('grtPagingDone')) {
  1112.                 body.setAttribute('grtPagingDone', 1);
  1113.                 var r = doc.evaluate('//a[contains(@href,"resultPage")][contains(./strong,"\xab")]', doc, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null);
  1114.                 if (r.singleNodeValue) {
  1115.                     r.singleNodeValue.id = 'grtPrev';
  1116.                     r.singleNodeValue.innerHTML = '&nbsp;';
  1117.                 }
  1118.                 r = doc.evaluate('//a[contains(@href,"resultPage")][contains(./strong,"\xbb")]', doc, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null);
  1119.                 if (r.singleNodeValue) {
  1120.                     r.singleNodeValue.id = 'grtNext';
  1121.                     r.singleNodeValue.innerHTML = '&nbsp;';
  1122.                 }
  1123.             }
  1124.             if (config.ytHead && !body.getAttribute('grtyt')) {
  1125.                 body.setAttribute('grtyt', 1);
  1126.                 var yts = xpath('//span[contains(.,"http:")][contains(.,"youtube")]', body);
  1127.                 for (var i = yts.length - 1; i >= 0; i--) {
  1128.                     yts[i].innerHTML = yts[i].innerHTML.replace(YT.RE, YT.FN);
  1129.                 }
  1130.                 ayp(doc);
  1131.             }
  1132.             cZ(f.main.contentWindow);
  1133.             var count = 0,
  1134.                 tbody = tbodies[1],
  1135.                 histTitle = i18n('hist'),
  1136.                 secrTitle = i18n('secret');
  1137.             for (var j = 1; j < tbodies.length; j++) {
  1138.                 var tbody = tbodies[j];
  1139.                 if (tbody.getAttribute('grtPrep')) continue;
  1140.                 tbody.setAttribute('grtPrep', 1);
  1141.                 for (var i = 0; i < tbody.rows.length; i++) {
  1142.                     var tr = tbody.rows[i];
  1143.                     for (var j = 0; j < tr.cells.length; j++) {
  1144.                         var td = tr.cells[j],
  1145.                             txt = td.textContent;
  1146.                         if (!/(\d{2,3})\.(\d{2,3})cm(?:<\/span>)?\.(?:<[^>]+>)?(\d{1,3})kg/.exec(txt.replace(/[\r\n]/g, ''))) continue;
  1147.                         var age = parseInt(RegExp.$1, 10),
  1148.                             size = parseInt(RegExp.$2, 10) / 100.0,
  1149.                             weight = parseInt(RegExp.$3, 10),
  1150.                             bmi = Math.round(weight / (size * size)),
  1151.                             userID = tr.getElementsByTagName('a')[0].href.match(/set=(\d*)/)[1];
  1152.                         tr.setAttribute('userid', userID);
  1153.                         if (config.filterAge && (age < config.minAge || age > config.maxAge)) {
  1154.                             addClass(td, 'grtAF');
  1155.                             addClass(td.parentNode.cells[td.cellIndex - 1], 'grtAF');
  1156.                             addClass(td.parentNode.cells[td.cellIndex + 1], 'grtAF');
  1157.                         }
  1158.                         if (config.showBMI || config.histInRes) {
  1159.                             var z = document.createElement('span');
  1160.                             z.className = 'grtBMI';
  1161.                             td.previousSibling.previousSibling.appendChild(z);
  1162.                             var profileLink = z.parentNode.getElementsByTagName('a')[0],
  1163.                                 userName = profileLink.innerHTML,
  1164.                                 hpLink = (config.bmiClickHP) ? 'title="' + secrTitle + '" username="' + encodeURIComponent(userName) + '" href="' + URLS.aPu + userID + linkFixHash + '" onclick="return top.GRT.secretClick(this)"' : '',
  1165.                                 bmiVal = (config.showBMI) ? '<a target="_blank" ' + hpLink + '>' + Math.round(bmi) + '</a>' : '',
  1166.                                 histLink = (config.histInRes) ? '<img src="' + URLS.IMG.HISTORY + '" userid="' + userID + '" class="grtHist" />' : '';
  1167.                             z.innerHTML = '(' + bmiVal + histLink + ')';
  1168.                             if (config.useIF) {
  1169.                                 profileLink.onclick = null;
  1170.                                 profileLink.addEventListener('click', hS.iC, false);
  1171.                             }
  1172.                             if (config.histInRes) {
  1173.                                 var histNode = z.childNodes[(config.showBMI) ? 2 : 1];
  1174.                                 histNode.addEventListener('click', hS.hC, false);
  1175.                                 histNode.title = histTitle;
  1176.                             }
  1177.                         }
  1178.                         var isOutOfLimits = config.filterBMI && (bmi < config.minBMI || bmi > config.maxBMI);
  1179.                         if (isOutOfLimits) {
  1180.                             count++;
  1181.                             addClass(tr, 'bmiF1');
  1182.                             addClass(tr.nextSibling.nextSibling, 'bmiF2');
  1183.                             addClass(tr.nextSibling.nextSibling.nextSibling.nextSibling, 'bmiF3');
  1184.                         }
  1185.                         break;
  1186.                     }
  1187.                 }
  1188.             }
  1189.             if (config.clickTapse) {
  1190.                 var fPrints = xpath('//img[contains(@src,"/img/footprints/")]', doc);
  1191.                 for (var i = fPrints.length - 1; i >= 0; i--) {
  1192.                     var fp = fPrints[i];
  1193.                     if (fp.getAttribute('grtPrep')) continue;
  1194.                     fp.setAttribute('grtPrep', 1)
  1195.                     fp.style.cursor = 'pointer';
  1196.                     fp.addEventListener('click', hS.tc, false);
  1197.                 }
  1198.             }
  1199.             log('%i items filtered.', count);
  1200.         },
  1201.         ayp = function (doc) {
  1202.             if (!config.ytPreview) return;
  1203.             var ytAs = xpath('//a[@class="ytlink"]', doc);
  1204.             if (!ytAs.length) return;
  1205.             var div = doc.getElementById('grtYT');
  1206.             if (!div) {
  1207.                 var x = doc.createElement('div');
  1208.                 x.innerHTML = YT.DIVHTML;
  1209.                 div = x.childNodes[0];
  1210.                 doc.body.appendChild(div);
  1211.                 div.childNodes[0].addEventListener('load', hS.yIl, false);
  1212.                 div.childNodes[0].style.marginTop = '-33px';
  1213.                 div.childNodes[1].src = URLS.IMG.YTLOAD;
  1214.             }
  1215.             for (var i = 0; i < ytAs.length; i++) {
  1216.                 var a = ytAs[i];
  1217.                 a.ytdiv = div;
  1218.                 a.ytbase = URLS.YTIMG;
  1219.                 a.addEventListener('mouseover', hS.yO, false);
  1220.                 a.addEventListener('mouseout', hS.YT_OUT, false);
  1221.                 a.addEventListener('mousemove', hS.yM, false);
  1222.             }
  1223.         },
  1224.         setLiveRevision = function (v) {
  1225.             var vv = v.match(/(\d)\.99\.(\d*)/);
  1226.             if (vv) {
  1227.                 v = vv[1] + '.' + vv[2];
  1228.             }
  1229.             gmVersion.live = v;
  1230.             var needsUpdate = function (used, live) {
  1231.                 var u = used.split('.'),
  1232.                     l = live.split('.'),
  1233.                     its = Math.min(u.length, l.length);
  1234.                 for (var i = 0; i < its; i++)
  1235.                 if (parseInt(u[i]) < parseInt(l[i])) return true;
  1236.                 return (u[its - 1] == l[its - 1] && u.length < l.length);
  1237.             };
  1238.             if (!needsUpdate(gmVersion.used, gmVersion.live)) return;
  1239.             addClass(grtDiv, 'grtUpd');
  1240.             var frag = document.createElement('div');
  1241.             frag.innerHTML = '<img id="grtUpd" src="' + URLS.IMG.UPD + '" alt="" title="GR-Tools ' + i18n('upd') + '"/>';
  1242.             var img = frag.childNodes[0];
  1243.             grtDiv.insertBefore(img, grtDiv.getElementsByTagName('img')[2]);
  1244.             tmp.uAv = 1;
  1245.             img.addEventListener('click', function (e) {
  1246.                 track('updateClick');
  1247.                 cZ();
  1248.                 var url = URLS.hB + URLS.HTML.UPD + '?lang=' + lang + '&revision=' + gmVersion.used;
  1249.                 lep(url);
  1250.             }, false);
  1251.         },
  1252.         checkClub = function () {
  1253.             if (ic !== -1) return;
  1254.             ic = !! self.location.href.match(/setcard\/cluide\//);
  1255.         },
  1256.         xpath = function (xpath, refNode) {
  1257.             var n = [],
  1258.                 res = (refNode.ownerDocument || refNode).evaluate(xpath, refNode, null, XPathResult.ORDERED_NODE_ITERATOR_TYPE, null),
  1259.                 r = res.iterateNext();
  1260.             while (r != null) {
  1261.                 n[n.length] = r;
  1262.                 r = res.iterateNext();
  1263.             }
  1264.             return n;
  1265.         },
  1266.         openClub = function () {
  1267.             track('openClub');
  1268.             f.main.contentWindow.wrappedJSObject.openUrl('/auswertung/setcard/index.php?set=3053381&t=3&page=club');
  1269.         },
  1270.         track = function (s) {
  1271.             if (!LOG.T) return;
  1272.             (new Image()).src = URLS.BASE + 'b/GRT_' + s + '_' + Date.parse(new Date).toString(16).substring(5);
  1273.         },
  1274.         initButtonStyles = function () {
  1275.             if (started) return;
  1276.             checkClub();
  1277.             var f = findTopFrameBody();
  1278.             if (!f) {
  1279.                 log('no matching frame found for css');
  1280.                 return;
  1281.             }
  1282.             f.innerHTML += '<style type="text/css">' + HTML.BUTTON_STYLES + '</style>';
  1283.         },
  1284.         setStyles = function (o, css) {
  1285.             for (var i in css)
  1286.             o.style[i] = css[i];
  1287.         },
  1288.         iE = function (b) {
  1289.             return !!((b.getElementsByTagName('td')[0] || {}).innerHTML || '').match(/escorts/i);
  1290.         },
  1291.         cZ = function () {
  1292.  
  1293.             var win = f.main.contentWindow;
  1294.             if (win[ZOOM_APPLIED]) return;
  1295.             log('zoom wasnt there, adding now..');
  1296.             win[ZOOM_APPLIED] = 1;
  1297.             var realFrames = win.document.getElementsByTagName('frame');
  1298.             initZoom((realFrames.length > 1) ? realFrames[1] : win);
  1299.         },
  1300.         cookie = function (name, value, _opts) {
  1301.             if (arguments.length > 1) {
  1302.                 var opts = _opts || {};
  1303.                 if (value === null) {
  1304.                     value = '';
  1305.                     opts.expires = -1;
  1306.                 }
  1307.                 var path = opts.path ? '; path=' + opts.path : '',
  1308.                     domain = opts.domain ? '; domain=' + opts.domain : '',
  1309.                     secure = opts.secure ? '; secure' : '',
  1310.                     expires = '',
  1311.                     date;
  1312.                 if (opts.expires && (typeof opts.expires == 'number' || opts.expires.toUTCString)) {
  1313.                     if (typeof opts.expires == 'number') {
  1314.                         date = new Date();
  1315.                         date.setTime(date.getTime() + (opts.expires * 24 * 60 * 60 * 1000));
  1316.                     } else {
  1317.                         date = opts.expires;
  1318.                     }
  1319.                     expires = '; expires=' + date.toUTCString();
  1320.                 }
  1321.                 document.cookie = [name, '=', encodeURIComponent(value), expires, path, domain, secure].join('');
  1322.                 return;
  1323.             }
  1324.             var cVal = null;
  1325.             if (document.cookie && document.cookie != '') {
  1326.                 var cookies = document.cookie.split(';');
  1327.                 for (var i = 0; i < cookies.length; i++) {
  1328.                     var cookie = cookies[i].replace(/^\s+|\s+$/g, '');
  1329.                     if (cookie.substring(0, name.length + 1) == (name + '=')) {
  1330.                         cVal = decodeURIComponent(cookie.substring(name.length + 1));
  1331.                         break;
  1332.                     }
  1333.                 }
  1334.             }
  1335.             return cVal;
  1336.         },
  1337.         snIO = function () {
  1338.             var h = zoomWin.innerHeight - 28,
  1339.                 cssH = h + 'px',
  1340.                 body = zoomDoc.body,
  1341.                 scroll = body.scrollTop;
  1342.             body.oldScrollTop = scroll || 0;
  1343.             body.style.overflow = 'hidden';
  1344.             body.scrollTop = scroll;
  1345.             zoomDiv.style.width = 'auto';
  1346.             zoomDiv.style.height = 'auto';
  1347.             closeDiv.style.height = cssH;
  1348.             if (mode == MsS.CONFIG) {
  1349.                 cfg.div.style.height = cssH;
  1350.             } else {
  1351.                 iframe.style.height = cssH;
  1352.             }
  1353.             zoomDiv.className = 'grtPLoaded';
  1354.         },
  1355.         Cv = {
  1356.             ytL: function () {
  1357.                 try {
  1358.                     var doc = zoomDiv.getElementsByTagName('iframe')[0].contentWindow.document,
  1359.                         tds = xpath(YT.PROFILE_XPATH, doc);
  1360.                     for (var i = tds.length - 1; i >= 0; i--) {
  1361.                         var len = tds[i].innerHTML.length,
  1362.                             sDone = tds[i].innerHTML.replace(YT.RE, YT.FN);
  1363.                         if (sDone.length == len) continue;
  1364.                         tds[i].innerHTML = sDone;
  1365.                     }
  1366.                     ayp(doc);
  1367.                 } catch (e) {}
  1368.             },
  1369.             hLa: function () {
  1370.                 try {
  1371.                     var doc = zoomDiv.getElementsByTagName('iframe')[0].contentWindow.document,
  1372.                         lastMsgA = xpath('//a[contains(@name,"lastmessage")]', doc);
  1373.                     tds = xpath('//tr/td[contains(@class,"body")]', doc), td = tds[tds.length - 1];
  1374.                     if (!lastMsgA.length || !tds.length) return;
  1375.                     setStyles(td, {
  1376.                         border: '1px solid #738cbe',
  1377.                         borderWidth: '1px 0',
  1378.                         padding: '6px 4px 0 22px',
  1379.                         background: '#203B71 url(' + URLS.iB + 'lastmsg.gif) 5px 7px no-repeat'
  1380.                     });
  1381.                     td.parentNode.parentNode.parentNode.style.borderCollapse = 'separate';
  1382.                 } catch (e) {}
  1383.             }
  1384.         }, isPagePrepared = function () {
  1385.             return !!f.main.contentWindow[PAGE_PREPARED];
  1386.         },
  1387.  
  1388.         setPagePrepared = function () {
  1389.             f.main.contentWindow[PAGE_PREPARED] = 1;
  1390.         },
  1391.         initZoom = function (targetWin) {
  1392.             if (isPagePrepared()) {
  1393.                 log('grt prepared page already.');
  1394.             } else {
  1395.                 log('grt preparing page..');
  1396.                 setPagePrepared();
  1397.                 zoomDiv = null;
  1398.                 gray = null;
  1399.                 currentZoomUserID = null;
  1400.                 zoomVisible = null;
  1401.                 clt();
  1402.                 zoomWin = targetWin;
  1403.                 zoomDoc = zoomWin.document;
  1404.                 if (iE(zoomDoc)) return;
  1405.                 if (iframe) iframe = null;
  1406.                 iframe = zoomDoc.createElement('iframe');
  1407.                 iframe.addEventListener('load', hS.iLoF, false);
  1408.                 cfg.div = zoomDoc.createElement('div');
  1409.                 cfg.div.id = 'grtCfgDiv';
  1410.                 cfg.div.title = ' ';
  1411.                 cfg.div.addEventListener('click', function (e) {
  1412.                     e.stopPropagation();
  1413.                     e.cancelBubble = true;
  1414.                 }, false);
  1415.                 closeDiv = zoomDoc.createElement('div');
  1416.                 closeDiv.id = 'grtZCl';
  1417.                 anonDiv = zoomDoc.createElement('div');
  1418.                 anonDiv.id = 'grtZAnon';
  1419.                 var width = zoomWin.innerWidth || 680;
  1420.                 if (width < 600) {
  1421.                     var w = width - 75 + 'px';
  1422.                     iframe.style.width = w;
  1423.                     cfg.div.style.width = w;
  1424.                 }
  1425.                 if (zoomedImg) zoomedImg = null;
  1426.                 zoomedImg = zoomDoc.createElement('img');
  1427.                 zoomedImg.addEventListener('load', hS.IMG_LOAD, false);
  1428.                 if (tmp.imgIF) delete tmp.imgIF;
  1429.                 tmp.imgIF = zoomDoc.createElement('iframe');
  1430.                 tmp.imgIF.style.display = 'none';
  1431.                 zoomDoc.body.appendChild(tmp.imgIF);
  1432.                 tmp.imgIF.addEventListener('load', hS.iiL, false);
  1433.                 var xdiv = zoomDoc.createElement('div');
  1434.                 xdiv.innerHTML = HTML.STYLES + HTML.DIV + HTML.GRAY;
  1435.                 zoomDoc.body.appendChild(xdiv);
  1436.                 for (var i = 0; i < 3; i++) {
  1437.                     zoomDoc.body.appendChild(xdiv.childNodes[0]);
  1438.                 }
  1439.                 zoomDoc.body.removeChild(xdiv);
  1440.                 zoomDiv = zoomDoc.getElementById('grtZDiv');
  1441.                 zoomDiv.title = i18n('close');
  1442.                 zoomDiv.addEventListener('mouseover', hS.dHo, false);
  1443.                 zoomDiv.addEventListener('click', hS.dCl, false);
  1444.                 gray = zoomDoc.getElementById('grtGray');
  1445.                 gray.addEventListener('click', hS.dCl, false);
  1446.             }
  1447.             var imgs = zoomDoc.getElementsByTagName('img'),
  1448.                 zoomIconURL = URLS.IMG['ZOOM' + ((config.bigZoom) ? 2 : 1)];
  1449.             if (iE(zoomDoc)) return;
  1450.             for (var i = 0; i < imgs.length; i++) {
  1451.                 var img = imgs[i],
  1452.                     src = img.src;
  1453.                 if (img.getAttribute(ZOOM_ADDED) || !/\/img\/usr\/([0-9a-f]*\.jpg)$/.exec(img.src || '')) continue;
  1454.                 img.setAttribute(ZOOM_ADDED, 1);
  1455.                 var picName = RegExp.$1,
  1456.                     zoomIconHTML = '<img src="' + zoomIconURL + '" alt="Zoom" class="grtZIcon" />',
  1457.                     _a = img.parentNode,
  1458.                     a = _a;
  1459.                 while (_a != _a.ownerDocument.body) {
  1460.                     if (_a.nodeName == 'A') {
  1461.                         a = _a;
  1462.                         break;
  1463.                     }
  1464.                     _a = _a.parentNode;
  1465.                 }
  1466.                 var moreThanOne = a.parentNode.getElementsByTagName('a').length > 1,
  1467.                     td = (moreThanOne) ? a.parentNode : a.parentNode.parentNode.getElementsByTagName('td')[1],
  1468.                     username = '???',
  1469.                     userID = 0;
  1470.                 if (!td) {
  1471.                     var _p = a;
  1472.                     while (_p != document.body) {
  1473.                         _p = _p.parentNode;
  1474.                         if (_p == a.ownerDocument.body) break;
  1475.                         if (_p.tagName != 'TD') continue;
  1476.                         td = _p.parentNode.cells[1] || 0;
  1477.                         break;
  1478.                     }
  1479.                 }
  1480.                 if (config.zoom) {
  1481.                     if (td) {
  1482.                         var as = td.getElementsByTagName('a');
  1483.                         for (var z = 0; z < as.length; z++) {
  1484.                             var _a = as[z];
  1485.                             if (!_a.href) continue;
  1486.                             if (_a.href.match(/setcard/i)) {
  1487.                                 username = _a.innerHTML;
  1488.                                 userID = _a.href.match(/set=(\d*)/)[1] || 0;
  1489.                             } else if (/popup\.php\/([0-9a-z\.]+)\.jpg/.exec(_a.href)) {
  1490.                                 picName = RegExp.$1;
  1491.                             }
  1492.                             if (userID && picName) break;
  1493.                         }
  1494.                     }
  1495.                     a.className += ' grt-thumb';
  1496.                     a.innerHTML += zoomIconHTML;
  1497.                     var zoomIcon = a.childNodes[a.childNodes.length - 1];
  1498.                     zoomIcon.setAttribute('username', username);
  1499.                     zoomIcon.setAttribute('userid', userID);
  1500.                     picName = self.location.protocol + '//' + self.location.host + '/auswertung/pix/popup.php/' + picName;
  1501.                     zoomIcon.setAttribute('picname', picName);
  1502.                     if (moreThanOne) a.style.display = 'inline-block';
  1503.                     zoomIcon.parentNode.style.outline = 'none';
  1504.                     zoomIcon.addEventListener('mouseover', hS.iHo, false);
  1505.                     zoomIcon.addEventListener('mouseout', hS.iOu, false);
  1506.                 }
  1507.                 if (config.useIF) {
  1508.                     var handlerElem = (moreThanOne) ? td.getElementsByTagName('a')[0] : (config.thumbIF) ? a : zoomIcon;
  1509.                     if (handlerElem) {
  1510.                         handlerElem.addEventListener('click', hS.iC, false);
  1511.                         if (handlerElem === a) {
  1512.                             a.onclick = null;
  1513.                         } else if (moreThanOne) {
  1514.                             handlerElem.onclick = null;
  1515.                         }
  1516.                     }
  1517.                 }
  1518.             }
  1519.         },
  1520.         setGray = function (on) {
  1521.             if (on) {
  1522.                 gray.style.display = 'block';
  1523.                 return;
  1524.             }
  1525.             var body = zoomDoc.body;
  1526.             body.style.overflow = 'auto';
  1527.             if (body.oldScrollTop) {
  1528.                 body.scrollTop = body.oldScrollTop;
  1529.                 body.oldScrollTop = 0;
  1530.             }
  1531.             gray.style.display = 'none';
  1532.         },
  1533.         lep = function (url) {
  1534.             setGray(1);
  1535.             sLsg();
  1536.             mode = MsS.OTHER;
  1537.             zoomDiv.appendChild(iframe);
  1538.             zoomDiv.appendChild(closeDiv);
  1539.             iframe.src = url;
  1540.         },
  1541.         sCf = function () {
  1542.             setGray(1);
  1543.             sLsg();
  1544.             mode = MsS.CONFIG;
  1545.             cfg.div.innerHTML = cfg.html;
  1546.             zoomDiv.appendChild(cfg.div);
  1547.             tmp.tConfig = {};
  1548.             for (var i in config)
  1549.             tmp.tConfig[i] = config[i];
  1550.             var cbs = xpath('//input[@type="checkbox"]', cfg.div);
  1551.             for (var i = 0; i < cbs.length; i++) {
  1552.                 var cb = cbs[i],
  1553.                     id = (cb.id || '').substring(5);
  1554.                 if (!id || typeof tmp.tConfig[id] == 'undefined') continue;
  1555.                 cb.checked = !! tmp.tConfig[id];
  1556.                 cb.setAttribute('cfgid', id);
  1557.                 cb.addEventListener('change', hS.cBc, false);
  1558.             }
  1559.             cfg.div.ownerDocument.getElementById('grtSaveCookie').checked = !! cookie(C.NAME);
  1560.             cfg.div.ownerDocument.getElementById('grtSaveConfig').addEventListener('click', hS.cSC, false);
  1561.             var bmiDiv = cfg.div.ownerDocument.getElementById('bmiDiv'),
  1562.                 ageDiv = cfg.div.ownerDocument.getElementById('ageDiv'),
  1563.                 protoSelect = zoomDoc.createElement('select'),
  1564.                 optIndex = 0,
  1565.                 minIndex = 0,
  1566.                 maxIndex = 0;
  1567.             protoSelect.className = 'bmiSelect';
  1568.             for (var i = BMI.RANGE.VISIBLE.min - 1; i <= BMI.RANGE.VISIBLE.max; i++) {
  1569.                 var opt = zoomDoc.createElement('option'),
  1570.                     status = (i < BMI.RANGE.VISIBLE.min) ? 'egal' : (i < BMI.RANGE.HEALTHY.min) ? 'below' : (i > BMI.RANGE.HEALTHY.max) ? 'above' : 'ok';
  1571.                 opt.innerHTML = (i < BMI.RANGE.VISIBLE.min) ? 'egal' : i;
  1572.                 opt.value = (i < BMI.RANGE.VISIBLE.min) ? false : i;
  1573.                 opt.style.background = BMI.COLOR[status];
  1574.                 protoSelect.appendChild(opt);
  1575.                 if (i == config.minBMI) minIndex = optIndex;
  1576.                 if (i == config.maxBMI) maxIndex = optIndex;
  1577.                 optIndex++;
  1578.             }
  1579.             BMI.minS = protoSelect.cloneNode(1);
  1580.             BMI.minS.id = 'grtMinSelect';
  1581.             BMI.minS.selectedIndex = minIndex;
  1582.             BMI.minS.addEventListener('change', hS.bCh, false);
  1583.             BMI.maxS = protoSelect;
  1584.             BMI.maxS.id = 'grtMaxSelect';
  1585.             BMI.maxS.selectedIndex = maxIndex;
  1586.             BMI.maxS.addEventListener('change', hS.bCh, false);
  1587.             var minLabel = zoomDoc.createElement('label');
  1588.             minLabel.innerHTML = 'min.';
  1589.             minLabel.setAttribute('for', 'grtMinSelect');
  1590.             var maxLabel = zoomDoc.createElement('label');
  1591.             maxLabel.innerHTML = 'max.';
  1592.             maxLabel.setAttribute('for', 'grtMaxSelect');
  1593.             bmiDiv.appendChild(minLabel);
  1594.             bmiDiv.appendChild(BMI.minS);
  1595.             bmiDiv.appendChild(maxLabel);
  1596.             bmiDiv.appendChild(BMI.maxS);
  1597.             uBC();
  1598.             AGE.minI = zoomDoc.createElement('input');
  1599.             AGE.minI.id = 'grtAgeMin';
  1600.             AGE.minI.value = config.minAge;
  1601.             AGE.minI.addEventListener('click', function () {
  1602.                 this.select()
  1603.             }, false);
  1604.             AGE.minI.addEventListener('keydown', hS.AGE_UPDOWN, false);
  1605.             AGE.minI.addEventListener('change', hS.aCh, false);
  1606.             AGE.maxI = AGE.minI.cloneNode(1);
  1607.             AGE.maxI.id = 'grtAgeMax';
  1608.             AGE.maxI.value = config.maxAge;
  1609.             AGE.maxI.addEventListener('click', function () {
  1610.                 this.select()
  1611.             }, false);
  1612.             AGE.maxI.addEventListener('keydown', hS.AGE_UPDOWN, false);
  1613.             AGE.maxI.addEventListener('change', hS.aCh, false);
  1614.             minLabel = zoomDoc.createElement('label');
  1615.             minLabel.innerHTML = 'min.';
  1616.             minLabel.setAttribute('for', 'grtAgeMin');
  1617.             maxLabel = zoomDoc.createElement('label');
  1618.             maxLabel.innerHTML = 'max.';
  1619.             maxLabel.setAttribute('for', 'grtAgeMax');
  1620.             ageDiv.appendChild(minLabel);
  1621.             ageDiv.appendChild(AGE.minI);
  1622.             ageDiv.appendChild(maxLabel);
  1623.             ageDiv.appendChild(AGE.maxI);
  1624.             zoomDiv.appendChild(closeDiv);
  1625.             snIO();
  1626.         },
  1627.         uBC = function () {
  1628.             BMI.minS.style.backgroundColor = BMI.minS.options[BMI.minS.selectedIndex].style.backgroundColor;
  1629.             BMI.maxS.style.backgroundColor = BMI.maxS.options[BMI.maxS.selectedIndex].style.backgroundColor;
  1630.         },
  1631.         sLsg = function () {
  1632.             zoomDiv.innerHTML = '';
  1633.             zoomDiv.className = '';
  1634.             zoomDiv.style.width = '';
  1635.             zoomDiv.style.height = '';
  1636.             zoomDiv.style.display = 'block';
  1637.             zoomVisible = 1;
  1638.         },
  1639.         iLi = function (username, userID, picName) {
  1640.             clt();
  1641.             if (zoomVisible && userID == currentZoomUID && mode == MsS.IMAGE) return;
  1642.             currentZoomUID = userID;
  1643.             sLsg();
  1644.             mode = MsS.IMAGE;
  1645.             zoomedImg.setAttribute('userid', userID);
  1646.             zoomedImg.setAttribute('username', username);
  1647.             zoomedImg.id = 'grtFull';
  1648.             tmp.imgIF.src = picName;
  1649.         },
  1650.         clt = function () {
  1651.             if (!hideTimer) return;
  1652.             clearTimeout(hideTimer);
  1653.             hideTimer = null;
  1654.         },
  1655.         hvD = function (_now_) {
  1656.             if (hideTimer) return;
  1657.             if (_now_) {
  1658.                 rHd();
  1659.                 return;
  1660.             }
  1661.             var t = (zoomedImg.width < 300 || zoomedImg.height < 300) ? 250 : 150;
  1662.             hideTimer = setTimeout(rHd, t);
  1663.         },
  1664.         rHd = function () {
  1665.             hideTimer = null;
  1666.             zoomDiv.innerHTML = '';
  1667.             zoomDiv.style.display = 'none';
  1668.             zoomVisible = 0;
  1669.         },
  1670.         getStatusURL = function (isLocal) {
  1671.             var statusURLBase = (isLocal) ? 'http://gr-tools/' : URLS.BASE;
  1672.  
  1673.             return statusURLBase + 'status';
  1674.         };
  1675.  
  1676.     return {
  1677.         init: init,
  1678.         retrigger: function () {
  1679.             var win = f.main.contentWindow;
  1680.             win[ZOOM_APPLIED] = 0;
  1681.             af();
  1682.         },
  1683.  
  1684.         secretClick: hS.aC,
  1685.         setConfigHTML: setConfigHTML,
  1686.         setLiveRevision: setLiveRevision,
  1687.         setNewsDate: setNewsDate,
  1688.         getLanguage: function () {
  1689.             return lang
  1690.         },
  1691.         getStatusURL: getStatusURL
  1692.     };
  1693.  
  1694. })(); // from var GRT = function () {...} ();
  1695. ; //from if (!self.GRT)
  1696.  
  1697.  
  1698.  /*
  1699.     src = [];
  1700.     src[src.length] = 'if(!top.GRT)%CRtop.GRT=(function(){var LOG={STD:1,T:0},lang=%SQde%SQ,L={close:{de:%SQZum Schließen klicken%SQ,en:%SQClick to close%SQ},inv:{de:%SQBild invertieren%SQ,en:%SQInvert image%SQ},hist:{de:%SQMessage-Verlauf%SQ,en:%SQMessage history%SQ},secret:{de:%SQProfil geheim ansehen (falls Profil oeffentlich)%SQ,en:%SQView profile secretly (if profile is public)%SQ},sett:{de:%SQEinstellungen%SQ,en:%SQSettings%SQ},upd:{de:%SQjetzt updaten!%SQ,en:%SQupdate available!%SQ}},f={top:null,main:null,msg:null},win=0,grtDiv=null,started=0,ic=-1,gmVersion={used:%SQ?%SQ,live:%SQ??%SQ},C={NAME:%SQGRTCFG%SQ,TTL:14},Ds={GAY:%SQwww.gayromeo.com%SQ,PLANET:%SQwww.planetromeo.com%SQ,IP:%SQ83.98.143.20%SQ},linkFixHash=%SQ%SQ,ZOOM_APPLIED=%SQ_grtZoomApplied%SQ,PAGE_PREPARED=%SQ_grtPagePrepared%SQ,ZOOM_ADDED=%SQ_grtZDone%SQ,TABLE_PREPARED=%SQ_grtTableDone%SQ,tmp={},config={showBMI:1,bmiClickHP:1,filterBMI:1,minBMI:0,maxBMI:25,filterAge:1,minAge:18,maxAge:100,clickTapse:1,zoom:1,bigZoom:1,useIF:1,thumbIF:1,histInMsg:1,histInRes:1,histHighl:1,bigPaging:1,ytHead:1,ytProf:1,ytPreview:1,newsRead:0},CONFIG_TRANSKEY={showBMI:68,bmiClickHP:12,filterBMI:41,minBMI:31,maxBMI:21,clickTapse:14,zoom:9,bigZoom:3,useIF:5,thumbIF:91,histInMsg:44,histInRes:93,histHighl:2,bigPaging:95,ytHead:50,ytProf:49,ytPreview:71,newsRead:15,filterAge:94,minAge:51,maxAge:43},URLS={BASE:(self.location.protocol.match(/https/))?%SQhttps://ssl-account.com/gr-tools.justlep.net/%SQ:%SQhttp://gr-tools.justlep.net/%SQ,iB:%SQimg/%SQ,IMG:{';
  1701.     src[src.length] = 'HISTORY:%SQhist.gif%SQ,LOAD:%SQload.gif%SQ,ZOOM1:%SQlupe.png%SQ,ZOOM2:%SQlupe2.png%SQ,CLOSE:%SQclose.cur%SQ,CFG:%SQtool.png%SQ,CLUB:%SQhome.png%SQ,NEWS:%SQcharts04.png%SQ,UPD:%SQflag.png%SQ,NONEWS:%SQcharts04gray.png%SQ,YTLOAD:%SQytload.gif%SQ},hB:%SQhtml/%SQ,HTML:{CONFIG:%SQconfig_%SQ,NEWS:%SQnews2.php%SQ,UPD:%SQupdate.php%SQ},YTIMG:%SQhttp://ref.justlep.net/ytimg%SQ,aPu:%SQ/auswertung/setcard/index.php?set=%SQ,ABOUT_BLANK:%SQabout:blank%SQ},BMI={COLOR:{egal:%SQ#E4EAF9%SQ,below:%SQ#fed14a%SQ,ok:%SQ#85e854%SQ,above:%SQ#ff8868%SQ},RANGE:{VISIBLE:{min:15,max:40},HEALTHY:{min:20,max:25}},minS:null,maxS:null},AGE={minI:null,maxI:null},zoomVisible=false,currentZoomUID=null,hideTimer=null,zoomWin=0,zoomDoc=0,cfg={div:0,html:%SQconfig%SQ},gray=0,zoomDiv=0,iframe=0,zoomedImg=0,closeDiv=0,anonDiv=0,mode=0,MsS={IMAGE:1,PROFILE:2,HISTORY:3,CONFIG:4,OTHER:5},HTML={STYLES:%SQ<style type="text/css">%SQ+%SQ.grt-thumb {display:block;position:relative}%SQ+%SQdiv#grtZDiv {position:fixed;top:10px;right:6px;z-index:6000;border:1px solid #ccc;width:100px;height:100px;background:transparent url(%SQ+URLS.BASE+%SQimg/load.gif) center center no-repeat;display:none}%SQ+%SQdiv#grtZDiv>img {cursor:url(%SQ+URLS.BASE+%SQimg/close.cur),default}%SQ+%SQimg.grtZIcon {position:absolute;right:1px;bottom:1px;border:none;cursor:pointer;z-index:2000;opacity:0.7}%SQ+%SQimg.grtZIcon:hover {opacity:1}%SQ+%SQ#grtCfgDiv {background-color:#305AB1;overflow:auto}%SQ+%SQdiv.grtZUserName {position:absolute;right:0;top:0;pad';
  1702.     src[src.length] = 'ding:0px 5px 3px 9px;border:1px solid #ccc;border-width:0 0 1px 1px;-moz-border-radius-bottomleft:8px;background:#305AB1 none;opacity:0.8;color:yellow;z-index:6005}%SQ+%SQ#grtZDiv iframe, #grtZDiv #grtCfgDiv {border:none;width:500px;height:500px;display:none}%SQ+%SQ#grtZDiv.grtPLoaded {right:10px;background-image:none;opacity:1}%SQ+%SQ#grtZDiv.grtILoaded {background-image:none}%SQ+%SQ#grtZDiv.grtPLoaded iframe, #grtZDiv.grtPLoaded #grtZCl, #grtZDiv.grtPLoaded .grtZoom, #grtZDiv.grtPLoaded #grtCfgDiv {display:block}%SQ+%SQ#grtZCl {position:absolute;left:-51px;top:-1px;background:#236 url(%SQ+URLS.BASE+%SQimg/close.png) center center no-repeat;width:50px;height:300px;border:1px solid #ccc;border-width:1px 0 1px 1px;-moz-border-radius-bottomleft:20px;-moz-border-radius-topleft:20px;opacity:0.6;cursor:pointer}%SQ+%SQdiv#grtZCl:hover {opacity:0.8}%SQ+%SQ#grtZAnon {position:absolute;left:-38px;top:10px;background:transparent url(%SQ+URLS.BASE+%SQimg/nogo.png) center center no-repeat;width:26px;height:26px;opacity:0.3;cursor:pointerz-index:999;display:none}%SQ+%SQ.grtPLoaded #grtZAnon {display:block}%SQ+%SQdiv#grtZCl {display:none}%SQ+%SQ#grtGray {position:fixed;left:0;top:0;width:100%;height:100%;background:#000 none;opacity:0.7;z-index:5000;display:none}%SQ+%SQ#grtNext, #grtPrev {text-decoration:none;outline:none;background:transparent url(%SQ+URLS.BASE+%SQimg/next.png) center center no-repeat;opacity:0.6;padding:8px 39px;margin:0 5px;border:1px dotted #6890E5}%SQ+%SQa#grtPrev {ba';
  1703.     src[src.length] = 'ckground-image:url(%SQ+URLS.BASE+%SQimg/prev.png)}%SQ+%SQ#grtPrev:hover, #grtNext:hover {opacity:1}%SQ+%SQ#grtIv {width:24px;height:24px;bottom:6px;opacity:0.7}%SQ+%SQ#grtIv {position:absolute;right:7px;cursor:pointer !important;background:transparent url(%SQ+URLS.BASE+%SQimg/object_15.png) 0 0 no-repeat;z-index:6005}%SQ+%SQ#grtIv:hover {opacity:1}%SQ+%SQ#grtFull {left:0;top:0;z-index:6004}%SQ+%SQ</style>%SQ,DIV:%SQ<div id="grtZDiv"></div>%SQ,GRAY:%SQ<div id="grtGray"></div>%SQ,BUTTON_STYLES:%SQ#grtDiv {%SQ+%SQposition:absolute;%SQ+%SQright:310px;%SQ+%SQtop:0;%SQ+%SQoverflow:visible;%SQ+%SQborder:1px solid #A2B3DE;%SQ+%SQborder-top:none;%SQ+%SQpadding:1px 5px 2px 5px;%SQ+%SQz-index:9999;%SQ+%SQbackground:transparent none 0 0 no-repeat;%SQ+%SQcolor:#E1DEF1;%SQ+%SQfont-family:Tahoma,Arial,Verdana,Helvetica;%SQ+%SQfont-size:11px;%SQ+%SQline-height:14px;%SQ+%SQ-moz-border-radius: 0 0 6px 6px;%SQ+%SQ}%SQ+%SQ#grtDiv:hover {border-color:#D1D8EB}%SQ+%SQ#grtPimp {float:left;padding:0 5px 0 2px;position:static;overflow:hidden;display:none}%SQ+%SQ#grtPimp b {display:block;color:#AEE451;font-style:normal}%SQ+%SQ#grtDiv img {float:left;display:none}%SQ+%SQ#grtDiv:hover img, %SQ+%SQ#grtDiv:hover #grtPimp,%SQ+%SQ#grtDiv:hover #grtNewsTxt {display:block}%SQ+%SQbody #grtDiv #grtCfg,%SQ+%SQbody #grtDiv #grtNews {display:block}%SQ+%SQ#grtDiv.grtUpd img#grtUpd, #grtDiv.grtRomeo #grtPimp, #grtDiv #grtNews {display:block}%SQ+%SQ#grtDiv.grtRomeo {right:311px}%SQ+%SQ#grtDiv.grtNews #grtNews {cursor:';
  1704.     src[src.length] = 'pointer !important}%SQ+%SQ.grtNewsRead #grtNews {opacity:0.5}%SQ+%SQ#grtNewsTxt {float:left;position:static;color:#FE9B2C;padding:0 0 0 3px;cursor:pointer; display:none}%SQ+%SQ#grtNewsTxt:hover {text-decoration:underline;opacity:1!important}%SQ+%SQ.grtNewsRead #grtNewsTxt {opacity:0.7}%SQ+%SQbody.grtClub #grtDiv {left:auto;right:82px !important}%SQ+%SQbody.grtGuideClub #grtDiv {left:225px;right:auto !important}%SQ+%SQ#grtDiv img {cursor:pointer;vertical-align:middle;opacity:0.8;margin:1px 2px 0}%SQ+%SQ#grtDiv img:hover {opacity:1 !important}%SQ+%SQbody.grtClub #grtDiv #grtPimp, body.grtGuideClub #grtDiv #grtPimp,%SQ+%SQbody.grtClub #grtDiv #grtClub, body.grtGuideClub #grtDiv #grtClub  {display:block !important}%SQ},YT={PROFILE_XPATH:%SQ//table[contains(@class,"prfl")]/tbody/tr/td[contains(.,"http:")][contains(.,"youtube")]%SQ,RE:/(">)?http:%BS/%BS/(?:<wbr>)?(?:[a-z]+%BS.)?(?:<wbr>)?youtube.(<wbr>)?com%BS/[^%BSs%BSt%BSn%BSr%BS]%BS)]+/ig,FN:function(s){if(!s.indexOf(%SQ">%SQ))return s;var url=s.replace(/(<wbr>| |<br>?)/g,%SQ%SQ).replace(%SQ&amp;%SQ,%SQ&%SQ),jumpURL=%SQ/jump.php?jump=%SQ+encodeURIComponent(url),link=%SQ<a class="ytlink" href="%SQ+jumpURL+%SQ" target="_blank">%SQ+s+%SQ</a>%SQ;return link;},DIVHTML:%SQ<div id="grtYT" style="position:fixed;display:none"><img /><img /></div>%SQ,div:0},lcc=function(){var c=cookie(C.NAME);if(!c){log(%SQno GRT config cookie%SQ);return;}%CRvar trans={};for(var i in CONFIG_TRANSKEY)trans[CONFIG_TRANSKEY[i]]=i;var a=c.split(%SQ_%SQ);for(v';
  1705.     src[src.length] = 'ar i=0;i<a.length;i++){var p=a[i].split(%SQ-%SQ),k=trans[p[0]]||0,v=p[1];if(!k)continue;if(typeof config[k]==%SQundefined%SQ){log(%SQunknown key: %SQ+k);continue;}%CRlog(%SQrestoring key %s = %s%SQ,k,v);config[k]=parseInt(v,10);}%CRsaveConfigCookie();},saveConfigCookie=function(){var a=[];for(var i in config){a[a.length]=CONFIG_TRANSKEY[i]+%SQ-%SQ+config[i];}%CRvar data=a.join(%SQ_%SQ);cookie(C.NAME,data,{path:%SQ/%SQ,expires:C.TTL});log(%SQconfig cookie saved%SQ);},delConfigCookie=function(){cookie(C.NAME,null,{path:%SQ/%SQ});log(%SQconfig cookie removed%SQ);},i18n=function(k){return(L[k])?L[k][lang]:%SQ???%SQ;},addClass=function(o,s,check){if(!o)return;if(check&&(o.className||%SQ%SQ).indexOf(s)>=0)return;o.className=s+%SQ %SQ+(o.className||%SQ%SQ);},removeClass=function(o,s){if(!o||!o.className)return;o.className=o.className.replace(s,%SQ%SQ);},findTopFrameBody=function(frameName){if(!f.top)f.top=self.frameElement;try{if(frameName)return top.frames[frameName].document.body;return f.top.contentWindow.document.body;}catch(e){log(%SQfindTopFrameBody failed: %SQ+e.toString());return null;}},log=function(s){if(!LOG.STD||typeof console==%SQundefined%SQ)return;console.log.apply(console,arguments||[]);},hS={mFl:function(){var doc=this.contentWindow.document;var userList=doc.getElementById(%SQfavoritesOnlineList%SQ);if(userList){if(!config.useIF)return;cZ();var links=xpath(%SQ//a[contains(@href,"auswertung%BS/setcard%BS/")]%SQ,userList);for(var i=links.length-1;i>=0;i--){var a=links';
  1706.     src[src.length] = '[i],userID=a.parentNode.id.match(/row(%BSd*)/)[1],smileys=a.parentNode.getElementsByTagName(%SQimg%SQ);if(smileys.length&&smileys[0].src.match(/(club|guide)/))continue;a.parentNode.setAttribute(%SQuserid%SQ,userID);a.onclick=null;a.addEventListener(%SQclick%SQ,hS.iC,false);}%CRreturn;}%CRvar msgList=doc.getElementById(%SQnewMessageList%SQ);if(!msgList||!config.histInMsg)return;var pics=xpath(%SQ//a[contains(@href,"%BS/msg%BS/%BS?id=")]/img%SQ,msgList),title=i18n(%SQhist%SQ);for(var i=pics.length-1;i>=0;i--){var p=pics[i],userID=p.parentNode.parentNode.id.match(/row(%BSd*)_/)[1];p.setAttribute(%SQuserid%SQ,userID);p.addEventListener(%SQclick%SQ,hS.hC,false);p.src=URLS.IMG.HISTORY;p.className=%SQgrtHist%SQ;p.title=title;p.style.left=0;p.style.padding=%SQ0 4px%SQ;}},hC:function(e){var userID=this.getAttribute(%SQuserid%SQ)||%SQ???%SQ;cZ();hS.iC(%SQHISTORY%SQ,%SQ/msg/history.php?uid=%SQ+userID);e.stopPropagation();e.preventDefault();e.cancelBubble=1;return false;},tc:function(e){var tr=this.parentNode.parentNode,userID=0;while(!userID&&tr){if(tr.getAttribute)%CRuserID=tr.getAttribute(%SQuserid%SQ);tr=tr.previousSibling;}%CRif(!userID){log(%SQno userID found.%SQ);return;}%CRf.main.contentWindow.openUrl(%SQ/auswertung/setcard/romeo/footprint.php?receiverId=%SQ+userID);},yO:function(e){if(!(/%3Fv%3D([a-z0-9_%BS-]*)/i).exec(this.href))return;this.ytdiv.childNodes[0].style.display=%SQnone%SQ;this.ytdiv.childNodes[1].style.display=%SQblock%SQ;this.ytdiv.style.display=%SQblock%SQ;this.y';
  1707.     src[src.length] = 'tdiv.childNodes[0].src=this.ytbase+RegExp.$1;},YT_OUT:function(e){this.ytdiv.style.display=%SQnone%SQ;},yM:function(e){this.ytdiv.style.left=20+e.clientX+%SQpx%SQ;this.ytdiv.style.top=15+e.clientY+%SQpx%SQ;},yIl:function(e){this.nextSibling.style.display=%SQnone%SQ;this.style.display=%SQblock%SQ;},aC:function(a){tmp.anonUserInfo={u:a.getAttribute(%SQusername%SQ),a:a};if(!tmp.sessUnlockImg){tmp.sessUnlockImg=document.createElement(%SQimg%SQ);tmp.sessUnlockImg.addEventListener(%SQerror%SQ,function(){var o=tmp.anonUserInfo;if(!o)return;if(config.useIF){hS.iC.apply(o.a,[0]);return;}%CRf.main.contentWindow.openUrl(o.a.href);delete tmp.anonUserInfo;},false);}%CRtmp.sessUnlockImg.src=URLS.aH+tmp.anonUserInfo.u;return false;},iHo:function(){iLi(this.getAttribute(%SQusername%SQ),this.getAttribute(%SQuserid%SQ),this.getAttribute(%SQpicname%SQ));},iOu:function(){if(mode!=MsS.IMAGE)return;hvD();},iC:function(e,histLink){var showHistory=(e===%SQHISTORY%SQ),url=(showHistory)?histLink:(this.href||this.parentNode.href);if(e&&!showHistory&&url.match(/(&page=club|&t=3)/)){zoomWin.openUrl(url);e.stopPropagation();e.preventDefault();e.cancelBubble=true;return false;}%CRsetGray(1);sLsg();mode=(showHistory)?MsS.HISTORY:MsS.PROFILE;iframe.src=URLS.ABOUT_BLANK;zoomDiv.appendChild(iframe);zoomDiv.appendChild(closeDiv);iframe.src=url;if(mode==MsS.PROFILE&&iframe.src.indexOf(%SQ://%SQ+top.location.host)<0){zoomDiv.appendChild(anonDiv);}%CRif(!showHistory&&e){e.stopPropagation();e.preventDefault();e.can';
  1708.     src[src.length] = 'celBubble=true;return false;}},dCl:function(){hvD(1);setGray(0);},dHo:function(){clt();},IMG_LOAD:function(){if(mode!=MsS.IMAGE)return;var div=zoomDiv,win=div.ownerDocument.defaultView,userName=this.getAttribute(%SQusername%SQ)||%SQ???%SQ,userID=this.getAttribute(%SQuserid%SQ)||0,noRefresh=!!this.getAttribute(%SQnorefresh%SQ);div.innerHTML=%SQ<div class="grtZUserName">User: %SQ+userName.replace(/</g,%SQ&lt;%SQ).replace(/>/g,%SQ&gr%SQ)+%SQ</div>%SQ;div.className=%SQgrtILoaded%SQ;div.style.width=%SQauto%SQ;div.style.height=%SQauto%SQ;this.style.maxWidth=win.innerWidth-103+%SQpx%SQ;this.style.maxHeight=win.innerHeight-20+%SQpx%SQ;this.style.opacity=1;this.style.position=%SQstatic%SQ;div.appendChild(this);},iiL:function(){if(mode!=MsS.IMAGE)return;var imgs=tmp.imgIF.contentWindow.document.getElementsByTagName(%SQimg%SQ);if(!imgs||!imgs.length)return;zoomedImg.src=imgs[0].src;},iLoF:function(){if(iframe.src==URLS.ABOUT_BLANK)return;log(%SQGRTZoom iframe loaded%SQ);snIO();if(config.ytProf)%CRCv.ytL();if(mode==MsS.HISTORY){if(config.histHighl)Cv.hLa();iframe.contentWindow.document.body.scrollTop=9999999;}},bCh:function(){if(BMI.minS.selectedIndex&&BMI.maxS.selectedIndex){if(this==BMI.minS){log(%SQmin changed, value is %SQ+this.value);if(this.value&&BMI.maxS.selectedIndex<this.selectedIndex)%CRBMI.maxS.selectedIndex=this.selectedIndex;}else if(this==BMI.maxS){log(%SQmax changed, value is %SQ+this.value);if(this.value&&BMI.minS.selectedIndex>this.selectedIndex)%CRBMI.minS.selectedInde';
  1709.     src[src.length] = 'x=this.selectedIndex;}else{log(%SQthis should not happen%SQ);}}%CRtmp.tConfig.minBMI=BMI.minS.value;tmp.tConfig.maxBMI=BMI.maxS.value;uBC();},aCh:function(){var min=AGE.minI.value=parseInt(AGE.minI.value,10)||18,max=AGE.maxI.value=parseInt(AGE.maxI.value,10)||100;if(this==AGE.minI){if(max<min)AGE.maxI.value=this.value;}else if(this==AGE.maxI){if(min>max)AGE.minI.value=this.value;}else{log(%SQthis should not happen%SQ);}%CRtmp.tConfig.minAge=min;tmp.tConfig.maxAge=max;},AGE_UPDOWN:function(e){switch(e.keyCode){case 39:case 38:this.value=parseInt(this.value,10)+1;break;case 37:case 40:this.value=parseInt(this.value,10)-1;break;default:return;}%CRhS.aCh.apply(this,[]);e.preventDefault();return false;},cBc:function(){var cfgID=this.getAttribute(%SQcfgid%SQ)||%SQ%SQ;if(typeof tmp.tConfig[cfgID]==%SQundefined%SQ)return;tmp.tConfig[cfgID]=(this.checked)?1:0;log(%SQcfg->%s changed to %s%SQ,cfgID,!!this.checked);},cSC:function(){var changed=0;for(var i in tmp.tConfig){if(typeof config[i]==%SQundefined%SQ||config[i]==tmp.tConfig[i])continue;config[i]=tmp.tConfig[i];changed=1;}%CRif(this.ownerDocument.getElementById(%SQgrtSaveCookie%SQ).checked){saveConfigCookie();}else{delConfigCookie();}%CRif(changed){f.main.contentWindow.location.reload();if(f.msg)f.msg.contentWindow.location.reload();return;}%CRhS.dCl();}},init=function(version,_cfg){checkClub();var T_CLUB=(ic)?%SQ(club)%SQ:%SQ%SQ;initButtonStyles();if(!ic&&!self.location.href.match(/(?:left|top)%BS.php/)){log(%SQcannot work in fram';
  1710.     src[src.length] = 'e %SQ+self.location.href);return;}%CRif(ic){lang=(self.document.body.innerHTML.indexOf(%SQSpeichern%SQ)>0)?%SQde%SQ:%SQen%SQ;}else{var sels=self.document.getElementsByTagName(%SQselect%SQ)||[];for(var i=0;i<sels.length;i++){if(sels[i].name!=%SQlang%SQ)continue;lang=(sels[i].value==%SQde%SQ)?%SQde%SQ:%SQen%SQ;}}%CRvar h=location.host||%SQgayromeo%SQ,hashPt1=%SQ#GRT_REF_%SQ,hashPt2=(h.indexOf(%SQplanetromeo%SQ)>=0)?%SQPR%SQ:(h.indexOf(%SQgayromeo%SQ)>=0)?%SQGR%SQ:%SQIP%SQ,hashPt3=(/https/.test(location.protocol||%SQ%SQ))?%SQ_S%SQ:%SQ%SQ;linkFixHash=hashPt1+hashPt2+hashPt3;URLS.iB=URLS.BASE+URLS.iB;URLS.hB=URLS.BASE+URLS.hB;for(var i in URLS.IMG){var url=URLS.iB+URLS.IMG[i];URLS.IMG[i]=url;(new Image()).src=url;}%CRlog(%SQGRT::init()%SQ);var altHost=top.location.protocol+%SQ//%SQ;if(altHost==%SQhttps://%SQ)altHost+=((top.location.host==Ds.PLANET)?Ds.GAY:Ds.PLANET);else altHost+=((top.location.host==Ds.IP)?Ds.PLANET:Ds.IP);URLS.aH=altHost+%SQ/%SQ;URLS.aPu=altHost+URLS.aPu;if(started){log(%SQGRT already running.%SQ);return;}%CRif(typeof _cfg==%SQobject%SQ){log(%SQtaking config vals from given config object%SQ);for(var i in _cfg){if(typeof config[i]==%SQundefined%SQ)continue;config[i]=_cfg[i];}}else{lcc();}%CRgmVersion=version;smf();f.msg=(ic)?null:top.frames.persoenliches.frameElement;if(f.msg){f.msg.addEventListener(%SQload%SQ,hS.mFl,false);}%CRvar topBody=findTopFrameBody(),div=document.createElement(%SQdiv%SQ);div.id=%SQgrtDiv%SQ;div.style.backgroundImage=%SQurl(%SQ+URLS.iB+%SQ';
  1711.     src[src.length] = 'bg.jpg)%SQ;if(ic){var className=(xpath(%SQ//img[contains(@src,"logoGuideClub")]%SQ,topBody).length)?%SQgrtGuideClub%SQ:%SQgrtClub%SQ;addClass(topBody,className);}%CRif(top.location.hostname==Ds.GAY)addClass(div,%SQgrtRomeo%SQ);grtDiv=div;div.innerHTML=%SQ<div id="grtPimp"><i>pimped by<b>GR-Tools</b></i></div>%SQ+%SQ<img id="grtClub" src="%SQ+URLS.IMG.CLUB+%SQ" alt="" title="GR-Tools Club"/>%SQ+%SQ<img id="grtCfg" src="%SQ+URLS.IMG.CFG+%SQ" alt="" title="GR-Tools %SQ+i18n(%SQsett%SQ)+%SQ"/>%SQ+%SQ<img src="%SQ+URLS.IMG.NONEWS+%SQ" alt="" title="GR-Tools News" id="grtNews" />%SQ;tmp.nBu=div.childNodes[3];div.childNodes[2].addEventListener(%SQclick%SQ,function(){cZ();sCf();},false);div.childNodes[1].addEventListener(%SQclick%SQ,openClub,false);topBody.appendChild(div);started=1;log(%SQGRT::init() done%SQ);track(%SQinitDone%SQ+T_CLUB+%SQ(gm%SQ+gmVersion.used+%SQ)%SQ);},setNewsDate=function(d){if(!d){setStyles(tmp.nBu,{opacity:0.3,cursor:%SQdefault%SQ});return;}%CRaddClass(grtDiv,%SQgrtNews%SQ);tmp.nBu.src=URLS.IMG.NEWS;tmp.newsNum=parseInt(d.replace(/%BS./g,%SQ%SQ),10),frag=document.createElement(%SQdiv%SQ);frag.innerHTML=%SQ<div id="grtNewsTxt"><b>News!</b><br/><small style="font-size:9px">%SQ+d+%SQ</small></div>%SQ;if(config.newsRead==tmp.newsNum){addClass(grtDiv,%SQgrtNewsRead%SQ,1);}%CRtmp.nBu.addEventListener(%SQclick%SQ,function(e){track(%SQnewsClick%SQ);cZ();lep(gnu());setNewsRead();},false);if(tmp.uAv)return;var newsTxt=frag.childNodes[0];grtDiv.appendChild(newsTxt);newsT';
  1712.     src[src.length] = 'xt.addEventListener(%SQclick%SQ,function(e){track(%SQnewsClick%SQ);cZ();lep(gnu());setNewsRead();},false);},smf=function(){try{f.main=(ic)?top.frames[1].frames[1].frameElement:top.frames.mitte.frameElement;}catch(e){log(%SQGR-Tools cannot find main frame. Retry in a second.%SQ);setTimeout(smf,1000);return;}%CRf.main.addEventListener(%SQload%SQ,function(){log(%SQframe loaded%SQ);af();log(%SQapply filter done%SQ);},false);log(%SQload handler attached%SQ);},setNewsRead=function(){addClass(grtDiv,%SQgrtNewsRead%SQ,1);if(!!cookie(C.NAME)){config.newsRead=tmp.newsNum||1;saveConfigCookie();}},gcu=function(ver){var url=URLS.hB+URLS.HTML.CONFIG+(ver||Date.parse(new Date()).toString(16))+%SQ.%SQ+lang+%SQ.html%SQ;return url;},gnu=function(){var url=URLS.hB+URLS.HTML.NEWS+%SQ?lang=%SQ+lang+%SQ&revision=%SQ+gmVersion.used;return url;},setConfigHTML=function(html){cfg.html=html.replace(/##PICBASE/g,URLS.BASE+%SQimg/cfg/%SQ);},af=function(){var body=null;log(%SQGRT::af()%SQ);try{body=f.main.contentWindow.document.body;if(body.className!=%SQsearchResults%SQ)throw%SQno result page%SQ;}catch(e){if(body.className==%SQmainPage%SQ){cZ();}%CRlog(e.toString());return;}%CRvar tbodies=body.getElementsByTagName(%SQtbody%SQ);if(tbodies.length<2){log(%SQskipped: no result table in page.%SQ);return;}%CRvar doc=body.ownerDocument,head=doc.getElementsByTagName(%SQhead%SQ)[0],sI=!!(doc.getElementById(%SQgrtBMIStyles%SQ));if(iE(doc))return;if(!sI){var bmiStyle=doc.createElement(%SQstyle%SQ);bmiStyle.type=%SQ';
  1713.     src[src.length] = 'text/css%SQ;bmiStyle.id=%SQgrtBMIStyles%SQ;bmiStyle.innerHTML=%SQ.bmiF1 td {opacity:0.5}%SQ+%SQ.bmiF1 td:first-child img {opacity:0.5}%SQ+%SQ.bmiF1 td:first-child, .bmiF1 td:first-child .grtZIcon {opacity:1}%SQ+%SQ.bmiF2, .bmiF3 {opacity:0.5}%SQ+%SQ.grtAF {opacity:0.6}%SQ+%SQ.grtAF a {color:#eee}%SQ+%SQ.grtHist {margin:3px 0 0 2px;vertical-align:top;cursor:pointer;width:10px;height:10px;opacity:0.6}%SQ+%SQimg.grtHist:hover {opacity:1}%SQ;head.appendChild(bmiStyle);}%CRif(config.bigPaging&&!body.getAttribute(%SQgrtPagingDone%SQ)){body.setAttribute(%SQgrtPagingDone%SQ,1);var r=doc.evaluate(%SQ//a[contains(@href,"resultPage")][contains(./strong,"%BSxab")]%SQ,doc,null,XPathResult.FIRST_ORDERED_NODE_TYPE,null);if(r.singleNodeValue){r.singleNodeValue.id=%SQgrtPrev%SQ;r.singleNodeValue.innerHTML=%SQ&nbsp;%SQ;}%CRr=doc.evaluate(%SQ//a[contains(@href,"resultPage")][contains(./strong,"%BSxbb")]%SQ,doc,null,XPathResult.FIRST_ORDERED_NODE_TYPE,null);if(r.singleNodeValue){r.singleNodeValue.id=%SQgrtNext%SQ;r.singleNodeValue.innerHTML=%SQ&nbsp;%SQ;}}%CRif(config.ytHead&&!body.getAttribute(%SQgrtyt%SQ)){body.setAttribute(%SQgrtyt%SQ,1);var yts=xpath(%SQ//span[contains(.,"http:")][contains(.,"youtube")]%SQ,body);for(var i=yts.length-1;i>=0;i--){yts[i].innerHTML=yts[i].innerHTML.replace(YT.RE,YT.FN);}%CRayp(doc);}%CRcZ(f.main.contentWindow);var count=0,tbody=tbodies[1],histTitle=i18n(%SQhist%SQ),secrTitle=i18n(%SQsecret%SQ);for(var j=1;j<tbodies.length;j++){var tbody=tbodies[j];if(tbody.getAt';
  1714.     src[src.length] = 'tribute(%SQgrtPrep%SQ))continue;tbody.setAttribute(%SQgrtPrep%SQ,1);for(var i=0;i<tbody.rows.length;i++){var tr=tbody.rows[i];for(var j=0;j<tr.cells.length;j++){var td=tr.cells[j],txt=td.textContent;if(!/(%BSd{2,3})%BS.(%BSd{2,3})cm(?:<%BS/span>)?%BS.(?:<[^>]+>)?(%BSd{1,3})kg/.exec(txt.replace(/[%BSr%BSn]/g,%SQ%SQ)))continue;var age=parseInt(RegExp.$1,10),size=parseInt(RegExp.$2,10)/100.0,weight=parseInt(RegExp.$3,10),bmi=Math.round(weight/(size*size)),userID=tr.getElementsByTagName(%SQa%SQ)[0].href.match(/set=(%BSd*)/)[1];tr.setAttribute(%SQuserid%SQ,userID);if(config.filterAge&&(age<config.minAge||age>config.maxAge)){addClass(td,%SQgrtAF%SQ);addClass(td.parentNode.cells[td.cellIndex-1],%SQgrtAF%SQ);addClass(td.parentNode.cells[td.cellIndex+1],%SQgrtAF%SQ);}%CRif(config.showBMI||config.histInRes){var z=document.createElement(%SQspan%SQ);z.className=%SQgrtBMI%SQ;td.previousSibling.previousSibling.appendChild(z);var profileLink=z.parentNode.getElementsByTagName(%SQa%SQ)[0],userName=profileLink.innerHTML,hpLink=(config.bmiClickHP)?%SQtitle="%SQ+secrTitle+%SQ" username="%SQ+encodeURIComponent(userName)+%SQ" href="%SQ+URLS.aPu+userID+linkFixHash+%SQ" onclick="return top.GRT.secretClick(this)"%SQ:%SQ%SQ,bmiVal=(config.showBMI)?%SQ<a target="_blank" %SQ+hpLink+%SQ>%SQ+Math.round(bmi)+%SQ</a>%SQ:%SQ%SQ,histLink=(config.histInRes)?%SQ<img src="%SQ+URLS.IMG.HISTORY+%SQ" userid="%SQ+userID+%SQ" class="grtHist" />%SQ:%SQ%SQ;z.innerHTML=%SQ(%SQ+bmiVal+histLink+%SQ)%SQ;if(config.useIF){pr';
  1715.     src[src.length] = 'ofileLink.onclick=null;profileLink.addEventListener(%SQclick%SQ,hS.iC,false);}%CRif(config.histInRes){var histNode=z.childNodes[(config.showBMI)?2:1];histNode.addEventListener(%SQclick%SQ,hS.hC,false);histNode.title=histTitle;}}%CRvar isOutOfLimits=config.filterBMI&&(bmi<config.minBMI||bmi>config.maxBMI);if(isOutOfLimits){count++;addClass(tr,%SQbmiF1%SQ);addClass(tr.nextSibling.nextSibling,%SQbmiF2%SQ);addClass(tr.nextSibling.nextSibling.nextSibling.nextSibling,%SQbmiF3%SQ);}%CRbreak;}}}%CRif(config.clickTapse){var fPrints=xpath(%SQ//img[contains(@src,"/img/footprints/")]%SQ,doc);for(var i=fPrints.length-1;i>=0;i--){var fp=fPrints[i];if(fp.getAttribute(%SQgrtPrep%SQ))continue;fp.setAttribute(%SQgrtPrep%SQ,1)%CRfp.style.cursor=%SQpointer%SQ;fp.addEventListener(%SQclick%SQ,hS.tc,false);}}%CRlog(%SQ%i items filtered.%SQ,count);},ayp=function(doc){if(!config.ytPreview)return;var ytAs=xpath(%SQ//a[@class="ytlink"]%SQ,doc);if(!ytAs.length)return;var div=doc.getElementById(%SQgrtYT%SQ);if(!div){var x=doc.createElement(%SQdiv%SQ);x.innerHTML=YT.DIVHTML;div=x.childNodes[0];doc.body.appendChild(div);div.childNodes[0].addEventListener(%SQload%SQ,hS.yIl,false);div.childNodes[0].style.marginTop=%SQ-33px%SQ;div.childNodes[1].src=URLS.IMG.YTLOAD;}%CRfor(var i=0;i<ytAs.length;i++){var a=ytAs[i];a.ytdiv=div;a.ytbase=URLS.YTIMG;a.addEventListener(%SQmouseover%SQ,hS.yO,false);a.addEventListener(%SQmouseout%SQ,hS.YT_OUT,false);a.addEventListener(%SQmousemove%SQ,hS.yM,false);}},setLiveRevision=fu';
  1716.     src[src.length] = 'nction(v){var vv=v.match(/(%BSd)%BS.99%BS.(%BSd*)/);if(vv){v=vv[1]+%SQ.%SQ+vv[2];}%CRgmVersion.live=v;var needsUpdate=function(used,live){var u=used.split(%SQ.%SQ),l=live.split(%SQ.%SQ),its=Math.min(u.length,l.length);for(var i=0;i<its;i++)%CRif(parseInt(u[i])<parseInt(l[i]))return true;return(u[its-1]==l[its-1]&&u.length<l.length);};if(!needsUpdate(gmVersion.used,gmVersion.live))return;addClass(grtDiv,%SQgrtUpd%SQ);var frag=document.createElement(%SQdiv%SQ);frag.innerHTML=%SQ<img id="grtUpd" src="%SQ+URLS.IMG.UPD+%SQ" alt="" title="GR-Tools %SQ+i18n(%SQupd%SQ)+%SQ"/>%SQ;var img=frag.childNodes[0];grtDiv.insertBefore(img,grtDiv.getElementsByTagName(%SQimg%SQ)[2]);tmp.uAv=1;img.addEventListener(%SQclick%SQ,function(e){track(%SQupdateClick%SQ);cZ();var url=URLS.hB+URLS.HTML.UPD+%SQ?lang=%SQ+lang+%SQ&revision=%SQ+gmVersion.used;lep(url);},false);},checkClub=function(){if(ic!==-1)return;ic=!!self.location.href.match(/setcard%BS/cluide%BS//);},xpath=function(xpath,refNode){var n=[],res=(refNode.ownerDocument||refNode).evaluate(xpath,refNode,null,XPathResult.ORDERED_NODE_ITERATOR_TYPE,null),r=res.iterateNext();while(r!=null){n[n.length]=r;r=res.iterateNext();}%CRreturn n;},openClub=function(){track(%SQopenClub%SQ);f.main.contentWindow.openUrl(%SQ/auswertung/setcard/index.php?set=3053381&t=3&page=club%SQ);},track=function(s){if(!LOG.T)return;(new Image()).src=URLS.BASE+%SQb/GRT_%SQ+s+%SQ_%SQ+Date.parse(new Date).toString(16).substring(5);},initButtonStyles=function(){if(started)retu';
  1717.     src[src.length] = 'rn;checkClub();var f=findTopFrameBody();if(!f){log(%SQno matching frame found for css%SQ);return;}%CRf.innerHTML+=%SQ<style type="text/css">%SQ+HTML.BUTTON_STYLES+%SQ</style>%SQ;},setStyles=function(o,css){for(var i in css)o.style[i]=css[i];},iE=function(b){return!!((b.getElementsByTagName(%SQtd%SQ)[0]||{}).innerHTML||%SQ%SQ).match(/escorts/i);},cZ=function(){var win=f.main.contentWindow;if(win[ZOOM_APPLIED])return;log(%SQzoom wasnt there, adding now..%SQ);win[ZOOM_APPLIED]=1;var realFrames=win.document.getElementsByTagName(%SQframe%SQ);initZoom((realFrames.length>1)?realFrames[1]:win);},cookie=function(name,value,_opts){if(arguments.length>1){var opts=_opts||{};if(value===null){value=%SQ%SQ;opts.expires=-1;}%CRvar path=opts.path?%SQ; path=%SQ+opts.path:%SQ%SQ,domain=opts.domain?%SQ; domain=%SQ+opts.domain:%SQ%SQ,secure=opts.secure?%SQ; secure%SQ:%SQ%SQ,expires=%SQ%SQ,date;if(opts.expires&&(typeof opts.expires==%SQnumber%SQ||opts.expires.toUTCString)){if(typeof opts.expires==%SQnumber%SQ){date=new Date();date.setTime(date.getTime()+(opts.expires*24*60*60*1000));}else{date=opts.expires;}%CRexpires=%SQ; expires=%SQ+date.toUTCString();}%CRdocument.cookie=[name,%SQ=%SQ,encodeURIComponent(value),expires,path,domain,secure].join(%SQ%SQ);return;}%CRvar cVal=null;if(document.cookie&&document.cookie!=%SQ%SQ){var cookies=document.cookie.split(%SQ;%SQ);for(var i=0;i<cookies.length;i++){var cookie=cookies[i].replace(/^%BSs+|%BSs+$/g,%SQ%SQ);if(cookie.substring(0,name.length+1)==(name+%SQ';
  1718.     src[src.length] = '=%SQ)){cVal=decodeURIComponent(cookie.substring(name.length+1));break;}}}%CRreturn cVal;},snIO=function(){var h=zoomWin.innerHeight-28,cssH=h+%SQpx%SQ,body=zoomDoc.body,scroll=body.scrollTop;body.oldScrollTop=scroll||0;body.style.overflow=%SQhidden%SQ;body.scrollTop=scroll;zoomDiv.style.width=%SQauto%SQ;zoomDiv.style.height=%SQauto%SQ;closeDiv.style.height=cssH;if(mode==MsS.CONFIG){cfg.div.style.height=cssH;}else{iframe.style.height=cssH;}%CRzoomDiv.className=%SQgrtPLoaded%SQ;},Cv={ytL:function(){try{var doc=zoomDiv.getElementsByTagName(%SQiframe%SQ)[0].contentWindow.document,tds=xpath(YT.PROFILE_XPATH,doc);for(var i=tds.length-1;i>=0;i--){var len=tds[i].innerHTML.length,sDone=tds[i].innerHTML.replace(YT.RE,YT.FN);if(sDone.length==len)continue;tds[i].innerHTML=sDone;}%CRayp(doc);}catch(e){}},hLa:function(){try{var doc=zoomDiv.getElementsByTagName(%SQiframe%SQ)[0].contentWindow.document,lastMsgA=xpath(%SQ//a[contains(@name,"lastmessage")]%SQ,doc);tds=xpath(%SQ//tr/td[contains(@class,"body")]%SQ,doc),td=tds[tds.length-1];if(!lastMsgA.length||!tds.length)return;setStyles(td,{border:%SQ1px solid #738cbe%SQ,borderWidth:%SQ1px 0%SQ,padding:%SQ6px 4px 0 22px%SQ,background:%SQ#203B71 url(%SQ+URLS.iB+%SQlastmsg.gif) 5px 7px no-repeat%SQ});td.parentNode.parentNode.parentNode.style.borderCollapse=%SQseparate%SQ;}catch(e){}}},isPagePrepared=function(){return!!f.main.contentWindow[PAGE_PREPARED];},setPagePrepared=function(){f.main.contentWindow[PAGE_PREPARED]=1;},initZoom=function(targetW';
  1719.     src[src.length] = 'in){if(isPagePrepared()){log(%SQgrt prepared page already.%SQ);}else{log(%SQgrt preparing page..%SQ);setPagePrepared();zoomDiv=null;gray=null;currentZoomUserID=null;zoomVisible=null;clt();zoomWin=targetWin;zoomDoc=zoomWin.document;if(iE(zoomDoc))return;if(iframe)iframe=null;iframe=zoomDoc.createElement(%SQiframe%SQ);iframe.addEventListener(%SQload%SQ,hS.iLoF,false);cfg.div=zoomDoc.createElement(%SQdiv%SQ);cfg.div.id=%SQgrtCfgDiv%SQ;cfg.div.title=%SQ %SQ;cfg.div.addEventListener(%SQclick%SQ,function(e){e.stopPropagation();e.cancelBubble=true;},false);closeDiv=zoomDoc.createElement(%SQdiv%SQ);closeDiv.id=%SQgrtZCl%SQ;anonDiv=zoomDoc.createElement(%SQdiv%SQ);anonDiv.id=%SQgrtZAnon%SQ;var width=zoomWin.innerWidth||680;if(width<600){var w=width-75+%SQpx%SQ;iframe.style.width=w;cfg.div.style.width=w;}%CRif(zoomedImg)zoomedImg=null;zoomedImg=zoomDoc.createElement(%SQimg%SQ);zoomedImg.addEventListener(%SQload%SQ,hS.IMG_LOAD,false);if(tmp.imgIF)delete tmp.imgIF;tmp.imgIF=zoomDoc.createElement(%SQiframe%SQ);tmp.imgIF.style.display=%SQnone%SQ;zoomDoc.body.appendChild(tmp.imgIF);tmp.imgIF.addEventListener(%SQload%SQ,hS.iiL,false);var xdiv=zoomDoc.createElement(%SQdiv%SQ);xdiv.innerHTML=HTML.STYLES+HTML.DIV+HTML.GRAY;zoomDoc.body.appendChild(xdiv);for(var i=0;i<3;i++){zoomDoc.body.appendChild(xdiv.childNodes[0]);}%CRzoomDoc.body.removeChild(xdiv);zoomDiv=zoomDoc.getElementById(%SQgrtZDiv%SQ);zoomDiv.title=i18n(%SQclose%SQ);zoomDiv.addEventListener(%SQmouseover%SQ,hS.dHo,false);zoomDiv.add';
  1720.     src[src.length] = 'EventListener(%SQclick%SQ,hS.dCl,false);gray=zoomDoc.getElementById(%SQgrtGray%SQ);gray.addEventListener(%SQclick%SQ,hS.dCl,false);}%CRvar imgs=zoomDoc.getElementsByTagName(%SQimg%SQ),zoomIconURL=URLS.IMG[%SQZOOM%SQ+((config.bigZoom)?2:1)];if(iE(zoomDoc))return;for(var i=0;i<imgs.length;i++){var img=imgs[i],src=img.src;if(img.getAttribute(ZOOM_ADDED)||!/%BS/img%BS/usr%BS/([0-9a-f]*%BS.jpg)$/.exec(img.src||%SQ%SQ))continue;img.setAttribute(ZOOM_ADDED,1);var picName=RegExp.$1,zoomIconHTML=%SQ<img src="%SQ+zoomIconURL+%SQ" alt="Zoom" class="grtZIcon" />%SQ,_a=img.parentNode,a=_a;while(_a!=_a.ownerDocument.body){if(_a.nodeName==%SQA%SQ){a=_a;break;}%CR_a=_a.parentNode;}%CRvar moreThanOne=a.parentNode.getElementsByTagName(%SQa%SQ).length>1,td=(moreThanOne)?a.parentNode:a.parentNode.parentNode.getElementsByTagName(%SQtd%SQ)[1],username=%SQ???%SQ,userID=0;if(!td){var _p=a;while(_p!=document.body){_p=_p.parentNode;if(_p==a.ownerDocument.body)break;if(_p.tagName!=%SQTD%SQ)continue;td=_p.parentNode.cells[1]||0;break;}}%CRif(config.zoom){if(td){var as=td.getElementsByTagName(%SQa%SQ);for(var z=0;z<as.length;z++){var _a=as[z];if(!_a.href)continue;if(_a.href.match(/setcard/i)){username=_a.innerHTML;userID=_a.href.match(/set=(%BSd*)/)[1]||0;}else if(/popup%BS.php%BS/([0-9a-z%BS.]+)%BS.jpg/.exec(_a.href)){picName=RegExp.$1;}%CRif(userID&&picName)break;}}%CRa.className+=%SQ grt-thumb%SQ;a.innerHTML+=zoomIconHTML;var zoomIcon=a.childNodes[a.childNodes.length-1];zoomIcon.setAttribute(%SQuserna';
  1721.     src[src.length] = 'me%SQ,username);zoomIcon.setAttribute(%SQuserid%SQ,userID);picName=self.location.protocol+%SQ//%SQ+self.location.host+%SQ/auswertung/pix/popup.php/%SQ+picName;zoomIcon.setAttribute(%SQpicname%SQ,picName);if(moreThanOne)a.style.display=%SQinline-block%SQ;zoomIcon.parentNode.style.outline=%SQnone%SQ;zoomIcon.addEventListener(%SQmouseover%SQ,hS.iHo,false);zoomIcon.addEventListener(%SQmouseout%SQ,hS.iOu,false);}%CRif(config.useIF){var handlerElem=(moreThanOne)?td.getElementsByTagName(%SQa%SQ)[0]:(config.thumbIF)?a:zoomIcon;if(handlerElem){handlerElem.addEventListener(%SQclick%SQ,hS.iC,false);if(handlerElem===a){a.onclick=null;}else if(moreThanOne){handlerElem.onclick=null;}}}}},setGray=function(on){if(on){gray.style.display=%SQblock%SQ;return;}%CRvar body=zoomDoc.body;body.style.overflow=%SQauto%SQ;if(body.oldScrollTop){body.scrollTop=body.oldScrollTop;body.oldScrollTop=0;}%CRgray.style.display=%SQnone%SQ;},lep=function(url){setGray(1);sLsg();mode=MsS.OTHER;zoomDiv.appendChild(iframe);zoomDiv.appendChild(closeDiv);iframe.src=url;},sCf=function(){setGray(1);sLsg();mode=MsS.CONFIG;cfg.div.innerHTML=cfg.html;zoomDiv.appendChild(cfg.div);tmp.tConfig={};for(var i in config)tmp.tConfig[i]=config[i];var cbs=xpath(%SQ//input[@type="checkbox"]%SQ,cfg.div);for(var i=0;i<cbs.length;i++){var cb=cbs[i],id=(cb.id||%SQ%SQ).substring(5);if(!id||typeof tmp.tConfig[id]==%SQundefined%SQ)continue;cb.checked=!!tmp.tConfig[id];cb.setAttribute(%SQcfgid%SQ,id);cb.addEventListener(%SQchange%SQ,hS.cBc,fal';
  1722.     src[src.length] = 'se);}%CRcfg.div.ownerDocument.getElementById(%SQgrtSaveCookie%SQ).checked=!!cookie(C.NAME);cfg.div.ownerDocument.getElementById(%SQgrtSaveConfig%SQ).addEventListener(%SQclick%SQ,hS.cSC,false);var bmiDiv=cfg.div.ownerDocument.getElementById(%SQbmiDiv%SQ),ageDiv=cfg.div.ownerDocument.getElementById(%SQageDiv%SQ),protoSelect=zoomDoc.createElement(%SQselect%SQ),optIndex=0,minIndex=0,maxIndex=0;protoSelect.className=%SQbmiSelect%SQ;for(var i=BMI.RANGE.VISIBLE.min-1;i<=BMI.RANGE.VISIBLE.max;i++){var opt=zoomDoc.createElement(%SQoption%SQ),status=(i<BMI.RANGE.VISIBLE.min)?%SQegal%SQ:(i<BMI.RANGE.HEALTHY.min)?%SQbelow%SQ:(i>BMI.RANGE.HEALTHY.max)?%SQabove%SQ:%SQok%SQ;opt.innerHTML=(i<BMI.RANGE.VISIBLE.min)?%SQegal%SQ:i;opt.value=(i<BMI.RANGE.VISIBLE.min)?false:i;opt.style.background=BMI.COLOR[status];protoSelect.appendChild(opt);if(i==config.minBMI)minIndex=optIndex;if(i==config.maxBMI)maxIndex=optIndex;optIndex++;}%CRBMI.minS=protoSelect.cloneNode(1);BMI.minS.id=%SQgrtMinSelect%SQ;BMI.minS.selectedIndex=minIndex;BMI.minS.addEventListener(%SQchange%SQ,hS.bCh,false);BMI.maxS=protoSelect;BMI.maxS.id=%SQgrtMaxSelect%SQ;BMI.maxS.selectedIndex=maxIndex;BMI.maxS.addEventListener(%SQchange%SQ,hS.bCh,false);var minLabel=zoomDoc.createElement(%SQlabel%SQ);minLabel.innerHTML=%SQmin.%SQ;minLabel.setAttribute(%SQfor%SQ,%SQgrtMinSelect%SQ);var maxLabel=zoomDoc.createElement(%SQlabel%SQ);maxLabel.innerHTML=%SQmax.%SQ;maxLabel.setAttribute(%SQfor%SQ,%SQgrtMaxSelect%SQ);bmiDiv.appendChild(minLabel);';
  1723.     src[src.length] = 'bmiDiv.appendChild(BMI.minS);bmiDiv.appendChild(maxLabel);bmiDiv.appendChild(BMI.maxS);uBC();AGE.minI=zoomDoc.createElement(%SQinput%SQ);AGE.minI.id=%SQgrtAgeMin%SQ;AGE.minI.value=config.minAge;AGE.minI.addEventListener(%SQclick%SQ,function(){this.select()},false);AGE.minI.addEventListener(%SQkeydown%SQ,hS.AGE_UPDOWN,false);AGE.minI.addEventListener(%SQchange%SQ,hS.aCh,false);AGE.maxI=AGE.minI.cloneNode(1);AGE.maxI.id=%SQgrtAgeMax%SQ;AGE.maxI.value=config.maxAge;AGE.maxI.addEventListener(%SQclick%SQ,function(){this.select()},false);AGE.maxI.addEventListener(%SQkeydown%SQ,hS.AGE_UPDOWN,false);AGE.maxI.addEventListener(%SQchange%SQ,hS.aCh,false);minLabel=zoomDoc.createElement(%SQlabel%SQ);minLabel.innerHTML=%SQmin.%SQ;minLabel.setAttribute(%SQfor%SQ,%SQgrtAgeMin%SQ);maxLabel=zoomDoc.createElement(%SQlabel%SQ);maxLabel.innerHTML=%SQmax.%SQ;maxLabel.setAttribute(%SQfor%SQ,%SQgrtAgeMax%SQ);ageDiv.appendChild(minLabel);ageDiv.appendChild(AGE.minI);ageDiv.appendChild(maxLabel);ageDiv.appendChild(AGE.maxI);zoomDiv.appendChild(closeDiv);snIO();},uBC=function(){BMI.minS.style.backgroundColor=BMI.minS.options[BMI.minS.selectedIndex].style.backgroundColor;BMI.maxS.style.backgroundColor=BMI.maxS.options[BMI.maxS.selectedIndex].style.backgroundColor;},sLsg=function(){zoomDiv.innerHTML=%SQ%SQ;zoomDiv.className=%SQ%SQ;zoomDiv.style.width=%SQ%SQ;zoomDiv.style.height=%SQ%SQ;zoomDiv.style.display=%SQblock%SQ;zoomVisible=1;},iLi=function(username,userID,picName){clt();if(zoomVisible&&userID==cur';
  1724.     src[src.length] = 'rentZoomUID&&mode==MsS.IMAGE)return;currentZoomUID=userID;sLsg();mode=MsS.IMAGE;zoomedImg.setAttribute(%SQuserid%SQ,userID);zoomedImg.setAttribute(%SQusername%SQ,username);zoomedImg.id=%SQgrtFull%SQ;tmp.imgIF.src=picName;},clt=function(){if(!hideTimer)return;clearTimeout(hideTimer);hideTimer=null;},hvD=function(_now_){if(hideTimer)return;if(_now_){rHd();return;}%CRvar t=(zoomedImg.width<300||zoomedImg.height<300)?250:150;hideTimer=setTimeout(rHd,t);},rHd=function(){hideTimer=null;zoomDiv.innerHTML=%SQ%SQ;zoomDiv.style.display=%SQnone%SQ;zoomVisible=0;},getStatusURL=function(isLocal){var statusURLBase=(isLocal)?%SQhttp://gr-tools/%SQ:URLS.BASE;return statusURLBase+%SQstatus%SQ;};return{init:init,retrigger:function(){var win=f.main.contentWindow;win[ZOOM_APPLIED]=0;af();},secretClick:hS.aC,setConfigHTML:setConfigHTML,setLiveRevision:setLiveRevision,setNewsDate:setNewsDate,getLanguage:function(){return lang},getStatusURL:getStatusURL};})();;';
  1725. */
  1726. /*
  1727.     var topHead = self.document.getElementsByTagName('head')[0],
  1728.         js = self.document.createElement('script'),
  1729.     js = js.wrappedJSObject || js;
  1730.     js.type = 'text/javascript';
  1731.     js.innerHTML = src.join('').replace(/%BS/g,'\\').replace(/%CR/g,'\n').replace(/%SQ/g,'\'');
  1732.     // js.innerHTML =
  1733.             // 'alert ("CallFrom INSIDE top.mitte.openUrl: " + top.mitte.openUrl); ' +
  1734.             // 'alert (top.GRT); '// +
  1735.     ;
  1736.  
  1737.     topHead.appendChild(js);
  1738.  
  1739. */
  1740.  
  1741.  
  1742.   //alert ("CallFrom GM top.mitte.openUrl: " + top.mitte.openUrl);
  1743.  
  1744. //  var GRT = (top.wrappedJSObject || top).GRT;
  1745.     var GRT = top.GRT;
  1746.  
  1747.     function bugFixes() {
  1748.        var isClub = !!self.location.href.match(/setcard\/cluide\//);
  1749.        var tfm;
  1750.        if (isClub) {
  1751.             tfm =
  1752.             top.frames[1].frames[1].frameElement =
  1753.             top.frames[1].frames[1]
  1754.  
  1755.        } else {
  1756.  
  1757.         // ...for  GRT.f.main
  1758.             tfm =
  1759.             top.frames.mitte =
  1760.                 top.frames.mitte
  1761.              || top.frames[3];
  1762.  
  1763.  
  1764.         // ...for  GRT.f.msg
  1765.            top.frames.persoenliches =
  1766.                 top.frames.persoenliches
  1767.              || top.frames[2] ;
  1768.  
  1769.  
  1770.  
  1771.         }
  1772.     // for f.main.contentWindow.openUrl
  1773.     //     replace ^-all with:
  1774.     //  f.main.contentWindow.wrappedJSObject.openUrl
  1775.  
  1776.  
  1777.     };
  1778.  
  1779.     bugFixes()
  1780.     GRT.init(revisions);
  1781.  
  1782.     GRT.setConfigHTML(
  1783.     ////////////////////////////////////////////////////////////////////////////////////////////////           
  1784.     //
  1785.     //  Configurationdialog German         
  1786.     //
  1787.     //
  1788.         ( GRT.getLanguage()=='de' ) ? '\
  1789.             <style type="text/css">                                                         \
  1790.                 #grtcfg2 {                                                                  \
  1791.                     padding:10px;                                                               \
  1792.                     color:#D1DEF1;                                                              \
  1793.                     font-family:Tahoma, Arial, Verdana, Helvetica;                              \
  1794.                 }                                                                               \
  1795.                 #grtcfg2 table {                                                                \
  1796.                     width:auto;                                                                 \
  1797.                     margin:10px 0   0;                                                          \
  1798.                     border-collapse:collapse;                                                   \
  1799.                     border-spacing:0                                                            \
  1800.                 }                                                                               \
  1801.                 #grtcfg2 input {                                                                \
  1802.                     cursor:pointer                                                              \
  1803.                 }                                                                               \
  1804.                 #grtcfg2 h3 {                                                                   \
  1805.                     padding:0 4px 5px 0;                                                        \
  1806.                     margin:0;                                                                   \
  1807.                     font-size:14px;                                                             \
  1808.                     border-bottom:1px solid #ccc;                                               \
  1809.                     text-align:right;                                                           \
  1810.                     color:#D1DEF1 !important                                                    \
  1811.                 }                                                                               \
  1812.                 #grtcfg2 h4, #grtcfg2 p {                                                       \
  1813.                     padding:0;                                                                  \
  1814.                     margin:0                                                                    \
  1815.                 }                                                                               \
  1816.                 #grtcfg2 td {                                                                   \
  1817.                     vertical-align:top;                                                         \
  1818.                     padding:7px 5px 0;                                                          \
  1819.                     color:#D1DEF1;                                                              \
  1820.                     width:auto !important                                                       \
  1821.                 }                                                                               \
  1822.                 #grtcfg2 label {                                                                \
  1823.                     cursor:pointer;                                                             \
  1824.                     display:block;                                                              \
  1825.                     padding-top:2px                                                             \
  1826.                 }                                                                               \
  1827.                 #grtcfg2 label b    {                                                           \
  1828.                     color:#fff                                                                  \
  1829.                 }                                                                               \
  1830.                 #grtcfg2 img {                                                              \
  1831.                     vertical-align:middle                                                       \
  1832.                 }                                                                               \
  1833.                 #grtcfg2 img.ex {                                                               \
  1834.                     border:1px solid yellow;                                                    \
  1835.                     margin-top:4px;                                                             \
  1836.                     display:none;                                                               \
  1837.                     position:absolute;                                                          \
  1838.                     z-index:2                                                                   \
  1839.                 }                                                                               \
  1840.                 #grtcfg2 span.ex {                                                          \
  1841.                     background:transparent url(##PICBASEshow.png) left center no-repeat;        \
  1842.                     padding-left:20px;                                                          \
  1843.                     opacity:0.5;                                                                \
  1844.                     margin-left:5px                                                             \
  1845.                 }                                                                               \
  1846.                 #grtcfg2 span.ex:hover {                                                        \
  1847.                     opacity:1                                                                   \
  1848.                 }                                                                               \
  1849.                 #grtcfg2 span.ex:hover img.ex {                                             \
  1850.                     display:block                                                               \
  1851.                 }                                                                               \
  1852.                 #grtcfg2 .grtwarn b {                                                           \
  1853.                     color:#ffb400                                                               \
  1854.                 }                                                                               \
  1855.                 #grtcfg2 .bg2, #grtcfg2 .grtwarn {                                          \
  1856.                     background-color:#2A509F                                                    \
  1857.                 }                                                                               \
  1858.                 #bmiDiv, #ageDiv {                                                          \
  1859.                     padding-top:5px                                                             \
  1860.                 }                                                                               \
  1861.                 #bmiDiv .bmiSelect {                                                            \
  1862.                     text-align:center;                                                          \
  1863.                     font-size:11px;                                                             \
  1864.                     padding:0;                                                                  \
  1865.                     margin-right:5px;                                                           \
  1866.                 }                                                                               \
  1867.                 #bmiDiv label, #ageDiv label {                                              \
  1868.                     display:inline                                                              \
  1869.                 }                                                                               \
  1870.                 #ageDiv input {                                                             \
  1871.                     border:1px solid #fff;                                                      \
  1872.                     width:30px;                                                                 \
  1873.                     margin:0 5px 0  2px;                                                            \
  1874.                     background-color:#85E854;                                                   \
  1875.                     cursor:default;                                                             \
  1876.                     font-size:11px;                                                             \
  1877.                     text-align:center                                                           \
  1878.                 }                                                                               \
  1879.                 #grtopts a  {                                                                   \
  1880.                     display:block;                                                              \
  1881.                     text-align:right;                                                           \
  1882.                     background:transparent url(##PICBASEdown.png) right center no-repeat;       \
  1883.                     height:15px;                                                                \
  1884.                     opacity:0.5                                                                 \
  1885.                 }                                                                               \
  1886.                 #grtopts a:hover {                                                          \
  1887.                     opacity:0.9                                                                 \
  1888.                 }                                                                               \
  1889.                 #grtopts p  {                                                                   \
  1890.                     opacity:0.7;                                                                \
  1891.                     padding-top:2px                                                             \
  1892.                 }                                                                               \
  1893.                 #grtopts td:hover p {                                                           \
  1894.                     opacity:1                                                                   \
  1895.                 }                                                                               \
  1896.                 #grtSaveConfig {                                                                \
  1897.                     font-size:11px;                                                             \
  1898.                     font-family:Verdana;                                                        \
  1899.                 }                                                                               \
  1900.                 #grtcfg2 tr.ind td:last-child {                                             \
  1901.                     padding-left:26px !important                                                \
  1902.                 }                                                                               \
  1903.                 #grtcfg2 tr.ind2 td {                                                           \
  1904.                     padding-top:0 !important                                                    \
  1905.                 }                                                                               \
  1906.                                                                                                 \
  1907.             </style>                                                                        \
  1908.             <div id="grtcfg2">                                                              \
  1909.                     <h3>GR-Tools -  Einstellungen</h3>                                          \
  1910.                                                                                             \
  1911.                 <table cellspacing="5" id="grtopts">                                            \
  1912.                     <tr class="bg2">                                                            \
  1913.                         <td>                                                                        \
  1914.                             <input type="checkbox" id="grtcbzoom" />                                \
  1915.                         </td>                                                                       \
  1916.                         <td>                                                                        \
  1917.                             <label for="grtcbzoom"><b>Vorschaubild-Lupe</b> <span class="ex"><img src="##PICBASElupe.png" alt="" class="ex" /></span>\
  1918.                                                                                             \
  1919.                             </label>                                                                \
  1920.                             <p>Zeigt das                                                            \
  1921.                                 <img src="##PICBASE../lupe.png" alt="" />-Symbol in Vorschaubildern an, um beim Herüberfahren mit der Maus das\
  1922.                                 Originalbild zu sehen.</p> <a href="#grtsave"></a>                  \
  1923.                                                                                             \
  1924.                         </td>                                                                       \
  1925.                     </tr>                                                                       \
  1926.                     <tr class="bg2 ind ind2">                                                   \
  1927.                         <td>                                                                        \
  1928.                             <input type="checkbox" id="grtcbbigZoom" />                             \
  1929.                         </td>                                                                       \
  1930.                         <td>                                                                        \
  1931.                             <label for="grtcbbigZoom"><b>... wenn Lupe, dann XXL!</b>               \
  1932.                                                                                             \
  1933.                             </label>                                                                \
  1934.                             <p>Verwendet ein größeres                                             \
  1935.                                 <img src="##PICBASE../lupe2.png" alt="" />-Symbol für die Vorschau-Bildlupe, falls letztere aktiviert ist.</p>\
  1936.                             <a                                                                      \
  1937.                             href="#grtsave"></a>                                                    \
  1938.                         </td>                                                                       \
  1939.                     </tr>                                                                       \
  1940.                     <tr>                                                                        \
  1941.                         <td>                                                                        \
  1942.                             <input type="checkbox" id="grtcbuseIF" />                               \
  1943.                         </td>                                                                       \
  1944.                         <td>                                                                        \
  1945.                             <label for="grtcbuseIF"><b>Popups vermeiden</b> <span class="ex"><img src="##PICBASEiframe.jpg" alt="" class="ex" /></span>\
  1946.                                                                                             \
  1947.                             </label>                                                                \
  1948.                             <p>Nutzerprofile werden weitestgehend nicht mehr in Popups geöffnet, sondern\
  1949.                                 direkt in der Seite.</p> <a href="#grtsave"></a>                        \
  1950.                                                                                             \
  1951.                         </td>                                                                       \
  1952.                     </tr>                                                                       \
  1953.                     <tr class="ind ind2">                                                       \
  1954.                         <td>                                                                        \
  1955.                             <input type="checkbox" id="grtcbthumbIF" />                             \
  1956.                         </td>                                                                       \
  1957.                         <td>                                                                        \
  1958.                             <label for="grtcbthumbIF"><b>... auch bei Vorschaubild-Klick</b>        \
  1959.                                                                                             \
  1960.                             </label>                                                                \
  1961.                             <p>Durch Deaktivieren dieser Option bleibt hartnäckigen Popup-Fetischisten\
  1962.                                 ein Weg, trotz aktivierter "Popup-Vermeidung" noch Profil-Popups zu öffnen\
  1963.                                 - per Klick aufs Vorschaubild ;-).</p> <a href="#grtsave"></a>      \
  1964.                                                                                             \
  1965.                         </td>                                                                       \
  1966.                     </tr>                                                                       \
  1967.                     <tr class="bg2">                                                            \
  1968.                         <td>                                                                        \
  1969.                             <input type="checkbox" id="grtcbfilterAge" />                           \
  1970.                         </td>                                                                       \
  1971.                         <td>                                                                        \
  1972.                             <label for="grtcbfilterAge"><b>Alters-Filter</b>    <span class="ex"><img src="##PICBASEage-filter.png" alt="" class="ex" /></span>\
  1973.                                                                                             \
  1974.                             </label>                                                                \
  1975.                             <p>Wenn aktiviert, werden Nutzername, Alters- und Gewichtsangaben der Nutzer,\
  1976.                                 die nicht in deinem Alters-Wunschbereich liegen, grau bzw. abgeschwächt\
  1977.                                 dargestellt.</p>                                                        \
  1978.                             <div id="ageDiv">Dein Wunschalter: &nbsp;</div> <a href="#grtsave"></a> \
  1979.                                                                                             \
  1980.                         </td>                                                                       \
  1981.                     </tr>                                                                       \
  1982.                     <tr>                                                                        \
  1983.                         <td>                                                                        \
  1984.                             <input type="checkbox" id="grtcbclickTapse" />                          \
  1985.                         </td>                                                                       \
  1986.                         <td>                                                                        \
  1987.                             <label for="grtcbclickTapse"><b>Fußtapsen zum Klicken</b>              \
  1988.                                                                                             \
  1989.                             </label>                                                                \
  1990.                             <p>Ein Klick auf eine erhaltene Tapse öffnet das Tapsen-Popup, so dass du\
  1991.                                 direkt eine Antwort-Tapse geben kannst.</p> <a href="#grtsave"></a> \
  1992.                                                                                             \
  1993.                         </td>                                                                       \
  1994.                     </tr>                                                                       \
  1995.                     <tr class="bg2">                                                            \
  1996.                         <td>                                                                        \
  1997.                             <input type="checkbox" id="grtcbbigPaging" />                           \
  1998.                         </td>                                                                       \
  1999.                         <td>                                                                        \
  2000.                             <label for="grtcbbigPaging"><b>Größere Blätter-Links unter Ergebnissen</b>   <span class="ex"><img src="##PICBASEpaging.png" alt="" class="ex" /></span>\
  2001.                                                                                             \
  2002.                             </label>                                                                \
  2003.                             <p>Die futzeligen "Nächste-/Zurück"-Links in Suchergebnisseiten werden durch\
  2004.                                 große, nicht zu verfehlende Monster-Buttons ersetzt. Nicht nur für Grobmotoriker\
  2005.                                 :).</p> <a href="#grtsave"></a>                                     \
  2006.                                                                                             \
  2007.                         </td>                                                                       \
  2008.                     </tr>                                                                       \
  2009.                     <tr>                                                                        \
  2010.                         <td>                                                                        \
  2011.                             <input type="checkbox" id="grtcbytHead" />                              \
  2012.                         </td>                                                                       \
  2013.                         <td>                                                                        \
  2014.                             <label for="grtcbytHead"><b>YouTube-Links in Headlines</b>  <span class="ex"><img src="##PICBASEyt-list.png" alt="" class="ex" /></span>\
  2015.                                                                                             \
  2016.                             </label>                                                                \
  2017.                             <p>YouTube-URLs innerhalb von Nutzer-Headlines in Suchergebnissen werden\
  2018.                                 zu direkt klickbaren Links -    denn Copy&Paste sucks ;-).</p> <a href="#grtsave"></a>\
  2019.                                                                                             \
  2020.                         </td>                                                                       \
  2021.                     </tr>                                                                       \
  2022.                     <tr class="ind2">                                                           \
  2023.                         <td>                                                                        \
  2024.                             <input type="checkbox" id="grtcbytProf" />                              \
  2025.                         </td>                                                                       \
  2026.                         <td>                                                                        \
  2027.                             <label for="grtcbytProf"><b>YouTube-Links in Profilen</b>               \
  2028.                                                                                             \
  2029.                             </label>                                                                \
  2030.                             <p>YouTube-URLs innerhalb von Nutzer-Profiltexten werden zu direkt klickbaren\
  2031.                                 Links.</p> <a href="#grtsave"></a>                                  \
  2032.                                                                                             \
  2033.                         </td>                                                                       \
  2034.                     </tr>                                                                       \
  2035.                     <tr class="ind ind2">                                                       \
  2036.                         <td>                                                                        \
  2037.                             <input type="checkbox" id="grtcbytPreview" />                           \
  2038.                         </td>                                                                       \
  2039.                         <td>                                                                        \
  2040.                             <label for="grtcbytPreview"><b>... und Video-Vorschaubild einblenden</b>    <span class="ex"><img src="##PICBASEytpreview.jpg" alt="" class="ex" /></span>\
  2041.                                                                                             \
  2042.                             </label>                                                                \
  2043.                             <p>Beim Überfahren von YouTube-Links mit der Maus wird das Vorschaubild des\
  2044.                                 entsprechenden Videos neben dem Cursor eingeblendet.</p> <a href="#grtsave"></a>\
  2045.                                                                                             \
  2046.                         </td>                                                                       \
  2047.                     </tr>                                                                       \
  2048.                     <tr class="bg2">                                                            \
  2049.                         <td>                                                                        \
  2050.                             <input type="checkbox" id="grtcbshowBMI" />                             \
  2051.                         </td>                                                                       \
  2052.                         <td>                                                                        \
  2053.                             <label for="grtcbshowBMI"><b>BMI-Wert anzeigen</b>  <span class="ex"><img src="##PICBASEbmi-wert.png" alt="" class="ex" /></span>\
  2054.                                                                                             \
  2055.                             </label>                                                                \
  2056.                             <p>Zeigt in Suchergebnissen den BMI-Wert jedes Nutzers hinter seinem Nickname\
  2057.                                 an.                                                                 \
  2058.                                 <br/>Der Body-Mass-Index (BMI) gibt Aufschluss über das Verhältnis von Körpergröße\
  2059.                                 zu Gewicht -    je höher der BMI, desto voluminöser der Mensch. BMIs von 20\
  2060.                                 bis 25 gelten allgemein als "gesund". <u>Kaum Aussagekraft</u> hat der BMI\
  2061.                                 allerdings bei muskulösen oder durchtrainierten Kerlen. Und überhaupt:\
  2062.                                 den BMI bitte nicht überbewerten!</p> <a href="#grtsave"></a>          \
  2063.                                                                                             \
  2064.                         </td>                                                                       \
  2065.                     </tr>                                                                       \
  2066.                     <tr class="bg2 ind ind2">                                                   \
  2067.                         <td>                                                                        \
  2068.                             <input type="checkbox" id="grtcbbmiClickHP" />                          \
  2069.                         </td>                                                                       \
  2070.                         <td>                                                                        \
  2071.                             <label for="grtcbbmiClickHP"><b>... mit Geheim-Klick</b>                \
  2072.                                                                                             \
  2073.                             </label>                                                                \
  2074.                             <p>Ein Klick auf den BMI-Wert eines Nutzers öffnet sein Profil so, dass du\
  2075.                                 nicht in seiner Besucherliste auftauchst (funktioniert <u>nur</u>, falls\
  2076.                                 er sein Profil für jedermann sichtbar eingestellt hat).                \
  2077.                                 <br/> <b>Achtung:</b> falls du gleichzeitig mit mehreren Profilen bei gayromeo.com,\
  2078.                                 planetromeo.com und/oder 83.98.143.20 eingeloggt bist, kann es passieren,\
  2079.                                 dass dein Zweit-/Drittprofil in der Besucherliste des anderen auftaucht!\
  2080.                                 Pech gehabt!</p> <a href="#grtsave"></a>                                \
  2081.                                                                                             \
  2082.                         </td>                                                                       \
  2083.                     </tr>                                                                       \
  2084.                     <tr>                                                                        \
  2085.                         <td>                                                                        \
  2086.                             <input type="checkbox" id="grtcbfilterBMI" />                           \
  2087.                         </td>                                                                       \
  2088.                         <td>                                                                        \
  2089.                             <label for="grtcbfilterBMI"><b>BMI-Filter</b>   <span class="ex"><img src="##PICBASEbmi-filter.png" alt="" class="ex" /></span>\
  2090.                                                                                             \
  2091.                             </label>                                                                \
  2092.                             <p>Wenn aktiviert, werden Nutzer, die nicht deinem eingestellten "BMI-Wunschraster"\
  2093.                                 entsprechen, in Suchergebislisten halbtransparent dargestellt.</p>  \
  2094.                             <div                                                                    \
  2095.                             id="bmiDiv">Dein Traum-BMI: &nbsp;</div> <a href="#grtsave"></a>        \
  2096.                                                                                             \
  2097.             </td>                                                                           \
  2098.             </tr>                                                                           \
  2099.             <tr class="bg2">                                                                \
  2100.                 <td>                                                                            \
  2101.                     <input type="checkbox" id="grtcbhistInRes" />                               \
  2102.                 </td>                                                                           \
  2103.                 <td>                                                                            \
  2104.                     <label for="grtcbhistInRes"><b>Message-Verlauf-Button in Ergebnislisten</b> <span class="ex"><img src="##PICBASEhist-result.png" alt="" class="ex" /></span>\
  2105.                                                                                             \
  2106.                     </label>                                                                    \
  2107.                     <p>In Suchergebnislisten wird ein                                           \
  2108.                         <img src="##PICBASE../hist.gif" alt="" />-Symbol hinter dem Nutzernamen angezeigt, um direkt den Messageverlauf\
  2109.                         mit diesem Nutzer anzeigen zu lassen</p> <a href="#grtsave"></a>            \
  2110.                                                                                             \
  2111.                 </td>                                                                           \
  2112.             </tr>                                                                           \
  2113.             <tr class="bg2 ind2">                                                           \
  2114.                 <td>                                                                            \
  2115.                     <input type="checkbox" id="grtcbhistInMsg" />                               \
  2116.                 </td>                                                                           \
  2117.                 <td>                                                                            \
  2118.                     <label for="grtcbhistInMsg"><b>Message-Verlauf-Button in "Neue Messages"-Liste</b>  <span class="ex"><img src="##PICBASEhist-msg.png" alt="" class="ex" /></span>\
  2119.                                                                                             \
  2120.                     </label>                                                                    \
  2121.                     <p>Das                                                                      \
  2122.                         <img src="/v1/gemeinsam/grafiken/articons/message_art1.gif" alt=""      \
  2123.                         />-Symbol in der Message-Liste wird ersetzt durch ein                       \
  2124.                         <img src="##PICBASE../hist.gif"                                         \
  2125.                         alt="" />-Symbol, um direkt den Messageverlauf anzeigen zu lassen, statt die Nachricht\
  2126.                         sofort "offiziell" zu lesen ;-).</p> <a href="#grtsave"></a>                \
  2127.                                                                                             \
  2128.                 </td>                                                                           \
  2129.             </tr>                                                                           \
  2130.             <tr class="bg2 ind ind2">                                                       \
  2131.                 <td>                                                                            \
  2132.                     <input type="checkbox" id="grtcbhistHighl" />                               \
  2133.                 </td>                                                                           \
  2134.                 <td>                                                                            \
  2135.                     <label for="grtcbhistHighl"><b>... und letzte Nachricht im Verlauf hervorheben</b>\
  2136.                                                                                             \
  2137.                     </label>                                                                    \
  2138.                     <p>Bei Klick auf das                                                        \
  2139.                         <img src="##PICBASE../hist.gif" alt="" />-Symbol für den Message-Verlauf wird die letzte Nachricht besonders hervorgehoben.\
  2140.                         Gegen träge Augen ;-).</p> <a href="#grtsave"></a>                     \
  2141.                                                                                             \
  2142.                 </td>                                                                           \
  2143.             </tr>                                                                           \
  2144.             </table>                                                                        \
  2145.             <table cellspacing="5" style="border:1px solid #ccc">                           \
  2146.                 <tr class="grtWarn">                                                            \
  2147.                     <td>                                                                        \
  2148.                         <input type="checkbox" id="grtSaveCookie" />                                \
  2149.                     </td>                                                                       \
  2150.                     <td>                                                                        \
  2151.                         <label for="grtSaveCookie"><b>Einstellungen dauerhaft als Cookie speichern</label></b>\
  2152.                                                                                             \
  2153.                             <p style="padding:5px 0 10px">                                          \
  2154.                                 <img src="##PICBASEwarn.png" alt="" style="vertical-align:top" />Wichtig: An sich ist ein Cookie ein völlig harmloser Datenschnipsel, der\
  2155.                                 nur an diejenige Seite ständig mit übertragen wird,die ihn selbst auch\
  2156.                                 erstellt hat. Solltest du nicht an deinem Privat-PC sitzen, so lassen deine\
  2157.                                 gespeicherten Cookies jedoch bei anderen Nutzern dieses Rechners Rückschlüsse\
  2158.                                 daraufzu, wo du im Netz unterwegs warst. Bevor du hier den Haken setzt,\
  2159.                                 entscheide deshalb bitte sehr bewusst, ob dir durch einen GayRomeo-Cookie\
  2160.                                 eventuell Probleme entstehen könnten.                                  \
  2161.                                 <br/>                                                                   \
  2162.                                 <br/>Falls du den Cookie bereits verwendest, kannst du ihn jederzeit löschen,\
  2163.                                 indem du das Häkchen hier entfernst und auf "Einstellungen übernehmen"\
  2164.                                 drückst.</p>                                                           \
  2165.                     </td>                                                                       \
  2166.                 </tr>                                                                           \
  2167.             </table>                                                                        \
  2168.             <br/><a name="grtsave" />                                                       \
  2169.             <input type="button" id="grtSaveConfig" value="Einstellungen übernehmen"       \
  2170.             />                                                                              \
  2171.             </div>'
  2172.  
  2173.            
  2174.            
  2175.     :      
  2176.    
  2177.     ////////////////////////////////////////////////////////////////////////////////////////////////           
  2178.     //
  2179.     //  Configurationdialog English        
  2180.     //
  2181.     //
  2182.    
  2183.     '\
  2184.     <style type="text/css">     \
  2185.         #grtcfg2 {      \
  2186.             padding:10px;       \
  2187.             color:#D1DEF1;      \
  2188.             font-family:Tahoma, Arial, Verdana, Helvetica;      \
  2189.         }       \
  2190.         #grtcfg2 table {        \
  2191.             width:auto;     \
  2192.             margin:10px 0 0;        \
  2193.             border-collapse:collapse;       \
  2194.             border-spacing:0        \
  2195.         }       \
  2196.         #grtcfg2 input {        \
  2197.             cursor:pointer      \
  2198.         }       \
  2199.         #grtcfg2 h3 {       \
  2200.             padding:0 4px 5px 0;        \
  2201.             margin:0;       \
  2202.             font-size:14px;     \
  2203.             border-bottom:1px solid #ccc;       \
  2204.             text-align:right;       \
  2205.             color:#D1DEF1 !important        \
  2206.         }       \
  2207.         #grtcfg2 h4, #grtcfg2 p {       \
  2208.             padding:0;      \
  2209.             margin:0        \
  2210.         }       \
  2211.         #grtcfg2 td {       \
  2212.             vertical-align:top;     \
  2213.             padding:7px 5px 0;      \
  2214.             color:#D1DEF1;      \
  2215.             width:auto !important       \
  2216.         }       \
  2217.         #grtcfg2 label {        \
  2218.             cursor:pointer;     \
  2219.             display:block;      \
  2220.             padding-top:2px     \
  2221.         }       \
  2222.         #grtcfg2 label b {      \
  2223.             color:#fff      \
  2224.         }       \
  2225.         #grtcfg2 img {      \
  2226.             vertical-align:middle       \
  2227.         }       \
  2228.         #grtcfg2 img.ex {       \
  2229.             border:1px solid yellow;        \
  2230.             margin-top:4px;     \
  2231.             display:none;       \
  2232.             position:absolute;      \
  2233.             z-index:2       \
  2234.         }       \
  2235.         #grtcfg2 span.ex {      \
  2236.             background:transparent url(##PICBASEshow.png) left center no-repeat;        \
  2237.             padding-left:20px;      \
  2238.             opacity:0.5;        \
  2239.             margin-left:5px     \
  2240.         }       \
  2241.         #grtcfg2 span.ex:hover {        \
  2242.             opacity:1       \
  2243.         }       \
  2244.         #grtcfg2 span.ex:hover img.ex {     \
  2245.             display:block       \
  2246.         }       \
  2247.         #grtcfg2 .grtwarn b {       \
  2248.             color:#ffb400       \
  2249.         }       \
  2250.         #grtcfg2 .bg2, #grtcfg2 .grtwarn {      \
  2251.             background-color:#2A509F        \
  2252.         }       \
  2253.         #bmiDiv, #ageDiv {      \
  2254.             padding-top:5px     \
  2255.         }       \
  2256.         #bmiDiv .bmiSelect {        \
  2257.             text-align:center;      \
  2258.             font-size:11px;     \
  2259.             padding:0;      \
  2260.             margin-right:5px;       \
  2261.         }       \
  2262.         #bmiDiv label, #ageDiv label {      \
  2263.             display:inline      \
  2264.         }       \
  2265.         #ageDiv input {     \
  2266.             border:1px solid #fff;      \
  2267.             width:30px;     \
  2268.             margin:0 5px 0 2px;     \
  2269.             background-color:#85E854;       \
  2270.             cursor:default;     \
  2271.             font-size:11px;     \
  2272.             text-align:center       \
  2273.         }       \
  2274.         #grtopts a {        \
  2275.             display:block;      \
  2276.             text-align:right;       \
  2277.             background:transparent url(##PICBASEdown.png) right center no-repeat;       \
  2278.             height:15px;        \
  2279.             opacity:0.5     \
  2280.         }       \
  2281.         #grtopts a:hover {      \
  2282.             opacity:0.9     \
  2283.         }       \
  2284.         #grtopts p {        \
  2285.             opacity:0.7;        \
  2286.             padding-top:2px     \
  2287.         }       \
  2288.         #grtopts td:hover p {       \
  2289.             opacity:1       \
  2290.         }       \
  2291.         #grtSaveConfig {        \
  2292.             font-size:11px;     \
  2293.             font-family:Verdana;        \
  2294.         }       \
  2295.         #grtcfg2 tr.ind td:last-child {     \
  2296.             padding-left:26px !important        \
  2297.         }       \
  2298.         #grtcfg2 tr.ind2 td {       \
  2299.             padding-top:0 !important        \
  2300.         }       \
  2301.         </style>        \
  2302.                 \
  2303.         <div id="grtcfg2">      \
  2304.           <h3>GR-Tools - Settings</h3>      \
  2305.           <table cellspacing="5" id="grtopts">      \
  2306.             <tr class="bg2">        \
  2307.               <td><input type="checkbox" id="grtcbzoom"/></td>      \
  2308.               <td><label for="grtcbzoom"><b>Preview Image Zoom</b> <span class="ex"><img src="##PICBASElupe.png" alt="" class="ex" /></span></label>        \
  2309.                 <p>Adds a <img src="##PICBASE../lupe.png" alt="" /> icon to preview images. Moving the mouse on it will show the original image.</p>        \
  2310.                 <a href="#grtsave"></a></td>        \
  2311.             </tr>       \
  2312.             <tr class="bg2 ind ind2">       \
  2313.               <td><input type="checkbox" id="grtcbbigZoom"/></td>       \
  2314.               <td><label for="grtcbbigZoom"><b>... Zoom Icon in XXL, please!</b></label>        \
  2315.                 <p>Use a bigger <img src="##PICBASE../lupe2.png" alt="" /> icon for the zoom function.</p>      \
  2316.                 <a href="#grtsave"></a></td>        \
  2317.             </tr>       \
  2318.             <tr>        \
  2319.               <td><input type="checkbox" id="grtcbuseIF"/></td>     \
  2320.               <td><label for="grtcbuseIF"><b>Popup Avoidance</b> <span class="ex"><img src="##PICBASEiframe.jpg" alt="" class="ex" /></span></label>        \
  2321.                 <p>User profiles won\'t be opened in popups anymore, but directly within the site.</p>      \
  2322.                 <a href="#grtsave"></a></td>        \
  2323.             </tr>       \
  2324.             <tr class="ind ind2">       \
  2325.               <td><input type="checkbox" id="grtcbthumbIF"/></td>       \
  2326.               <td><label for="grtcbthumbIF"><b>... even on thumbnail clicks</b></label>     \
  2327.                 <p>With activated popup avoidance, <u>de</u>activating this option allows the popup fetishists among you to still open profile popups by clicking the user\'s thumbnail;        \
  2328.                   -).</p>       \
  2329.                 <a href="#grtsave"></a></td>        \
  2330.             </tr>       \
  2331.             <tr class="bg2">        \
  2332.               <td><input type="checkbox" id="grtcbfilterAge"/></td>     \
  2333.               <td><label for="grtcbfilterAge"><b>Age Filter</b> <span class="ex"><img src="##PICBASEage-filter.png" alt="" class="ex" /></span></label>     \
  2334.                 <p>If activated and a user is below or beyond your prefered age, his nickname, age and weight data will be displayed semitransparently / grayed out.</p>        \
  2335.                 <div id="ageDiv">Your prefered age: &nbsp; </div>       \
  2336.                 <a href="#grtsave"></a></td>        \
  2337.             </tr>       \
  2338.             <tr>        \
  2339.               <td><input type="checkbox" id="grtcbclickTapse"/></td>        \
  2340.               <td><label for="grtcbclickTapse"><b>Footprints clickable</b></label>      \
  2341.                 <p>A click on a footprint you\'ve been given opens the footprint popup, so you can give a reply footprint right away.</p>       \
  2342.                 <a href="#grtsave"></a></td>        \
  2343.             </tr>       \
  2344.             <tr class="bg2">        \
  2345.               <td><input type="checkbox" id="grtcbbigPaging"/></td>     \
  2346.               <td><label for="grtcbbigPaging"><b>Bigger Paging Links under Result Lists</b> <span class="ex"><img src="##PICBASEpaging.png" alt="" class="ex" /></span></label>     \
  2347.                 <p>The tiny "Next/Back" links of result pages will be replaced with huge, non-missable monster arrow buttons :-).</p>       \
  2348.                 <a href="#grtsave"></a></td>        \
  2349.             </tr>       \
  2350.             <tr>        \
  2351.               <td><input type="checkbox" id="grtcbytHead"/></td>        \
  2352.               <td><label for="grtcbytHead"><b>YouTube-Links in Headlines</b> <span class="ex"><img src="##PICBASEyt-list.png" alt="" class="ex" /></span></label>       \
  2353.                 <p>YouTube URLs within online-headlines will be turned into real, clickable links -<br/>        \
  2354.                   \'coz Copy&Paste sucks;       \
  2355.                   -).</p>       \
  2356.                 <a href="#grtsave"></a></td>        \
  2357.             </tr>       \
  2358.             <tr class="ind2">       \
  2359.               <td><input type="checkbox" id="grtcbytProf"/></td>        \
  2360.               <td><label for="grtcbytProf"><b>YouTube-Links in Profiles</b></label>     \
  2361.                 <p>YouTube-URLs within user profiles wil be turned into clickable links.</p>        \
  2362.                 <a href="#grtsave"></a></td>        \
  2363.             </tr>       \
  2364.             <tr class="ind ind2">       \
  2365.               <td><input type="checkbox" id="grtcbytPreview"/></td>     \
  2366.               <td><label for="grtcbytPreview"><b>... Video Preview on mouseover</b> <span class="ex"><img src="##PICBASEytpreview.jpg" alt="" class="ex" /></span></label>      \
  2367.                 <p>When you hold the mouse over a YouTube-Link, the video\'s preview image will be displayed next to the mouse cursor.</p>      \
  2368.                 <a href="#grtsave"></a></td>        \
  2369.             </tr>       \
  2370.             <tr class="bg2">        \
  2371.               <td><input type="checkbox" id="grtcbshowBMI"/></td>       \
  2372.               <td><label for="grtcbshowBMI"><b>Show BMI Values</b> <span class="ex"><img src="##PICBASEbmi-wert.png" alt="" class="ex" /></span></label>        \
  2373.                 <p>In result pages, each user\'s BMI value will be displayed behind his nickname.<br/>      \
  2374.                   The Body-Mass-Index (BMI) is the relation between body size and weight - the higher the value, the more "voluminous" the guy. Values from 20 to 25 are considered "healthy", though this may vary with age and origin. Moreover, the BMI is quite <u>pointless</u> regarding trained or muscle guys. Just generally: Do not overrate the BMI, please!</p>     \
  2375.                 <a href="#grtsave"></a></td>        \
  2376.             </tr>       \
  2377.             <tr class="bg2 ind ind2">       \
  2378.               <td><input type="checkbox" id="grtcbbmiClickHP"/></td>        \
  2379.               <td><label for="grtcbbmiClickHP"><b>... with Secret Click</b></label>     \
  2380.                 <p>Clicking a BMI value opens that user\'s public profile through a different GayRomeo domain, so the user won\'t notice your visit (works <u>only</u>, if his is profile is set public for everyone).<br/>     \
  2381.                   <b>Attention:</b> if you are surfing with multiple profiles simultaneously on gayromeo.com, planetromeo.com and/or 83.98.143.20, it may happen that your second/third profile ends up in the visitor list of the viewed person! Bad luck!</p>     \
  2382.                 <a href="#grtsave"></a></td>        \
  2383.             </tr>       \
  2384.             <tr>        \
  2385.               <td><input type="checkbox" id="grtcbfilterBMI"/></td>     \
  2386.               <td><label for="grtcbfilterBMI"><b>BMI Filter</b> <span class="ex"><img src="##PICBASEbmi-filter.png" alt="" class="ex" /></span></label>     \
  2387.                 <p>If activated, all users outside your prefered BMI range will be displayed semi-<wbr/>        \
  2388.                   transparently in the result lists.</p>        \
  2389.                 <div id="bmiDiv">Your prefered BMI range: &nbsp; </div>     \
  2390.                 <a href="#grtsave"></a></td>        \
  2391.             </tr>       \
  2392.             <tr class="bg2">        \
  2393.               <td><input type="checkbox" id="grtcbhistInRes"/></td>     \
  2394.               <td><label for="grtcbhistInRes"><b>Message History Buttons in Result Lists</b> <span class="ex"><img src="##PICBASEhist-result.png" alt="" class="ex" /></span></label>       \
  2395.                 <p>Within result lists, a tiny <img src="##PICBASE../hist.gif" alt="" /> icon will be displayed behind each user\'s nickname. Clicking it will open your message history with that guy.</p>     \
  2396.                 <a href="#grtsave"></a></td>        \
  2397.             </tr>       \
  2398.             <tr class="bg2 ind2">       \
  2399.               <td><input type="checkbox" id="grtcbhistInMsg"/></td>     \
  2400.               <td><label for="grtcbhistInMsg"><b>Message History Buttons in "New Messages" list</b> <span class="ex"><img src="##PICBASEhist-msg.png" alt="" class="ex" /></span></label>       \
  2401.                 <p>The <img src="/v1/gemeinsam/grafiken/articons/message_art1.gif" alt=""/> icon within the "new messages" list will be replaced with a <img src="##PICBASE../hist.gif" alt="" /> icon, allowing you to read the message "inofficially" without having it marked "read" on the spot;        \
  2402.                   -).</p>       \
  2403.                 <a href="#grtsave"></a></td>        \
  2404.             </tr>       \
  2405.             <tr class="bg2 ind ind2">       \
  2406.               <td><input type="checkbox" id="grtcbhistHighl"/></td>     \
  2407.               <td><label for="grtcbhistHighl"><b>... and highlight last Message in the History</b></label>      \
  2408.                 <p>After opening the history using the <img src="##PICBASE../hist.gif" alt="" /> icon, the last message will be highlighted for being found more easily;        \
  2409.                   -).</p>       \
  2410.                 <a href="#grtsave"></a></td>        \
  2411.             </tr>       \
  2412.           </table>      \
  2413.           <table cellspacing="5" style="border:1px solid #ccc">     \
  2414.             <tr class="grtWarn">        \
  2415.               <td><input type="checkbox" id="grtSaveCookie"/></td>      \
  2416.               <td><label for="grtSaveCookie"> <b>Save settings in a cookie</label>      \
  2417.                 </b>        \
  2418.                 <p style="padding:5px 0 10px"><img src="##PICBASEwarn.png" alt="" style="vertical-align:top" /> NOTE: technically, a cookie is a pretty harmless data snippet which gets transmitted with every request ONLY to the website who created it. But: if you are not working at your private PC, the cookies on your computer may expose to other users of that machine what websites you\'ve been surfing on lately. So, before you make the cross for this option, please decide carefully for yourself whether or nota GayRomeo cookie may get you into trouble!<br/>     \
  2419.                   <br/>     \
  2420.                   You can remove the GR-Tools cookie at any time: simply uncheck this option andhit the "Apply Changes" button.</p></td>        \
  2421.             </tr>       \
  2422.           </table>      \
  2423.           <br/>     \
  2424.           <a name="grtsave"/>       \
  2425.           <input type="button" id="grtSaveConfig" value="Apply Changes" />      \
  2426.         </div>      \
  2427.         '
  2428.     );
  2429. //  js.innerHTML = '';
  2430.  
  2431.     // determine the latest revision of the GR-Tools UserScript + date of latest news (if available)..
  2432.     GM_xmlhttpRequest({
  2433.         method: 'GET',
  2434.         url: GRT.getStatusURL(),
  2435.         headers: {Accept: 'text/plain'},
  2436.         onload: function(data) {
  2437.                          //"2.99.38|"
  2438.             var d = data.responseText.split('|');
  2439.             GRT.setLiveRevision( d[0] );
  2440.             GRT.setNewsDate( d[1] );
  2441.         }
  2442.     });
Add Comment
Please, Sign In to add comment