1/*! tncode 1.2 author:weiyingbin email:[email protected] 2//@ object webiste: http://www.39gs.com/archive/259.html 3//@ https://github.com/binwind8/tncode 4*/ 5if(!document.getElementByClassName){ 6 function hasClass(elem, cls) { 7 cls = cls || ''; 8 if (cls.replace(/\s/g, '').length == 0) return false; //µ±clsûÓвÎÊýʱ£¬·µ»Øfalse 9 var ret = new RegExp(' ' + cls + ' ').test(' ' + elem.className + ' '); 10 return ret; 11 } 12 document.getElementByClassName = function(className,index){ 13 var nodes=document.getElementsByTagName("*");//»ñÈ¡Ò³ÃæÀïËùÓÐÔªËØ£¬ÒòΪËû»áÆ¥ÅäÈ«Ò³ÃæÔªËØ£¬ËùÒÔÐÔÄÜÉÏÓÐȱÏÝ£¬µ«ÊÇ¿ÉÒÔÔ¼ÊøËûµÄËÑË÷·¶Î§£» 14 var arr=[];//ÓÃÀ´±£´æ·ûºÏµÄclassName£» 15 for(var i=0;i<nodes.length;i++){ 16 if(hasClass(nodes[i],className)) arr.push(nodes[i]); 17 } 18 if(!index)index=0; 19 return index==-1?arr:arr[index]; 20 }; 21 function addClass( elements,cName ){ 22 if( !hasClass( elements,cName ) ){ 23 elements.className += " " + cName; 24 }; 25 } 26 function removeClass( elements,cName ){ 27 if( hasClass( elements,cName ) ){ 28 elements.className = elements.className.replace( new RegExp( "(\\s|^)" + cName + "(\\s|$)" )," " ); // replace·½·¨ÊÇÌæ»» 29 }; 30 } 31} 32 33function appendHTML(o,html) { 34 var divTemp = document.createElement("div"), nodes = null 35 , fragment = document.createDocumentFragment(); 36 divTemp.innerHTML = html; 37 nodes = divTemp.childNodes; 38 for (var i=0, length=nodes.length; i<length; i+=1) { 39 fragment.appendChild(nodes[i].cloneNode(true)); 40 } 41 o.appendChild(fragment); 42 nodes = null; 43 fragment = null; 44}; 45 46 47 48var _ajax = function() {}; 49_ajax.prototype = { 50 request: function(method, url, callback, postVars) { 51 var xhr = this.createXhrObject()(); 52 xhr.onreadystatechange = function() { 53 if (xhr.readyState !== 4) return; 54 (xhr.status === 200) ? 55 callback.success(xhr.responseText, xhr.responseXML) : 56 callback.failure(xhr,status); 57 }; 58 if (method !== "POST"&&postVars) { 59 url += "?" + this.JSONStringify(postVars); 60 postVars = null; 61 } 62 xhr.open(method, url, true); 63 xhr.send(postVars); 64 }, 65 createXhrObject: function() { 66 var methods = [ 67 function() { return new XMLHttpRequest(); }, 68 function() { return new ActiveXObject("Msxml2.XMLHTTP"); }, 69 function() { return new ActiveXObject("Microsoft.XMLHTTP"); } 70 ], 71 i = 0, 72 len = methods.length,obj; 73 for (; i < len; i++) { 74 try { 75 methods[i]; 76 } catch(e) { 77 continue; 78 } 79 this.createXhrObject = methods[i]; 80 return methods[i]; 81 } 82 throw new Error("ajax created failure"); 83 }, 84 JSONStringify: function(obj) { 85 return JSON.stringify(obj).replace(/"|{|}/g, "") 86 .replace(/b:b/g, "=") 87 .replace(/b,b/g, "&"); 88 } 89}; 90 91 92var tncode = { 93 _obj:null, 94 _tncode:null, 95 _img:null, 96 _img_loaded:false, 97 _is_draw_bg:false, 98 _is_moving:false, 99 _block_start_x:0, 100 _block_start_y:0, 101 _doing:false, 102 _mark_w:50, 103 _mark_h:50, 104 _mark_offset:0, 105 _img_w:240, 106 _img_h:150, 107 _result:false, 108 _err_c:0, 109 _onsuccess:null, 110 _check_type:0, 111 _bind:function(elm,evType,fn){ 112 //event.preventDefault(); 113 if (elm.addEventListener) { 114 elm.addEventListener(evType, fn,{ passive: false });//DOM2.0 115 return true; 116 }else if (elm.attachEvent) { 117 var r = elm.attachEvent(evType, fn);//IE5+ 118 return r; 119 } 120 }, 121 _block_start_move:function(e){ 122 if(tncode._doing||!tncode._img_loaded){ 123 return; 124 } 125 e.preventDefault(); 126 var theEvent = window.event || e; 127 if(theEvent.touches){ 128 theEvent = theEvent.touches[0]; 129 } 130 131 var obj = document.getElementByClassName('slide_block_text'); 132 obj.style.display="none"; 133 tncode._draw_bg(); 134 tncode._block_start_x = theEvent.clientX; 135 tncode._block_start_y = theEvent.clientY; 136 tncode._doing = true; 137 tncode._is_moving = true; 138 }, 139 _block_on_move:function(e){ 140 if(!tncode._doing)return true; 141 if(!tncode._is_moving)return true; 142 e.preventDefault(); 143 var theEvent = window.event || e; 144 if(theEvent.touches){ 145 theEvent = theEvent.touches[0]; 146 } 147 tncode._is_moving = true; 148 //document.getElementById('msg').innerHTML = "move:"+theEvent.clientX+";"+theEvent.clientY;
149 var offset = theEvent.clientX - tncode._block_start_x; 150 if(offset<0){ 151 offset = 0; 152 } 153 var max_off = tncode._img_w - tncode._mark_w; 154 if(offset>max_off){ 155 offset = max_off; 156 } 157 var obj = document.getElementByClassName('slide_block'); 158 159 obj.style.cssText = "transform: translate("+offset+"px, 0px)"; 160 tncode._mark_offset = offset/max_off*(tncode._img_w-tncode._mark_w); 161 tncode._draw_bg(); 162 tncode._draw_mark(); 163 }, 164 _block_on_end:function(e){ 165 if(!tncode._doing)return true; 166 e.preventDefault(); 167 var theEvent = window.event || e; 168 if(theEvent.touches){ 169 theEvent = theEvent.touches[0]; 170 } 171 tncode._is_moving = false; 172 tncode._send_result(); 173 }, 174 _send_result:function(){ 175 var haddle = {success:tncode._send_result_success,failure:tncode._send_result_failure}; 176 tncode._result = false; 177 var re = new _ajax(); 178 var timestamp = Date.parse(new Date()); 179 re.request('get','/dom/verify_check.php?username='+user_name+'×tamp='+timestamp+'&ajax=2&tn_r='+tncode._mark_offset,haddle); 180 }, 181 _send_result_success:function(responseText,responseXML){ 182 tncode._doing = false; 183 if(responseText=='ok'){ 184 var notic_msg = ''; 185 if(_check_type == 1){ 186 notic_msg = $weisiteLa.YanZhengTongGuoSub+'....'; 187 } 188 tncode._tncode.innerHTML = notic_msg; 189 tncode._showmsg($weisiteLa.YanZhengTongGuo,1); 190 tncode._result = true; 191 document.getElementByClassName('hgroup').style.display="block"; 192 setTimeout(tncode.hide,3000); 193 if(tncode._onsuccess){ 194 tncode._onsuccess(); 195 } 196 }else{ 197 var obj = document.getElementById('tncode_div'); 198 addClass( obj,'dd'); 199 setTimeout(function(){ 200 removeClass( obj,'dd'); 201 },200); 202 tncode._result = false;
203 tncode._showmsg($weisiteLa.YanZhengShiBai); 204 tncode._err_c++; 205 if(tncode._err_c>5){ 206 tncode.refresh(); 207 } 208 } 209 }, 210 _send_result_failure:function(xhr,status){ 211 212 }, 213 _draw_fullbg:function(){ 214 var canvas_bg = document.getElementByClassName('tncode_canvas_bg'); 215 var ctx_bg = canvas_bg.getContext('2d'); 216 ctx_bg.drawImage(tncode._img, 0, tncode._img_h*2, tncode._img_w, tncode._img_h, 0, 0, tncode._img_w, tncode._img_h); 217 }, 218 _draw_bg:function(){ 219 if(tncode._is_draw_bg){ 220 return; 221 } 222 tncode._is_draw_bg = true; 223 var canvas_bg = document.getElementByClassName('tncode_canvas_bg'); 224 var ctx_bg = canvas_bg.getContext('2d'); 225 ctx_bg.drawImage(tncode._img, 0, 0, tncode._img_w, tncode._img_h, 0, 0, tncode._img_w, tncode._img_h); 226 }, 227 _draw_mark:function(){ 228 var canvas_mark = document.getElementByClassName('tncode_canvas_mark'); 229 var ctx_mark = canvas_mark.getContext('2d'); 230 //ÇåÀí»²¼ 231 ctx_mark.clearRect(0,0,canvas_mark.width,canvas_mark.height); 232 ctx_mark.drawImage(tncode._img, 0, tncode._img_h, tncode._mark_w,tncode._img_h,tncode._mark_offset,0,tncode._mark_w, tncode._img_h); 233 var imageData = ctx_mark.getImageData(0, 0, tncode._img_w, tncode._img_h); 234 // »ñÈ¡»²¼µÄÏñËØÐÅÏ¢ 235 // ÊÇÒ»¸öһάÊý×飬°üº¬ÒÔ RGBA ˳ÐòµÄÊý¾Ý£¬Êý¾ÝʹÓà 0 ÖÁ 255£¨°üº¬£©µÄÕûÊý±íʾ 236 // È磺ͼƬÓÉÁ½¸öÏñËØ¹¹³É£¬Ò»¸öÏñËØÊǰ×É«£¬Ò»¸öÏñËØÊǺÚÉ«£¬ÄÇô data Ϊ 237 // [255,255,255,255,0,0,0,255] 238 // Õâ¸öһάÊý×é¿ÉÒÔ¿´³ÉÊÇÁ½¸öÏñËØÖÐRBGAͨµÀµÄÊý×éµÄ¼¯ºÏ¼´: 239 // [R,G,B,A].concat([R,G,B,A]) 240 var data = imageData.data; 241 //alert(data.length/4); 242 var x = tncode._img_h,y=tncode._img_w; 243 for(var j = 0; j < x; j++) { 244 var ii = 1,k1=-1; 245 for(var k=0;k<y&&k>=0&&k>k1;){ 246 // µÃµ½ RGBA ͨµÀµÄÖµ 247 var i = (j*y+k)*4; 248 k+=ii; 249 var r = data[i] 250 , g = data[i+1] 251 , b = data[i+2]; 252 // ÎÒÃÇ´Ó×îÏÂÃæÄÇÕÅÑÕÉ«Éú³ÉÆ÷ÖпÉÒÔ¿´µ½ÔÚͼƬµÄÓÒÉϽÇÇøÓò£¬ÓÐһС¿éÔÚ 253 // ÈâÑ۵Ĺ۲ìÏ»ù±¾¶¼Êǰ×É«µÄ£¬ËùÒÔÎÒÔÚÕâÀï°Ñ RGB Öµ¶¼ÔÚ 245 ÒÔÉ쵀 254 // µÄ¶¨ÒåΪ°×É« 255 // ´ó¼ÒÒ²¿ÉÒÔ×Ô¼º¶¨ÒåµÄ¸ü¾«È·£¬»òÕ߸ü¿í·ºÒ»Ð© 256 if(r+g+b<200) data[i+3] = 0; 257 else{ 258 var arr_pix = [1,-5]; 259 var arr_op = [250,0]; 260 for (var i =1; i<arr_pix[0]-arr_pix[1]; i++) { 261 var iiii = arr_pix[0]-1*i; 262 var op = parseInt(arr_op[0]-(arr_op[0]-arr_op[1])/(arr_pix[0]-arr_pix[1])*i); 263 var iii = (j*y+k+iiii*ii)*4; 264 data[iii+3] = op; 265 } 266 if(ii==-1){ 267 break; 268 } 269 k1 = k; 270 k = y-1; 271 ii = -1; 272 }; 273 } 274 } 275 ctx_mark.putImageData(imageData, 0, 0); 276 }, 277 _reset:function(){ 278 tncode._mark_offset = 0; 279 tncode._draw_bg(); 280 tncode._draw_mark(); 281 var obj = document.getElementByClassName('slide_block'); 282 obj.style.cssText = "transform: translate(0px, 0px)"; 283 }, 284 show:function(){ 285 var obj = document.getElementByClassName('hgroup'); 286 if(obj){ 287 obj.style.display="none"; 288 } 289 tncode.refresh(); 290 tncode._tncode = this; 291 document.getElementById('tncode_div_bg').style.display="block"; 292 document.getElementById('tncode_div').style.display="block"; 293 }, 294 hide:function(fun){ 295 document.getElementById('tncode_div_bg').style.display="none"; 296 document.getElementById('tncode_div').style.display="none"; 297 typeof(fun) === 'function' && fun(); 298 }, 299 _showmsg:function(msg,status){ 300 if(!status){ 301 status = 0; 302 var obj = document.getElementByClassName('tncode_msg_error'); 303 }else{ 304 var obj = document.getElementByClassName('tncode_msg_ok'); 305 } 306 obj.innerHTML = msg; 307 var setOpacity = function (ele, opacity) { 308 if (ele.style.opacity != undefined) { 309 ///¼æÈÝFFºÍGGºÍа汾IE 310 ele.style.opacity = opacity / 100; 311 312 } else { 313 ///¼æÈÝÀϰ汾ie 314 ele.style.filter = "alpha(opacity=" + opacity + ")"; 315 } 316 }; 317 function fadeout(ele, opacity, speed) { 318 if (ele) { 319 var v = ele.style.filter.replace("alpha(opacity=", "").replace(")", "") || ele.style.opacity || 100; 320 v < 1 && (v = v * 100); 321 var count = speed / 1000; 322 var avg = (100 - opacity) / count; 323 var timer = null; 324 timer = setInterval(function() { 325 if (v - avg > opacity) { 326 v -= avg; 327 setOpacity(ele, v); 328 } else { 329 setOpacity(ele, 0); 330 if(status==0){ 331 tncode._reset(); 332 } 333 clearInterval(timer); 334 } 335 }, 100); 336 } 337 }
338 function fadein(ele, opacity, speed) { 339 if (ele) { 340 var v = ele.style.filter.replace("alpha(opacity=", "").replace(")", "") || ele.style.opacity; 341 v < 1 && (v = v * 100); 342 var count = speed / 1000; 343 var avg = count < 2 ? (opacity / count) : (opacity / count - 1); 344 var timer = null; 345 timer = setInterval(function() { 346 if (v < opacity) { 347 v += avg; 348 setOpacity(ele, v); 349 } else { 350 clearInterval(timer); 351 setTimeout(function() {fadeout(obj, 0, 6000);},1000); 352 } 353 }, 100); 354 } 355 } 356 357 fadein(obj, 80, 4000); 358 }, 359 _html:function(){ 360 var d = document.getElementById('tncode_div_bg'); 361 if(d)return; 362 //拖动左边滑块完成上方拼图 363 var html = '<div class="tncode_div_bg" id="tncode_div_bg"></div><div class="tncode_div" id="tncode_div"><div class="loading">'+$weisiteLa.JiaZaiZhong+'</div><canvas class="tncode_canvas_bg"></canvas><canvas class="tncode_canvas_mark"></canvas><div class="hgroup"></div><div class="tncode_msg_error"></div><div class="tncode_msg_ok"></div><div class="slide"><div class="slide_block"></div><div class="slide_block_text">'+$weisiteLa.HuaDongYanZheng+'</div></div><div class="tools"><div class="tncode_close"></div><div class="tncode_refresh"></div><div class="tncode_tips"></div></div></div>'; 364 var bo = document.getElementsByTagName('body'); 365 appendHTML(bo[0],html); 366 }, 367 _currentUrl:function(){ 368 var list = document.getElementsByTagName('script'); 369 for (var i in list) { 370 var d=list[i]; 371 if(d.src.indexOf('tn_code')!==-1){//jsÎļþÃûÒ»¶¨Òª´øÕâ¸ö×Ö·û 372 var arr = d.src.split('tn_code'); 373 return arr[0]; 374 } 375 } 376 }, 377 refresh:function(){ 378 var isSupportWebp = !![].map && document.createElement('canvas').toDataURL('image/webp').indexOf('data:image/webp') == 0; 379 var _this = this; 380 tncode._err_c = 0; 381 tncode._is_draw_bg = false; 382 tncode._result = false;
383 tncode._img_loaded = false; 384 var obj = document.getElementByClassName('tncode_canvas_bg'); 385 obj.style.display="none"; 386 obj = document.getElementByClassName('tncode_canvas_mark'); 387 obj.style.display="none"; 388 tncode._img = new Image(); 389 var timestamp = Date.parse(new Date()); 390 var img_url = "/dom/verify_check.php?username="+user_name+"×tamp"+timestamp+"&ajax=1&t="+Math.random(); 391 // var img_url = tncode._currentUrl()+"tncode.php?t="+Math.random(); 392 if(!isSupportWebp){//ä¯ÀÀÆ÷²»Ö§³Öwebp 393 img_url+="&nowebp=1"; 394 } 395 tncode._img.src = img_url; 396 tncode._img.onload = function(){ 397 tncode._draw_fullbg(); 398 var canvas_mark = document.getElementByClassName('tncode_canvas_mark'); 399 var ctx_mark = canvas_mark.getContext('2d'); 400 //ÇåÀí»²¼ 401 ctx_mark.clearRect(0,0,canvas_mark.width,canvas_mark.height); 402 tncode._img_loaded = true; 403 obj = document.getElementByClassName('tncode_canvas_bg'); 404 obj.style.display=""; 405 obj = document.getElementByClassName('tncode_canvas_mark'); 406 obj.style.display=""; 407 }; 408 //alert("Hong Kong ForHarvest Technology and Culture Development Co. Limited".length); 409 obj = document.getElementByClassName('slide_block'); 410 obj.style.cssText = "transform: translate(0px, 0px)"; 411 obj = document.getElementByClassName('slide_block_text'); 412 obj.style.display="block"; 413 }, 414 init:function(classObj,type,j){ 415 var _this = this; 416 _check_type = type; 417 if(!tncode._img){ 418 tncode._html(); 419 var obj = document.getElementByClassName('slide_block'); 420 421 tncode._bind(obj,'mousedown',_this._block_start_move); 422 tncode._bind(document,'mousemove',_this._block_on_move); 423 tncode._bind(document,'mouseup',_this._block_on_end); 424 tncode._bind(obj,'touchstart',_this._block_start_move); 425 tncode._bind(document,'touchmove',_this._block_on_move); 426 tncode._bind(document,'touchend',_this._block_on_end); 427 428 var obj = document.getElementByClassName('tncode_close'); 429 430 tncode._bind(obj,'touchstart', function(){ 431 _this.hide((j && j.hideFun && j.hideFun)) 432 }); 433 tncode._bind(obj,'click', function(){ 434 _this.hide((j && j.hideFun && j.hideFun)); 435 }); 436 var obj = document.getElementByClassName('tncode_refresh'); 437 438 tncode._bind(obj,'touchstart',_this.refresh); 439 tncode._bind(obj,'click',_this.refresh); 440 441 442 var objs = document.getElementByClassName(classObj); 443 444 _this.show(); 445 // for (var i in objs) { 446 // var o = objs[i]; 447 // //o.innerHTML = 'Í϶¯°´Å¥½øÐÐÑéÖ¤'; 448 // // tncode._bind(o,'touchstart',_this.show); 449 // _this.show(); 450 // // tncode._bind(o,'click',_this.show); 451 // } 452 } 453 }, 454 result:function(){ 455 return tncode._result; 456 }, 457 onsuccess:function(fn){ 458 tncode._onsuccess = fn; 459 } 460}; 461var $TN = tncode; 462var _old_onload = window.onload; 463window.onload = function(){ 464 if(typeof _old_onload == 'function'){ 465 _old_onload(); 466 } 467 // tncode.init(tncode_class); 468};
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.