1/* 2 CSS Browser Selector js v0.5.3 (July 2, 2013) 3 4 -- original -- 5 Rafael Lima (http://rafael.adm.br) 6 http://rafael.adm.br/css_browser_selector 7 License: http://choosealicense.com/licenses/mit/ 8 Contributors: http://rafael.adm.br/css_browser_selector#contributors 9 -- /original -- 10 11 Fork project: http://code.google.com/p/css-browser-selector/ 12 Song Hyo-Jin (shj at xenosi.de) 13 */ 14function css_browser_selector(u) { 15 var ua = u.toLowerCase(), 16 is = function(t) { 17 return ua.indexOf(t) > -1 18 }, 19 g = 'gecko', 20 w = 'webkit', 21 s = 'safari', 22 c = 'chrome', 23 o = 'opera', 24 m = 'mobile', 25 v = 0, 26 r = window.devicePixelRatio ? (window.devicePixelRatio + '').replace('.', '_') : '1'; 27 var res = [ 28 /* IE */ 29 (!(/opera|webtv/.test(ua)) && /msie\s(\d+)/.test(ua) && (v = RegExp.$1 * 1)) ? 30 ('ie ie' + v + ((v == 6 || v == 7) ? 31 ' ie67 ie678 ie6789' : (v == 8) ? 32 ' ie678 ie6789' : (v == 9) ? 33 ' ie6789 ie9m' : (v > 9 ) ? 34 ' ie9m' : '')) : 35 /* EDGE */ 36 (/edge\/(\d+)\.(\d+)/.test(ua) && (v = [RegExp.$1, RegExp.$2])) ? 37 'ie ie' + v[0] + ' ie' + v[0] + '_' + v[1] + ' ie9m edge' : 38 /* IE 11 */ 39 (/trident\/\d+.*?;\s*rv:(\d+)\.(\d+)\)/.test(ua) && (v = [RegExp.$1, RegExp.$2])) ? 40 'ie ie' + v[0] + ' ie' + v[0] + '_' + v[1] + ' ie9m' : 41 /* FF */ 42 (/firefox\/(\d+)\.(\d+)/.test(ua) && (re = RegExp)) ? 43 g + ' ff ff' + re.$1 + ' ff' + re.$1 + '_' + re.$2 : 44 is('gecko/') ? g : 45 /* Opera */ 46 is(o) ? o + (/version\/(\d+)/.test(ua) ? ' ' + o + RegExp.$1 : 47 (/opera(\s|\/)(\d+)/.test(ua) ? ' ' + o + RegExp.$2 : '')) : 48 /* K */ 49 is('konqueror') ? 'konqueror' : 50 /* Black Berry */ 51 is('blackberry') ? m + ' blackberry' : 52 /* Chrome */ 53 (is(c) || is('crios')) ? w + ' ' + c : 54 /* Iron */ 55 is('iron') ? w + ' iron' : 56 /* Safari */ 57 !is('cpu os') && is('applewebkit/') ? w + ' ' + s : 58 /* Mozilla */ 59 is('mozilla/') ? g : '', 60 /* Android */ 61 is('android') ? m + ' android' : '', 62 /* Tablet */ 63 is('tablet') ? 'tablet' : '', 64 /* Machine */ 65 is('j2me') ? m + ' j2me' : 66 is('ipad; u; cpu os') ? m + ' chrome android tablet' : 67 is('ipad;u;cpu os') ? m + ' chromedef android tablet' : 68 is('iphone') ? m + ' ios iphone' : 69 is('ipod') ? m + ' ios ipod' : 70 is('ipad') ? m + ' ios ipad tablet' : 71 is('mac') ? 'mac' : 72 is('darwin') ? 'mac' : 73 is('webtv') ? 'webtv' : 74 is('win') ? 'win' + (is('windows nt 6.0') ? ' vista' : '') : 75 is('freebsd') ? 'freebsd' : 76 (is('x11') || is('linux')) ? 'linux' : '', 77 /* Ratio (Retina) */ 78 (r != '1') ? ' retina ratio' + r : '', 79 'js portrait'].join(' '); 80 if(window.jQuery && !window.jQuery.browser) { 81 window.jQuery.browser = v ? {msie: 1, version: v} : {}; 82 } 83 return res; 84}; 85(function(d, w) { 86 var _c = css_browser_selector(navigator.userAgent); 87 var h = d.documentElement; 88 h.className += ' ' + _c; 89 var _d = _c.replace(/^\s*|\s*$/g, '').split(/ +/); 90 w.CSSBS = 1; 91 for(var i = 0; i < _d.length; i++) { 92 w['CSSBS_' + _d[i]] = 1; 93 } 94 var _de = function(v) { 95 return d.documentElement[v] || d.body[v]; 96 } 97 if(w.jQuery) { 98 (function($) { 99 var p = 'portrait', l = 'landscape'; 100 var m = 'smartnarrow', mw = 'smartwide', t = 'tabletnarrow', tw = 'tabletwide', ac = m + ' ' + mw + ' ' + t + ' ' + tw + ' pc'; 101 var $h = $(h); 102 var to = 0, cw = 0; 103 104 /* ie7 cpu 100% fix */ 105 function CSSSelectorUpdateSize() { 106 if(to != 0) return; 107 try { 108 var _cw = _de('clientWidth'), _ch = _de('clientHeight'); 109 if(_cw > _ch) { 110 $h.removeClass(p).addClass(l); 111 } else { 112 $h.removeClass(l).addClass(p); 113 } 114 if(_cw == cw) return; 115 cw = _cw; 116 //clearTimeout(to); 117 } catch(e) { 118 } 119 to = setTimeout(CSSSelectorUpdateSize_, 100); 120 } 121 122 function CSSSelectorUpdateSize_() { 123 try { 124 $h.removeClass(ac); 125 $h.addClass( 126 (cw <= 360) ? m : 127 (cw <= 640) ? mw : 128 (cw <= 768) ? t : 129 (cw <= 1024) ? tw : 'pc' 130 ); 131 } catch(e) { 132 } 133 to = 0; 134 } 135 136 if(w.CSSBS_ie) { 137 setInterval(CSSSelectorUpdateSize, 1000); 138 } else { 139 $(w).on('resize orientationchange', CSSSelectorUpdateSize).trigger('resize'); 140 } 141 $(w).load(CSSSelectorUpdateSize); 142 })(w.jQuery); 143 } 144})(document, window); 145 146 147 148 149$(function(){ 150 var showTop = 100; 151 152 $('body').append('<a href="javascript:void(0);" id="fixedTop">â²</a>'); 153 var fixedTop = $('#fixedTop'); 154 fixedTop.on('click',function(){ 155 $('html,body').animate({scrollTop:'0'},500); 156 });
157 $(window).on('load scroll resize',function(){ 158 if($(window).scrollTop() >= showTop){ 159 fixedTop.fadeIn('normal'); 160 } else if($(window).scrollTop() < showTop){ 161 fixedTop.fadeOut('normal'); 162 } 163 }); 164}); 165 166 167/*--------------------------------------------------------------------------* 168 * 169 * SmoothScroll JavaScript Library V2 170 * 171 * MIT-style license. 172 * 173 * 2007-2011 Kazuma Nishihata 174 * http://www.to-r.net 175 * 176 *--------------------------------------------------------------------------*/ 177 178new function(){ 179 180 var attr ="data-tor-smoothScroll";//for html5 , if you can't use html5 , this value change "class" 181 var attrPatt = /noSmooth/; 182 var d = document;//document short cut 183 184 /* 185 *add Event 186 -------------------------------------------------*/ 187 function addEvent(elm,listener,fn){ 188 try{ // IE 189 elm.addEventListener(listener,fn,false); 190 }catch(e){ 191 elm.attachEvent( 192 "on"+listener 193 ,function(){ 194 fn.apply(elm,arguments) 195 } 196 ); 197 } 198 } 199 200 /* 201 *Start SmoothScroll 202 -------------------------------------------------*/ 203 function SmoothScroll(a){ 204 if(d.getElementById(a.rel.replace(/.*\#/,""))){ 205 var e = d.getElementById(a.rel.replace(/.*\#/,"")); 206 }else{ 207 return; 208 } 209 210 //Move point 211 var end=e.offsetTop 212 var docHeight = d.documentElement.scrollHeight; 213 var winHeight = window.innerHeight || d.documentElement.clientHeight 214 if(docHeight-winHeight<end){ 215 var end = docHeight-winHeight; 216 } 217 218 //Current Point 219 var start=window.pageYOffset || d.documentElement.scrollTop || d.body.scrollTop || 0; 220 221 222 var flag=(end<start)?"up":"down"; 223 224 function scrollMe(start,end,flag) { 225 setTimeout( 226 function(){ 227 if(flag=="up" && start >= end){ 228 start=start-(start-end)/20-1; 229 window.scrollTo(0,start) 230 scrollMe(start,end,flag); 231 }else if(flag=="down" && start <= end){ 232 start=start+(end-start)/20+1; 233 window.scrollTo(0,start) 234 scrollMe(start,end,flag); 235 }else{ 236 scrollTo(0,end); 237 } 238 return ; 239 } 240 ,10 241 ); 242 243 } 244 245 scrollMe(start,end,flag); 246 247 } 248 249 /* 250 *Add SmoothScroll 251 -------------------------------------------------*/ 252 addEvent(window,"load",function(){ 253 var anchors = d.getElementsByTagName("a"); 254 for(var i = 0 ,len=anchors.length; i<len ; i++){ 255 if(!attrPatt.test(anchors[i].getAttribute(attr)) && 256 anchors[i].href.replace(/\#[a-zA-Z0-9_]+/,"") == location.href.replace(/\#[a-zA-Z0-9_]+/,"")){ 257 anchors[i].rel = anchors[i].href; 258 anchors[i].href = "javascript:void(0)"; 259 anchors[i].onclick=function(){SmoothScroll(this)} 260 } 261 } 262 }); 263 264}
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.