1/* 2 * MDRollover.js 3 * 4 * Copyright (c) 2011 Toshihiko Nii <mellowdown.net> 5 * Licensed under the MIT License: 6 * http://www.opensource.org/licenses/mit-license.php 7 * 8 * Last update: 2011-10-03 9 * 10 */ 11 12(function($) { 13 14 $(function() { 15 $.MDRollover.slideBg(); 16 $.MDRollover.slideBgAttrImg(); 17 $.MDRollover.slideBgFadeImg(); 18 $.MDRollover.fadeImg(); 19 $.MDRollover.shuffleText(); 20 }); 21 22 $.MDRollover = { 23 24 slideBg: function (options) { 25 var conf = $.extend({ 26 selector: "#slideBg li", 27 changeTime: 250, 28 hoverBgColor: "#ddd", 29 hoverTextColor: "#000" 30 }, options) 31 32 var target = $(conf.selector); 33 34 var defaultWidth = target.width(); 35 var defaultTextColor = target.find("a").css("color"); 36 37 target.each(function(){ 38 39 $(this).css("position", "relative"); 40 $(this).find("a").css({"position":"absolute", "top":"0", "left":"0", "z-index":"10" }); 41 $(this).append("<span style=\"width:0; height:" + $(this).height() + "px; background:" + conf.hoverBgColor + "; display:block; position:absolute; top:0; left:0; z-index:0;\"></span>"); 42 43 $(this).hover(function(){ 44 $(this).find("a").css("color", conf.hoverTextColor); 45 $(this).find("span:not(:animated)").css("width", Math.ceil(defaultWidth * 0.7)).animate({ width: defaultWidth }, conf.changeTime); 46 }, 47 function(){ 48 $(this).find("a").css("color", defaultTextColor); 49 /* 50 $(this).delay(conf.changeTime * 0.7).queue(function(next) { 51 $(this).find("a").css("color", defaultTextColor); 52 next(); 53 }); 54 */ 55 56 $(this).find("span").stop().animate({ width: "0" }, conf.changeTime); 57 }); 58 }); 59 }, 60 61 slideBgAttrImg: function (options) { 62 var conf = $.extend({ 63 selector: "#slideBgAttrImg li", 64 changeTime: 250, 65 hoverBgColor: "#ddd", 66 attachStr: "_on" 67 }, options) 68 69 var target = $(conf.selector); 70 71 var defaultWidth = target.width(); 72 73 target.each(function(){ 74 $(this).css("position", "relative"); 75 $(this).find("a").css({"position":"absolute", "top":"0", "left":"0", "z-index":"10" }); 76 $(this).append("<span style=\"width:0; height:" + $(this).height() + "px; background:" + conf.hoverBgColor + "; display:block; position:absolute; top:0; left:0; z-index:0;\"></span>"); 77 78 $(this).hover(function(){ 79 $(this).find("img").attr('src',$(this).find("img").attr("src").replace(/^(.+)(\..+)$/,"$1_on$2")); 80 81 $(this).find("span:not(:animated)").css("width", Math.ceil(defaultWidth * 0.7)).animate({ width: defaultWidth }, conf.changeTime); 82 }, 83 function(){ 84 $(this).find("img").attr('src',$(this).find("img").attr("src").replace(/^(.+)_on(\..+)$/, "$1$2")); 85 86 $(this).find("span").stop().css("width", Math.ceil(defaultWidth * 0.5)).animate({ width: "0" }, conf.changeTime); 87 }); 88 }); 89 }, 90 91 slideBgFadeImg: function (options) { 92 var conf = $.extend({ 93 selector: "#slideBgFadeImg li", 94 changeTime: 250, 95 hoverBgColor: "#ddd", 96 attachStr: "_on" 97 }, options) 98 99 var target = $(conf.selector); 100 101 var defaultWidth = target.width(); 102 103 target.each(function(){ 104 this.rolloverImg = new Image(); 105 this.rolloverImg.src = $("img", this).attr('src').replace(new RegExp('(\.gif|\.jpg|\.png)$'), conf.attachStr + '$1'); 106 107 $("img", this).before(this.rolloverImg).css({"z-index":"10", "position":"absolute", "top":"0", "left":"0"}); 108 $(this.rolloverImg).css({"z-index":"10", "position":"absolute", "top":"0", "left":"0", "display":"none"}); 109 110 $(this).css("position", "relative"); 111 $(this).append("<span style=\"width:0; height:" + $(this).height() + "px; background:" + conf.hoverBgColor + "; display:block; position:absolute; top:0; left:0; z-index:0;\"></span>"); 112 113 $(this).hover(function(){ 114 $(this).find("img:eq(0):not(:animated)").fadeIn(conf.changeTime); 115 $(this).find("img:eq(1):not(:animated)").fadeOut(conf.changeTime); 116 117 $(this).find("span:not(:animated)").css("width", Math.ceil(defaultWidth * 0.7)).animate({ width: defaultWidth }, conf.changeTime); 118 }, 119 function(){ 120 $(this).find("img:eq(0)").fadeOut(conf.changeTime); 121 $(this).find("img:eq(1)").fadeIn(conf.changeTime); 122 123 $(this).find("span").animate({ width: "0" }, conf.changeTime); 124 }); 125 }); 126 }, 127 128 fadeImg: function (options) { 129 var conf = $.extend({ 130 selector: "#fadeImg li", 131 changeTime: 250, 132 attachStr: "_on" 133 }, options) 134 135 var target = $(conf.selector); 136 137 var defaultWidth = target.width(); 138 139 target.each(function(){ 140 this.rolloverImg = new Image(); 141 this.rolloverImg.src = $("img", this).attr('src').replace(new RegExp('(\.gif|\.jpg|\.png)$'), conf.attachStr + '$1'); 142 143 $("img", this).before(this.rolloverImg).css({"z-index":"10", "position":"absolute", "top":"0", "left"
143:"0"}); 144 $(this.rolloverImg).css({"z-index":"10", "position":"absolute", "top":"0", "left":"0", "display":"none"}); 145 146 $(this).css("position", "relative"); 147 148 $(this).hover(function(){ 149 $(this).find("img:eq(0):not(:animated)").fadeIn(conf.changeTime); 150 $(this).find("img:eq(1):not(:animated)").fadeOut(conf.changeTime); 151 }, 152 function(){ 153 $(this).find("img:eq(0)").fadeOut(conf.changeTime); 154 $(this).find("img:eq(1)").fadeIn(conf.changeTime); 155 }); 156 }); 157 }, 158 159 shuffleText: function (options) { 160 var conf = $.extend({ 161 selector: "#main_menu li a", 162 languageType: "en", 163 loopTime: 10, 164 showTime: 50 165 }, options) 166 167 var target = $(conf.selector); 168 169 target.each(function(){ 170 this.originallyStr = $(this).text(); 171 this.showStr = ""; 172 this.loopTimer; 173 this.showTimer; 174 }); 175 176 target.mouseover(function() { 177 var selector = this; 178 this.showStr = ""; 179 clearInterval(this.loopTimer); 180 clearInterval(this.showTimer); 181 this.loopTimer = setInterval(function() { loop(selector) }, conf.loopTime); 182 this.showTimer = setInterval(function() { originallyStrShow(selector) }, conf.showTime); 183 }); 184 185 function loop(selector) { 186 187 $(selector).text(selector.showStr); 188 if (selector.originallyStr.length - selector.showStr.length > 0) { 189 for (i = 0; i < selector.originallyStr.length - selector.showStr.length; i++) { 190 var shuffleStr = getShuffleStr(); 191 $(selector).append(shuffleStr); 192 } 193 } else { 194 clearInterval(selector.loopTimer); 195 } 196 } 197 198 function originallyStrShow(selector) { 199 200 if (selector.showStr.length < selector.originallyStr.length) { 201 selector.showStr = selector.originallyStr.substr(0, selector.showStr.length + 1); 202 } else { 203 clearInterval(selector.showTimer); 204 } 205 } 206 207 function getShuffleStr() { 208 var str; 209 switch (conf.languageType) { 210 case "en": 211 str = String.fromCharCode(33 + Math.round(Math.random() * 99)); 212 break; 213 case "hiragana": 214 str = String.fromCharCode(12352 + Math.round(Math.random() * 84)); 215 break; 216 case "katakana": 217 str = String.fromCharCode(12448 + Math.round(Math.random() * 84)); 218 break; 219 case "kanji": 220 str = String.fromCharCode(19968 + Math.round(Math.random() * 200)); 221 break; 222 } 223 return str; 224 } 225 } 226 227 }; 228 229})(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.