<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
		<id>http://www.schnupptrupp.org/w/index.php?action=history&amp;feed=atom&amp;title=Benutzer%3ASiedler6%2FCommon.js</id>
		<title>Benutzer:Siedler6/Common.js - Versionsgeschichte</title>
		<link rel="self" type="application/atom+xml" href="http://www.schnupptrupp.org/w/index.php?action=history&amp;feed=atom&amp;title=Benutzer%3ASiedler6%2FCommon.js"/>
		<link rel="alternate" type="text/html" href="http://www.schnupptrupp.org/w/index.php?title=Benutzer:Siedler6/Common.js&amp;action=history"/>
		<updated>2026-05-09T21:54:27Z</updated>
		<subtitle>Versionsgeschichte dieser Seite in SchnuppTrupp</subtitle>
		<generator>MediaWiki 1.24.1</generator>

	<entry>
		<id>http://www.schnupptrupp.org/w/index.php?title=Benutzer:Siedler6/Common.js&amp;diff=149082&amp;oldid=prev</id>
		<title>Siedler6: Die Seite wurde geleert.</title>
		<link rel="alternate" type="text/html" href="http://www.schnupptrupp.org/w/index.php?title=Benutzer:Siedler6/Common.js&amp;diff=149082&amp;oldid=prev"/>
				<updated>2018-04-02T23:54:40Z</updated>
		
		<summary type="html">&lt;p&gt;Die Seite wurde geleert.&lt;/p&gt;
&lt;a href=&quot;http://www.schnupptrupp.org/w/index.php?title=Benutzer:Siedler6/Common.js&amp;amp;diff=149082&amp;amp;oldid=149076&quot;&gt;Änderungen zeigen&lt;/a&gt;</summary>
		<author><name>Siedler6</name></author>	</entry>

	<entry>
		<id>http://www.schnupptrupp.org/w/index.php?title=Benutzer:Siedler6/Common.js&amp;diff=149076&amp;oldid=prev</id>
		<title>Siedler6: Test Hervorhebbare Tabelle</title>
		<link rel="alternate" type="text/html" href="http://www.schnupptrupp.org/w/index.php?title=Benutzer:Siedler6/Common.js&amp;diff=149076&amp;oldid=prev"/>
				<updated>2018-04-02T23:41:38Z</updated>
		
		<summary type="html">&lt;p&gt;Test Hervorhebbare Tabelle&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Neue Seite&lt;/b&gt;&lt;/p&gt;&lt;div&gt;/** &amp;lt;pre&amp;gt;&lt;br /&gt;
 * highlightTable.js&lt;br /&gt;
 *&lt;br /&gt;
 * Description:&lt;br /&gt;
 * Adds row highlighting to tables&lt;br /&gt;
 *&lt;br /&gt;
 * Version 1.0: Row highlighting                        - Quarenon&lt;br /&gt;
 * Version 1.1: Update from pengLocations.js v1.0       - Quarenon&lt;br /&gt;
 * Version 2.0: pengLocations v2.1, Granular cookie     - Saftzie&lt;br /&gt;
 * Version 2.1: Made compatible with jquery.tablesorter - Cqm&lt;br /&gt;
 */&lt;br /&gt;
 &lt;br /&gt;
