Changeset 8057

Show
Ignore:
Timestamp:
03/17/08 23:53:11 (5 years ago)
Author:
noriaki
Message:

lang/javascript/userscripts/buildlink.user.js:

  • 各アイコンの動作内容をマウスオーバーで表示するように変更
  • 別のブラウザにインストールされた*Build Link*と設定を共有できるように,XML形式による_Export_と_Import_機能を追加
Files:
1 modified

Legend:

Unmodified
Added
Removed
  • lang/javascript/userscripts/buildlink.user.js

    r7977 r8057  
    55// @description    Build Customized link 
    66// @license        The MIT License 
    7 // @version        0.1.1 
     7// @version        0.1.2 
    88// @released       2008-03-08 21:00:00 
    9 // @updated        2008-03-15 15:12:00 
     9// @updated        2008-03-17 23:46:00 
    1010// @compatible     Greasemonkey 
    1111// @include        * 
     
    6262    }, 
    6363 
     64    trim: function(text) { 
     65        return (text || '').replace(/^\s+|\s+$/g, ''); 
     66    }, 
     67 
    6468    toArray: function(iterable) { 
    6569        if (!iterable) return []; 
     
    6771        while (length--) results[length] = iterable[length]; 
    6872        return results; 
     73    }, 
     74 
     75    inArray: function(elem, array) { 
     76        for(var i=0,l=array.length; i<l; i++ ) 
     77            if(array[i] == elem) return i; 
     78        return -1; 
    6979    }, 
    7080 
     
    97107            } 
    98108        } 
     109        return ret; 
     110    }, 
     111 
     112    grep: function(elems, callback, inv) { 
     113        var ret = []; 
     114        for(var i=0,l=elems.length; i<l; i++) 
     115            if(!inv && callback(elems[i], i) || inv && !callback(elems[i], i)) 
     116                ret.push(elems[i]); 
    99117        return ret; 
    100118    }, 
     
    167185            }); 
    168186        } 
     187    }, 
     188 
     189    className: { 
     190        add: function(elem, classNames) { 
     191            Util.each((classNames || '').split(/\s+/), function(i, className) { 
     192                if(elem.nodeType == 1 && !Util.className.has(elem.className, className)) 
     193                    elem.className += (elem.className ? ' ' : '') + className; 
     194            }); 
     195        }, 
     196 
     197        remove: function(elem, classNames) { 
     198            if(elem.nodeType == 1) 
     199                elem.className = classNames !== undefined ? 
     200                Util.grep(elem.className.split(/\s+/), function(className) { 
     201                    return !Util.className.has(classNames, className); 
     202                }).join(' ') : ''; 
     203        }, 
     204 
     205        has: function(elem, className) { 
     206            return Util.inArray(className, (elem.className || elem).toString().split(/\s+/)) > -1; 
     207        } 
    169208    } 
     209 
    170210}; 
    171211//------------------------------------------------- 
     
    216256            }); 
    217257            return included; 
     258        }, 
     259        each: function(callback) { 
     260            return Util.each(this, callback); 
     261        }, 
     262        map: function(callback) { 
     263            return Util.map(this, callback); 
     264        }, 
     265        xml: function() { 
     266            var xml = ['<buildlink>']; 
     267            this.each(function(i, link) { 
     268                xml.push('  <link>'); 
     269                Util.each(link, function(key, val) { 
     270                    xml.push('    <' + key + '>' + ( 
     271                        key == 'body' ? '<![CDATA[\n' + val.toString() + '\n]]>' : val.toString() 
     272                    ) + '</' + key + '>'); 
     273                }); 
     274                xml.push('  </link>'); 
     275            }); 
     276            xml.push('</buildlink>'); 
     277            return xml.join("\n"); 
    218278        } 
    219279    }); 
    220280 
    221281    var BBController = { 
     282        initialize: function() { 
     283            document.addEventListener('mousedown', function(e) { 
     284                BuildBox.moused = true; 
     285                if(BuildBox.shown) { 
     286                    BuildBox.controller.hide(e); 
     287                    BuildBox.shown = false; 
     288                } 
     289            }, false); 
     290            document.addEventListener('mousemove', function(e) { 
     291                if(BuildBox.moused) BuildBox.moved = true; 
     292            }, false); 
     293            document.addEventListener('mouseup', function(e) { 
     294                if(BuildBox.moused && BuildBox.moved && 
     295                   window.content.document.getSelection().length > 0 && 
     296                   !BuildBox.shown) BuildBox.controller.init(e); 
     297                BuildBox.moused = BuildBox.moved = false; 
     298            }, false); 
     299            document.addEventListener('dblclick', function(e) { 
     300                if(!BuildBox.shown) BuildBox.controller.init(e); 
     301            }, false); 
     302 
     303            BuildBox.stopPropagation(); 
     304            document.body.appendChild(BuildBox.elm); 
     305            document.body.appendChild($N('div', { id: 'gm_build_link_clipboard' })); 
     306        }, 
    222307        init: function(e) { 
    223308            BuildBox.initParams(); 
     
    227312            BuildBox.shown = true; 
    228313        }, 
     314        initPopup: function() { 
     315            Util.each(Util.toArray(BuildBox.elm.getElementsByTagName('img')), function(i,img,imgs) { 
     316                img.addEventListener('mouseover', function(e) { 
     317                    Util.$('gm_build_link_config_popup') 
     318                    .appendChild(document.createTextNode( 
     319                        this.getAttribute('alt').charAt(0).toUpperCase() + this.getAttribute('alt').slice(1) 
     320                    )); 
     321                }, false); 
     322                img.addEventListener('mouseout', function(e) { 
     323                    Util.$('gm_build_link_config_popup') 
     324                    .innerHTML = ''; 
     325                }, false); 
     326            }); 
     327        }, 
    229328        show: function(e) { 
    230             BuildBox.view.createLinks() 
     329            BuildBox.view.createLinks(); 
     330//            GM_openInTab('data:text/xml;charset=UTF-8,' + encodeURI(BuildBox.links.xml())); 
    231331            var userscript = new UpdateChecker(); 
    232332            userscript.check_update(); 
     
    234334        hide: function(e) { 
    235335            BuildBox.hide(); 
    236         }, 
    237         add: function(e) { 
    238             var infoDiv = Util.$('gm_build_link_info_box'); 
    239             BuildBox.controller.clear(this.parentNode.parentNode.childNodes); 
    240             infoDiv.innerHTML = ''; 
    241             infoDiv.appendChild($N('h3', {}, 'Add Link Type')); 
    242             infoDiv.appendChild( 
    243                 BuildBox.view._form() 
    244             ); 
    245             Util.$('gm_build_link_name').focus(); 
     336            BuildBox.shown = false; 
    246337        }, 
    247338        edit: function(e) { 
     
    281372            var text = BuildBox.createLink(BuildBox.links[Util.index(this.parentNode)]); 
    282373            Util.$('gm_build_link_clipboard').innerHTML = BuildBox.view._clipboard(text); 
    283             this.className = 'gm-build-link-copied'; 
     374            Util.className.add(this, 'gm-build-link-copied'); 
    284375            setTimeout(BuildBox.controller.hide, 500); 
    285             BuildBox.shown = false; 
     376        }, 
     377        config: { 
     378            add: function() { 
     379                var infoDiv = Util.$('gm_build_link_info_box'); 
     380                BuildBox.controller.clear(this.parentNode.parentNode.childNodes); 
     381                infoDiv.innerHTML = ''; 
     382                infoDiv.appendChild($N('h3', {}, 'Add Link Type')); 
     383                infoDiv.appendChild( 
     384                    BuildBox.view._form() 
     385                ); 
     386                Util.$('gm_build_link_name').focus(); 
     387            }, 
     388            export: function() { 
     389                var infoDiv = Util.$('gm_build_link_info_box'); 
     390                infoDiv.innerHTML = ''; 
     391                infoDiv.appendChild($N('h3', {}, 'Export Link Type by XML')); 
     392                infoDiv.appendChild( 
     393                    BuildBox.view._export(BuildBox.links.xml()) 
     394                ); 
     395                Util.$('gm_build_link_export_xml').select(); 
     396            }, 
     397            import: function() { 
     398                var infoDiv = Util.$('gm_build_link_info_box'); 
     399                infoDiv.innerHTML = ''; 
     400                infoDiv.appendChild($N('h3', {}, 'Import Link Type by XML')); 
     401                infoDiv.appendChild( 
     402                    BuildBox.view._import('xml') 
     403                ); 
     404            } 
     405        }, 
     406        export: { 
     407            xml: function() { 
     408/*                var infoDiv = Util.$('gm_build_link_info_box'); 
     409                infoDiv.innerHTML = ''; 
     410                infoDiv.appendChild($N('h3', {}, 'Export Link Type by XML')); 
     411                infoDiv.appendChild( 
     412                    BuildBox.view._export(BuildBox.links.xml()) 
     413                ); 
     414                Util.$('gm_build_link_export_xml').select();*/ 
     415            }, 
     416            makelink: function() {}, 
     417            copyurlplus: function() {} 
     418        }, 
     419        import: { 
     420            xml: function() { 
     421                var form = Util.$('gm_build_link_import_xml'); 
     422                var xml = (new DOMParser).parseFromString(form.value, "application/xml"); 
     423                var links = Util.map(Util.toArray(xml.getElementsByTagName('link')), function(link, i) { 
     424                    return { 
     425                        name: at(link, 'name').textContent, 
     426                        entity: eval('('+at(link, 'entity').textContent+')'), 
     427                        body: Util.trim(at(link, 'body').textContent) 
     428                    }; 
     429                }); 
     430                BuildBox.links = new List(links); 
     431                BuildBox.view.createLinks(); 
     432 
     433                function at(elm, name) { return elm.getElementsByTagName(name)[0]; } 
     434            }, 
     435            makelink: function() {}, 
     436            copyurlplus: function() {} 
    286437        } 
    287438    }; 
     
    306457                    Util.bind(BuildBox.controller.copy, this)(e); 
    307458                }, false); 
    308                 span.addEventListener('mouseover', function(e) { this.className = 'gm-build-link-hover'; }, false); 
    309                 span.addEventListener('mouseout', function(e) { this.className = 'gm-build-link-unfocus'; }, false); 
     459                span.addEventListener('mouseover', function(e) { 
     460                    Util.className.add(this, 'gm-build-link-hover'); 
     461                }, false); 
     462                span.addEventListener('mouseout', function(e) { 
     463                    Util.className.remove(this, 'gm-build-link-hover'); 
     464                }, false); 
    310465                items.push($N('li', {}, [ 
    311466                    span, 
     
    313468                ])); 
    314469            }); 
    315             items.push(BuildBox.view._addingLinkBox()) 
     470            items.push($N('li', { id: 'gm_build_link_config_container' }, [ 
     471                $N('em', { id: 'gm_build_link_config_popup' }), 
     472                BuildBox.view._configImage('add'), 
     473                BuildBox.view._configImage('export'), 
     474                BuildBox.view._configImage('import') 
     475            ])); 
    316476            var ul = $N('ul', {}, items); 
    317477            var infoDiv = $N('div', { id: 'gm_build_link_info_box' }); 
     
    320480            BuildBox.elm.appendChild(ul); 
    321481            BuildBox.elm.appendChild(infoDiv); 
    322         }, 
    323         _addingLinkBox: function() { 
    324             var add = $N('img', { 
    325                 src: BuildBox.imageData.add, 
    326                 alt: 'add' 
    327             }); 
    328             add.addEventListener('click', function(e) { 
    329                 this.style.display = 'none !important'; 
    330                 Util.bind(BuildBox.controller.add, this)(e); 
     482            BuildBox.controller.initPopup(); 
     483        }, 
     484        _configImage: function(type) { 
     485            var img = $N('img', { 
     486                src: BuildBox.imageData[type], 
     487                alt: type 
     488            }); 
     489            img.addEventListener('click', function(e) { 
     490                Util.bind(BuildBox.controller.config[type], this)(); 
    331491            }, false); 
    332             return $N('li', { id: 'gm_build_link_add_container' }, [add]); 
     492            return img; 
    333493        }, 
    334494        _configBox: function() { 
     
    357517            button.addEventListener('click', function(e) { 
    358518                Util.bind(BuildBox.controller.update, this)(e); 
    359             }, false); 
    360             var cancel = $N('a', {}, 'cancel'); 
    361             cancel.addEventListener('click', function(e) { 
    362                 BuildBox.view.createLinks(); 
    363519            }, false); 
    364520            return $N('dl', {}, [ 
     
    388544                ]), 
    389545                $N('dd', { id: 'gm_build_link_button' }, [ 
    390                     cancel, 
     546                    BuildBox.view._cancel(), 
    391547                    button 
    392548                ]), 
     
    399555                ])]) 
    400556            ]); 
     557        }, 
     558        _export: function(xml) { 
     559            return $N('textarea', { id: 'gm_build_link_export_xml', cols: '40', rows: '10', wrap: 'soft' }, xml); 
     560        }, 
     561        _import: function(type) { 
     562            var button = $N('input', { type: 'button', value: 'import ' + type }); 
     563            button.addEventListener('click', function(e) { 
     564                BuildBox.controller.import[type](); 
     565            }, false); 
     566            return $N('div', { id: 'gm_build_link_button' }, [ 
     567                $N('textarea', { id: 'gm_build_link_import_' + type, cols: '40', rows: '10', wrap: 'soft'}), 
     568                $N('br', {}), 
     569                BuildBox.view._cancel(), 
     570                button 
     571            ]); 
     572        }, 
     573        _cancel: function() { 
     574            var cancel = $N('a', {}, 'cancel'); 
     575            cancel.addEventListener('click', function(e) { 
     576                BuildBox.view.createLinks(); 
     577            }, false); 
     578            return cancel; 
    401579        } 
    402580    }; 
     
    541719                '7fSdvyos3+gvzA66m1+7dzSbmUXSACunq4vn9zt9/B23rp5WuwnXFsf+uNBJ/aHITNv3fbZvvJyP', 
    542720                'R8T9KWcAJImUHh0eq1sXP+zWDi/G1cHc8Oxgy8cvffT1E/8D2iAtJW5RUGAAAAAASUVORK5CYII=' 
     721            ].join(''), 
     722            export: [ 
     723                'data:image/png;base64,', 
     724                'iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0RVh0', 
     725                'U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAKYSURBVBgZBcFNiFZlGADQ87z3zjfjzDiM', 
     726                'k5VimERmBmFpKgVRVATRQLRo5aaNhFA7pZW0qV1Ci0BoUVRQtLc2UmQaJVhBVChUhP2YDuow5sz3', 
     727                'c7/36Zx46uipF9fNTR4oYQ82oC+QQVZdrb8tX83PY+X6kdPHF4cAAPHMG2dOf/jKnp2lxHymBiAT', 
     728                '0tJ/Ix+dW/bvxcHqLz+dXzhzfHEAAG1pYkevbeZ/vqIpJWRlnFXXpbXR2OPb19t/T+tsXZrOeu/1', 
     729                'x17+dMOpt58dAJSImM3MptcUbdAUmiCCIlBtnutZ3LvZtrsn17VzM+8BQEkCCkqEEqFEKBFKEy5d', 
     730                'W3Pn7Mh9C+Hgw7doJpoXAKCFTNoGEeo4KaFt6GXx69U0rJ1ahx69a1K0pQOANpNEG0WVooTA+ycu', 
     731                'WD/J6rCzYbbnnytrPivs2jQ7dfidH/P6ypovfvh7f5uoiKAIiaysrfY9sW+H53bPOvHtX44e2AkA', 
     732                'PvhySa1xttSOTCoyE6kUVgcj12504OS5ywD6HSsDlpaHIqq21pzKTBIASSmhSUbj6tih3WpNiUaa', 
     733                'bhkMBlZuDrWjYfZHNade+24oI2UGlYWJoj8Yef2TP5SgG1d1XCUyk2R6omq7bmw8ZvPchAduLcbJ', 
     734                'ODh7IQ3GnaZMIIWxiJA1ZVZdNzIcdtpuUGtXaw7H4ptLnRTgxurIRLQOLa7X1SEKSUY11fa8+fFF', 
     735                'V1duakf98eWZXrPx1fuHM1mzVMCRU6kxoVrz7vcv2Ti9VSiWVv90cO9biimrg6E2Io89ffir5yPi', 
     736                'wZQL6Eu2b52d2raJ22dveHLXPvO9LRSW+1vcNtOZ7tFGiMwEAAAPHTr59fY71j0yPzlvqp3T1ZGo', 
     737                'VeRYjVXnL/7uysrI/62cRssvlMuuAAAAAElFTkSuQmCC' 
     738            ].join(''), 
     739            import: [ 
     740                'data:image/png;base64,', 
     741                'iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0RVh0', 
     742                'U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAKdSURBVBgZBcFLiFZlGADg5/3OmRlHbbwk', 
     743                'pmQ37WZlmBYWIrnRRUnRolVQbcRN7Yp20SLauSvENgaB1C6KdpnlBbHMFl2IMsK7Ntg43mbm/8/5', 
     744                '3p4nMtO2dw+9Pj4x9koJGzEPAQIZZNXV+vfVK3kgrk29fXjPjgFAZKbnPjh6+NM3N64tJRYnjQQg', 
     745                'E9LkjaH9J666dGbu1u+//rH0yJ4dc9BCaeKh0bZZ/Nu/mhJBkJU+q65LM8Pe1gdus+nB1vE6OT/r', 
     746                'w1PPvvH1ku8/fH6uQEQszMxmtClGCm3QFJoggiJQrZwYteOple69f2y8nViwDwokAQUlKBFKhBKh', 
     747                'RChNuPjfjHsWDj2yNOx85nbNSPMytACZtA0hZITaJyW0DaNZnLqSBrVT68CW1WOiLR20kEmijSKl', 
     748                'RJQQyEo2hVFKDbU2UiEKKJCoiKBEKBFKhMgw0oSREr448YLPjm421hYVmUCB2pFJRSIzkUqhRGgb', 
     749                '5rqhVcvW+uib9fpKX4EWak2ZSZIS7P12K9kb1M6g66xcssbaFZtcn73p1X336bvPQQt9pU+yUgFd', 
     750                'Hdj26Gv6rPraq9KF6bPWrdrsxmDGT7e2z3v8/ZlooXapZnrv54GQarCoG+izOn3lL8Pa6erQsB+6', 
     751                'Nnfd+ru2uDG85fg/R2Zb6Lpe37NyYsSG5UVNDlyY1fWdOybu1tVen9XF6TOWLlzh5Nmjjv15OmfT', 
     752                '4ha6uVq7WnPQi2PnezXSrW7gk2O7DerAbDewZtlaT6/e7sfTR5ybvmR8cs/NUx8/P9PCcLa/vGC0', 
     753                'WfbOusGCzCyS+tgvYNF4C17ce6co4yavT/ly1w/TG3YePA8tROTu7W8deikinkg5H0CSSOnG8rmx', 
     754                'c1PfxeLLX119ctfBk22xH/4HCmFTpxr5rC8AAAAASUVORK5CYII=' 
    543755            ].join('') 
    544756        } 
    545757    }; 
    546758 
    547     document.addEventListener('mousedown', function(e) { 
    548         BuildBox.moused = true; 
    549         if(BuildBox.shown) { 
    550             BuildBox.controller.hide(e); 
    551             BuildBox.shown = false; 
    552         } 
    553     }, false); 
    554     document.addEventListener('mousemove', function(e) { 
    555         if(BuildBox.moused) BuildBox.moved = true; 
    556     }, false); 
    557     document.addEventListener('mouseup', function(e) { 
    558         if(BuildBox.moused && BuildBox.moved && 
    559            window.content.document.getSelection().length > 0 && 
    560            !BuildBox.shown) BuildBox.controller.init(e); 
    561         BuildBox.moused = BuildBox.moved = false; 
    562     }, false); 
    563     document.addEventListener('dblclick', function(e) { 
    564         if(!BuildBox.shown) BuildBox.controller.init(e); 
    565     }, false); 
    566  
    567     BuildBox.stopPropagation(); 
    568     document.body.appendChild(BuildBox.elm); 
    569     document.body.appendChild($N('div', { id: 'gm_build_link_clipboard' })); 
     759    BuildBox.controller.initialize(); 
    570760 
    571761    var style = [ 
    572 "        #gm_build_link_container {", 
    573 "            font-size: 13px;", 
    574 "            font-family: arial, helvetica, clean, sans-serif;", 
    575 "            border: solid 1px #333;", 
    576 "            background-color: #fff;", 
    577 "        }", 
    578 "        #gm_build_link_container * {", 
    579 "            margin: 0;", 
    580 "            padding: 0;", 
    581 "            line-height: 1.6;", 
    582 "            background: #fff;", 
    583 "            border: none;", 
    584 "            color: #333;", 
    585 "        }", 
    586 "        #gm_build_link_container h2,", 
    587 "        #gm_build_link_container h3 {", 
    588 "            padding: 0 0.5em;", 
    589 "        }", 
    590 "        #gm_build_link_container h2 {", 
    591 "            font-size: 114%;", 
    592 "        }", 
    593 "        #gm_build_link_container h3 {", 
    594 "            font-size: 107%;", 
    595 "        }", 
    596 "        #gm_build_link_container a {", 
    597 "            margin-right: 3px;", 
    598 "        }", 
    599 "        #gm_build_link_container a,", 
    600 "        #gm_build_link_container img {", 
    601 "            border: none;", 
    602 "            cursor: pointer;", 
    603 "        }", 
    604 "        #gm_build_link_container a {", 
    605 "            text-decoration: none;", 
    606 "        }", 
    607 "        #gm_build_link_container img {", 
    608 "            padding: 1px;", 
    609 "            height: 13px;", 
    610 "            width: 13px;", 
    611 "            vertical-align: text-top;", 
    612 "        }", 
    613 "        #gm_build_link_container ul {", 
    614 "            list-style-type: none;", 
    615 "            float: left;", 
    616 "        }", 
    617 "        #gm_build_link_container ul li {", 
    618 "            padding: 0 5px 0 0;", 
    619 "            margin: 1px 5px;", 
    620 "            background-color: #E6EFF4;", 
    621 "        }", 
    622 "        #gm_build_link_container ul li img {", 
    623 "            position: relative;", 
    624 "            top: 5px;", 
    625 "        }", 
    626 "        #gm_build_link_container ul li#gm_build_link_add_container {", 
    627 "            background-color: transparent;", 
    628 "        }", 
    629 "        #gm_build_link_container ul li:after {", 
    630 '            content: "";', 
    631 "            clear: both;", 
    632 "            height: 0;", 
    633 "            display: block;", 
    634 "            visibility: hidden;", 
    635 "        }", 
    636 "        #gm_build_link_container ul li span {", 
    637 "            width: 6em;", 
    638 "            display: block;", 
    639 "            float: left;", 
    640 "            padding: 1px 1em;", 
    641 "            margin-right: 3px;", 
    642 "            cursor: pointer;", 
    643 "            border-right: 1px dotted #444;", 
    644 "        }", 
    645 "        #gm_build_link_container ul li span.gm-build-link-hover {", 
    646 "            background-color: #D7ECF7;", 
    647 "        }", 
    648 "        #gm_build_link_container ul li span.gm-build-link-focus {", 
    649 "            background-color: #F4CB9C;", 
    650 "        }", 
    651 "        #gm_build_link_container ul li span.gm-build-link-unfocus {", 
    652 "            background-color: #E6EFF4;", 
    653 "        }", 
    654 "        #gm_build_link_container ul li span.gm-build-link-copied {", 
    655 "            background-color: #FFE684;", 
    656 "        }", 
    657 "        #gm_build_link_container ul ul {", 
    658 "            display: inline;", 
    659 "        }", 
    660 "        #gm_build_link_container ul ul li {", 
    661 "            margin: 0;", 
    662 "            padding: 0;", 
    663 "            display: inline;", 
    664 "            background-color: transparent;", 
    665 "        }", 
    666 "        #gm_build_link_container dt {", 
    667 "            float: left;", 
    668 "            width: 4em;", 
    669 "        }", 
    670 "        #gm_build_link_container dd {", 
    671 "            margin-left: 4em;", 
    672 "        }", 
    673 "        #gm_build_link_container #gm_build_link_button {", 
    674 "            text-align: right;", 
    675 "        }", 
    676 "        #gm_build_link_container #gm_build_link_button a {", 
    677 "            font-size: 85%;", 
    678 "        }", 
    679 "        #gm_build_link_container #gm_build_link_info_box {", 
    680 "            margin-left: 155px;", 
    681 "            border-left: 1px solid #ddd;", 
    682 "        }", 
    683 "        #gm_build_link_container #gm_build_link_info_box dl {", 
    684 "            margin: 3px 5px;", 
    685 "        }", 
    686 "        #gm_build_link_container #gm_build_link_info_box textarea,", 
    687 "        #gm_build_link_container #gm_build_link_info_box input {", 
    688 "            border: 1px solid #aaa;", 
    689 "        }", 
    690 "        #gm_build_link_container #gm_build_link_info_box textarea {", 
    691 "            line-height: 1.1;", 
    692 "            font-size: 75%;", 
    693 "        }", 
    694 "        #gm_build_link_container #gm_build_link_info_box dl dl {", 
    695 "            font-size: 80%;", 
    696 "        }", 
    697 "        #gm_build_link_container #gm_build_link_info_box dl dl dd {", 
    698 "            padding: 0 5px;", 
    699 "            text-align: right;", 
    700 "        }" 
     762        "#gm_build_link_container {", 
     763        "    font-size: 13px;", 
     764        "    font-family: arial, helvetica, clean, sans-serif;", 
     765        "    border: solid 1px #333;", 
     766        "    background-color: #fff;", 
     767        "}", 
     768        "#gm_build_link_container * {", 
     769        "    margin: 0;", 
     770        "    padding: 0;", 
     771        "    line-height: 1.6;", 
     772        "    background: #fff;", 
     773        "    border: none;", 
     774        "    color: #333;", 
     775        "}", 
     776        "#gm_build_link_container h2,", 
     777        "#gm_build_link_container h3 {", 
     778        "    padding: 0 0.5em;", 
     779        "}", 
     780        "#gm_build_link_container h2 {", 
     781        "    font-size: 114%;", 
     782        "}", 
     783        "#gm_build_link_container h3 {", 
     784        "    font-size: 107%;", 
     785        "}", 
     786        "#gm_build_link_container a {", 
     787        "    margin-right: 3px;", 
     788        "}", 
     789        "#gm_build_link_container a,", 
     790        "#gm_build_link_container img {", 
     791        "    border: none;", 
     792        "    cursor: pointer;", 
     793        "}", 
     794        "#gm_build_link_container a {", 
     795        "    text-decoration: none;", 
     796        "}", 
     797        "#gm_build_link_container img {", 
     798        "    padding: 1px;", 
     799        "    height: 16px;", 
     800        "    width: 16px;", 
     801        "    vertical-align: text-top;", 
     802        "}", 
     803        "#gm_build_link_container ul {", 
     804        "    list-style-type: none;", 
     805        "    float: left;", 
     806        "}", 
     807        "#gm_build_link_container ul li {", 
     808        "    padding: 0 5px 0 0;", 
     809        "    margin: 1px 5px;", 
     810        "    background-color: #E6EFF4;", 
     811        "}", 
     812        "#gm_build_link_container ul li img {", 
     813        "    position: relative;", 
     814        "    top: 2px;", 
     815        "}", 
     816        "#gm_build_link_container ul li#gm_build_link_config_container {", 
     817        "    background-color: transparent;", 
     818        "    text-align: right;", 
     819        "}", 
     820        "#gm_build_link_container ul li:after {", 
     821        '            content: "";', 
     822        "    clear: both;", 
     823        "    height: 0;", 
     824        "    display: block;", 
     825        "    visibility: hidden;", 
     826        "}", 
     827        "#gm_build_link_container ul li span {", 
     828        "    width: 6em;", 
     829        "    display: block;", 
     830        "    float: left;", 
     831        "    padding: 1px 1em;", 
     832        "    margin-right: 3px;", 
     833        "    cursor: pointer;", 
     834        "    border-right: 1px dotted #444;", 
     835        "}", 
     836        "#gm_build_link_container ul li span.gm-build-link-unfocus {", 
     837        "    background-color: #E6EFF4;", 
     838        "}", 
     839        "#gm_build_link_container ul li span.gm-build-link-focus {", 
     840        "    background-color: #F4CB9C;", 
     841        "}", 
     842        "#gm_build_link_container ul li span.gm-build-link-hover {", 
     843        "    background-color: #D7ECF7;", 
     844        "}", 
     845        "#gm_build_link_container ul li span.gm-build-link-focus.gm-build-link-hover {", 
     846        "    background-color: #F2BE82;", 
     847        "}", 
     848        "#gm_build_link_container ul li span.gm-build-link-copied {", 
     849        "    background-color: #FFE684;", 
     850        "}", 
     851        "#gm_build_link_container ul ul {", 
     852        "    display: inline;", 
     853        "}", 
     854        "#gm_build_link_container ul ul li {", 
     855        "    margin: 0;", 
     856        "    padding: 0;", 
     857        "    display: inline;", 
     858        "    background-color: transparent;", 
     859        "}", 
     860        "#gm_build_link_container dt {", 
     861        "    float: left;", 
     862        "    width: 4em;", 
     863        "}", 
     864        "#gm_build_link_container dd {", 
     865        "    margin-left: 4em;", 
     866        "}", 
     867        "#gm_build_link_container #gm_build_link_button {", 
     868        "    text-align: right;", 
     869        "}", 
     870        "#gm_build_link_container #gm_build_link_button a {", 
     871        "    font-size: 85%;", 
     872        "}", 
     873        "#gm_build_link_container #gm_build_link_info_box {", 
     874        "    margin-left: 160px;", 
     875        "    border-left: 1px solid #ddd;", 
     876        "    padding: 5px;", 
     877        "}", 
     878        "#gm_build_link_container #gm_build_link_info_box dl {", 
     879        "    margin: 3px 5px;", 
     880        "}", 
     881        "#gm_build_link_container #gm_build_link_info_box textarea,", 
     882        "#gm_build_link_container #gm_build_link_info_box input {", 
     883        "    border: 1px solid #aaa;", 
     884        "}", 
     885        "#gm_build_link_container #gm_build_link_info_box textarea {", 
     886        "    line-height: 1.1;", 
     887        "    font-size: 75%;", 
     888        "}", 
     889        "#gm_build_link_container #gm_build_link_info_box dl dl {", 
     890        "    font-size: 80%;", 
     891        "}", 
     892        "#gm_build_link_container #gm_build_link_info_box dl dl dd {", 
     893        "    padding: 0 5px;", 
     894        "    text-align: right;", 
     895        "}", 
     896        "#gm_build_link_container #gm_build_link_config_popup {", 
     897        "    margin-right: 0.3em;", 
     898        "    font-weight: normal;", 
     899        "    font-style: italic;", 
     900        "}" 
    701901    ].join("\n"); 
    702902 
     
    741941        script_name: 'Build Link', 
    742942        script_url: 'http://svn.coderepos.org/share/lang/javascript/userscripts/buildlink.user.js', 
    743         current_version: '0.1.1', 
     943        current_version: '0.1.2', 
    744944        more_info_url: 'http://blog.fulltext-search.biz/articles/2008/03/08/greasemonkey-build-link', 
    745945        store_key: 'LastCheckDay',