1/** 2 * jquery.socialbutton - jQuery plugin for social networking websites 3 * http://itra.jp/jquery_socialbutton_plugin/ 4 * 5 * Copyright 2010, Itrans, Inc. http://itra.jp/ 6 * 7 * Dual licensed under the MIT or GPL Version 2 licenses. 8 * http://jquery.org/license 9 * 10 * Version: 1.8.1 11 */ 12 13/** 14 * SYNOPSIS 15 * 16 * 17 * mixi_check 18 * http://developer.mixi.co.jp/connect/mixi_plugin/mixi_check/spec_mixi_check 19 * 20 * $('#mixi_check').socialbutton('mixi_check', { 21 * key: 'mixi-check-key' 22 * }); 23 * 24 * $('#mixi_check').socialbutton('mixi_check', { 25 * key: 'mixi-check-key', 26 * button: 'button-1', 27 * url: 'http://itra.jp/' 28 * }); 29 * 30 * 31 * mixi_like 32 * http://developer.mixi.co.jp/connect/mixi_plugin/favorite_button/spec 33 * 34 * $('#mixi_like').socialbutton('mixi_like', { 35 * key: 'mixi-check-key', 36 * }); 37 * 38 * $('#mixi_like').socialbutton('mixi_like', { 39 * key: 'mixi-check-key', 40 * url: 'http://itra.jp/', 41 * width: 450, 42 * height: 80, 43 * show_faces: true, 44 * style: 'additional-style-here' 45 * }); 46 * 47 * 48 * facebook_like 49 * http://developers.facebook.com/docs/reference/plugins/like 50 * 51 * $('#facebook_like').socialbutton('facebook_like'); 52 * 53 * $('#facebook_like').socialbutton('facebook_like', { 54 * button: 'standard', // synonym 'layout' 55 * url: 'http://itra.jp', 56 * show_faces: true, 57 * width: 450, 58 * height: 80, 59 * action: 'like', 60 * locale: 'en_US', 61 * font: 'arial', 62 * colorscheme: 'light' 63 * }); 64 * 65 * 66 * facebook_share 67 * http://developers.facebook.com/docs/share 68 * 69 * $('#facebook_share').socialbutton('facebook_share'); 70 * 71 * $('#facebook_share').socialbutton('facebook_share', { 72 * button: 'button_count', // synonym 'type' 73 * url: 'http://itra.jp', 74 * text: 'Share' 75 * }); 76 * 77 * 78 * Twitter 79 * http://twitter.com/goodies/tweetbutton 80 * 81 * $('#twitter').socialbutton('twitter'); 82 * 83 * $('#twitter').socialbutton('twitter', { 84 * button: 'vertical', // synonym 'count' 85 * url: 'http://itra.jp/', 86 * text: 'tweet text', 87 * lang: 'ja', 88 * via: 'ishiiyoshinori', 89 * related: 'twitter' 90 * }); 91 * 92 * 93 * GREE Social Feedback 94 * http://developer.gree.co.jp/connect/plugins/sf 95 * 96 * $('#gree_sf').socialbutton('gree_sf'); 97 * 98 * $('#gree_sf').socialbutton('gree_sf', { 99 * button: 0, // synonym 'type' 100 * url: 'http://itra.jp/', 101 * width: 0, // auto 102 * height: 20 103 * }); 104 * 105 * 106 * Evernote Site Memory 107 * http://www.evernote.com/about/developer/sitememory/ 108 * 109 * $('#evernote').socialbutton('evernote'); 110 * 111 * $('#evernote').socialbutton('evernote', { 112 * button: 'article-clipper', 113 * url: 'http://itra.jp/', 114 * provider_name: 'itra.jp', 115 * suggest_notebook: 'webclip', 116 * content_id: 'element-id-to-clip', 117 * code: 'your-affiliate-code', 118 * title: 'note-title', 119 * suggest_tags: 'comma-separated-tags,up-to-three-tags', 120 * styling: 'full' 121 * }); 122 * 123 * 124 * Hatena Bookmark 125 * http://b.hatena.ne.jp/ 126 * 127 * $('#hatena').socialbutton('hatena'); 128 * 129 * $('#hatena').socialbutton('hatena', { 130 * button: 'standard', 131 * url: 'http://itra.jp/', 132 * title: 'page-title' 133 * }); 134 * 135 * 136 * Hatena Bookmark (Old Style) 137 * http://b.hatena.ne.jp/ 138 * 139 * $('#hatena').socialbutton('hatena_oldstyle'); 140 * 141 * $('#hatena').socialbutton('hatena_oldstyle', { 142 * button: '/path/to/your-icon.png', 143 * url: 'http://itra.jp/', 144 * padding: 10, 145 * height: 15 146 * }); 147 * 148 * 149 * Google +1 Button 150 * http://www.google.com/webmasters/+1/button/ 151 * 152 * $('#google').socialbutton('google_plusone'); 153 * 154 * $('#google').socialbutton('google_plusone', { 155 * button: 'standard', // synonym 'size' 156 * url: 'http://itra.jp', // synonym 'href' 157 * lang: 'ja', 158 * parsetags: 'explicit', 159 * callback: 'some_callback_function', 160 * count: true 161 * }); 162 * 163 */ 164(function($) { 165 166$.fn.socialbutton = function(service, options) { 167 168 options = options || {}; 169 170 var defaults = { 171 mixi_check: { 172 key: '', 173 button: 'button-1', // button-1,button-2,button-3,button-4,button-5 174 url: '' // document.URL 175 }, 176 mixi_like: { 177 key: '', 178 url: document.URL, 179 width: 0, // auto 180 height: 0, // auto 181 show_faces: true, 182 style: '', 183 184 sizes: { 185 width: { 186 with_faces: 450, 187 without_faces: 140 188 }, 189 height: { 190 with_faces_minimum: 80, 191 without_faces_minimum: 20 192 } 193 } 194 }, 195 facebook_like: { 196 button: 'standard', // standard / button_count / box_count 197 url: document.URL, 198 199 show_faces: true, 200 width: 0, // auto 201 height: 0, // auto 202 203 width_standard_default: 450, // orig: 450 204 width_standard_minimum: 225, 205 height_standard_without_photo: 35, 206 height_standard_with_photo: 80, 207 208 width_button_count_default: 120, // orig: 90, jp_min: 114 209 width_button_count_minimum: 90, 210 height_button_count: 25, // orig:20, jp_min: 21 211 212 width_box_count_default: 80, // orig:55, jp_min: 75 213 width_box_count_minimum: 55, 214 height_box_count: 70, // orig: 65, jp_min: 66 215 216 action: 'like', // like / recommend 217 locale: '', // auto 218 font: '', 219 colorscheme: 'light' // light / dark 220 }, 221 facebook_share: { 222 button: 'button_count', // box_count / button / icon_link / icon 223 url: '', //document.URL 224 text: '' //Share 225 }, 226 twitter: { 227 button: 'vertical', // vertical / horizontal / none 228 url: '', // document.URL 229 text: '', 230 lang: 'ja', // ja / en /de / fr / es 231 via: '', 232 related: '' 233 }, 234 gree_sf: { 235 button: 0, // 0,1,2,3,4 236 url: document.URL, 237 width: 0, // auto 238 height: 20, 239 240 widths: { 241 type0_16: 58, type0_20: 70, type0_23: 76, 242 type1_16: 58, type1_20: 73, type1_23: 78, 243 type2_16: 58, type2_20: 73, type2_23: 78, 244 type3_16: 49, type3_20: 61, type3_23: 64, 245 type4_16: 16, type4_22: 21, type4_32: 32 246 } 247 }, 248 evernote: { 249 button: 'article-clipper', // article-clipper, article-clipper-remember, article-clipper-jp, article-clipper-rus, article-clipper-fr, article-clipper-es, article-clipper-de, article-clipper-vert, site-mem-32, site-mem-36, site-mem-22, site-mem-16 250 url: '', // document.URL 251 provider_name: '', // domain name
252 suggest_notebook: '', // notebook name 253 content_id: '', // element id for clip 254 code: '', // affiliate code 255 title: '', 256 suggest_tags: '', 257 styling: '' // none(text-only), full 258 }, 259 hatena: { 260 button: 'standard', // standard, vertical, simple 261 url: document.URL, 262 title: document.title 263 }, 264 hatena_oldstyle: { 265 button: 'http://d.hatena.ne.jp/images/b_append.gif', 266 url: document.URL, 267 height: 13, 268 padding: 7 269 }, 270 google_plusone: { 271 button: '', // small, standard, medium, tall 272 url: '', 273 lang: '', // en-US 274 parsetags: '', // none(onload), explicit 275 callback: '', 276 count: true // true, false 277 } 278 }; 279 280 var max_index = this.size() - 1; 281 282 return this.each(function(index) { 283 284 switch (service) { 285 case 'mixi_check': 286 socialbutton_mixi_check(this, options, defaults.mixi_check, index, max_index); 287 break; 288 289 case 'mixi_like': 290 socialbutton_mixi_like(this, options, defaults.mixi_like, index, max_index); 291 break; 292 293 case 'facebook_like': 294 socialbutton_facebook_like(this, options, defaults.facebook_like, index, max_index); 295 break; 296 297 case 'facebook_share': 298 socialbutton_facebook_share(this, options, defaults.facebook_share, index, max_index); 299 break; 300 301 case 'twitter': 302 socialbutton_twitter(this, options, defaults.twitter, index, max_index); 303 break; 304 305 case 'gree_sf': 306 socialbutton_gree_sf(this, options, defaults.gree_sf, index, max_index); 307 break; 308 309 case 'evernote': 310 socialbutton_evernote(this, options, defaults.evernote, index, max_index); 311 break; 312 313 case 'hatena': 314 socialbutton_hatena(this, options, defaults.hatena, index, max_index); 315 break; 316 317 case 'hatena_oldstyle': 318 socialbutton_hatena_oldstyle(this, options, defaults.hatena_oldstyle, index, max_index); 319 break; 320 321 case 'google_plusone': 322 socialbutton_google_plusone(this, options, defaults.google_plusone, index, max_index); 323 break; 324 325 default: 326 break; 327 } 328 329 return true; 330 }); 331} 332 333function socialbutton_mixi_check(target, options, defaults, index, max_index) 334{ 335 var key = options.key || defaults.key; 336 var button = options.button || defaults.button; 337 var url = options.url || defaults.url; 338 339 if (key == '') { 340 return; 341 } 342 343 var attr = merge_attributes({ 344 'data-key': key, 345 'data-url': htmlspecialchars(url), 346 'data-button': button 347 }); 348 349 var tag = '<a href="http://mixi.jp/share.pl" class="mixi-check-button"' + attr + '>Check</a>'; 350 351 $(target).html(tag); 352 353 if (index == max_index) { 354 $('body').append('<script type="text/javascript" src="http://static.mixi.jp/js/share.js"></script>'); 355 } 356} 357 358function socialbutton_mixi_like(target, options, defaults, index, max_index) 359{ 360 var key = options.key || defaults.key; 361 var url = options.url || defaults.url; 362 var width = options.width != undefined ? options.width : defaults.width; 363 var height = options.height != undefined ? options.height : defaults.height; 364 var show_faces = options.show_faces != undefined ? options.show_faces : defaults.show_faces; 365 var style = options.style || defaults.style; 366 367 if (key == '') { 368 return; 369 } 370 371 if (options.url) { 372 url = decodeURIComponent(url); 373 } 374 url = url_encode_rfc3986(url); 375 376 if (width == 0) { 377 width = show_faces ? defaults.sizes.width.with_faces : defaults.sizes.width.without_faces; 378 } 379 380 if (height == 0) { 381 height = show_faces ? defaults.sizes.height.with_faces_minimum : defaults.sizes.height.without_faces_minimum; 382 } else { 383 if (show_faces && height < defaults.sizes.height.with_faces_minimum) { 384 height = defaults.sizes.height.with_faces_minimum; 385 } else if (!show_faces && height < defaults.sizes.height.without_faces_minimum) { 386 height = defaults.sizes.height.without_faces_minimum; 387 } 388 } 389 390 var params = merge_parameters({ 391 'href': url, 392 'service_key': key, 393 'width': width, 394 'show_faces': show_faces ? 'true' : 'false' 395 }); 396 397 var attr = merge_attributes({ 398 src: 'http://plugins.mixi.jp/favorite.pl?' + params, 399 scrolling: 'no', 400 frameborder: '0', 401 allowTransparency: 'true', 402 style: 'border:0; overflow:hidden; width:' + width + 'px; height:' + height + 'px; ' + style 403 }); 404 405 var tag = '<iframe' + attr + '></iframe>'; 406 407 $(target).html(tag); 408} 409 410function socialbutton_facebook_like(target, options, defaults, index, max_index) 411{ 412 var layout = options.layout || options.button || defaults.button; 413 var url = options.url || defaults.url; 414 415 var show_faces = options.show_faces != undefined ? options.show_faces : defaults.show_faces; 416 var width = options.width != undefined ? options.width : defaults.width; 417 var height = options.height != undefined ? options.height : defaults.height; 418 var action = options.action || defaults.action; 419 var locale = options.locale || defaults.locale; 420 var font = options.font || defaults.font; 421 var colorscheme = options.colorscheme || defaults.colorscheme; 422 423 if (options.url) { 424 url = decodeURIComponent(url); 425 } 426 url = url_encode_rfc3986(url); 427 428 switch (layout) { 429 case 'standard': 430 if (width == 0) { 431 width = defaults.width_standard_default; 432 } else if (width < defaults.width_standard_minimum) { 433 width = defaults.width_standard_minimum; 434 } 435 if (height == 0) { 436 height = show_faces ? defaults.height_standard_with_photo : defaults.height_standard_without_photo; 437 } else if (height < defaults.height_standard_without_photo) { 438 height = defaults.height_standard_without_photo; 439 } 440 break; 441 case 'button_count': 442 if (width == 0) { 443 width = defaults.width_button_count_default; 444 } else if (width < defaults.width_button_count_minimum) { 445 width = defaults.width_button_count_minimum; 446 } 447 if (height == 0) { 448 height = defaults.height_button_count; 449 } else if (height < defaults.height_button_count) { 450 height = defaults.height_button_count; 451 } 452 break; 453 case 'box_count': 454 if (width == 0) { 455 width = defaults.width_box_count_default; 456 } else if (width < defaults.width_box_count_minimum) { 457 width = defaults.width_box_count_minimum; 458 } 459 if (height == 0) { 460 height = defaults.height_box_count; 461 } else if (height < defaults.height_box_count) { 462 height = defaults.height_box_count; 463 } 464 break; 465 } 466 467 var params = merge_parameters({ 468 'href': url, 469 'layout': layout, 470 'show_faces': show_faces ? 'true' : 'false', 471 'width': width, 472 'action': action, 473 'locale': locale, 474 'font': font, 475 'colorscheme': colorscheme, 476 'height': height 477 }); 478 479 var tag = '<iframe src="http://www.facebook.com/plugins/like.php?' + params + '" scrolling="no" frameborder="0" style="border:none; overflow:hidden; width:' + width + 'px; height:' + height + 'px;" allowTransparency="true"></iframe>'; 480 481 $(target).html(tag); 482} 483 484function socialbutton_facebook_share(target, options, defaults, index, max_index) 485{ 486 var type = options.type || options.button || defaults.button; 487 var url = options.url || defaults.url; 488 var text = options.text || defaults.text; 489 490 var attr = merge_attributes({ 491 'type': type, 492 'share_url': htmlspecialchars(url) 493 }); 494 495 var tag = '<a name="fb_share"' + attr + '>
495' + text + '</a>'; 496 497 if(index == 0) { 498 tag += '<script type="text/javascript" src="http://static.ak.fbcdn.net/connect.php/js/FB.Share"></script>'; 499 } 500 501 $(target).html(tag); 502} 503 504function socialbutton_twitter(target, options, defaults, index, max_index) 505{ 506 var count = options.count || options.button || defaults.button; 507 var url = options.url || defaults.url; 508 509 var text = options.text || defaults.text; 510 var lang = options.lang || defaults.lang; 511 var via = options.via || defaults.via; 512 var related = options.related || defaults.related; 513 514 var attr = merge_attributes({ 515 'data-count': count, 516 'data-url': htmlspecialchars(url), 517 'data-text': text, 518 'data-lang': lang, 519 'data-via': via, 520 'data-related': related 521 }); 522 523 var tag = '<a href="http://twitter.com/share" class="twitter-share-button"' + attr + '>Tweet</a>'; 524 525 $(target).html(tag); 526 527 if (index == max_index) { 528 $('body').append('<script type="text/javascript" src="http://platform.twitter.com/widgets.js"></script>'); 529 } 530} 531 532function socialbutton_gree_sf(target, options, defaults, index, max_index) 533{ 534 var type = options.type || options.button || defaults.button; 535 var url = options.url || defaults.url; 536 537 var width = options.width != undefined ? options.width : defaults.width; 538 var height = options.height != undefined ? options.height : defaults.height; 539 540 if (options.url) { 541 url = decodeURIComponent(url); 542 } 543 url = url_encode_rfc3986(url); 544 545 switch (type) { 546 case 0: 547 case 1: 548 case 2: 549 case 3: 550 if (height != 16 && height != 20 && height != 23) { 551 height = 20; 552 } 553 break; 554 555 case 4: 556 if (height != 16 && height != 22 && height != 32) { 557 height = 22; 558 } 559 break; 560 561 default: 562 type = 0; 563 width = 0; 564 height = 20; 565 break; 566 } 567 568 if (width == 0) { 569 width = defaults.widths['type' + type + '_' + height]; 570 } 571 572 var params = merge_parameters({ 573 'url': url, 574 'type': String(type), 575 'height': height 576 }); 577 578 var tag = '<iframe src="http://share.gree.jp/share?' + params + '" scrolling="no" frameborder="0" marginwidth="0" marginheight="0" style="border:none; overflow:hidden; width:' + width + 'px; height:' + height + 'px;" allowTransparency="true"></iframe>'; 579 580 $(target).html(tag); 581} 582 583function socialbutton_evernote(target, options, defaults, index, max_index) 584{ 585 var button = options.button || defaults.button; 586 var url = options.url || defaults.url; 587 588 var provider_name = options.provider_name || defaults.provider_name; 589 var suggest_notebook = options.suggest_notebook || defaults.suggest_notebook; 590 var content_id = options.content_id || defaults.content_id; 591 var code = options.code || defaults.code; 592 var title = options.title || defaults.title; 593 var suggest_tags = options.suggest_tags || defaults.suggest_tags; 594 var styling = options.styling || defaults.styling; 595 596 if (button == 'article-clipper' || 597 button == 'article-clipper-remember' || 598 button == 'article-clipper-jp' || 599 button == 'article-clipper-rus' || 600 button == 'article-clipper-fr' || 601 button == 'article-clipper-es' || 602 button == 'article-clipper-de' || 603 button == 'article-clipper-vert' || 604 button == 'site-mem-32' || 605 button == 'site-mem-36' || 606 button == 'site-mem-22' || 607 button == 'site-mem-16' 608 ) { 609 button = 'http://static.evernote.com/' + button + '.png'; 610 } 611 612 var clipoptions = { 613 'url': url, 614 'providerName': provider_name, 615 'suggestNotebook': suggest_notebook, 616 'contentId': content_id, 617 'code': code, 618 'title': title, 619 'suggestTags': suggest_tags, 620 'styling': styling 621 }; 622 623 if (index == 0) { 624 $('body').append('<script type="text/javascript" src="http://static.evernote.com/noteit.js"></script>'); 625 } 626 627 var tag = $(document.createElement('a')) 628 .attr({href: '#'}) 629 .click(function(){ 630 if (Evernote) { 631 Evernote.doClip(clipoptions); 632 } 633 return false; 634 }) 635 .append('<img src="' + button + '" alt="Clip to Evernote" style="border: none" />'); 636 637 $(target).html(tag); 638} 639 640function socialbutton_hatena(target, options, defaults, index, max_index) 641{ 642 var layout = options.layout || options.button || defaults.button; 643 var url = options.url || defaults.url; 644 var title = options.title || defaults.title; 645 646 url = htmlspecialchars(url); 647 title = htmlspecialchars(title); 648 649 var attr = merge_attributes({ 650 'href': 'http://b.hatena.ne.jp/entry/' + url, 651 'class': 'hatena-bookmark-button', 652 'data-hatena-bookmark-title': title, 653 'data-hatena-bookmark-layout': layout, 654 'title': 'ãã®ã¨ã³ããªã¼ãã¯ã¦ãªããã¯ãã¼ã¯ã«è¿½å ' 655 }); 656 657 var tag = '<a' + attr + '><img src="http://b.st-hatena.com/images/entry-button/button-only.gif" alt="ãã®ã¨ã³ããªã¼ãã¯ã¦ãªããã¯ãã¼ã¯ã«è¿½å " width="20" height="20" style="border: none;" /></a>' 658 + '<script type="text/javascript" src="http://b.st-hatena.com/js/bookmark_button.js" charset="utf-8" async="async"></script>'; 659 660 $(target).html(tag); 661} 662 663function socialbutton_hatena_oldstyle(target, options, defaults, index, max_index) 664{ 665 var button = options.button || defaults.button; 666 var url = options.url || defaults.url; 667 668 var height = options.height != undefined ? options.height : defaults.height; 669 var padding = options.padding != undefined ? options.padding : defaults.padding; 670 671 url = htmlspecialchars(url); 672 673 var tag = '<span style="font-size: ' + height + 'px; line-height: 100%; ">' 674 + '<span style="padding-right: ' + padding + 'px"><a href="http://b.hatena.ne.jp/entry/add/' + url + '" target="_blank"><img src="' + button + '" style="border: none; vertical-align: text-bottom" /></a></span>' 675 + '<a href="http://b.hatena.ne.jp/entry/' + url + '" target="_blank"><img src="http://b.hatena.ne.jp/entry/image/' + url + '" style="border: none; vertical-align: text-bottom" /></a>' 676 + '</span>'; 677 678 $(target).html(tag); 679} 680 681function socialbutton_google_plusone(target, options, defaults, index, max_index) 682{ 683 if ($.browser.msie && parseInt($.browser.version, 10) < 8) { 684 return; 685 } 686 687 var size = options.size || options.button || defaults.button; 688 var href = options.href || options.url || defaults.url; 689 690 var lang = options.lang || defaults.lang; 691 var parsetags = options.parsetags || defaults.parsetags; 692 693 var callback = options.callback || defaults.callback; 694 var count = options.count != undefined ? options.count : defaults.count; 695 696 switch (size) { 697 case 'small': 698 case 'standard': 699 case 'medium': 700 break; 701 702 case 'tall': 703 count = true; 704 break; 705 706 default: 707 size = 'standard'; 708 count = true; 709 } 710 711 var tag = $('<div>') 712 .attr({ 713 'data-callback': callback, 714 'data-count': count ? 'true' : 'false', 715 'data-href': href, 716 'data-size': size 717 }).addClass('g-plusone'); 718 $(target).append(tag); 719 720 if (index == max_index) { 721 722 var script_params = ''; 723 724 if (lang != '') { 725 script_params += 'lang: "' + htmlspecialchars(lang) + '"'; 726 } 727 if (parsetags != '') { 728 script_params += script_params != '' ? ',' : ''; 729 script_params += 'parsetags: "' + htmlspecialchars(parsetags) + "'"; 730 } 731 if (script_params != '') { 732 script_params = '{' + script_params + '}'; 733 } 734 735 if (typeof gapi === 'undefined' || typeof gapi.plusone === 'undefined') { 736 $('body').append('<script type="text/javascript" src="https://apis.google.com/js/plusone.js">' + script_params + '</script>'); 737 } else { 738 gapi.plusone.go(); 739 } 740 } 741} 742 743function merge_attributes(attr) 744{ 745 var merged = ''; 746 747 for (var i in attr) { 748 if (attr[i] == '') { 749 continue; 750 } 751 merged += ' ' + i + '="' + attr[i] + '"'; 752 } 753 754 return merged; 755} 756 757function merge_parameters(params) 758{ 759 var merged = ''; 760 761 for (var i in params) { 762 if (params[i] == '') { 763 continue; 764 } 765 merged += merged != '' ? '&' : ''; 766 merged += i + '=' + params[i] + ''; 767 } 768 769 return merged; 770} 771 772function htmlspecialchars(string) 773{ 774 var table = [ 775 [/&/g, '&'], 776 [/</g, '<'], 777 [/>/g, '>'], 778 [/"/g, '"'], 779 [/'/g, '''] 780 ]; 781 782 for (var i in table) { 783 string = string.replace(table[i][0], table[i][1]); 784 } 785 786 return string; 787} 788 789function url_encode_rfc3986(url) 790{ 791 return encodeURIComponent(url).replace(/[!*'()]/g, function(p) { 792 return "%" + p.charCodeAt(0).toString(16); 793 }); 794} 795 796})(jQuery);
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.