;(function ($, mw) {&lt;br /&gt;
 &lt;br /&gt;
    'use strict';&lt;br /&gt;
 &lt;br /&gt;
    function highlightTable() {&lt;br /&gt;
 &lt;br /&gt;
        // requires CSS classes named in lightOnClass and mouseOverClass&lt;br /&gt;
        var wgPageName = mw.config.get('wgPageName'),&lt;br /&gt;
            cookiePrefix = 'lightTable',&lt;br /&gt;
            tableClass = 'lighttable',&lt;br /&gt;
            lightOnClass = 'highlight-on',&lt;br /&gt;
            mouseOverClass = 'highlight-over',&lt;br /&gt;
            base64url = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_',&lt;br /&gt;
            pageSeparator = '!',&lt;br /&gt;
            tableSeparator = '.',&lt;br /&gt;
            hashPageName,&lt;br /&gt;
            rows = [],&lt;br /&gt;
            columns,&lt;br /&gt;
            tables,&lt;br /&gt;
            cookie;&lt;br /&gt;
 &lt;br /&gt;
        // hash a string into a 32-bit hex string, msb first&lt;br /&gt;
        function crc32c(s) {&lt;br /&gt;
            var polynomial = 0x04C11DB7, // Castagnoli polynomial&lt;br /&gt;
                retVal,&lt;br /&gt;
                table = [],&lt;br /&gt;
                i,&lt;br /&gt;
                j,&lt;br /&gt;
                k;&lt;br /&gt;
 &lt;br /&gt;
            // guarantee 8-bit chars&lt;br /&gt;
            s = window.unescape(window.encodeURI(s));&lt;br /&gt;
 &lt;br /&gt;
            // calculate the crc for all 8-bit data&lt;br /&gt;
            // bit-wise operations discard anything left of bit 31&lt;br /&gt;
            for (i = 0; i &amp;lt; 256; i += 1) {&lt;br /&gt;
                k = (i &amp;lt;&amp;lt; 24);&lt;br /&gt;
                for (j = 0; j &amp;lt; 8; j += 1) {&lt;br /&gt;
                    k = (k &amp;lt;&amp;lt; 1) ^ ((k &amp;gt;&amp;gt;&amp;gt; 31) * polynomial);&lt;br /&gt;
                }&lt;br /&gt;
                table[i] = k;&lt;br /&gt;
            }&lt;br /&gt;
 &lt;br /&gt;
            // the actual calculation&lt;br /&gt;
            retVal = 0;&lt;br /&gt;
            for (i = 0; i &amp;lt; s.length; i += 1) {&lt;br /&gt;
                retVal = (retVal &amp;lt;&amp;lt; 8) ^ table[(retVal &amp;gt;&amp;gt;&amp;gt; 24) ^ s.charCodeAt(i)];&lt;br /&gt;
            }&lt;br /&gt;
 &lt;br /&gt;
            // make negative numbers unsigned&lt;br /&gt;
            if (retVal &amp;lt; 0) {&lt;br /&gt;
                retVal += 4294967296;&lt;br /&gt;
            }&lt;br /&gt;
            // 32-bit hex string, padded on the left&lt;br /&gt;
            retVal = '0000000' + retVal.toString(16).toUpperCase();&lt;br /&gt;
            retVal = retVal.substr(retVal.length - 8);&lt;br /&gt;
 &lt;br /&gt;
            return retVal;&lt;br /&gt;
        }&lt;br /&gt;
 &lt;br /&gt;
        // change the row bg color based on mouse events&lt;br /&gt;
        function setHighlight(el, val) {&lt;br /&gt;
            $(el).removeClass(mouseOverClass).removeClass(lightOnClass);&lt;br /&gt;
            switch (val) {&lt;br /&gt;
            case 1:  // light on&lt;br /&gt;
                $(el).addClass(lightOnClass);&lt;br /&gt;
                break;&lt;br /&gt;
            case 2:  // mouse-over&lt;br /&gt;
                $(el).addClass(mouseOverClass);&lt;br /&gt;
                break;&lt;br /&gt;
            default: // same as case 0, light off&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
 &lt;br /&gt;
        // load the cookie and parse it for the page&lt;br /&gt;
        // cookie info is saved in 1 of 16 browser cookies, based on page name hash&lt;br /&gt;
        // global cookie[][] supports multiple tables and multiple pages&lt;br /&gt;
        // uses global hashPageName&lt;br /&gt;
        function loadCookie(numTables) {&lt;br /&gt;
            var cookieName = cookiePrefix + '-' + hashPageName.charAt(0),&lt;br /&gt;
                pageCookies,&lt;br /&gt;
                tableCookies,&lt;br /&gt;
                iPage,&lt;br /&gt;
                iTable,&lt;br /&gt;
                i,&lt;br /&gt;
                j,&lt;br /&gt;
                k;&lt;br /&gt;
 &lt;br /&gt;
            cookie = [];&lt;br /&gt;
            if ($.cookie(cookieName) !== null) {&lt;br /&gt;
                pageCookies = $.cookie(cookieName).split(pageSeparator);&lt;br /&gt;
                for (iPage = 0; iPage &amp;lt; pageCookies.length; iPage += 1) {&lt;br /&gt;
                    if (hashPageName === pageCookies[iPage].substr(0, 8)) {&lt;br /&gt;
                        tableCookies = pageCookies[iPage].substr(8).split(tableSeparator);&lt;br /&gt;
                        // trim the cookie array of arrays, if needed&lt;br /&gt;
                        while (tableCookies.length &amp;gt; numTables) {&lt;br /&gt;
                            tableCookies.pop();&lt;br /&gt;
                        }&lt;br /&gt;
                        // extract the row info per table&lt;br /&gt;
                        // use Base64url to compress 6 rows to 1 character&lt;br /&gt;
                        for (iTable = 0; iTable &amp;lt; tableCookies.length; iTable += 1) {&lt;br /&gt;
                            cookie[iTable] = [];&lt;br /&gt;
                            for (i = 0; i &amp;lt; tableCookies[iTable].length; i += 1) {&lt;br /&gt;
                                k = base64url.indexOf(tableCookies[iTable].charAt(i));&lt;br /&gt;
                                if (k &amp;lt; 0) { // input validation&lt;br /&gt;
                                    k = 0;&lt;br /&gt;
                                }&lt;br /&gt;
                                for (j = 5; j &amp;gt;= 0; j -= 1) {&lt;br /&gt;
                                    cookie[iTable][6 * i + j] = (k &amp;amp; 0x1);&lt;br /&gt;
                                    k &amp;gt;&amp;gt;= 1;&lt;br /&gt;
                                }&lt;br /&gt;
                            }&lt;br /&gt;
                        }&lt;br /&gt;
                    }&lt;br /&gt;
                }&lt;br /&gt;
            }&lt;br /&gt;
 &lt;br /&gt;
            // initialize the cookie array of arrays, if needed&lt;br /&gt;
            while (cookie.length &amp;lt; numTables) {&lt;br /&gt;
                cookie.push([]);&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
 &lt;br /&gt;
        // save/update the cookie for page reloads&lt;br /&gt;
        // cookie info is saved in 1 of 16 browser cookies, based on page name hash&lt;br /&gt;
        // global cookie[][] supports multiple tables and multiple pages&lt;br /&gt;
        // uses global hashPageName&lt;br /&gt;
        function saveCookie() {&lt;br /&gt;
            var cookieName = cookiePrefix + '-' + hashPageName.charAt(0),&lt;br /&gt;
                pageCookies,&lt;br /&gt;
                tableCookies,&lt;br /&gt;
                iPage,&lt;br /&gt;
                iTable,&lt;br /&gt;
                i,&lt;br /&gt;
                j,&lt;br /&gt;
                k,&lt;br /&gt;
                updated;&lt;br /&gt;
 &lt;br /&gt;
            // create the cookie for the tables on the current page&lt;br /&gt;
            // use Base64url to compress 6 rows to 1 character&lt;br /&gt;
            tableCookies = hashPageName;&lt;br /&gt;
            for (iTable = 0; iTable &amp;lt; cookie.length; iTable += 1) {&lt;br /&gt;
                if (iTable &amp;gt; 0) {&lt;br /&gt;
                    tableCookies += tableSeparator;&lt;br /&gt;
                }&lt;br /&gt;
                for (i = 0; i &amp;lt; Math.ceil(cookie[iTable].length / 6); i += 1) {&lt;br /&gt;
                    k = cookie[iTable][6 * i];&lt;br /&gt;
                    for (j = 1; j &amp;lt; 6; j += 1) {&lt;br /&gt;
                        k = 2 * k + ((6 * i + j &amp;lt; cookie[iTable].length) ? cookie[iTable][6 * i + j] : 0);&lt;br /&gt;
                    }&lt;br /&gt;
                    tableCookies += base64url.charAt(k);&lt;br /&gt;
                }&lt;br /&gt;
            }&lt;br /&gt;
 &lt;br /&gt;
            updated = 0;&lt;br /&gt;
            pageCookies = [];&lt;br /&gt;
            if ($.cookie(cookieName) !== null) {&lt;br /&gt;
                // get all the page cookies&lt;br /&gt;
                // another page might have updated them since this page&lt;br /&gt;
                pageCookies = $.cookie(cookieName).split(pageSeparator);&lt;br /&gt;
                // update the page cookie if it already exists&lt;br /&gt;
                for (iPage = 0; iPage &amp;lt; pageCookies.length; iPage += 1) {&lt;br /&gt;
                    if (hashPageName === pageCookies[iPage].substr(0, 8)) {&lt;br /&gt;
                        updated = 1;&lt;br /&gt;
                        pageCookies[iPage] = tableCookies;&lt;br /&gt;
                    }&lt;br /&gt;
                }&lt;br /&gt;
            }&lt;br /&gt;
            // add the page cookie if it doesn't exist yet&lt;br /&gt;
            if (updated === 0) {&lt;br /&gt;
                pageCookies.push(tableCookies);&lt;br /&gt;
            }&lt;br /&gt;
 &lt;br /&gt;
            // set path to / so it works for /wiki/, /index.php, etc&lt;br /&gt;
            $.cookie(cookieName, pageCookies.join(pageSeparator), {&lt;br /&gt;
                expires: 7,&lt;br /&gt;
                path: '/'&lt;br /&gt;
            });&lt;br /&gt;
        }&lt;br /&gt;
 &lt;br /&gt;
        tables = $('table.' + tableClass);&lt;br /&gt;
        // don't bother doing anything unless there's really something to do&lt;br /&gt;
        if (tables.length &amp;gt; 0) {&lt;br /&gt;
            // hash the page name to an 8-char hex string&lt;br /&gt;
            hashPageName = crc32c(wgPageName);&lt;br /&gt;
            loadCookie(tables.length);&lt;br /&gt;
 &lt;br /&gt;
            tables.each(function (iTable) {&lt;br /&gt;
                rows[iTable] = $(this).find('tr:has(td)'); // data rows&lt;br /&gt;
 &lt;br /&gt;
                // init or trim the cookie array of rows, if needed&lt;br /&gt;
                while (cookie[iTable].length &amp;lt; rows[iTable].length) {&lt;br /&gt;
                    cookie[iTable].push(0);&lt;br /&gt;
                }&lt;br /&gt;
                while (cookie[iTable].length &amp;gt; rows[iTable].length) {&lt;br /&gt;
                    cookie[iTable].pop();&lt;br /&gt;
                }&lt;br /&gt;
 &lt;br /&gt;
                // don't rely on headers to find # of columns&lt;br /&gt;
                // count them dynamically&lt;br /&gt;
                columns = 1;&lt;br /&gt;
 &lt;br /&gt;
                rows[iTable].each(function (iRow) {&lt;br /&gt;
                    // update column count as we go&lt;br /&gt;
                    // a smarter approach would count colspans, but this is good for now&lt;br /&gt;
                    columns = Math.max(columns, $(this).children('th,td').length);&lt;br /&gt;
 &lt;br /&gt;
                    // initialize highlighting based on the cookie&lt;br /&gt;
                    setHighlight(this, cookie[iTable][iRow]);&lt;br /&gt;
 &lt;br /&gt;
                    // set mouse events&lt;br /&gt;
                    $(this).mouseover(function () {&lt;br /&gt;
                        setHighlight(this, 2);&lt;br /&gt;
                    }).mouseout(function () {&lt;br /&gt;
                        setHighlight(this, cookie[iTable][iRow]);&lt;br /&gt;
                    }).click(function (e) {&lt;br /&gt;
                        // don't toggle highlight when clicking links&lt;br /&gt;
                        if ((e.target.tagName !== 'A') &amp;amp;&amp;amp; (e.target.tagName !== 'IMG')) {&lt;br /&gt;
                            cookie[iTable][iRow] = 1 - cookie[iTable][iRow];&lt;br /&gt;
                            setHighlight(this, cookie[iTable][iRow]);&lt;br /&gt;
                            saveCookie();&lt;br /&gt;
                        }&lt;br /&gt;
                    });&lt;br /&gt;
                });&lt;br /&gt;
 &lt;br /&gt;
                // add a button for reset&lt;br /&gt;
                $(this).append(&lt;br /&gt;
                    $('&amp;lt;tfoot/&amp;gt;')&lt;br /&gt;
                        .append(&lt;br /&gt;
                            $('&amp;lt;tr/&amp;gt;')&lt;br /&gt;
                                .append(&lt;br /&gt;
                                    $('&amp;lt;th/&amp;gt;')&lt;br /&gt;
                                        .attr('colspan', columns)&lt;br /&gt;
                                        .append(&lt;br /&gt;
                                            $('&amp;lt;input&amp;gt;')&lt;br /&gt;
                                                .attr({&lt;br /&gt;
                                                    'type': 'button',&lt;br /&gt;
                                                    'value': 'Reset'&lt;br /&gt;
                                                })&lt;br /&gt;
                                                .click(function () {&lt;br /&gt;
                                                    rows[iTable].each(function (iRow) {&lt;br /&gt;
                                                        cookie[iTable][iRow] = 0;&lt;br /&gt;
                                                        setHighlight(this, 0);&lt;br /&gt;
                                                    });&lt;br /&gt;
                                                    saveCookie();&lt;br /&gt;
                                                })&lt;br /&gt;
                                        )&lt;br /&gt;
                                )&lt;br /&gt;
                        )&lt;br /&gt;
                    );&lt;br /&gt;
            });&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
 &lt;br /&gt;
    $(highlightTable);&lt;br /&gt;
 &lt;br /&gt;
}(this.jQuery, this.mediaWiki));&lt;br /&gt;
 &lt;br /&gt;
/* &amp;lt;/pre&amp;gt; */&lt;/div&gt;</summary>
		<author><name>Siedler6</name></author>	</entry>

	</feed>