PageSourceSearch

https://99kankou.com/wp-content/themes/99kankou/js/text-shadow.js

js 99kankou.com collected 2026-09-25 05:04:38 UTC 21,832 bytes, 427 lines download raw bytes

1/*
2  text-shadow for MSIE with jQuery
3  http://asamuzak.jp
4*/
5
6var isMSIE = /*@cc_on!@*/false;
7var ieVersion = (function(reg) { return isMSIE && navigator.userAgent.match(reg) ? RegExp.$1 * 1 : null; })(/MSIE\s([0-9]+[\.0-9]*)/);
8
9var cNum = (function(n) { return function() { return n++; }})(0);
10
11function showElm(eId) {
12  var elm = document.getElementById(eId);
13  elm && (elm.style.visibility = 'visible');
14}
15function hideElm(eId) {
16  var elm = document.getElementById(eId);
17  elm && (elm.style.visibility = 'hidden');
18}
19
20(function($) {
21  $.fn.textShadowForMSIE = function(sObj) {
22    var getCompStyle = function(elm, pseudo) {
23      return isMSIE && ieVersion < 9 ? elm.currentStyle : pseudo != null ? document.defaultView.getComputedStyle(elm, pseudo) : document.defaultView.getComputedStyle(elm, '');
24    };
25    var getAncestObj = function(pElm) {
26      var arr = [];
27      if(pElm = pElm.parentNode) {
28        for(arr[arr.length] = pElm; pElm.nodeName.toLowerCase() != "body";) {
29          (pElm = pElm.parentNode) && (arr[arr.length] = pElm);
30        }
31      }
32      return arr;
33    };
34    var convPercentTo256 = function(cProf) {
35      if(cProf.match(/(rgba?)\(\s*([0-9\.]+%?\s*,\s*[0-9\.]+%?\s*,\s*[0-9\.]+%?)\s*(,\s*[01]?[\.0-9]*)?\s*\)/)) {
36        for(var cType = RegExp.$1, arr = RegExp.$2.split(/,/), aCh = (RegExp.$3 || ''), rgbArr = [], i = 0, l = arr.length; i < l; i++) {
37          arr[i].match(/([0-9\.]+)%/) && (arr[i] = Math.round(RegExp.$1 * 255 / 100));
38          rgbArr[rgbArr.length] = arr[i];
39        }
40        return cType + '(' + rgbArr.join(',') + aCh + ')';
41      }
42    };
43    var convUnitToPx = function(sUnit, obj) {
44      var getUnitRatio = function(sUnit) {
45        var elm, val, dId = cNum(), dBox = document.createElement('div'), dBody = document.getElementsByTagName('body')[0];
46        dBox.id = 'dummyDiv' + dId;  dId++;
47        dBox.style.width = sUnit;
48        dBox.style.height = 0;
49        dBox.style.visibility = 'hidden';
50        dBody.appendChild(dBox);
51        elm = document.getElementById(dBox.id);
52        val = Math.abs(elm.getBoundingClientRect().right - elm.getBoundingClientRect().left);
53        dBody.removeChild(elm);
54        return val;
55      };
56      if(sUnit.match(/^0(em|ex|px|cm|mm|in|pt|pc)?$/)) {
57        return 0;
58      }
59      else if(sUnit.match(/^(\-?[0-9\.]+)px$/)) {
60        return RegExp.$1 * 1;
61      }
62      else if(sUnit.match(/^(\-?[0-9\.]+)(cm|mm|in|pt|pc)$/)) {
63        return RegExp.$1 * 1 >= 0 ? getUnitRatio(sUnit) : getUnitRatio((RegExp.$1 * -1) + RegExp.$2) * -1;
64      }
65      else if(sUnit.match(/^(\-?[0-9\.]+)(em|ex)$/)) {
66        var val = RegExp.$1 * 1 >= 0 ? (getUnitRatio(sUnit) / getUnitRatio('1em')) : (getUnitRatio((RegExp.$1 * -1) + RegExp.$2) / getUnitRatio('1em') * -1), arr = getAncestObj(obj), dRoot = document.getElementsByTagName('html')[0], fSize = [];
67        arr.unshift(obj);  arr[arr.length] = dRoot;
68        for(var i = 0, l = arr.length; i < l; i++) {
69          fSize[fSize.length] = getCompStyle(arr[i]).fontSize;
70        }
71        for(i = 0, l = fSize.length; i < l; i++) {
72          if(fSize[i].match(/^([0-9\.]+)%$/)) {
73            val *= (RegExp.$1 / 100);
74          }
75          else if(fSize[i].match(/^[0-9\.]+(em|ex)$/)) {
76            val *= (getUnitRatio(fSize[i]) / getUnitRatio('1em'));
77          }
78          else if(fSize[i].match(/^smaller$/)) {
79            val /= 1.2;
80          }
81          else if(fSize[i].match(/^larger$/)) {
82            val *= 1.2;
83          }
84          else if(fSize[i].match(/^([0-9\.]+)(px|cm|mm|in|pt|pc)$/)) {
85            val *= getUnitRatio(fSize[i]);
86            break;
87          }
88          else if(fSize[i].match(/^xx\-small$/)) {
89            val *= (getUnitRatio(getCompStyle(dRoot).fontSize) / 1.728);
90            break;
91          }
92          else if(fSize[i].match(/^x\-small$/)) {
93            val *= (getUnitRatio(getCompStyle(dRoot).fontSize) / 1.44);
94            break;
95          }
96          else if(fSize[i].match(/^small$/)) {
97            val *= (getUnitRatio(getCompStyle(dRoot).fontSize) / 1.2);
98            break;
99          }
100          else if(fSize[i].match(/^medium$/)){
101            val *= getUnitRatio(getCompStyle(dRoot).fontSize);
102            break;
103          }
104          else if(fSize[i].match(/^large$/)) {
105            val *= (getUnitRatio(getCompStyle(dRoot).fontSize) * 1.2);
106            break;
107          }
108          else if(fSize[i].match(/^x\-large$/)) {
109            val *= (getUnitRatio(getCompStyle(dRoot).fontSize) * 1.44);
110            break;
111          }
112          else if(fSize[i].match(/^xx\-large$/)) {
113            val *= (getUnitRatio(getCompStyle(dRoot).fontSize) * 1.728);
114            break;
115          }
116          else if(fSize[i].match(/^([0-9\.]+)([a-z]+)/)) {
117            val *= getUnitRatio(fSize[i]);
118            break;
119          }
120          else {
121            break;
122          }
123        }
124        return Math.round(val);
125      }
126    };
127    var removeDupFunc = function(fStr) {
128      for(var arr = fStr.replace(/\s+/, '').split(/;/), fArr = [], bool, i = 0, l = arr.length; i < l; i++) {
129        bool = true;
130        for(var j = i; j < l; j++) {
131          i != j && arr[i] == arr[j] && (bool = false);
132        }
133        bool && arr[i] != '' && (fArr[fArr.length] = arr[i]);
134      }
135      return fArr.join(';') + ';';
136    };
137    var revArr = function(arr) {
138      for(var rArr = [], i = 0, l = arr.length; i < l; i++) {
139        rArr.unshift(arr[i]);
140      }
141      return rArr;
142    };
143    var getShadowValue = function() {
144      if(sObj.sValue.match(/none/)) {
145        return 'none';
146      }
147      else {
148        for(var val = [], arr = sObj.sValue.match(/((rgba?\(\s*[0-9\.]+%?\s*,\s*[0-9\.]+%?\s*,\s*[0-9\.]+%?\s*(,\s*[01]?[\.0-9]*\s*)?\)|#[0-9a-fA-F]{3,6}|[a-zA-Z]+)\s)?(\-?[0-9\.]+(em|ex|px|cm|mm|in|pt|pc)?\s*){2,3}(rgba?\(\s*[0-9\.]+%?\s*,\s*[0-9\.]+%?\s*,\s*[0-9\.]+%?\s*(,\s*[01]?[\.0-9]*\s*)?\)|#[0-9a-fA-F]{3,6}|[a-zA-Z]+)?/g), i = 0, l = arr.length; i < l; i++) {
149          val[i] = { x : '0', y : '0', z : '0', cProf : null };
150          var uArr = arr[i].match(/\-?[0-9\.]+(em|ex|px|cm|mm|in|pt|pc)?\s+\-?[0-9\.]+(em|ex|px|cm|mm|in|pt|pc)?(\s+[0-9\.]+(em|ex|px|cm|mm|in|pt|pc)?)?/);
151          if(uArr = uArr[0].split(/\s+/), uArr[0].match(/^(\-?[0-9\.]+(em|ex|px|cm|mm|in|pt|pc)?)$/) && uArr[1].match(/^(\-?[0-9\.]+(em|ex|px|cm|mm|in|pt|pc)?)$/)) {
152            uArr.length >= 2 && (val[i].x = uArr[0], val[i].y = uArr[1]);
153            uArr.length == 3 && uArr[2].match(/^([0-9\.]+(em|ex|px|cm|mm|in|pt|pc)?)$/) && (val[i].z = uArr[2]);
154            arr[i].match(/%/) && (arr[i] = convPercentTo256(arr[i]));
155            arr[i].match(/^(rgba?\(\s*[0-9]+\s*,\s*[0-9]+\s*,\s*[0-9]+\s*(,\s*[01]?[\.0-9]*\s*)?\)|[a-zA-Z]+)/) ? (val[i].cProf = RegExp.$1) :
156            arr[i].match(/\s(rgba?\(\s*[0-9]+\s*,\s*[0-9]+\s*,\s*[0-9]+\s*(,\s*[01]?[\.0-9]*\s*)?\)|#[0-9a-fA-F]{3,6}|[a-zA-Z]+)$/) && (val[i].cProf = RegExp.$1);
157          }
158          else {
159            val = 'invalid';
160            break;
161          }
162        }
163        return val;
164      }
165    };
166    var setShadowNodeColor = function(elm) {
167      for(var arr = elm.childNodes, i = 0, l = arr.length; i < l; i++) {
168        if(arr[i].nodeType == 1) {
169          !arr[i].hasChildNodes() ? arr[i].style.visibility = 'hidden' : (arr[i].style.color = elm.style.color, setShadowNodeColor(arr[i]));
170        }
171      }
172    };
173    var hideAncestShadow = function(oElm, pElm) {
174      for(var arr = pElm.childNodes, i = 0, l = arr.length; i < l; i++) {
175        if(arr[i].hasChildNodes()) {
176          arr[i].nodeName.toLowerCase() == oElm.tagName.toLowerCase() && arr[i].firstChild == oElm.firstChild ? arr[i].style.visibility = 'hidden' : hideAncestShadow(oElm, arr[i]);
177        }
178      }
179    };
180    var boolShadowChild = function(elm) {
181      for(var bool = true, arr = getAncestObj(elm), i = 0, l = arr.length; i < l; i++) {
182        if(arr[i].tagName.toLowerCase() == 'span' && arr[i].className.match(/dummyShadow/)) {
183          bool = false;
184          break;
185        }
186      }
187      return bool;
188    };
189    var setShadow = function(elm) {
190      var sShadow = getShadowValue();
191      if(sShadow != 'invalid') {
192        for(var arr = [], nArr = elm.childNodes, bool = false, i = 0, l = nArr.length; i < l; i++) {
193          if(nArr[i].nodeName.toLowerCase() == 'span' && nArr[i].className.match(/dummyShadow/)) {
194            nArr[i].className.match(/hasImp/) && (bool = true);
195            arr[arr.length] = nArr[i].id;
196          }
197        }
198        if(bool == false || hasImp == true) {
199          var mOver = elm.getAttribute('onmouseover') || '';
200          var mOut = elm.getAttribute('onmouseout') || '';
201          mOver != '' && !mOver.match(/;$/) && (mOver += ';');
202          mOut != '' && !mOut.match(/;$/) && (mOut += ';');
203          for(i = 0, l = arr.length; i < l; i++) {
204            if(sObj.onHover && sShadow == 'none') {
205              mOver += "hideElm('" + arr[i] + "');";
206              mOut += "showElm('" + arr[i] + "');";
207            }
208            else if(!(sObj.onHover && sShadow != 'none')) {
209              elm.removeChild(document.getElementById(arr[i]));
210            }
211          }
212          sObj.onHover && sShadow == 'none' && (elm.setAttribute('onmouseover', mOver), elm.setAttribute('onmouseout', mOut));
213          for(var aBg, arr = getAncestObj(elm), i = 0, l = arr.length; i < l; i++) {
214            aBg == null && (getCompStyle(arr[i]).backgroundColor != 'transparent' || getCompStyle(arr[i]).backgroundImage != 'none') && (aBg = arr[i]);
215            for(var cArr = arr[i].childNodes, j = 0, k = cArr.length; j < k; j++) {
216              cArr[j].nodeType == 1 && cArr[j].nodeName.toLowerCase() == 'span' && cArr[j].className.match(/dummyShadow/) && hideAncestShadow(elm, document.getElementById(cArr[j].id));
217            }
218          }
219          sShadow != 'none' && sShadow.length > 1 && (getCompStyle(elm).backgroundColor != 'transparent' || getCompStyle(elm).backgroundImage != 'none') && (sShadow = revArr(sS
219hadow));
220          if(sShadow == 'none' && sObj.onHover == false) {
221            for(var arr = elm.parentNode.childNodes, i = 0, l = arr.length; i < l; i++) {
222              if(arr[i].nodeName.toLowerCase() == 'span' && arr[i].className == 'dummyShadow') {
223                getCompStyle(elm).display == 'inline-block' && (elm.style.display = 'inline');
224                getCompStyle(elm).position == 'relative' && (elm.style.position = 'static');
225                break;
226              }
227            }
228          }
229          if(sShadow != 'none' && nArr.length != 0 && boolShadowChild(elm)) {
230            for(var hArr = [], clNode = elm.cloneNode(true), arr = clNode.childNodes, i = 0, l = arr.length; i < l; i++) {
231              arr[i] != null && arr[i].hasChildNodes() && arr[i].nodeName.toLowerCase() == 'span' && arr[i].className.match(/dummyShadow/) && (hArr[hArr.length] = arr[i].id, clNode.removeChild(arr[i]));
232            }
233            var sNode = clNode.innerHTML;
234            ieVersion == 9 && (sNode = sNode.replace(/\n/, ' '));
235            ieVersion == 8 && (elm.innerHTML = elm.innerHTML);
236            for(i = 0, l = sShadow.length; i < l; i++) {
237              var pxRad = convUnitToPx(sShadow[i].z, elm);
238              var xPos = convUnitToPx(sShadow[i].x, elm) - pxRad + convUnitToPx(getCompStyle(elm).paddingLeft, elm);
239              getCompStyle(elm).textAlign == 'center' && (xPos -= ((convUnitToPx(getCompStyle(elm).paddingLeft, elm) + convUnitToPx(getCompStyle(elm).paddingRight, elm)) / 2));
240              var yPos = convUnitToPx(sShadow[i].y, elm) - pxRad + convUnitToPx(getCompStyle(elm).paddingTop, elm);
241              if(ieVersion == 7 && pxRad == 0) {
242                xPos >= 0 && (xPos -= 1);
243                yPos >= 0 && (yPos -= 1);
244              }
245              var sColor = sShadow[i].cProf || getCompStyle(elm).color;
246              var sOpacity = 0.6;
247              sShadow[i].cProf != null && sShadow[i].cProf.match(/rgba\(\s*([0-9]+\s*,\s*[0-9]+\s*,\s*[0-9]+)\s*,\s*([01]?[\.0-9]*)\)/) && (sColor = 'rgb(' + RegExp.$1 + ')', sOpacity = (RegExp.$2 * 1));
248              var sBox = document.createElement('span');
249              var sId = cNum();
250              sBox.id = 'dummyShadow' + sId;  sId++;
251              sBox.className = (sObj.hasImp == true) ? 'dummyShadow hasImp' : 'dummyShadow';
252              sBox.style.display = 'block';
253              sBox.style.position = 'absolute';
254              sBox.style.left = xPos + 'px';
255              sBox.style.top = yPos + 'px';
256              sBox.style.width = '100%';
257              sBox.style.color = sColor;
258              sBox.style.filter = 'progid:DXImageTransform.Microsoft.Blur(PixelRadius=' + pxRad + ', MakeShadow=false, ShadowOpacity=' + sOpacity + ')';
259              sBox.style.zIndex = -(i + 1);
260              sBox.innerHTML = sNode;
261              if(getCompStyle(elm).display == 'inline') {
262                elm.style.display = 'inline-block';
263              }
264              if(!(getCompStyle(elm).position == 'absolute' || getCompStyle(elm).position == 'fixed')) {
265                elm.style.position = 'relative';
266                ieVersion == 7 && (elm.style.top = getCompStyle(elm).paddingTop);
267              }
268              if(getCompStyle(elm).backgroundColor != 'transparent' || getCompStyle(elm).backgroundImage != 'none') {
269                getCompStyle(elm).zIndex != ('auto' || null) ? (sBox.style.zIndex = elm.style.zIndex) : (elm.style.zIndex = sBox.style.zIndex = -1);
270              }
271              if(aBg && aBg.tagName.toLowerCase() != 'body') {
272                elm.style.zIndex = 1; sBox.style.zIndex = -1;
273              }
274              ieVersion == 7 && getCompStyle(elm).lineHeight.match(/^([0-9\.]+)(em|ex|px|cm|mm|in|pt|pc|%)?$/) && (elm.style.minHeight = !RegExp.$2 ? convUnitToPx(RegExp.$1 + 'em', elm) : RegExp.$2 == '%' ? convUnitToPx((RegExp.$1 / 100) + 'em', elm) : convUnitToPx(RegExp.$1 + RegExp.$2, elm));
275              elm.appendChild(sBox);
276              if(sObj.onHover) {
277                sBox.style.visibility = 'hidden';
278                mOver = elm.getAttribute('onmouseover') || '';
279                mOut = elm.getAttribute('onmouseout') || '';
280                mOver != '' && !mOver.match(/;$/) && (mOver += ';');
281                mOut != '' && !mOut.match(/;$/) && (mOut += ';');
282                mOver += ("showElm('" + sBox.id + "');");
283                mOut += ("hideElm('" + sBox.id + "');");
284                if(hArr.length > 0) {
285                  for(j = 0, k = hArr.length; j < k; j++) {
286                    var hElm = document.getElementById(hArr[j]);
287                    if(hElm) {
288                      mOver += ("hideElm('" + hElm.id + "');");
289                      mOut += ("showElm('" + hElm.id + "');");
290                    }
291                  }
292                }
293                elm.setAttribute('onmouseover', removeDupFunc(mOver));
294                elm.setAttribute('onmouseout', removeDupFunc(mOut));
295              }
296              setShadowNodeColor(document.getElementById(sBox.id));
297            }
298          }
299        }
300      }
301    };
302    return this.each(function() {
303      setShadow(this);
304    });
305  };
306})(jQuery);
307
308$().ready(function() {
309  if(ieVersion >= 7 && ieVersion <= 9) {
310    var ieShadowSettings = function() {
311      var sArr = [];
312      	sArr = cssShadowValues();
313      //  自動的にスタイルシートからtext-shadow値を読み込みます
314      //  読み込ませたい場合は上記1行(sArr = cssShadowValues();)のコメントマークを削除のこと
315      //  Loads text-shadow values from stylesheets automatically.
316      //  If you want to try it, strip the comment mark at the line above (sArr = cssShadowValues();).
317      var arr = [
318      //  ここにtext-shadowを適用させるセレクタの配列と影の値を記述
319      //  セレクタ毎に「カンマ区切り」で配列を追加(カンマを忘れるとエラー発生)
320      //  Write your shadow settings here, like below.
321      //  { sel : 'h1', shadow : '2px 2px 2px gray' },
322      //  { sel : 'em', shadow : '1px 1px 1px rgb(0, 100, 100)' }
323      ];
324      return sArr.concat(arr);
325    };
326    var cssShadowValues = function() {
327      var getCssValues = function(prop) {
328        var sReg = prop.match(/(\-)/) ? prop.replace(RegExp.$1, '\\\-') : prop;
329        sReg += '\\s*:\\s*([0-9a-zA-Z\\s\\-\\+\\*\\\&#\\.\\(\\)%\\,\\!\\"\\\'\\>\\<\\\\]+);?';
330        var getCssRules = function(sSheet) {
331          for(var arr = [], sRules = sSheet.cssRules || sSheet.rules, i = 0, l = sRules.length; i < l; i++) {
332            if(sRules[i].type) {
333              sRules[i].type == 3 && (arr = arr.concat(getCssRules(sRules[i].styleSheet)));
334              if(sRules[i].type == 4) {
335                /*
336                * matchMedia() polyfill - test whether a CSS media type or media query applies
337                * authors: Scott Jehl, Paul Irish, Nicholas Zakas
338                * Copyright (c) 2011 Scott, Paul and Nicholas.
339                * Dual MIT/BSD license
340                * Original Source matchMedia.js https://github.com/paulirish/matchMedia.js
341                * Revised by Kazz http://asamuzak.jp
342                */
343                window.matchMedia = window.matchMedia || (function() {
344                  return function(q) {
345                    var bool,
346                        dHead = document.getElementsByTagName('head')[0],
347                        dBody = document.getElementsByTagName('body')[0],
348                        dStyle = document.createElement('style'),
349                        dDiv = document.createElement('div'),
350                        dId = cNum();
351                    dDiv.id = 'dDiv' + dId;  dId++;
352                    dDiv.style.cssText = 'margin:0;border:0;padding:0;height:0;visibility:hidden;';
353                    dHead.appendChild(dStyle);
354                    dBody.appendChild(dDiv);
355                    dStyle.setAttribute('media', q);
356                    dStyle.innerHTML = '#' + dDiv.id + '{ width:42px; }';
357                    bool = dDiv.offsetWidth == 42;
358                    dBody.removeChild(dDiv);
359                    dHead.removeChild(dStyle);
360                    return { matches: bool, media: q };
361                  };
362                })();
363                /* end matchMedia.js */
364                window.matchMedia(sRules[i].media.mediaText).matches && (arr = arr.concat(getCssRules(sRules[i])));
365              }
366              sRules[i].type == 1 && sRules[i].style.cssText.match(sReg) && (arr[arr.length] = { sel : sRules[i].selectorText, prop : prop, val : RegExp.$1 });
367            }
368            else {
369              var sText = sRules[i].style.cssText || sRules[i].cssText;
370              if(sText) {
371                sText.match(sReg) && (arr[arr.length] = { sel : sRules[i].selectorText, prop : prop, val : RegExp.$1 });
372              }
373            }
374          }
375          return arr;
376        };
377        if(document.styleSheets) {
378          for(var arr = [], sArr = document.styleSheets, i = 0, l = sArr.length; i < l; i++) {
379            if(isMSIE && ieVersion < 9 && sArr[i].imports) {
380              for(var iArr = sArr[i].imports, j = 0, k = iArr.length; j < k; j++) {
381                iArr[j] != undefined && (arr = arr.concat(getCssRules(iArr[j])));
382              }
383            }
384            arr = arr.concat(getCssRules(sArr[i]));
385          }
386        }
387        for(var aTag = document.getElementsByTagName('*'), oId = cNum(), i = 0, l = aTag.length; i < l; i++) {
388          if(aTag[i].style != null && aTag[i].style.cssText.match(sReg)) {
389            aTag[i].id == '' && (aTag[i].id = 'objId' + oId, oId++);
390            arr[arr.length] = { sel : '#' + aTag[i].id, prop : prop, val : RegExp.$1 };
391          }
392        }
393        return arr;
394      }
395      for(var arr = [], sArr = getCssValues('text-shadow'), revReg = /^(#[0-9a-fA-F]{3,6})\s+([0-9a-zA-Z\s\-\.\(\)%\,\!]+)$/, i = 0, l = sArr.length; i < l; i++) {
396        arr[arr.length] = { sel : sArr[i].sel, shadow : sArr[i].val.match(revReg) ? RegExp.$2 + ' ' + RegExp.$1 : sArr[i].val };
397      }
398      return arr;
399    };
400    for(var arr = ieShadowSettings(), i = 0, l = arr.length; i < l; i++) {
401      for(var sArr = arr[i].sel.split(/\s*,\s*/), j = 0, k = sArr.length; j < k; j++) {
402        var sObj = { sValue : arr[i].shadow, onHover : sArr[j].match(/:hover/) ? true : false, hasImp : arr[i].shadow.match(/\s*\!\s*important/) ? true : false };
403        sObj.onHover && (sArr[j] = sArr[j].replace(/:hover/, ''));
404        sObj.hasImp && (sObj.sValue = sObj.sValue.replace(/\s*\!\s*important/, ''));
405        $(sArr[j]).textShadowForMSIE(sObj);
406      }
407    }
408  }
409  /* Sample to change shadow color at interactive events (eg: $().bind()) */
410  /*
411  $('#someId').bind('click', function() {
412    var eId = $(this).attr('id');
413    var eObj = { sel : '#' + eId, shadow : 'green 2px 2px 2px' };
414    if(ieVersion >= 7 && ieVersion <= 9) {
415      eObj.shadow.match(/(\s*\!\s*important)/) ?
416      $(this).textShadowForMSIE({ sValue : eObj.shadow.replace(RegExp.$1, ''), onHover : false, hasImp : true }) :
417      $(this).textShadowForMSIE({ sValue : eObj.shadow, onHover : false, hasImp : false });
418    }
419    else if(ieVersion > 9 || !isMSIE) {
420      var elm = document.getElementById(eId);
421      eObj.shadow.match(/(\s*\!\s*important)/) ?
422      elm.style.setProperty('text-shadow', eObj.shadow.replace(RegExp.$1, ''), 'important') :
423      elm.style.setProperty('text-shadow', eObj.shadow, '');
424    }
425  });
426  */
427});

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.