1/** 2 * å ¬å ±JSæä»¶ 3 */ 4var MGUtil = { 5 basePath : "", 6 userId : 0, 7 maxFileSize : 104857600, 8 maxFileName : 50, 9 checkReadRight : function(bookIdEncrypted) {//æ£æ¥ç¨æ·æ¯å¦æ¥æé 读æé 10 var success = false, 11 url = app + '/front/reader/checkReadRight/'+bookIdEncrypted+'.do'; 12 MGUtil.ajax(url,{},function(data){ 13 success = true; 14 },false,true); 15 return success; 16 }, 17 ajax : function(url,options,callback,ignoreError,sync){ 18 var config = {}; 19 if(options && options.config){ 20 config = options.config; 21 delete options.config; 22 } 23 return $.ajax({ 24 type: 'POST', 25 url: url , 26 async : !sync,//é»è®¤ä¸ºå¼æ¥ajax 27 data:options, 28 beforeSend : config.beforeSend? config.beforeSend : null, 29 success: function(data){ 30 if(!ignoreError){//ignoreError为false 31 if(!data){//æªç»å½çæ åµ 32 return; 33 } 34 if(data.error){//åºéçæ åµ 35 layer.alert(data.message);return; 36 } 37 } 38 if(callback){ 39 callback(data); 40 } 41 } , 42 dataType: 'json' 43 }); 44 }, 45 alert : function(message,options){ 46 var tempIndex = layer.alert(message); 47 if(options && options.autoHide){ 48 setTimeout(function(){ 49 layer.close(tempIndex); 50 },1000); 51 } 52 }, 53 ajaxForm : function(url,formId,callback,ignoreError){ 54 var options ={ 55 url: url, 56 type:'post', 57 data:null, 58 dataType:'json', 59 success:function(data){ 60 if(!ignoreError){//ignoreError为false 61 if(!data){//æªç»å½çæ åµ 62 return; 63 } 64 if(data.error){//åºéçæ åµ 65 layer.alert(data.message);return; 66 } 67 } 68 if(callback){ 69 callback(data); 70 } 71 } 72 }; 73 var form =$("#"+formId); 74 75 form.ajaxSubmit(options); 76 }, 77 submitByForm : function(url,params,newPage){ 78 $('#tempForm').remove(); 79 var form = $("<form action='"+url+"' method='post' id='tempForm' "+(newPage?"target='_blank'":"")+"></form>").appendTo($('body')); 80 for(var param in params){ 81 form.append("<input type='hidden' name='"+param+"' value='"+params[param]+"'/>"); 82 } 83 form.submit(); 84 }, 85 objSize : function (o) { 86 if(o==undefined||o==null){ 87 return 0; 88 } 89 if(typeof o == 'object'){ 90 var c = 0; 91 for(i in o)c++; 92 return c; 93 }else{ 94 return o.length; 95 } 96 }, 97 isEmail:function (value) { 98 var pattern = /^\w+((-\w+)|(\.\w+))*\@[A-Za-z0-9]+((\.|-)[A-Za-z0-9]+)*\.[A-Za-z0-9]+$/; 99 if (!pattern.test(value)) { 100 return false; 101 } 102 return true; 103 }, 104 isArray : function (o) { 105 return Object.prototype.toString.apply(o) === '[object Array]'; 106 }, 107 isEmpty : function (o) { 108 if(o==undefined||o==null){ 109 return true; 110 } 111 if(typeof o == 'string'){ 112 return o.length==0; 113 }else if(typeof o == 'object'){ 114 for(i in o){ 115 if(!MGUtil.isArray(o) || typeof i != 'string' || typeof o[i] != 'function' ){ 116 return false; 117 } 118 } 119 return true; 120 }else{ 121 return false; 122 } 123 }, 124 isDigits : function (o) { 125 return (typeof o == 'string') && o.length>0 && !isNaN(o); 126 }, 127 startWith : function (s1,s2) { 128 if(MGUtil.isEmpty(s1)||MGUtil.isEmpty(s2)||s1.length<s2.length){ 129 return false; 130 } 131 return s1.substr(0,s2.length)==s2; 132 }, 133 endWith : function (s1,s2) { 134 if(s1.length<s2.length) return false; 135 if(s1==s2)return true; 136 if(s1.substring(s1.length-s2.length)==s2)return true; 137 return false; 138 }, 139 contains : function (objs,o) { 140 for(var i=0;i<objs.length;i++){ 141 if(objs[i]==o){ 142 return true; 143 } 144 } 145 return false; 146 }, 147 random : function () { 148 return parseInt(Math.random()*100000); 149 }, 150 rid : function () { 151 return 'mg'+MGUtil.random()+MGUtil.random(); 152 }, 153 generateId : function (dfId) { 154 if(MGUtil.isEmpty(dfId)){ 155 return MGUtil.rid(); 156 } 157 return dfId; 158 }, 159 replaceAll : function(s,s1,s2){ 160 if(!MGUtil.isEmpty(s)){ 161 return s.replace(new RegExp(s1,"gm"),s2); 162 }else{ 163 return s; 164 } 165 }, 166 isChildOf : function(a,b){ 167 return (a.parents(b).length > 0); 168 }, 169 loadPage : function (url){ 170 window.location.href = url; 171 }, 172 openPage : function (url) { 173 var w=window.open('about:blank'); 174 w.location.href = url; 175 }, 176 href : window.location.href, 177 getBasePath : function () { 178 var h = MGUtil.href; 179 var r = h.substring(7); 180 return 'http://'+r.substring(0,r.indexOf('/')+1); 181 }, 182 getRootPath : function () { 183 return MGUtil.basePath; 184 }, 185 getUri : function () { 186 var h = MGUtil.href; 187 var u = h.substring(h.lastIndexOf("/")+1); 188 return u; 189 }, 190 getQueryParam : function (n) { 191 var reg = new RegExp("(^|&)" + n + "=([^&]*)(&|$)", "i"); 192 var r = window.location.search.substr(1).match(reg); 193 if (r != null) return unescape(r[2]); return null; 194 }, 195 getAction : function () { 196 var u = MGUtil.getUri(); 197 var a = u.substring(0,u.lastIndexOf(".")); 198 return a; 199 }, 200 getActionParam : function () { 201 var a = MGUtil.getAction(); 202 return a.substring(a.lastIndexOf("-")+1); 203 }, 204 getActionNameSpace : function(){ 205 var a = MGUtil.href; 206 var nn = a.substring(0,a.lastIndexOf("/")); 207 return nn.substring(nn.lastIndexOf("/")); 208 }, 209 getQueryString : function () {
210 var h = MGUtil.href; 211 var i = h.lastIndexOf("?"); 212 return i>=0 ? h.substring(i+1):''; 213 }, 214 getAnchorParam : function () { 215 var h = MGUtil.href; 216 var i = h.lastIndexOf("#"); 217 return i>=0 ? h.substring(i+1):''; 218 }, 219 refresh: function () { 220 MGUtil.loadPage(MGUtil.getAction()+".action"); 221 }, 222 isie6 : function () { 223 return $.browser.msie && ($.browser.version == "6.0") && !($.support && $.support.style); 224 }, 225 //æ¯å¦æ¯æhtml5 226 issh5 : function () { 227 if($.browser.msie&&parseInt($.browser.version)<10){ 228 return false; 229 } 230 return true; 231 }, 232 inputFocus : function (e,value) { 233 if(typeof e == "string"){ 234 e = $("#"+e); 235 } 236 if(e.val()==value){ 237 e.val(""); 238 } 239 }, 240 inputBlur : function (e,value) { 241 if(typeof e == "string"){ 242 e = $("#"+e); 243 } 244 if($.trim(e.val())==""){ 245 e.val(value); 246 } 247 }, 248 syncBtn : function (btn,t) { 249 if(MGUtil.isEmpty(t)){ 250 t = 1000; 251 } 252 if(btn.attr("working")!="true"){ 253 btn.attr("working","true"); 254 setTimeout(function () { 255 btn.attr("working","false"); 256 },t); 257 return true; 258 } 259 return false; 260 }, 261 min : function(s1,s2){ 262 if(!MGUtil.isEmpty(s1)&&!MGUtil.isEmpty(s2)){ 263 return s1>s2?s2:s1; 264 }else if(!MGUtil.isEmpty(s1)){ 265 return s1; 266 }else{ 267 return s2; 268 } 269 }, 270 clearNan : function (e) { 271 if($.trim(e.val()).length>0){ 272 if(isNaN(e.val())){ 273 e.val(""); 274 return false; 275 } 276 } 277 return true; 278 }, 279 ftTip : function(s){ 280 if(MGUtil.isEmpty(s)){ 281 return ''; 282 }else{ 283 return s.replace(/<br\/>/g,'\n'); 284 } 285 }, 286 ftList : function (s) { 287 if(MGUtil.isEmpty(s)){ 288 return ''; 289 }else{ 290 return s.replace(/<br\/>/g,' '); 291 } 292 }, 293 ftEspList : function (s) { 294 if(MGUtil.isEmpty(s)){ 295 return ''; 296 }else{ 297 return MGUtil.replaceAll(s,'<br/>',' '); 298 } 299 }, 300 getFileExt : function (n) { 301 return n!=undefined&&n.indexOf('.')>=0?n.substring(n.lastIndexOf(".")+1):''; 302 }, 303 escapeHtml : function (s) { 304 if(MGUtil.isEmpty(s)){ 305 return s; 306 } 307 return s.replace(/&/g,'&') 308 .replace(/\'/g,''') 309 .replace(/\"/g,'"') 310 .replace(/\t/g,' ') 311 .replace(/</g,'<') 312 .replace(/>/g,'>'); 313 }, 314 unescapeHtml : function (s) { 315 if(MGUtil.isEmpty(s)){ 316 return s; 317 } 318 return s.replace(/'/g,'\'') 319 .replace(/"/g,'\"') 320 .replace(/ /g,' ') 321 .replace(/</g,'<') 322 .replace(/>/g,'>') 323 .replace(/&/g,'&'); 324 }, 325 tipHtml : function (s) { 326 if(MGUtil.isEmpty(s)){ 327 return s; 328 } 329 return MGUtil.unescapeHtml(s).replace(/<br\/>/g,'\n'); 330 }, 331 mv2ctr : function (o) { 332 //è·å¾å½åIEçªå£å¯è§åºåä¸å¿ç¹ 333 var x=$(window).width()/2; 334 var y=$(window).height()/2; 335 //è·å¾divç宽度ä¸åï¼é«åº¦ä¸å 336 var div_w=o.width()/2; 337 var div_h=o.height()/2; 338 //è·å¾æ»å¨æ¡åç§»é 339 var stop=$("body").scrollTop(); 340 var sleft=$("body").scrollLeft(); 341 //è·å¾æç»divæ¾ç¤ºä½ç½® 342 var left=x-div_w+sleft+"px"; 343 var top=y-div_h+stop+"px"; 344 //设置 div æ ·å¼ 345 o.css({left:left,top:top}); 346 }, 347 cboxFixer : false, 348 resizeTimer : null, 349 windowWidth : 0, 350 s2o : function(s){ 351 return eval('('+s+')'); 352 }, 353 clickDom : function (dom){ 354 if(!dom){ 355 return; 356 } 357 if (/msie/i.test(navigator.userAgent)){ //ie brower 358 dom.click(); 359 }else{ 360 var e = document.createEvent('MouseEvent'); 361 e.initEvent('click', false, false); 362 setTimeout(dom.dispatchEvent(e),2000); 363 } 364 }, 365 o2s : function(obj) { 366 switch (typeof(obj)) { 367 case 'string' : 368 return '"' + obj.replace(/(["\\])/g, '\\$1') + '"'; 369 case 'array' : 370 return '[' + obj.map(MGUtil.o2s).join(',') + ']'; 371 case 'object' : 372 if (obj instanceof Array) { 373 var strArr = []; 374 var len = obj.length; 375 for (var i = 0; i < len; i++) { 376 strArr.push(MGUtil.o2s(obj[i])); 377 } 378 return '[' + strArr.join(',') + ']'; 379 } else if (obj == null) { 380 return 'null'; 381 } else { 382 var string = []; 383 for (var property in obj) { 384 string.push(MGUtil.o2s(property) + ':' + MGUtil.o2s(obj[property])); 385 } 386 return '{' + string.join(',') + '}'; 387 } 388 case 'number' : 389 return obj;
390 case false : 391 return obj; 392 } 393 return obj; 394 }, 395 /** 396 * 397 * @param {Object} 398 * va1 399 * @param {Object} 400 * val2 401 * @return valçæ¶é´æäºval2ï¼åè¿å1ï¼ valçæ¶é´æ©äºval2 è¿å-1 valçæ¶é´çäºval2 è¿å0 402 */ 403 compareDate : function(va1,val2){ 404 if(Date.parse(va1)- Date.parse(val2) > 0){ 405 return 1; 406 }else if(Date.parse(va1)- Date.parse(val2) < 0){ 407 return -1; 408 }else{ 409 return 0; 410 } 411 }, 412 /** 413 * æ ¼å¼åæ¥æ 414 * ä¼ å ¥date è¿å 2014-12-01 20:01:32 415 */ 416 formatDate : function(date){ 417 return this.datePad(date.getYear())+"-"+this.datePad(date.getMonth())+"-"+this.datePad(date.getDay()); 418 }, 419 /** 420 * æ ¼å¼åæ¥ææ¶é´ 421 * ä¼ å ¥date è¿å 2014-12-01 20:01:32 422 */ 423 formatTime : function(date){ 424 return this.datePad(date.getYear())+"-"+this.datePad(date.getMonth())+"-"+this.datePad(date.getDay())+" "+this.datePad(date.getHours())+":"+this.datePad(date.getMinutes())+":"+this.datePad(date.getSeconds()); 425 }, 426 /** 427 * å·¦è¾¹è¡¥é¶ 428 * ä¼ å ¥6 è¿å 06 429 * ä¼ å ¥12 è¿å12 430 */ 431 datePad : function (str) { 432 var i = parseInt(str); 433 if(i && i>=0 && i<=9){ 434 return '0'+str; 435 }else{ 436 return str; 437 } 438 }, 439 /** 440 * 设置cookieçå¼ $.cookie(âthe_cookieâ, âthe_valueâ); 441 * æ°å»ºä¸ä¸ªcookie å æ¬æææ è·¯å¾ ååç $.cookie(âthe_cookieâ, âthe_valueâ, {expires: 7, path: â/â, domain: âjquery.comâ, secure: true}); 442 * æ°å»ºcookie $.cookie(âthe_cookieâ, âthe_valueâ); 443 * å é¤ä¸ä¸ªcookie $.cookie(âthe_cookieâ, null); 444 */ 445 cookie : function(name, value, options) { 446 if (typeof value != 'undefined') { // name and value given, set cookie 447 options = options || {}; 448 if (value === null) { 449 value = ''; 450 options.expires = -1; 451 } 452 var expires = ''; 453 if (options.expires && (typeof options.expires == 'number' || options.expires.toUTCString)) { 454 var date; 455 if (typeof options.expires == 'number') { 456 date = new Date(); 457 date.setTime(date.getTime() + (options.expires * 24 * 60 * 60 * 1000)); 458 } else { 459 date = options.expires; 460 } 461 expires = '; expires=' + date.toUTCString(); // use expires attribute, max-age is not supported by IE 462 } 463 var path = options.path ? '; path=' + options.path : ''; 464 var domain = options.domain ? '; domain=' + options.domain : ''; 465 var secure = options.secure ? '; secure' : ''; 466 document.cookie = [name, '=', encodeURIComponent(value), expires, path, domain, secure].join(''); 467 } else { // only name given, get cookie 468 var cookieValue = null; 469 if (document.cookie && document.cookie != '') { 470 var cookies = document.cookie.split(';'); 471 for (var i = 0; i < cookies.length; i++) { 472 var cookie = jQuery.trim(cookies[i]); 473 // Does this cookie string begin with the name we want? 474 if (cookie.substring(0, name.length + 1) == (name + '=')) { 475 cookieValue = decodeURIComponent(cookie.substring(name.length + 1)); 476 break; 477 } 478 } 479 } 480 return cookieValue; 481 } 482 } 483}; 484 485//æ©å±Dateçformatæ¹æ³ 486Date.prototype.format = function (format) { 487 var o = { 488 "M+": this.getMonth() + 1, 489 "d+": this.getDate(), 490 "h+": this.getHours(), 491 "m+": this.getMinutes(), 492 "s+": this.getSeconds(), 493 "q+": Math.floor((this.getMonth() + 3) / 3), 494 "S": this.getMilliseconds() 495 } 496 if (/(y+)/.test(format)) { 497 format = format.replace(RegExp.$1, (this.getFullYear() + "").substr(4 - RegExp.$1.length)); 498 } 499 for (var k in o) { 500 if (new RegExp("(" + k + ")").test(format)) { 501 format = format.replace(RegExp.$1, RegExp.$1.length == 1 ? o[k] : ("00" + o[k]).substr(("" + o[k]).length)); 502 } 503 } 504 return format; 505} 506/** 507*è½¬æ¢æ¥æå¯¹è±¡ä¸ºæ¥æå符串 508* @param date æ¥æå¯¹è±¡ 509* @param isFull æ¯å¦ä¸ºå®æ´çæ¥ææ°æ®, 510* 为trueæ¶, æ ¼å¼å¦"2000-03-05 01:05:04" 511* 为falseæ¶, æ ¼å¼å¦ "2000-03-05" 512* @return 符åè¦æ±çæ¥æå符串 513*/ 514function getSmpFormatDate(date, isFull) { 515 var pattern = ""; 516 if (isFull == true || isFull == undefined) { 517 pattern = "yyyy-MM-dd hh:mm:ss"; 518 } else { 519 pattern = "yyyy-MM-dd"; 520 } 521 return getFormatDate(date, pattern); 522} 523/** 524*转æ¢å½åæ¥æå¯¹è±¡ä¸ºæ¥æå符串 525* @param date æ¥æå¯¹è±¡ 526* @param isFull æ¯å¦ä¸ºå®æ´çæ¥ææ°æ®, 527* 为trueæ¶, æ ¼å¼å¦"2000-03-05 01:05:04" 528* 为falseæ¶, æ ¼å¼å¦ "2000-03-05" 529* @return 符åè¦æ±çæ¥æå符串 530*/ 531 532function getSmpFormatNowDate(isFull) { 533 return getSmpFormatDate(new Date(), isFull); 534} 535/** 536*转æ¢longå¼ä¸ºæ¥æå符串 537* @param l longå¼ 538* @param isFull æ¯å¦ä¸ºå®æ´çæ¥ææ°æ®, 539* 为trueæ¶, æ ¼å¼å¦"2000-03-05 01:05:04" 540* 为falseæ¶, æ ¼å¼å¦ "2000-03-05" 541* @return 符åè¦æ±çæ¥æå符串 542*/ 543 544function getSmpFormatDateByLong(l, isFull) { 545 return getSmpFormatDate(new Date(l), isFull); 546} 547/** 548*转æ¢longå¼ä¸ºæ¥æå符串 549* @param l longå¼ 550* @param pattern æ ¼å¼å符串,ä¾å¦ï¼yyyy-MM-dd hh:mm:ss 551* @return 符åè¦æ±çæ¥æå符串 552*/ 553 554function getFormatDateByLong(l, pattern) { 555 return getFormatDate(new Date(l), pattern); 556} 557/** 558*è½¬æ¢æ¥æå¯¹è±¡ä¸ºæ¥æå符串 559* @param l longå¼ 560* @param pattern æ ¼å¼å符串,ä¾å¦ï¼yyyy-MM-dd hh:mm:ss 561* @return 符åè¦æ±çæ¥æå符串 562*/ 563function getFormatDate(date, pattern) { 564 if (date == undefined) { 565 date = new Date(); 566 } 567 if (pattern == undefined) { 568 pattern = "yyyy-MM-dd hh:mm:ss"; 569 } 570 return date.format(pattern); 571} 572 573 574/** 575 * å ¨å±æä»¶ 576 */ 577jQuery.fn.vtl = function (v) { 578 return this.val(v).attr('title',v); 579}; 580jQuery.fn.zIndex = function( zIndex ) { 581 if ( zIndex !== undefined ) { 582 return this.css( "zIndex", zIndex ); 583 } 584 if ( this.length ) { 585 var elem = $( this[ 0 ] ), position, value; 586 while ( elem.length && elem[ 0 ] !== document ) { 587 position = elem.css( "position" ); 588 if ( position === "absolute" || position === "relative" || position === "fixed" ) { 589 value = parseInt( elem.css( "zIndex" ), 10 ); 590 if ( !isNaN( value ) && value !== 0 ) { 591 return value; 592 } 593 } 594 elem = elem.parent(); 595 } 596 } 597 return 0; 598}; 599/**çæå ¨çå¯ä¸ID*/ 600(function() { 601 // Private array of chars to use 602 var CHARS = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'.split(''); 603 604 Math.uuid = function(len, radix) { 605 var chars = CHARS, uuid = [], i; 606 radix = radix || chars.length; 607 608 if (len) { 609 // Compact form 610 for (i = 0; i < len; i++) 611 uuid[i] = chars[0 | Math.random() * radix]; 612 } else { 613 // rfc4122, version 4 form 614 var r; 615 616 // rfc4122 requires these characters
617 uuid[8] = uuid[13] = uuid[18] = uuid[23] = '-'; 618 uuid[14] = '4'; 619 620 // Fill in random data. At i==19 set the high bits of clock sequence as 621 // per rfc4122, sec. 4.1.5 622 for (i = 0; i < 36; i++) { 623 if (!uuid[i]) { 624 r = 0 | Math.random() * 16; 625 uuid[i] = chars[(i == 19) ? (r & 0x3) | 0x8 : r]; 626 } 627 } 628 } 629 630 return uuid.join(''); 631 }; 632})();
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.