1/* 2 [Discuz!] (C)2001-2009 Comsenz Inc. 3 This is NOT a freeware, use is subject to license terms 4 5 $Id: common.js 24745 2011-10-10 05:58:53Z monkey $ 6// Modified by Valery Votintsev 7*/ 8 9var BROWSER = {}; 10var USERAGENT = navigator.userAgent.toLowerCase(); 11browserVersion({'ie':'msie','firefox':'','chrome':'','opera':'','safari':'','mozilla':'','webkit':'','maxthon':'','qq':'qqbrowser'}); 12if(BROWSER.safari) { 13 BROWSER.firefox = true; 14} 15BROWSER.opera = BROWSER.opera ? opera.version() : 0; 16 17HTMLNODE = document.getElementsByTagName('head')[0].parentNode; 18if(BROWSER.ie) { 19 BROWSER.iemode = parseInt(typeof document.documentMode != 'undefined' ? document.documentMode : BROWSER.ie); 20 HTMLNODE.className = 'ie_all ie' + BROWSER.iemode; 21} 22 23var CSSLOADED = []; 24var JSLOADED = []; 25var JSMENU = []; 26JSMENU['active'] = []; 27JSMENU['timer'] = []; 28JSMENU['drag'] = []; 29JSMENU['layer'] = 0; 30JSMENU['zIndex'] = {'win':200,'menu':300,'dialog':400,'prompt':500}; 31JSMENU['float'] = ''; 32var AJAX = []; 33AJAX['url'] = []; 34AJAX['stack'] = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0]; 35var CURRENTSTYPE = null; 36var discuz_uid = isUndefined(discuz_uid) ? 0 : discuz_uid; 37var creditnotice = isUndefined(creditnotice) ? '' : creditnotice; 38var cookiedomain = isUndefined(cookiedomain) ? '' : cookiedomain; 39var cookiepath = isUndefined(cookiepath) ? '' : cookiepath; 40var EXTRAFUNC = [], EXTRASTR = ''; 41EXTRAFUNC['showmenu'] = []; 42 43var DISCUZCODE = []; 44DISCUZCODE['num'] = '-1'; 45DISCUZCODE['html'] = []; 46 47var USERABOUT_BOX = true; 48var USERCARDST = null; 49var CLIPBOARDSWFDATA = ''; 50var NOTICETITLE = []; 51 52if(BROWSER.firefox && window.HTMLElement) { 53 HTMLElement.prototype.__defineSetter__('outerHTML', function(sHTML) { 54 var r = this.ownerDocument.createRange(); 55 r.setStartBefore(this); 56 var df = r.createContextualFragment(sHTML); 57 this.parentNode.replaceChild(df,this); 58 return sHTML; 59 }); 60 61 HTMLElement.prototype.__defineGetter__('outerHTML', function() { 62 var attr; 63 var attrs = this.attributes; 64 var str = '<' + this.tagName.toLowerCase(); 65 for(var i = 0;i < attrs.length;i++){ 66 attr = attrs[i]; 67 if(attr.specified) 68 str += ' ' + attr.name + '="' + attr.value + '"'; 69 } 70 if(!this.canHaveChildren) { 71 return str + '>'; 72 } 73 return str + '>' + this.innerHTML + '</' + this.tagName.toLowerCase() + '>'; 74 }); 75 76 HTMLElement.prototype.__defineGetter__('canHaveChildren', function() { 77 switch(this.tagName.toLowerCase()) { 78 case 'area':case 'base':case 'basefont':case 'col':case 'frame':case 'hr':case 'img':case 'br':case 'input':case 'isindex':case 'link':case 'meta':case 'param': 79 return false; 80 } 81 return true; 82 }); 83} 84 85function $(id) { 86 return !id ? null : document.getElementById(id); 87} 88 89function $C(classname, ele, tag) { 90 var returns = []; 91 ele = ele || document; 92 tag = tag || '*'; 93 if(ele.getElementsByClassName) { 94 var eles = ele.getElementsByClassName(classname); 95 if(tag != '*') { 96 for (var i = 0, L = eles.length; i < L; i++) { 97 if (eles[i].tagName.toLowerCase() == tag.toLowerCase()) { 98 returns.push(eles[i]); 99 } 100 } 101 } else { 102 returns = eles; 103 } 104 }else { 105 eles = ele.getElementsByTagName(tag); 106 var pattern = new RegExp("(^|\\s)"+classname+"(\\s|$)"); 107 for (i = 0, L = eles.length; i < L; i++) { 108 if (pattern.test(eles[i].className)) { 109 returns.push(eles[i]); 110 } 111 } 112 } 113 return returns; 114} 115 116function _attachEvent(obj, evt, func, eventobj) { 117 eventobj = !eventobj ? obj : eventobj; 118 if(obj.addEventListener) { 119 obj.addEventListener(evt, func, false); 120 } else if(eventobj.attachEvent) { 121 obj.attachEvent('on' + evt, func); 122 } 123} 124 125function _detachEvent(obj, evt, func, eventobj) { 126 eventobj = !eventobj ? obj : eventobj; 127 if(obj.removeEventListener) { 128 obj.removeEventListener(evt, func, false); 129 } else if(eventobj.detachEvent) { 130 obj.detachEvent('on' + evt, func); 131 } 132} 133 134function browserVersion(types) { 135 var other = 1; 136 for(i in types) { 137 var v = types[i] ? types[i] : i; 138 if(USERAGENT.indexOf(v) != -1) { 139 var re = new RegExp(v + '(\\/|\\s)([\\d\\.]+)', 'ig'); 140 var matches = re.exec(USERAGENT); 141 var ver = matches != null ? matches[2] : 0; 142 other = ver !== 0 && v != 'mozilla' ? 0 : other; 143 }else { 144 var ver = 0; 145 } 146 eval('BROWSER.' + i + '= ver'); 147 } 148 BROWSER.other = other; 149} 150 151function getEvent() { 152 if(document.all) return window.event; 153 func = getEvent.caller; 154 while(func != null) { 155 var arg0 = func.arguments[0]; 156 if (arg0) { 157 if((arg0.constructor == Event || arg0.constructor == MouseEvent) || (typeof(arg0) == "object" && arg0.preventDefault && arg0.stopPropagation)) { 158 return arg0; 159 } 160 } 161 func=func.caller; 162 } 163 return null; 164} 165 166function isUndefined(variable) { 167 return typeof variable == 'undefined' ? true : false; 168} 169 170function in_array(needle, haystack) { 171 if(typeof needle == 'string' || typeof needle == 'number') { 172 for(var i in haystack) { 173 if(haystack[i] == needle) { 174 return true; 175 } 176 } 177 } 178 return false; 179} 180 181function trim(str) { 182 return (str + '').replace(/(\s+)$/g, '').replace(/^\s+/g, ''); 183} 184 185function strlen(str) { 186 return (BROWSER.ie && str.indexOf('\n') != -1) ? str.replace(/\r?\n/g, '_').length : str.length; 187} 188 189function mb_strlen(str) { 190 var len = 0; 191 for(var i = 0; i < str.length; i++) { 192 len += str.charCodeAt(i) < 0 || str.charCodeAt(i) > 255 ? (charset == 'utf-8' ? 3 : 2) : 1; 193 } 194 return len; 195} 196 197function mb_cutstr(str, maxlen, dot) { 198 var len = 0; 199 var ret = ''; 200 var dot = !dot ? '...' : ''; 201 maxlen = maxlen - dot.length; 202 for(var i = 0; i < str.length; i++) { 203 len += str.charCodeAt(i) < 0 || str.charCodeAt(i) > 255 ? (charset == 'utf-8' ? 3 : 2) : 1; 204 if(len > maxlen) { 205 ret += dot; 206 break; 207 } 208 ret += str.substr(i, 1); 209 } 210 return ret; 211} 212 213function preg_replace(search, replace, str, regswitch) { 214 var regswitch = !regswitch ? 'ig' : regswitch; 215 var len = search.length; 216 for(var i = 0; i < len; i++) { 217 re = new RegExp(search[i], regswitch); 218 str = str.replace(re, typeof replace == 'string' ? replace : (replace[i] ? replace[i] : replace[0])); 219 } 220 return str; 221} 222 223function htmlspecialchars(str) { 224 return preg_replace(['&', '<', '>', '"'], ['&', '<', '>', '"'], str); 225} 226 227function display(id) { 228 var obj = $(id); 229 if(obj.style.visibility) { 230 obj.style.visibility = obj.style.visibility == 'visible' ? 'hidden' : 'visible'; 231 } else { 232 obj.style.display = obj.style.display == '' ? 'none' : ''; 233 } 234} 235 236function checkall(form, prefix, checkall) { 237 var checkall = checkall ? checkall : 'chkall'; 238 count = 0; 239 for(var i = 0; i < form.elements.length; i++) { 240 var e = form.elements[i]; 241 if(e.name && e.name != checkall && (!prefix || (prefix && e.name.match(prefix)))) { 242 e.checked = form.elements[checkall].checked; 243 if(e.checked) { 244 count++; 245 } 246 } 247 } 248 return count; 249} 250 251function setcookie(cookieName, cookieValue, seconds, path, domain, secure) { 252 var expires = new Date(); 253 if(cookieValue == '' || seconds < 0) { 254 cookieValue = ''; 255 seconds = -2592000; 256 } 257 expires.setTime(expires.getTime() + seconds * 1000); 258 domain = !domain ? cookiedomain : domain; 259 path = !path ? cookiepath : path; 260 document.cookie = escape(cookiepre + cookieName) + '=' + escape(cookieValue) 261 + (expires ? '; expires=' + expires.toGMTString() : '') 262 + (path ? '; path=' + path : '/') 263 + (domain ? '; domain=' + domain : '') 264 + (secure ? '; secure' : ''); 265} 266 267function getcookie(name, nounescape) { 268 name = cookiepre + name; 269 var cookie_start = document.cookie.indexOf(name); 270 var cookie_end = document.cookie.indexOf(";", cookie_start); 271 if(cookie_start == -1) { 272 return ''; 273 } else { 274 var v = document.cookie.substring(cookie_start + name.length + 1, (cookie_end > cookie_start ? cookie_end : document.cookie.length)); 275 return !nounescape ? unescape(v) : v; 276 } 277} 278 279function Ajax(recvType, waitId) { 280 281 for(var stackId = 0; stackId < AJAX['stack'].length && AJAX['stack'][stackId] != 0; stackId++); 282 AJAX['stack'][stackId] = 1; 283 284 var aj = new Object(); 285 286 aj.loading = lng['wait_please']; 287 aj.recvType = recvType ? recvType : 'XML'; 288 aj.waitId = waitId ? $(waitId) : null; 289 290 aj.resultHandle = null; 291 aj.sendString = ''; 292 aj.targetUrl = ''; 293 aj.stackId = 0; 294 aj.stackId = stackId; 295 296 aj.setLoading = function(loading) { 297 if(typeof loading !== 'undefined' && loading !== null) aj.loading = loading; 298 }; 299 300 aj.setRecvType = function(recvtype) { 301 aj.recvType = recvtype; 302 }; 303 304 aj.setWaitId = function(waitid) { 305 aj.waitId = typeof waitid == 'object' ? waitid : $(waitid); 306 }; 307 308 aj.createXMLHttpRequest = function() { 309 var request = false; 310 if(window.XMLHttpRequest) { 311 request = new XMLHttpRequest(); 312 if(request.overrideMimeType) { 313 request.overrideMimeType('text/xml'); 314 } 315 } else if(window.ActiveXObject) { 316 var versions = ['Microsoft.XMLHTTP', 'MSXML.XMLHTTP', 'Microsoft.XMLHTTP', 'Msxml2.XMLHTTP.7.0', 'Msxml2.XMLHTTP.6.0', 'Msxml2.XMLHTTP.5.0', 'Msxml2.XMLHTTP.4.0', 'MSXML2.XMLHTTP.3.0', 'MSXML2.XMLHTTP']; 317 for(var i=0; i<versions.length; i++) { 318 try { 319 request = new ActiveXObject(versions[i]); 320 if(request) { 321 return request; 322 } 323 } catch(e) {} 324 } 325 } 326 return request; 327 }; 328 329 aj.XMLHttpRequest = aj.createXMLHttpRequest(); 330 aj.showLoading = function() { 331 if(aj.waitId && (aj.XMLHttpRequest.readyState != 4 || aj.XMLHttpRequest.status != 200)) { 332 aj.waitId.style.display = ''; 333 aj.waitId.innerHTML = '<span><img src="' + IMGDIR + '/loading.gif" class="vm"> ' + aj.loading + '</span>'; 334 } 335 }; 336 337 aj.processHandle = function() { 338 if(aj.XMLHttpRequest.readyState == 4 && aj.XMLHttpRequest.status == 200) { 339 for(k in AJAX['url']) {
340 if(AJAX['url'][k] == aj.targetUrl) { 341 AJAX['url'][k] = null; 342 } 343 } 344 if(aj.waitId) { 345 aj.waitId.style.display = 'none'; 346 } 347 if(aj.recvType == 'HTML') { 348 aj.resultHandle(aj.XMLHttpRequest.responseText, aj); 349 } else if(aj.recvType == 'XML') { 350 if(!aj.XMLHttpRequest.responseXML || !aj.XMLHttpRequest.responseXML.lastChild || aj.XMLHttpRequest.responseXML.lastChild.localName == 'parsererror') { 351 aj.resultHandle('<a href="' + aj.targetUrl + '" target="_blank" style="color:red">'+lng['int_error']+'</a>' , aj); 352 } else { 353 aj.resultHandle(aj.XMLHttpRequest.responseXML.lastChild.firstChild.nodeValue, aj); 354 } 355 } 356 AJAX['stack'][aj.stackId] = 0; 357 } 358 }; 359 360 aj.get = function(targetUrl, resultHandle) { 361 targetUrl = hostconvert(targetUrl); 362 setTimeout(function(){aj.showLoading()}, 250); 363 if(in_array(targetUrl, AJAX['url'])) { 364 return false; 365 } else { 366 AJAX['url'].push(targetUrl); 367 } 368 aj.targetUrl = targetUrl; 369 aj.XMLHttpRequest.onreadystatechange = aj.processHandle; 370 aj.resultHandle = resultHandle; 371 var attackevasive = isUndefined(attackevasive) ? 0 : attackevasive; 372 var delay = attackevasive & 1 ? (aj.stackId + 1) * 1001 : 100; 373 if(window.XMLHttpRequest) { 374 setTimeout(function(){ 375 aj.XMLHttpRequest.open('GET', aj.targetUrl); 376 aj.XMLHttpRequest.setRequestHeader('X-Requested-With', 'XMLHttpRequest'); 377 aj.XMLHttpRequest.send(null);}, delay); 378 } else { 379 setTimeout(function(){ 380 aj.XMLHttpRequest.open("GET", targetUrl, true); 381 aj.XMLHttpRequest.setRequestHeader('X-Requested-With', 'XMLHttpRequest'); 382 aj.XMLHttpRequest.send();}, delay); 383 } 384 }; 385 aj.post = function(targetUrl, sendString, resultHandle) { 386 targetUrl = hostconvert(targetUrl); 387 setTimeout(function(){aj.showLoading()}, 250); 388 if(in_array(targetUrl, AJAX['url'])) { 389 return false; 390 } else { 391 AJAX['url'].push(targetUrl); 392 } 393 aj.targetUrl = targetUrl; 394 aj.sendString = sendString; 395 aj.XMLHttpRequest.onreadystatechange = aj.processHandle; 396 aj.resultHandle = resultHandle; 397 aj.XMLHttpRequest.open('POST', targetUrl); 398 aj.XMLHttpRequest.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded'); 399 aj.XMLHttpRequest.setRequestHeader('X-Requested-With', 'XMLHttpRequest'); 400 aj.XMLHttpRequest.send(aj.sendString); 401 }; 402 return aj; 403} 404 405function getHost(url) { 406 var host = "null"; 407 if(typeof url == "undefined"|| null == url) { 408 url = window.location.href; 409 } 410 var regex = /^\w+\:\/\/([^\/]*).*/; 411 var match = url.match(regex); 412 if(typeof match != "undefined" && null != match) { 413 host = match[1]; 414 } 415 return host; 416} 417 418function hostconvert(url) { 419 if(!url.match(/^https?:\/\//)) url = SITEURL + url; 420 var url_host = getHost(url); 421 var cur_host = getHost().toLowerCase(); 422 if(url_host && cur_host != url_host) { 423 url = url.replace(url_host, cur_host); 424 } 425 return url; 426} 427 428function newfunction(func) { 429 var args = []; 430 for(var i=1; i<arguments.length; i++) args.push(arguments[i]); 431 return function(event) { 432 doane(event); 433 window[func].apply(window, args); 434 return false; 435 } 436} 437 438function evalscript(s) { 439 if(s.indexOf('<script') == -1) return s; 440 var p = /<script[^\>]*?>([^\x00]*?)<\/script>/ig; 441 var arr = []; 442 while(arr = p.exec(s)) { 443 var p1 = /<script[^\>]*?src=\"([^\>]*?)\"[^\>]*?(reload=\"1\")?(?:charset=\"([\w\-]+?)\")?><\/script>/i; 444 var arr1 = []; 445 arr1 = p1.exec(arr[0]); 446 if(arr1) { 447 appendscript(arr1[1], '', arr1[2], arr1[3]); 448 } else { 449 p1 = /<script(.*?)>([^\x00]+?)<\/script>/i; 450 arr1 = p1.exec(arr[0]); 451 appendscript('', arr1[2], arr1[1].indexOf('reload=') != -1); 452 } 453 } 454 return s; 455} 456 457var safescripts = {}, evalscripts = []; 458function safescript(id, call, seconds, times, timeoutcall, endcall, index) { 459 seconds = seconds || 1000; 460 times = times || 0; 461 var checked = true; 462 try { 463 if(typeof call == 'function') { 464 call(); 465 } else { 466 eval(call); 467 } 468 } catch(e) { 469 checked = false; 470 } 471 if(!checked) { 472 if(!safescripts[id] || !index) { 473 safescripts[id] = safescripts[id] || []; 474 safescripts[id].push({ 475 'times':0, 476 'si':setInterval(function () { 477 safescript(id, call, seconds, times, timeoutcall, endcall, safescripts[id].length); 478 }, seconds) 479 }); 480 } else { 481 index = (index || 1) - 1; 482 safescripts[id][index]['times']++; 483 if(safescripts[id][index]['times'] >= times) { 484 clearInterval(safescripts[id][index]['si']); 485 if(typeof timeoutcall == 'function') { 486 timeoutcall(); 487 } else { 488 eval(timeoutcall); 489 } 490 } 491 } 492 } else { 493 try { 494 index = (index || 1) - 1; 495 if(safescripts[id][index]['si']) { 496 clearInterval(safescripts[id][index]['si']); 497 } 498 if(typeof endcall == 'function') { 499 endcall(); 500 } else { 501 eval(endcall); 502 } 503 } catch(e) {} 504 } 505} 506 507function $F(func, args, script) { 508 var run = function () { 509 var argc = args.length, s = ''; 510 for(i = 0;i < argc;i++) { 511 s += ',args[' + i + ']'; 512 } 513 eval('var check = typeof ' + func + ' == \'function\''); 514 if(check) { 515 eval(func + '(' + s.substr(1) + ')'); 516 } else { 517 setTimeout(function () { checkrun(); }, 50); 518 } 519 }; 520 var checkrun = function () { 521 if(JSLOADED[src]) { 522 run(); 523 } else { 524 setTimeout(function () { checkrun(); }, 50); 525 } 526 }; 527 script = script || 'common_extra'; 528 src = JSPATH + script + '.js?' + VERHASH; 529 if(!JSLOADED[src]) { 530 appendscript(src); 531 } 532 checkrun(); 533} 534 535function appendscript(src, text, reload, charset) { 536 var id = hash(src + text); 537 if(!reload && in_array(id, evalscripts)) return; 538 if(reload && $(id)) { 539 $(id).parentNode.removeChild($(id)); 540 } 541 542 evalscripts.push(id); 543 var scriptNode = document.createElement("script"); 544 scriptNode.type = "text/javascript"; 545 scriptNode.id = id; 546 scriptNode.charset = charset ? charset : (BROWSER.firefox ? document.characterSet : document.charset); 547 try { 548 if(src) { 549 scriptNode.src = src; 550 scriptNode.onloadDone = false; 551 scriptNode.onload = function () { 552 scriptNode.onloadDone = true; 553 JSLOADED[src] = 1; 554 }; 555 scriptNode.onreadystatechange = function () { 556 if((scriptNode.readyState == 'loaded' || scriptNode.readyState == 'complete') && !scriptNode.onloadDone) { 557 scriptNode.onloadDone = true; 558 JSLOADED[src] = 1; 559 } 560 }; 561 } else if(text){ 562 scriptNode.text = text; 563 } 564 document.getElementsByTagName('head')[0].appendChild(scriptNode); 565 } catch(e) {} 566} 567 568function stripscript(s) { 569 return s.replace(/<script.*?>.*?<\/script>/ig, ''); 570} 571 572function ajaxupdateevents(obj, tagName) { 573 tagName = tagName ? tagName : 'A'; 574 var objs = obj.getElementsByTagName(tagName); 575 for(k in objs) { 576 var o = objs[k]; 577 ajaxupdateevent(o); 578 } 579} 580 581function ajaxupdateevent(o) { 582 if(typeof o == 'object' && o.getAttribute) { 583 if(o.getAttribute('ajaxtarget')) { 584 if(!o.id) o.id = Math.random(); 585 var ajaxevent = o.getAttribute('ajaxevent') ? o.getAttribute('ajaxevent') : 'click'; 586 var ajaxurl = o.getAttribute('ajaxurl') ? o.getAttribute('ajaxurl') : o.href; 587 _attachEvent(o, ajaxevent, newfunction('ajaxget', ajaxurl, o.getAttribute('ajaxtarget'), o.getAttribute('ajaxwaitid'), o.getAttribute('ajaxloading'), o.getAttribute('ajaxdisplay'))); 588 if(o.getAttribute('ajaxfunc')) { 589 o.getAttribute('ajaxfunc').match(/(\w+)\((.+?)\)/); 590 _attachEvent(o, ajaxevent, newfunction(RegExp.$1, RegExp.$2)); 591 } 592 } 593 } 594} 595 596function ajaxget(url, showid, waitid, loading, display, recall) { 597 waitid = typeof waitid == 'undefined' || waitid === null ? showid : waitid; 598 var x = new Ajax(); 599 x.setLoading(loading); 600 x.setWaitId(waitid); 601 x.display = typeof display == 'undefined' || display == null ? '' : display; 602 x.showId = $(showid); 603 604 if(url.substr(strlen(url) - 1) == '#') { 605 url = url.substr(0, strlen(url) - 1); 606 x.autogoto = 1; 607 } 608 609 var url = url + '&inajax=1&ajaxtarget=' + showid; 610 x.get(url, function(s, x) { 611 var evaled = false; 612 if(s.indexOf('ajaxerror') != -1) { 613 evalscript(s); 614 evaled = true; 615 } 616 if(!evaled && (typeof ajaxerror == 'undefined' || !ajaxerror)) { 617 if(x.showId) { 618 x.showId.style.display = x.display; 619 ajaxinnerhtml(x.showId, s); 620 ajaxupdateevents(x.showId); 621 if(x.autogoto) scroll(0, x.showId.offsetTop); 622 } 623 } 624 625 ajaxerror = null; 626 if(recall && typeof recall == 'function') { 627 recall(); 628 } else if(recall) { 629 eval(recall); 630 } 631 if(!evaled) evalscript(s); 632 }); 633} 634 635function ajaxpost(formid, showid, waitid, showidclass, submitbtn, recall) { 636 var waitid = typeof waitid == 'undefined' || waitid === null ? showid : (waitid !== '' ? waitid : ''); 637 var showidclass = !showidclass ? '' : showidclass; 638 var ajaxframeid = 'ajaxframe'; 639 var ajaxframe = $(ajaxframeid); 640 var formtarget = $(formid).target; 641 642 var handleResult = function() { 643 var s = ''; 644 var evaled = false; 645 646 showloading('none'); 647 try { 648 s = $(ajaxframeid).contentWindow.document.XMLDocument.text; 649 } catch(e) { 650 try { 651 s = $(ajaxframeid).contentWindow.document.documentElement.firstChild.wholeText; 652 } catch(e) { 653 try { 654 s = $(ajaxframeid).contentWindow.document.documentElement.firstChild.nodeValue; 655 } catch(e) { 656 s = lng['int_error']; 657 } 658 } 659 } 660 if(s != '' && s.indexOf('ajaxerror') != -1) { 661 evalscript(s); 662 evaled = true; 663 } 664 if(showidclass) { 665 if(showidclass != 'onerror') { 666 $(showid).className = showidclass; 667 } else { 668 showError(s); 669 ajaxerror = true; 670 } 671 } 672 if(submitbtn) { 673 submitbtn.disabled = false; 674 } 675 if(!evaled && (typeof ajaxerror == 'undefined' || !ajaxerror)) { 676 ajaxinnerhtml($(showid), s); 677 } 678 ajaxerror = null; 679 if($(formid)) $(formid).target = formtarget; 680 if(typeof recall == 'function') { 681 recall(); 682 } else { 683 eval(recall); 684 } 685 if(!evaled) evalscript(s); 686 ajaxframe.loading = 0; 687 $('append_parent').removeChild(ajaxframe.parentNode); 688 }; 689 if(!ajaxframe) { 690 var div = document.createElement('div'); 691 div.style.display = 'none'; 692 div.innerHTML = '<iframe name="' + ajaxframeid + '" id="' + ajaxframeid + '" loading="1"></iframe>'; 693 $('append_parent').appendChild(div); 694 ajaxframe = $(ajaxframeid); 695 } else if(ajaxframe.loading) { 696 return false; 697 } 698 699 _attachEvent(ajaxframe, 'load', handleResult); 700 701 showloading(); 702 $(formid).target = ajaxframeid; 703 var action = $(formid).getAttribute('action'); 704 action = hostconvert(action); 705 $(formid).action = action.replace(/\&inajax\=1/g, '')+'&inajax=1'; 706 $(formid).submit(); 707 if(submitbtn) { 708 submitbtn.disabled = true; 709 } 710 doane(); 711 return false; 712} 713 714function ajaxmenu(ctrlObj, timeout, cache, duration, pos, recall, idclass, contentclass) { 715 if(!ctrlObj.getAttribute('mid')) { 716 var ctrlid = ctrlObj.id; 717 if(!ctrlid) { 718 ctrlObj.id = 'ajaxid_' + Math.random(); 719 } 720 } else { 721 var ctrlid = ctrlObj.getAttribute('mid'); 722 if(!ctrlObj.id) { 723 ctrlObj.id = 'ajaxid_' + Math.random(); 724 } 725 } 726 var menuid = ctrlid + '_menu'; 727 var menu = $(menuid); 728 if(isUndefined(timeout)) timeout = 3000; 729 if(isUndefined(cache)) cache = 1;
730 if(isUndefined(pos)) pos = '43'; 731 if(isUndefined(duration)) duration = timeout > 0 ? 0 : 3; 732 if(isUndefined(idclass)) idclass = 'p_pop'; 733 if(isUndefined(contentclass)) contentclass = 'p_opt'; 734 var func = function() { 735 showMenu({'ctrlid':ctrlObj.id,'menuid':menuid,'duration':duration,'timeout':timeout,'pos':pos,'cache':cache,'layer':2}); 736 if(typeof recall == 'function') { 737 recall(); 738 } else { 739 eval(recall); 740 } 741 }; 742 743 if(menu) { 744 if(menu.style.display == '') { 745 hideMenu(menuid); 746 } else { 747 func(); 748 } 749 } else { 750 menu = document.createElement('div'); 751 menu.id = menuid; 752 menu.style.display = 'none'; 753 menu.className = idclass; 754 menu.innerHTML = '<div class="' + contentclass + '" id="' + menuid + '_content"></div>'; 755 $('append_parent').appendChild(menu); 756 var url = (!isUndefined(ctrlObj.href) ? ctrlObj.href : ctrlObj.attributes['href'].value); 757 url += (url.indexOf('?') != -1 ? '&' :'?') + 'ajaxmenu=1'; 758 ajaxget(url, menuid + '_content', 'ajaxwaitid', '', '', func); 759 } 760 doane(); 761} 762 763function hash(string, length) { 764 var length = length ? length : 32; 765 var start = 0; 766 var i = 0; 767 var result = ''; 768 filllen = length - string.length % length; 769 for(i = 0; i < filllen; i++){ 770 string += "0"; 771 } 772 while(start < string.length) { 773 result = stringxor(result, string.substr(start, length)); 774 start += length; 775 } 776 return result; 777} 778 779function stringxor(s1, s2) { 780 var s = ''; 781 var hash = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'; 782 var max = Math.max(s1.length, s2.length); 783 for(var i=0; i<max; i++) { 784 var k = s1.charCodeAt(i) ^ s2.charCodeAt(i); 785 s += hash.charAt(k % 52); 786 } 787 return s; 788} 789 790function showPreview(val, id) { 791 var showObj = $(id); 792 if(showObj) { 793 showObj.innerHTML = val.replace(/\n/ig, "<bupdateseccoder />"); 794 } 795} 796 797function showloading(display, waiting) { 798 var display = display ? display : 'block'; 799 var waiting = waiting ? waiting : lng['wait_please']; 800 $('ajaxwaitid').innerHTML = waiting; 801 $('ajaxwaitid').style.display = display; 802} 803 804function ajaxinnerhtml(showid, s) { 805 if(showid.tagName != 'TBODY') { 806 showid.innerHTML = s; 807 } else { 808 while(showid.firstChild) { 809 showid.firstChild.parentNode.removeChild(showid.firstChild); 810 } 811 var div1 = document.createElement('DIV'); 812 div1.id = showid.id+'_div'; 813 div1.innerHTML = '<table><tbody id="'+showid.id+'_tbody">'+s+'</tbody></table>'; 814 $('append_parent').appendChild(div1); 815 var trs = div1.getElementsByTagName('TR'); 816 var l = trs.length; 817 for(var i=0; i<l; i++) { 818 showid.appendChild(trs[0]); 819 } 820 var inputs = div1.getElementsByTagName('INPUT'); 821 var l = inputs.length; 822 for(var i=0; i<l; i++) { 823 showid.appendChild(inputs[0]); 824 } 825 div1.parentNode.removeChild(div1); 826 } 827} 828 829function doane(event, preventDefault, stopPropagation) { 830 var preventDefault = isUndefined(preventDefault) ? 1 : preventDefault; 831 var stopPropagation = isUndefined(stopPropagation) ? 1 : stopPropagation; 832 e = event ? event : window.event; 833 if(!e) { 834 e = getEvent(); 835 } 836 if(!e) { 837 return null; 838 } 839 if(preventDefault) { 840 if(e.preventDefault) { 841 e.preventDefault(); 842 } else { 843 e.returnValue = false; 844 } 845 } 846 if(stopPropagation) { 847 if(e.stopPropagation) { 848 e.stopPropagation(); 849 } else { 850 e.cancelBubble = true; 851 } 852 } 853 return e; 854} 855 856function loadcss(cssname) { 857 if(!CSSLOADED[cssname]) { 858 if(!$('css_' + cssname)) { 859 css = document.createElement('link'); 860 css.id = 'css_' + cssname, 861 css.type = 'text/css'; 862 css.rel = 'stylesheet'; 863 css.href = 'data/cache/style_' + STYLEID + '_' + cssname + '.css?' + VERHASH; 864 var headNode = document.getElementsByTagName("head")[0]; 865 headNode.appendChild(css); 866 } else { 867 $('css_' + cssname).href = 'data/cache/style_' + STYLEID + '_' + cssname + '.css?' + VERHASH; 868 } 869 CSSLOADED[cssname] = 1; 870 } 871} 872 873function showMenu(v) { 874 var ctrlid = isUndefined(v['ctrlid']) ? v : v['ctrlid']; 875 var showid = isUndefined(v['showid']) ? ctrlid : v['showid']; 876 var menuid = isUndefined(v['menuid']) ? showid + '_menu' : v['menuid']; 877 var ctrlObj = $(ctrlid); 878 var menuObj = $(menuid); 879 if(!menuObj) return; 880 var mtype = isUndefined(v['mtype']) ? 'menu' : v['mtype']; 881 var evt = isUndefined(v['evt']) ? 'mouseover' : v['evt']; 882 var pos = isUndefined(v['pos']) ? '43' : v['pos']; 883 var layer = isUndefined(v['layer']) ? 1 : v['layer']; 884 var duration = isUndefined(v['duration']) ? 2 : v['duration']; 885 var timeout = isUndefined(v['timeout']) ? 250 : v['timeout']; 886 var maxh = isUndefined(v['maxh']) ? 600 : v['maxh']; 887 var cache = isUndefined(v['cache']) ? 1 : v['cache']; 888 var drag = isUndefined(v['drag']) ? '' : v['drag']; 889 var dragobj = drag && $(drag) ? $(drag) : menuObj; 890 var fade = isUndefined(v['fade']) ? 0 : v['fade']; 891 var cover = isUndefined(v['cover']) ? 0 : v['cover']; 892 var zindex = isUndefined(v['zindex']) ? JSMENU['zIndex']['menu'] : v['zindex']; 893 var ctrlclass = isUndefined(v['ctrlclass']) ? '' : v['ctrlclass']; 894 var winhandlekey = isUndefined(v['win']) ? '' : v['win']; 895 zindex = cover ? zindex + 500 : zindex; 896 if(typeof JSMENU['active'][layer] == 'undefined') { 897 JSMENU['active'][layer] = []; 898 } 899 900 for(i in EXTRAFUNC['showmenu']) { 901 try { 902 eval(EXTRAFUNC['showmenu'][i] + '()'); 903 } catch(e) {} 904 } 905 906 if(evt == 'click' && in_array(menuid, JSMENU['active'][layer]) && mtype != 'win') { 907 hideMenu(menuid, mtype); 908 return; 909 } 910 if(mtype == 'menu') { 911 hideMenu(layer, mtype); 912 } 913 914 if(ctrlObj) { 915 if(!ctrlObj.getAttribute('initialized')) { 916 ctrlObj.setAttribute('initialized', true); 917 ctrlObj.unselectable = true; 918 919 ctrlObj.outfunc = typeof ctrlObj.onmouseout == 'function' ? ctrlObj.onmouseout : null; 920 ctrlObj.onmouseout = function() { 921 if(this.outfunc) this.outfunc(); 922 if(duration < 3 && !JSMENU['timer'][menuid]) { 923 JSMENU['timer'][menuid] = setTimeout(function () { 924 hideMenu(menuid, mtype); 925 }, timeout); 926 } 927 }; 928 929 ctrlObj.overfunc = typeof ctrlObj.onmouseover == 'function' ? ctrlObj.onmouseover : null; 930 ctrlObj.onmouseover = function(e) { 931 doane(e); 932 if(this.overfunc) this.overfunc(); 933 if(evt == 'click') { 934 clearTimeout(JSMENU['timer'][menuid]); 935 JSMENU['timer'][menuid] = null; 936 } else { 937 for(var i in JSMENU['timer']) { 938 if(JSMENU['timer'][i]) { 939 clearTimeout(JSMENU['timer'][i]); 940 JSMENU['timer'][i] = null; 941 } 942 } 943 } 944 }; 945 } 946 } 947 948 if(!menuObj.getAttribute('initialized')) { 949 menuObj.setAttribute('initialized', true); 950 menuObj.ctrlkey = ctrlid; 951 menuObj.mtype = mtype; 952 menuObj.layer = layer; 953 menuObj.cover = cover; 954 if(ctrlObj && ctrlObj.getAttribute('fwin')) {menuObj.scrolly = true;} 955 menuObj.style.position = 'absolute'; 956 menuObj.style.zIndex = zindex + layer; 957 menuObj.onclick = function(e) { 958 return doane(e, 0, 1); 959 }; 960 if(duration < 3) { 961 if(duration > 1) { 962 menuObj.onmouseover = function() { 963 clearTimeout(JSMENU['timer'][menuid]); 964 JSMENU['timer'][menuid] = null; 965 }; 966 } 967 if(duration != 1) { 968 menuObj.onmouseout = function() { 969 JSMENU['timer'][menuid] = setTimeout(function () { 970 hideMenu(menuid, mtype); 971 }, timeout); 972 }; 973 } 974 } 975 if(cover) { 976 var coverObj = document.createElement('div');
977 coverObj.id = menuid + '_cover'; 978 coverObj.style.position = 'absolute'; 979 coverObj.style.zIndex = menuObj.style.zIndex - 1; 980 coverObj.style.left = coverObj.style.top = '0px'; 981 coverObj.style.width = '100%'; 982 coverObj.style.height = Math.max(document.documentElement.clientHeight, document.body.offsetHeight) + 'px'; 983 coverObj.style.backgroundColor = '#000'; 984 coverObj.style.filter = 'progid:DXImageTransform.Microsoft.Alpha(opacity=50)'; 985 coverObj.style.opacity = 0.5; 986 coverObj.onclick = function () { hideMenu(); }; 987 $('append_parent').appendChild(coverObj); 988 _attachEvent(window, 'load', function () { 989 coverObj.style.height = Math.max(document.documentElement.clientHeight, document.body.offsetHeight) + 'px'; 990 }, document); 991 } 992 } 993 if(drag) { 994 dragobj.style.cursor = 'move'; 995 dragobj.onmousedown = function(event) {try{dragMenu(menuObj, event, 1);}catch(e){}}; 996 } 997 998 if(cover) $(menuid + '_cover').style.display = ''; 999 if(fade) { 1000 var O = 0; 1001 var fadeIn = function(O) { 1002 if(O > 100) { 1003 clearTimeout(fadeInTimer); 1004 return; 1005 } 1006 menuObj.style.filter = 'progid:DXImageTransform.Microsoft.Alpha(opacity=' + O + ')'; 1007 menuObj.style.opacity = O / 100; 1008 O += 20; 1009 var fadeInTimer = setTimeout(function () { 1010 fadeIn(O); 1011 }, 40); 1012 }; 1013 fadeIn(O); 1014 menuObj.fade = true; 1015 } else { 1016 menuObj.fade = false; 1017 } 1018 menuObj.style.display = ''; 1019 if(ctrlObj && ctrlclass) { 1020 ctrlObj.className += ' ' + ctrlclass; 1021 menuObj.setAttribute('ctrlid', ctrlid); 1022 menuObj.setAttribute('ctrlclass', ctrlclass); 1023 } 1024 if(pos != '*') { 1025 setMenuPosition(showid, menuid, pos); 1026 } 1027 if(BROWSER.ie && BROWSER.ie < 7 && winhandlekey && $('fwin_' + winhandlekey)) { 1028 $(menuid).style.left = (parseInt($(menuid).style.left) - parseInt($('fwin_' + winhandlekey).style.left)) + 'px'; 1029 $(menuid).style.top = (parseInt($(menuid).style.top) - parseInt($('fwin_' + winhandlekey).style.top)) + 'px'; 1030 } 1031 if(maxh && menuObj.scrollHeight > maxh) { 1032 menuObj.style.height = maxh + 'px'; 1033 if(BROWSER.opera) { 1034 menuObj.style.overflow = 'auto'; 1035 } else { 1036 menuObj.style.overflowY = 'auto'; 1037 } 1038 } 1039 1040 if(!duration) { 1041 setTimeout('hideMenu(\'' + menuid + '\', \'' + mtype + '\')', timeout); 1042 } 1043 1044 if(!in_array(menuid, JSMENU['active'][layer])) JSMENU['active'][layer].push(menuid); 1045 menuObj.cache = cache; 1046 if(layer > JSMENU['layer']) { 1047 JSMENU['layer'] = layer; 1048 } 1049} 1050var delayShowST = null; 1051function delayShow(ctrlObj, call, time) { 1052 if(typeof ctrlObj == 'object') { 1053 var ctrlid = ctrlObj.id; 1054 call = call || function () { showMenu(ctrlid); }; 1055 } 1056 var time = isUndefined(time) ? 500 : time; 1057 delayShowST = setTimeout(function () { 1058 if(typeof call == 'function') { 1059 call(); 1060 } else { 1061 eval(call); 1062 } 1063 }, time); 1064 if(!ctrlObj.delayinit) { 1065 _attachEvent(ctrlObj, 'mouseout', function() {clearTimeout(delayShowST);}); 1066 ctrlObj.delayinit = 1; 1067 } 1068} 1069 1070var dragMenuDisabled = false; 1071function dragMenu(menuObj, e, op) { 1072 e = e ? e : window.event; 1073 if(op == 1) { 1074 if(dragMenuDisabled || in_array(e.target ? e.target.tagName : e.srcElement.tagName, ['TEXTAREA', 'INPUT', 'BUTTON', 'SELECT'])) { 1075 return; 1076 } 1077 JSMENU['drag'] = [e.clientX, e.clientY]; 1078 JSMENU['drag'][2] = parseInt(menuObj.style.left); 1079 JSMENU['drag'][3] = parseInt(menuObj.style.top); 1080 document.onmousemove = function(e) {try{dragMenu(menuObj, e, 2);}catch(err){}}; 1081 document.onmouseup = function(e) {try{dragMenu(menuObj, e, 3);}catch(err){}}; 1082 doane(e); 1083 }else if(op == 2 && JSMENU['drag'][0]) { 1084 var menudragnow = [e.clientX, e.clientY]; 1085 menuObj.style.left = (JSMENU['drag'][2] + menudragnow[0] - JSMENU['drag'][0]) + 'px'; 1086 menuObj.style.top = (JSMENU['drag'][3] + menudragnow[1] - JSMENU['drag'][1]) + 'px'; 1087 doane(e); 1088 }else if(op == 3) { 1089 JSMENU['drag'] = []; 1090 document.onmousemove = null; 1091 document.onmouseup = null; 1092 } 1093} 1094function setMenuPosition(showid, menuid, pos) { 1095 var showObj = $(showid); 1096 var menuObj = menuid ? $(menuid) : $(showid + '_menu'); 1097 if(isUndefined(pos) || !pos) pos = '43'; 1098 var basePoint = parseInt(pos.substr(0, 1)); 1099 var direction = parseInt(pos.substr(1, 1)); 1100 var important = pos.indexOf('!') != -1 ? 1 : 0; 1101 var sxy = 0, sx = 0, sy = 0, sw = 0, sh = 0, ml = 0, mt = 0, mw = 0, mcw = 0, mh = 0, mch = 0, bpl = 0, bpt = 0; 1102 1103 if(!menuObj || (basePoint > 0 && !showObj)) return; 1104 if(showObj) { 1105 sxy = fetchOffset(showObj); 1106 sx = sxy['left']; 1107 sy = sxy['top']; 1108 sw = showObj.offsetWidth; 1109 sh = showObj.offsetHeight; 1110 } 1111 mw = menuObj.offsetWidth; 1112 mcw = menuObj.clientWidth; 1113 mh = menuObj.offsetHeight; 1114 mch = menuObj.clientHeight; 1115 1116 switch(basePoint) { 1117 case 1: 1118 bpl = sx; 1119 bpt = sy; 1120 break; 1121 case 2: 1122 bpl = sx + sw; 1123 bpt = sy; 1124 break; 1125 case 3: 1126 bpl = sx + sw; 1127 bpt = sy + sh; 1128 break; 1129 case 4: 1130 bpl = sx; 1131 bpt = sy + sh; 1132 break; 1133 } 1134 switch(direction) { 1135 case 0: 1136 menuObj.style.left = (document.body.clientWidth - menuObj.clientWidth) / 2 + 'px'; 1137 mt = (document.documentElement.clientHeight - menuObj.clientHeight) / 2; 1138 break; 1139 case 1: 1140 ml = bpl - mw; 1141 mt = bpt - mh; 1142 break; 1143 case 2: 1144 ml = bpl; 1145 mt = bpt - mh; 1146 break; 1147 case 3: 1148 ml = bpl; 1149 mt = bpt; 1150 break; 1151 case 4: 1152 ml = bpl - mw; 1153 mt = bpt; 1154 break; 1155 } 1156 var scrollTop = Math.max(document.documentElement.scrollTop, document.body.scrollTop); 1157 var scrollLeft = Math.max(document.documentElement.scrollLeft, document.body.scrollLeft); 1158 if(!important) { 1159 if(in_array(direction, [1, 4]) && ml < 0) { 1160 ml = bpl; 1161 if(in_array(basePoint, [1, 4])) ml += sw; 1162 } else if(ml + mw > scrollLeft + document.body.clientWidth && sx >= mw) { 1163 ml = bpl - mw; 1164 if(in_array(basePoint, [2, 3])) { 1165 ml -= sw; 1166 } else if(basePoint == 4) { 1167 ml += sw; 1168 } 1169 } 1170 if(in_array(direction, [1, 2]) && mt < 0) { 1171 mt = bpt; 1172 if(in_array(basePoint, [1, 2])) mt += sh; 1173 } else if(mt + mh > scrollTop + document.documentElement.clientHeight && sy >= mh) { 1174 mt = bpt - mh; 1175 if(in_array(basePoint, [3, 4])) mt -= sh; 1176 } 1177 } 1178 if(pos.substr(0, 3) == '210') { 1179 ml += 69 - sw / 2; 1180 mt -= 5; 1181 if(showObj.tagName == 'TEXTAREA') { 1182 ml -= sw / 2; 1183 mt += sh / 2; 1184 } 1185 } 1186 if(direction == 0 || menuObj.scrolly) { 1187 if(BROWSER.ie && BROWSER.ie < 7) { 1188 if(direction == 0) mt += scrollTop; 1189 } else { 1190 if(menuObj.scrolly) mt -= scrollTop; 1191 menuObj.style.position = 'fixed'; 1192 } 1193 } 1194 if(ml) menuObj.style.left = ml + 'px'; 1195 if(mt) menuObj.style.top = mt + 'px'; 1196 if(direction == 0 && BROWSER.ie && !document.documentElement.clientHeight) { 1197 menuObj.style.position = 'absolute'; 1198 menuObj.style.top = (document.body.clientHeight - menuObj.clientHeight) / 2 + 'px'; 1199 } 1200 if(menuObj.style.clip && !BROWSER.opera) { 1201 menuObj.style.clip = 'rect(auto, auto, auto, auto)'; 1202 } 1203} 1204 1205function hideMenu(attr, mtype) { 1206 attr = isUndefined(attr) ? '' : attr; 1207 mtype = isUndefined(mtype) ? 'menu' : mtype; 1208 if(attr == '') { 1209 for(var i = 1; i <= JSMENU['layer']; i++) { 1210 hideMenu(i, mtype); 1211 } 1212 return; 1213 } else if(typeof attr == 'number') { 1214 for(var j in JSMENU['active'][attr]) { 1215 hideMenu(JSMENU['active'][attr][j], mtype); 1216 } 1217 return; 1218 }else if(typeof attr == 'string') { 1219 var menuObj = $(attr); 1220 if(!menuObj || (mtype && menuObj.mtype != mtype)) return; 1221 var ctrlObj = '', ctrlclass = ''; 1222 if((ctrlObj = $(menuObj.getAttribute('ctrlid'))) && (ctrlclass = menuObj.getAttribute('ctrlclass'))) { 1223 var reg = new RegExp(' ' + ctrlclass); 1224 ctrlObj.className = ctrlObj.className.replace(reg, ''); 1225 } 1226 clearTimeout(JSMENU['timer'][attr]); 1227 var hide = function() { 1228 if(menuObj.cache) { 1229 if(menuObj.style.visibility != 'hidden') { 1230 menuObj.style.display = 'none'; 1231 if(menuObj.cover) $(attr + '_cover').style.display = 'none'; 1232 } 1233 }else { 1234 menuObj.parentNode.removeChild(menuObj); 1235 if(menuObj.cover) $(attr + '_cover').parentNode.removeChild($(attr + '_cover')); 1236 } 1237 var tmp = []; 1238 for(var k in JSMENU['active'][menuObj.layer]) { 1239 if(attr != JSMENU['active'][menuObj.layer][k]) tmp.push(JSMENU['active'][menuObj.layer][k]); 1240 } 1241 JSMENU['active'][menuObj.layer] = tmp; 1242 }; 1243 if(menuObj.fade) { 1244 var O = 100; 1245 var fadeOut = function(O) { 1246 if(O == 0) { 1247 clearTimeout(fadeOutTimer); 1248 hide(); 1249 return; 1250 } 1251 menuObj.style.filter = 'progid:DXImageTransform.Microsoft.Alpha(opacity=' + O + ')'; 1252 menuObj.style.opacity = O / 100; 1253 O -= 20;
1254 var fadeOutTimer = setTimeout(function () { 1255 fadeOut(O); 1256 }, 40); 1257 }; 1258 fadeOut(O); 1259 } else { 1260 hide(); 1261 } 1262 } 1263} 1264 1265function getCurrentStyle(obj, cssproperty, csspropertyNS) { 1266 if(obj.style[cssproperty]){ 1267 return obj.style[cssproperty]; 1268 } 1269 if (obj.currentStyle) { 1270 return obj.currentStyle[cssproperty]; 1271 } else if (document.defaultView.getComputedStyle(obj, null)) { 1272 var currentStyle = document.defaultView.getComputedStyle(obj, null); 1273 var value = currentStyle.getPropertyValue(csspropertyNS); 1274 if(!value){ 1275 value = currentStyle[cssproperty]; 1276 } 1277 return value; 1278 } else if (window.getComputedStyle) { 1279 var currentStyle = window.getComputedStyle(obj, ""); 1280 return currentStyle.getPropertyValue(csspropertyNS); 1281 } 1282} 1283 1284function fetchOffset(obj, mode) { 1285 var left_offset = 0, top_offset = 0, mode = !mode ? 0 : mode; 1286 1287 if(obj.getBoundingClientRect && !mode) { 1288 var rect = obj.getBoundingClientRect(); 1289 var scrollTop = Math.max(document.documentElement.scrollTop, document.body.scrollTop); 1290 var scrollLeft = Math.max(document.documentElement.scrollLeft, document.body.scrollLeft); 1291 if(document.documentElement.dir == 'rtl') { 1292 scrollLeft = scrollLeft + document.documentElement.clientWidth - document.documentElement.scrollWidth; 1293 } 1294 left_offset = rect.left + scrollLeft - document.documentElement.clientLeft; 1295 top_offset = rect.top + scrollTop - document.documentElement.clientTop; 1296 } 1297 if(left_offset <= 0 || top_offset <= 0) { 1298 left_offset = obj.offsetLeft; 1299 top_offset = obj.offsetTop; 1300 while((obj = obj.offsetParent) != null) { 1301 position = getCurrentStyle(obj, 'position', 'position'); 1302 if(position == 'relative') { 1303 continue; 1304 } 1305 left_offset += obj.offsetLeft; 1306 top_offset += obj.offsetTop; 1307 } 1308 } 1309 return {'left' : left_offset, 'top' : top_offset}; 1310} 1311 1312function showTip(ctrlobj) { 1313 $F('_showTip', arguments); 1314} 1315 1316function showPrompt(ctrlid, evt, msg, timeout) { 1317 $F('_showPrompt', arguments); 1318} 1319 1320function showCreditPrompt() { 1321 $F('_showCreditPrompt', []); 1322} 1323 1324var showDialogST = null; 1325function showDialog(msg, mode, t, func, cover, funccancel, leftmsg, confirmtxt, canceltxt, closetime, locationtime) { 1326 clearTimeout(showDialogST); 1327 cover = isUndefined(cover) ? (mode == 'info' ? 0 : 1) : cover; 1328 leftmsg = isUndefined(leftmsg) ? '' : leftmsg; 1329 mode = in_array(mode, ['confirm', 'notice', 'info', 'right']) ? mode : 'alert'; 1330 var menuid = 'fwin_dialog'; 1331 var menuObj = $(menuid); 1332 confirmtxtdefault = lng['submit']; 1333 closetime = isUndefined(closetime) ? '' : closetime; 1334 closefunc = function () { 1335 if(typeof func == 'function') func(); 1336 else eval(func); 1337 hideMenu(menuid, 'dialog'); 1338 }; 1339 if(closetime) { 1340 leftmsg = closetime + lng['sec_after_win_closed']; 1341 showDialogST = setTimeout(closefunc, closetime * 1000); 1342 } 1343 locationtime = isUndefined(locationtime) ? '' : locationtime; 1344 if(locationtime) { 1345 leftmsg = locationtime + lng['sec_after_page_jump']; 1346 showDialogST = setTimeout(closefunc, locationtime * 1000); 1347 confirmtxtdefault = lng['jump_now']; 1348 } 1349 confirmtxt = confirmtxt ? confirmtxt : confirmtxtdefault; 1350 canceltxt = canceltxt ? canceltxt : lng['cancel']; 1351 1352 if(menuObj) hideMenu('fwin_dialog', 'dialog'); 1353 menuObj = document.createElement('div'); 1354 menuObj.style.display = 'none'; 1355 menuObj.className = 'fwinmask'; 1356 menuObj.id = menuid; 1357 $('append_parent').appendChild(menuObj); 1358 var hidedom = ''; 1359 if(!BROWSER.ie) { 1360 hidedom = '<style type="text/css">object{visibility:hidden;}</style>'; 1361 } 1362 var s = hidedom + '<table cellpadding="0" cellspacing="0" class="fwin"><tr><td class="t_l"></td><td class="t_c"></td><td class="t_r"></td></tr><tr><td class="m_l"> </td><td class="m_c"><h3 class="flb"><em>'; 1363 s += t ? t : lng['reminder']; 1364 s += '</em><span><a href="javascript:;" id="fwin_dialog_close" class="flbc" onclick="hideMenu(\'' + menuid + '\', \'dialog\')" title="'+lng['close']+'">'+lng['close']+'</a></span></h3>'; 1365 if(mode == 'info') { 1366 s += msg ? msg : ''; 1367 } else { 1368 s += '<div class="c altw"><div class="' + (mode == 'alert' ? 'alert_error' : (mode == 'right' ? 'alert_right' : 'alert_info')) + '"><p>' + msg + '</p></div></div>'; 1369 s += '<p class="o pns">' + (leftmsg ? '<span class="z xg1">' + leftmsg + '</span>' : '') + '<button id="fwin_dialog_submit" value="true" class="pn pnc"><strong>'+confirmtxt+'</strong></button>'; 1370 s += mode == 'confirm' ? '<button id="fwin_dialog_cancel" value="true" class="pn" onclick="hideMenu(\'' + menuid + '\', \'dialog\')"><strong>'+canceltxt+'</strong></button>' : ''; 1371 s += '</p>'; 1372 } 1373 s += '</td><td class="m_r"></td></tr><tr><td class="b_l"></td><td class="b_c"></td><td class="b_r"></td></tr></table>'; 1374 menuObj.innerHTML = s; 1375 if($('fwin_dialog_submit')) $('fwin_dialog_submit').onclick = function() { 1376 if(typeof func == 'function') func(); 1377 else eval(func); 1378 hideMenu(menuid, 'dialog'); 1379 }; 1380 if($('fwin_dialog_cancel')) { 1381 $('fwin_dialog_cancel').onclick = function() { 1382 if(typeof funccancel == 'function') funccancel(); 1383 else eval(funccancel); 1384 hideMenu(menuid, 'dialog'); 1385 }; 1386 $('fwin_dialog_close').onclick = $('fwin_dialog_cancel').onclick; 1387 } 1388 showMenu({'mtype':'dialog','menuid':menuid,'duration':3,'pos':'00','zindex':JSMENU['zIndex']['dialog'],'cache':0,'cover':cover}); 1389 try { 1390 if($('fwin_dialog_submit')) $('fwin_dialog_submit').focus(); 1391 } catch(e) {} 1392} 1393 1394function showWindow(k, url, mode, cache, menuv) { 1395 mode = isUndefined(mode) ? 'get' : mode; 1396 cache = isUndefined(cache) ? 1 : cache; 1397 var menuid = 'fwin_' + k; 1398 var menuObj = $(menuid); 1399 var drag = null; 1400 var loadingst = null; 1401 var hidedom = ''; 1402 1403 if(disallowfloat && disallowfloat.indexOf(k) != -1) { 1404 if(BROWSER.ie) url += (url.indexOf('?') != -1 ? '&' : '?') + 'referer=' + escape(location.href); 1405 location.href = url; 1406 doane(); 1407 return; 1408 } 1409 1410 var fetchContent = function() { 1411 if(mode == 'get') { 1412 menuObj.url = url; 1413 url += (url.search(/\?/) > 0 ? '&' : '?') + 'infloat=yes&handlekey=' + k; 1414 url += cache == -1 ? '&t='+(+ new Date()) : ''; 1415 ajaxget(url, 'fwin_content_' + k, null, '', '', function() {initMenu();show();}); 1416 } else if(mode == 'post') { 1417 menuObj.act = $(url).action; 1418 ajaxpost(url, 'fwin_content_' + k, '', '', '', function() {initMenu();show();}); 1419 } 1420 if(parseInt(BROWSER.ie) != 6) { 1421 loadingst = setTimeout(function() {showDialog('', 'info', '<img src="' + IMGDIR + '/loading.gif"> '+lng['wait_please'])}, 500); 1422 } 1423 }; 1424 var initMenu = function() { 1425 clearTimeout(loadingst); 1426 var objs = menuObj.getElementsByTagName('*'); 1427 var fctrlidinit = false; 1428 for(var i = 0; i < objs.length; i++) { 1429 if(objs[i].id) { 1430 objs[i].setAttribute('fwin', k); 1431 } 1432 if(objs[i].className == 'flb' && !fctrlidinit) { 1433 if(!objs[i].id) objs[i].id = 'fctrl_' + k; 1434 drag = objs[i].id; 1435 fctrlidinit = true; 1436 } 1437 } 1438 }; 1439 var show = function() { 1440 hideMenu('fwin_dialog', 'dialog'); 1441 v = {'mtype':'win','menuid':menuid,'duration':3,'pos':'00','zindex':JSMENU['zIndex']['win'],'drag':typeof drag == null ? '' : drag,'cache':cache}; 1442 for(k in menuv) { 1443 v[k] = menuv[k]; 1444 } 1445 showMenu(v); 1446 }; 1447 1448 if(!menuObj) { 1449 menuObj = document.createElement('div'); 1450 menuObj.id = menuid; 1451 menuObj.className = 'fwinmask'; 1452 menuObj.style.display = 'none'; 1453 $('append_parent').appendChild(menuObj); 1454 evt = ' style="cursor:move" onmousedown="dragMenu($(\'' + menuid + '\'), event, 1)" ondblclick="hideWindow(\'' + k + '\')"'; 1455 if(!BROWSER.ie) { 1456 hidedom = '<style type="text/css">object{visibility:hidden;}</style>'; 1457 } 1458 menuObj.innerHTML = hidedom + '<table cellpadding="0" cellspacing="0" class="fwin"><tr><td class="t_l"></td><td class="t_c"' + evt + '></td><td class="t_r"></td></tr><tr><td class="m_l"' + evt + ')"> </td><td class="m_c" id="fwin_content_' + k + '">' 1459 + '</td><td class="m_r"' + evt + '"></td></tr><tr><td class="b_l"></td><td class="b_c"' + evt + '></td><td class="b_r"></td></tr></table>'; 1460 if(mode == 'html') { 1461 $('fwin_content_' + k).innerHTML = url; 1462 initMenu(); 1463 show(); 1464 } else { 1465 fetchContent(); 1466 } 1467 } else if((mode == 'get' && (url != menuObj.url || cache != 1)) || (mode == 'post' && $(url).action != menuObj.act)) { 1468 fetchContent(); 1469 } else { 1470 show(); 1471 } 1472 doane(); 1473} 1474 1475function showError(msg) { 1476 var p = /<script[^\>]*?>([^\x00]*?)<\/script>/ig; 1477 msg = msg.replace(p, ''); 1478 if(msg !== '') { 1479 showDialog(msg, 'alert', lng['error_message'], null, true, null, '', '', '', 3); 1480 } 1481} 1482 1483function hideWindow(k, all, clear) { 1484 all = isUndefined(all) ? 1 : all; 1485 clear = isUndefined(clear) ? 1 : clear; 1486 hideMenu('fwin_' + k, 'win'); 1487 if(clear && $('fwin_' + k)) { 1488 $('append_parent').removeChild($('fwin_' + k)); 1489 } 1490 if(all) { 1491 hideMenu(); 1492 } 1493} 1494 1495function AC_FL_RunContent() { 1496 var str = ''; 1497 var ret = AC_GetArgs(arguments, "clsid:d27cdb6e-ae6d-11cf-96b8-444553540000", "application/x-shockwave-flash"); 1498 if(BROWSER.ie && !BROWSER.opera) { 1499 str += '<object '; 1500 for (var i in ret.objAttrs) { 1501 str += i + '="' + ret.objAttrs[i] + '" '; 1502 } 1503 str += '>'; 1504 for (var i in ret.params) { 1505 str += '<param name="' + i + '" value="' + ret.params[i] + '" /> '; 1506 } 1507 str += '</object>'; 1508 } else { 1509 str += '<embed '; 1510 for (var i in ret.embedAttrs) { 1511 str += i + '="' + ret.embedAttrs[i] + '" '; 1512 } 1513 str += '></embed>'; 1514 } 1515 return str; 1516} 1517 1518function AC_GetArgs(args, classid, mimeType) { 1519 var ret = new Object(); 1520 ret.embedAttrs = new Object(); 1521 ret.params = new Object(); 1522 ret.objAttrs = new Object(); 1523 for (var i = 0; i < args.length; i = i + 2){ 1524 var currArg = args[i].toLowerCase(); 1525 switch (currArg){ 1526 case "classid":break; 1527 case "pluginspage":ret.embedAttrs[args[i]] = 'http://www.macromedia.com/go/getflashplayer';break; 1528 case "src":ret.embedAttrs[args[i]] = args[i+1];ret.params["movie"] = args[i+1];break; 1529 case "codebase":ret.objAttrs[args[i]] = 'http://download.macromedia.com/pub/s
1529hockwave/cabs/flash/swflash.cab#version=9,0,0,0';break; 1530 case "onafterupdate":case "onbeforeupdate":case "onblur":case "oncellchange":case "onclick":case "ondblclick":case "ondrag":case "ondragend": 1531 case "ondragenter":case "ondragleave":case "ondragover":case "ondrop":case "onfinish":case "onfocus":case "onhelp":case "onmousedown": 1532 case "onmouseup":case "onmouseover":case "onmousemove":case "onmouseout":case "onkeypress":case "onkeydown":case "onkeyup":case "onload": 1533 case "onlosecapture":case "onpropertychange":case "onreadystatechange":case "onrowsdelete":case "onrowenter":case "onrowexit":case "onrowsinserted":case "onstart": 1534 case "onscroll":case "onbeforeeditfocus":case "onactivate":case "onbeforedeactivate":case "ondeactivate":case "type": 1535 case "id":ret.objAttrs[args[i]] = args[i+1];break; 1536 case "width":case "height":case "align":case "vspace": case "hspace":case "class":case "title":case "accesskey":case "name": 1537 case "tabindex":ret.embedAttrs[args[i]] = ret.objAttrs[args[i]] = args[i+1];break; 1538 default:ret.embedAttrs[args[i]] = ret.params[args[i]] = args[i+1]; 1539 } 1540 } 1541 ret.objAttrs["classid"] = classid; 1542 if(mimeType) { 1543 ret.embedAttrs["type"] = mimeType; 1544 } 1545 return ret; 1546} 1547 1548function simulateSelect(selectId, widthvalue) { 1549 var selectObj = $(selectId); 1550 if(!selectObj) return; 1551 if(BROWSER.other) { 1552 if(selectObj.getAttribute('change')) { 1553 selectObj.onchange = function () {eval(selectObj.getAttribute('change'));} 1554 } 1555 return; 1556 } 1557 var widthvalue = widthvalue ? widthvalue : 70; 1558 var defaultopt = selectObj.options[0] ? selectObj.options[0].innerHTML : ''; 1559 var defaultv = ''; 1560 var menuObj = document.createElement('div'); 1561 var ul = document.createElement('ul'); 1562 var handleKeyDown = function(e) { 1563 e = BROWSER.ie ? event : e; 1564 if(e.keyCode == 40 || e.keyCode == 38) doane(e); 1565 }; 1566 var selectwidth = (selectObj.getAttribute('width', i) ? selectObj.getAttribute('width', i) : widthvalue) + 'px'; 1567 var tabindex = selectObj.getAttribute('tabindex', i) ? selectObj.getAttribute('tabindex', i) : 1; 1568 1569 for(var i = 0; i < selectObj.options.length; i++) { 1570 var li = document.createElement('li'); 1571 li.innerHTML = selectObj.options[i].innerHTML; 1572 li.k_id = i; 1573 li.k_value = selectObj.options[i].value; 1574 if(selectObj.options[i].selected) { 1575 defaultopt = selectObj.options[i].innerHTML; 1576 defaultv = selectObj.options[i].value; 1577 li.className = 'current'; 1578 selectObj.setAttribute('selecti', i); 1579 } 1580 li.onclick = function() { 1581 if($(selectId + '_ctrl').innerHTML != this.innerHTML) { 1582 var lis = menuObj.getElementsByTagName('li'); 1583 lis[$(selectId).getAttribute('selecti')].className = ''; 1584 this.className = 'current'; 1585 $(selectId + '_ctrl').innerHTML = this.innerHTML; 1586 $(selectId).setAttribute('selecti', this.k_id); 1587 $(selectId).options.length = 0; 1588 $(selectId).options[0] = new Option('', this.k_value); 1589 eval(selectObj.getAttribute('change')); 1590 } 1591 hideMenu(menuObj.id); 1592 return false; 1593 }; 1594 ul.appendChild(li); 1595 } 1596 1597 selectObj.options.length = 0; 1598 selectObj.options[0]= new Option('', defaultv); 1599 selectObj.style.display = 'none'; 1600 selectObj.outerHTML += '<a href="javascript:;" id="' + selectId + '_ctrl" style="width:' + selectwidth + '" tabindex="' + tabindex + '">' + defaultopt + '</a>'; 1601 1602 menuObj.id = selectId + '_ctrl_menu'; 1603 menuObj.className = 'sltm'; 1604 menuObj.style.display = 'none'; 1605 menuObj.style.width = selectwidth; 1606 menuObj.appendChild(ul); 1607 $('append_parent').appendChild(menuObj); 1608 1609 $(selectId + '_ctrl').onclick = function(e) { 1610 $(selectId + '_ctrl_menu').style.width = selectwidth; 1611 showMenu({'ctrlid':(selectId == 'loginfield' ? 'account' : selectId + '_ctrl'),'menuid':selectId + '_ctrl_menu','evt':'click','pos':'43'}); 1612 doane(e); 1613 }; 1614 $(selectId + '_ctrl').onfocus = menuObj.onfocus = function() { 1615 _attachEvent(document.body, 'keydown', handleKeyDown); 1616 }; 1617 $(selectId + '_ctrl').onblur = menuObj.onblur = function() { 1618 _detachEvent(document.body, 'keydown', handleKeyDown); 1619 }; 1620 $(selectId + '_ctrl').onkeyup = function(e) { 1621 e = e ? e : window.event; 1622 value = e.keyCode; 1623 if(value == 40 || value == 38) { 1624 if(menuObj.style.display == 'none') { 1625 $(selectId + '_ctrl').onclick(); 1626 } else { 1627 lis = menuObj.getElementsByTagName('li'); 1628 selecti = selectObj.getAttribute('selecti'); 1629 lis[selecti].className = ''; 1630 if(value == 40) { 1631 selecti = parseInt(selecti) + 1; 1632 } else if(value == 38) { 1633 selecti = parseInt(selecti) - 1; 1634 } 1635 if(selecti < 0) { 1636 selecti = lis.length - 1 1637 } else if(selecti > lis.length - 1) { 1638 selecti = 0; 1639 } 1640 lis[selecti].className = 'current'; 1641 selectObj.setAttribute('selecti', selecti); 1642 lis[selecti].parentNode.scrollTop = lis[selecti].offsetTop; 1643 } 1644 } else if(value == 13) { 1645 var lis = menuObj.getElementsByTagName('li'); 1646 lis[selectObj.getAttribute('selecti')].onclick(); 1647 } else if(value == 27) { 1648 hideMenu(menuObj.id); 1649 } 1650 }; 1651} 1652 1653function switchTab(prefix, current, total, activeclass) { 1654 $F('_switchTab', arguments); 1655} 1656 1657function imageRotate(imgid, direct) { 1658 $F('_imageRotate', arguments); 1659} 1660 1661function thumbImg(obj, method) { 1662 if(!obj) { 1663 return; 1664 } 1665 obj.onload = null; 1666 file = obj.src; 1667 zw = obj.offsetWidth; 1668 zh = obj.offsetHeight; 1669 if(zw < 2) { 1670 if(!obj.id) { 1671 obj.id = 'img_' + Math.random(); 1672 } 1673 setTimeout("thumbImg($('" + obj.id + "'), " + method + ")", 100); 1674 return; 1675 } 1676 zr = zw / zh; 1677 method = !method ? 0 : 1; 1678 if(method) { 1679 fixw = obj.getAttribute('_width'); 1680 fixh = obj.getAttribute('_height'); 1681 if(zw > fixw) { 1682 zw = fixw; 1683 zh = zw / zr; 1684 } 1685 if(zh > fixh) { 1686 zh = fixh; 1687 zw = zh * zr; 1688 } 1689 } else { 1690 fixw = typeof imagemaxwidth == 'undefined' ? '600' : imagemaxwidth; 1691 if(zw > fixw) { 1692 zw = fixw; 1693 zh = zw / zr; 1694 obj.style.cursor = 'pointer'; 1695 if(!obj.onclick) { 1696 obj.onclick = function() { 1697 zoom(obj, obj.src); 1698 }; 1699 } 1700 } 1701 } 1702 obj.width = zw; 1703 obj.height = zh; 1704} 1705 1706var zoomstatus = 1; 1707function zoom(obj, zimg, nocover, pn) { 1708 $F('_zoom', arguments); 1709} 1710 1711function showselect(obj, inpid, t, rettype) { 1712 $F('_showselect', arguments); 1713} 1714 1715function showColorBox(ctrlid, layer, k, bgcolor) { 1716 $F('_showColorBox', arguments); 1717} 1718 1719function ctrlEnter(event, btnId, onlyEnter) { 1720 if(isUndefined(onlyEnter)) onlyEnter = 0; 1721 if((event.ctrlKey || onlyEnter) && event.keyCode == 13) { 1722 $(btnId).click(); 1723 return false; 1724 } 1725 return true; 1726} 1727 1728function parseurl(str, mode, parsecode) { 1729 if(isUndefined(parsecode)) parsecode = true; 1730 if(parsecode) str= str.replace(/\s*\[code\]([\s\S]+?)\[\/code\]\s*/ig, function($1, $2) {return codetag($2);}); 1731 str = str.replace(/([^>=\]"'\/@]|^)((((https?|ftp|gopher|news|telnet|rtsp|mms|callto|bctp|ed2k|thunder|qqdl|synacast):\/\/))([\w\-]+\.)*[:\.@\-\w\u4e00-\u9fa5]+\.([\.a-zA-Z0-9]+|\u4E2D\u56FD|\u7F51\u7EDC|\u516C\u53F8)((\?|\/|:)+[\w\.\/=\?%\-&;~`@':+!#]*)*)/ig, mode == 'html' ? '$1<a href="$2" target="_blank">$2</a>' : '$1[url]$2[/url]'); 1732 str = str.replace(/([^\w>=\]"'\/@]|^)((www\.)([\w\-]+\.)*[:\.@\-\w\u4e00-\u9fa5]+\.([\.a-zA-Z0-9]+|\u4E2D\u56FD|\u7F51\u7EDC|\u516C\u53F8)((\?|\/|:)+[\w\.\/=\?%\-&;~`@':+!#]*)*)/ig, mode == 'html' ? '$1<a href="$2" target="_blank">$2</a>' : '$1[url]$2[/url]'); 1733 str = str.replace(/([^\w->
1733=\]:"'\.\/]|^)(([\-\.\w]+@[\.\-\w]+(\.\w+)+))/ig, mode == 'html' ? '$1<a href="mailto:$2">$2</a>' : '$1[email]$2[/email]'); 1734 if(parsecode) { 1735 for(var i = 0; i <= DISCUZCODE['num']; i++) { 1736 str = str.replace("[\tDISCUZ_CODE_" + i + "\t]", DISCUZCODE['html'][i]); 1737 } 1738 } 1739 return str; 1740} 1741 1742function codetag(text) { 1743 DISCUZCODE['num']++; 1744 if(typeof wysiwyg != 'undefined' && wysiwyg) text = text.replace(/<br[^\>]*>/ig, '\n').replace(/<(\/|)[A-Za-z].*?>/ig, ''); 1745 DISCUZCODE['html'][DISCUZCODE['num']] = '[code]' + text + '[/code]'; 1746 return '[\tDISCUZ_CODE_' + DISCUZCODE['num'] + '\t]'; 1747} 1748 1749function saveUserdata(name, data) { 1750 if(BROWSER.ie){ 1751 if(data.length < 54889) { 1752 with(document.documentElement) { 1753 setAttribute("value", data); 1754 save('Discuz_' + name); 1755 } 1756 } 1757 } else if(window.localStorage){ 1758 localStorage.setItem('Discuz_' + name, data); 1759 } else if(window.sessionStorage){ 1760 sessionStorage.setItem('Discuz_' + name, data); 1761 } 1762 setcookie('clearUserdata', '', -1); 1763} 1764 1765function loadUserdata(name) { 1766 if(BROWSER.ie){ 1767 with(document.documentElement) { 1768 load('Discuz_' + name); 1769 return getAttribute("value"); 1770 } 1771 } else if(window.localStorage){ 1772 return localStorage.getItem('Discuz_' + name); 1773 } else if(window.sessionStorage){ 1774 return sessionStorage.getItem('Discuz_' + name); 1775 } 1776} 1777 1778function initTab(frameId, type) { 1779 $F('_initTab', arguments); 1780} 1781 1782function openDiy(){ 1783 window.location.href = ((window.location.href + '').replace(/[\?\&]diy=yes/g, '').split('#')[0] + ( window.location.search && window.location.search.indexOf('?diy=yes') < 0 ? '&diy=yes' : '?diy=yes')); 1784} 1785 1786function hasClass(elem, className) { 1787 return elem.className && (" " + elem.className + " ").indexOf(" " + className + " ") != -1; 1788} 1789 1790function runslideshow() { 1791 $F('_runslideshow', []); 1792} 1793 1794function toggle_collapse(objname, noimg, complex, lang) { 1795 $F('_toggle_collapse', arguments); 1796} 1797 1798function updatestring(str1, str2, clear) { 1799 str2 = '_' + str2 + '_'; 1800 return clear ? str1.replace(str2, '') : (str1.indexOf(str2) == -1 ? str1 + str2 : str1); 1801} 1802 1803function getClipboardData() { 1804 window.document.clipboardswf.SetVariable('str', CLIPBOARDSWFDATA); 1805} 1806 1807function setCopy(text, msg) { 1808 $F('_setCopy', arguments); 1809} 1810 1811function copycode(obj) { 1812 $F('_copycode', arguments); 1813} 1814 1815function showdistrict(container, elems, totallevel, changelevel, containertype) { 1816 $F('_showdistrict', arguments); 1817} 1818 1819function setDoodle(fid, oid, url, tid, from) { 1820 $F('_setDoodle', arguments); 1821} 1822 1823 1824function initSearchmenu(searchform, cloudSearchUrl) { 1825 var defaultUrl = 'search.php?searchsubmit=yes'; 1826 if(typeof cloudSearchUrl == "undefined" || cloudSearchUrl == null || cloudSearchUrl == '') { 1827 cloudSearchUrl = defaultUrl; 1828 } 1829 1830 var searchtxt = $(searchform + '_txt'); 1831 if(!searchtxt) { 1832 searchtxt = $(searchform); 1833 } 1834 var tclass = searchtxt.className; 1835 searchtxt.className = tclass + ' xg1'; 1836 searchtxt.onfocus = function () { 1837 if(searchtxt.value == lng['enter_search_string']) { 1838 searchtxt.value = ''; 1839 searchtxt.className = tclass; 1840 } 1841 }; 1842 searchtxt.onblur = function () { 1843 if(searchtxt.value == '' ) { 1844 searchtxt.value = lng['enter_search_string']; 1845 searchtxt.className = tclass + ' xg1'; 1846 } 1847 }; 1848 if(!$(searchform + '_type_menu')) return false; 1849 var o = $(searchform + '_type'); 1850 var a = $(searchform + '_type_menu').getElementsByTagName('a'); 1851 var formobj = searchtxt.form; 1852 for(var i=0; i<a.length; i++){ 1853 if(a[i].className == 'curtype'){ 1854 o.innerHTML = a[i].innerHTML; 1855 $(searchform + '_mod').value = a[i].rel; 1856 formobj.method = 'post'; 1857 if((a[i].rel == 'forum' || a[i].rel == 'curforum') && defaultUrl != cloudSearchUrl) { 1858 formobj.action = cloudSearchUrl; 1859 formobj.method = 'get'; 1860 } else { 1861 formobj.action = defaultUrl; 1862 } 1863 1864 if($('cloudsearchforumId')) { 1865 $('cloudsearchforumId').value = '0'; 1866 if (a[i].rel == 'curforum') { 1867 $('cloudsearchforumId').value = $('dzsearchforumid').value 1868 } 1869 } 1870 } 1871 a[i].onclick = function(){ 1872 o.innerHTML = this.innerHTML; 1873 $(searchform + '_mod').value = this.rel; 1874 formobj.method = 'post'; 1875 if((this.rel == 'forum' || this.rel == 'curforum') && defaultUrl != cloudSearchUrl) { 1876 formobj.action = cloudSearchUrl; 1877 formobj.method = 'get'; 1878 } else { 1879 formobj.action = defaultUrl; 1880 } 1881 1882 if($('cloudsearchforumId')) { 1883 $('cloudsearchforumId').value = '0'; 1884 if (this.rel == 'curforum') { 1885 $('cloudsearchforumId').value = $('dzsearchforumid').value 1886 } 1887 } 1888 }; 1889 } 1890} 1891 1892function searchFocus(obj) { 1893 if(obj.value == lng['enter_search_string']) { 1894 obj.value = ''; 1895 } 1896 if($('cloudsearchquery') != null) { 1897 $('cloudsearchquery').value = obj.value; 1898 } 1899} 1900 1901//vot: MultiLingual support 1902function setlang(lang) { 1903 $F('_setlang', arguments); 1904} 1905 1906function extstyle(css) { 1907 $F('_extstyle', arguments); 1908} 1909 1910function widthauto(obj) { 1911 $F('_widthauto', arguments); 1912} 1913 1914var secST = new Array(); 1915function updatesecqaa(idhash) { 1916 $F('_updatesecqaa', arguments); 1917} 1918 1919function updateseccode(idhash, play) { 1920 $F('_updateseccode', arguments); 1921} 1922 1923function checksec(type, idhash, showmsg, recall) { 1924 $F('_checksec', arguments); 1925} 1926
1927function createPalette(colorid, id, func) { 1928 $F('_createPalette', arguments); 1929} 1930 1931function cardInit() { 1932 var cardShow = function (obj) { 1933 if(BROWSER.ie && BROWSER.ie < 7 && obj.href.indexOf('username') != -1) { 1934 return; 1935 } 1936 pos = obj.getAttribute('c') == '1' ? '43' : obj.getAttribute('c'); 1937 USERCARDST = setTimeout(function() {ajaxmenu(obj, 500, 1, 2, pos, null, 'p_pop card');}, 250); 1938 }; 1939 var a = document.body.getElementsByTagName('a'); 1940 for(var i = 0;i < a.length;i++){ 1941 if(a[i].getAttribute('c')) { 1942 a[i].setAttribute('mid', hash(a[i].href)); 1943 a[i].onmouseover = function() {cardShow(this)}; 1944 a[i].onmouseout = function() {clearTimeout(USERCARDST);}; 1945 } 1946 } 1947} 1948 1949function navShow(id) { 1950 var mnobj = $('snav_mn_' + id); 1951 if(!mnobj) { 1952 return; 1953 } 1954 var uls = $('mu').getElementsByTagName('ul'); 1955 for(i = 0;i < uls.length;i++) { 1956 if(uls[i].className != 'cl current') { 1957 uls[i].style.display = 'none'; 1958 } 1959 } 1960 if(mnobj.className != 'cl current') { 1961 showMenu({'ctrlid':'mn_' + id,'menuid':'snav_mn_' + id,'pos':'*'}); 1962 mnobj.className = 'cl floatmu'; 1963 mnobj.style.width = ($('nv').clientWidth) + 'px'; 1964 mnobj.style.display = ''; 1965 } 1966} 1967 1968function strLenCalc(obj, checklen, maxlen) { 1969 var v = obj.value, charlen = 0, maxlen = !maxlen ? 200 : maxlen, curlen = maxlen, len = strlen(v); 1970//vot for(var i = 0; i < v.length; i++) { 1971//vot if(v.charCodeAt(i) < 0 || v.charCodeAt(i) > 255) { 1972//vot curlen -= charset == 'utf-8' ? 2 : 1; 1973//vot } 1974//vot } 1975 if(curlen >= len) { 1976 $(checklen).innerHTML = curlen - len; 1977 } else { 1978//vot obj.value = mb_cutstr(v, maxlen, true); 1979 obj.value = obj.value.substr(v, maxlen);//vot 1980 } 1981} 1982 1983function noticeTitle() { 1984 NOTICETITLE = {'State':0, 'oldTitle':document.title, flashNumber:0, sleep:15}; 1985 if(!getcookie('noticeTitle')) { 1986 window.setInterval('noticeTitleFlash();', 500); 1987 } else { 1988 window.setTimeout('noticeTitleFlash();', 500); 1989 } 1990 setcookie('noticeTitle', 1, 600); 1991} 1992 1993function noticeTitleFlash() { 1994 if(NOTICETITLE.flashNumber < 5 || NOTICETITLE.flashNumber > 4 && !NOTICETITLE['State']) { 1995 document.title = (NOTICETITLE['State'] ? lng['notices_no'] : lng['notices_yes']) + NOTICETITLE['oldTitle']; 1996 NOTICETITLE['State'] = !NOTICETITLE['State']; 1997 } 1998 NOTICETITLE.flashNumber = NOTICETITLE.flashNumber < NOTICETITLE.sleep ? ++NOTICETITLE.flashNumber : 0; 1999} 2000 2001function relatedlinks(rlinkmsgid) { 2002 $F('_relatedlinks', arguments); 2003} 2004 2005function con_handle_response(response) { 2006 return response; 2007} 2008 2009function showTopLink() { 2010 if($('ft')){ 2011 var viewPortHeight = parseInt(document.documentElement.clientHeight); 2012 var scrollHeight = parseInt(document.body.getBoundingClientRect().top); 2013 var basew = parseInt($('ft').clientWidth); 2014 var sw = $('scrolltop').clientWidth; 2015 if (basew < 1000) { 2016 var left = parseInt(fetchOffset($('ft'))['left']); 2017 left = left < sw ? left * 2 - sw : left; 2018 $('scrolltop').style.left = ( basew + left ) + 'px'; 2019 } else { 2020 $('scrolltop').style.left = 'auto'; 2021 $('scrolltop').style.right = 0; 2022 } 2023 2024 if (BROWSER.ie && BROWSER.ie < 7) { 2025 $('scrolltop').style.top = viewPortHeight - scrollHeight - 150 + 'px'; 2026 } 2027 if (scrollHeight < -100) { 2028 $('scrolltop').style.visibility = 'visible'; 2029 } else { 2030 $('scrolltop').style.visibility = 'hidden'; 2031 } 2032 } 2033} 2034 2035function showCreditmenu() { 2036 $F('_showCreditmenu', []); 2037} 2038 2039function showUpgradeinfo() { 2040 showMenu({'ctrlid':'g_upmine', 'pos':'21'}); 2041} 2042 2043function addFavorite(url, title) { 2044 try { 2045 window.external.addFavorite(url, title); 2046 } catch (e){ 2047 try { 2048 window.sidebar.addPanel(title, url, ''); 2049 } catch (e) { 2050 showDialog(lng['ctrl_d_favorites'], 'notice'); 2051 } 2052 } 2053} 2054 2055function setHomepage(sURL) { 2056 if(BROWSER.ie){ 2057 document.body.style.behavior = 'url(#default#homepage)'; 2058 document.body.setHomePage(sURL); 2059 } else { 2060 showDialog(lng['non_ie_manually'], 'notice'); 2061 doane(); 2062 } 2063} 2064 2065function smilies_show(id, smcols, seditorkey) { 2066 $F('_smilies_show', arguments, 'smilies'); 2067} 2068 2069if(typeof IN_ADMINCP == 'undefined') { 2070 if(creditnotice != '' && getcookie('creditnotice')) { 2071 _attachEvent(window, 'load', showCreditPrompt, document); 2072 } 2073 if(typeof showusercard != 'undefined' && showusercard == 1) { 2074 _attachEvent(window, 'load', cardInit, document); 2075 } 2076} 2077 2078if(BROWSER.ie) { 2079 document.documentElement.addBehavior("#default#userdata"); 2080}
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.