diff -r 0931d60f5bdb -r 2b2084ca1e60 includes/clientside/static/misc.js~ --- a/includes/clientside/static/misc.js~ Wed Jun 13 16:32:27 2007 -0400 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,563 +0,0 @@ -// Some additional DHTML functions - -function fetch_offset(obj) { - var left_offset = obj.offsetLeft; - var top_offset = obj.offsetTop; - while ((obj = obj.offsetParent) != null) { - left_offset += obj.offsetLeft; - top_offset += obj.offsetTop; - } - return { 'left' : left_offset, 'top' : top_offset }; -} - -function fetch_dimensions(o) { - var w = o.offsetWidth; - var h = o.offsetHeight; - return { 'w' : w, 'h' : h }; -} - -function findParentForm(o) -{ - // Not implemented - someone please let me know how to do this, what I need to do is - // find the first parent
tag above param 'o', not sure how to do it with DOM -} - -function ajaxReverseDNS(o, text) -{ - if(text) var ipaddr = text; - else var ipaddr = o.innerHTML; - rDnsObj = o; - rDnsBannerObj = bannerOn('Retrieving reverse DNS info...'); - ajaxGet(stdAjaxPrefix+'&_mode=rdns&ip='+ipaddr, function() { - if(ajax.readyState == 4) - { - off = fetch_offset(rDnsObj); - dim = fetch_dimensions(rDnsObj); - right = off['left'] + dim['w']; - top = off['top'] + dim['h']; - var thediv = document.createElement('div'); - thediv.className = 'info-box'; - thediv.style.margin = '0'; - thediv.style.position = 'absolute'; - thediv.style.top = top + 'px'; - thediv.style.display = 'none'; - thediv.style.zIndex = getHighestZ() + 2; - thediv.id = 'mdgDynamic_rDnsInfoDiv_'+Math.floor(Math.random() * 1000000); - thediv.innerHTML = 'Reverse DNS:
'+ajax.responseText+' Close'; - var body = document.getElementsByTagName('body'); - body = body[0]; - bannerOff(rDnsBannerObj); - body.appendChild(thediv); - thediv.style.display = 'block'; - left = fetch_dimensions(thediv); - thediv.style.display = 'none'; - left = right - left['w']; - thediv.style.left = left + 'px'; - thediv.style.display = 'block'; - fadeInfoBoxes(); - } - }); -} - -function bannerOn(text) -{ - darken(true); - var thediv = document.createElement('div'); - thediv.className = 'mdg-comment'; - thediv.style.padding = '0'; - thediv.style.marginLeft = '0'; - thediv.style.position = 'absolute'; - thediv.style.display = 'none'; - thediv.style.padding = '4px'; - thediv.style.fontSize = '14pt'; - thediv.id = 'mdgDynamic_bannerDiv_'+Math.floor(Math.random() * 1000000); - thediv.innerHTML = text; - - var body = document.getElementsByTagName('body'); - body = body[0]; - body.appendChild(thediv); - body.style.cursor = 'wait'; - - thediv.style.display = 'block'; - dim = fetch_dimensions(thediv); - thediv.style.display = 'none'; - bdim = { 'w' : getWidth(), 'h' : getHeight() }; - so = getScrollOffset(); - - left = (bdim['w'] / 2) - ( dim['w'] / 2 ); - top = (bdim['h'] / 2) - ( dim['h'] / 2 ) + so; - - thediv.style.top = top + 'px'; - thediv.style.left = left + 'px'; - - thediv.style.display = 'block'; - - return thediv.id; -} - -function bannerOff(id) -{ - e = document.getElementById(id); - if(!e) return; - e.innerHTML = ''; - e.style.display = 'none'; - var body = document.getElementsByTagName('body'); - body = body[0]; - body.style.cursor = 'default'; - enlighten(true); -} - -function disableUnload(message) -{ - if(typeof message != 'string') message = 'You may want to save your changes first.'; - var body = document.getElementsByTagName('body'); - body = body[0]; - body.onbeforeunload='return unescape(\''+escape(message)+'\')'; -} - -function enableUnload() -{ - var body = document.getElementsByTagName('body'); - body = body[0]; - body.onbeforeunload = null; -} - -/** - * Gets the highest z-index of all divs in the document - * @return integer - */ -function getHighestZ() -{ - z = 0; - var divs = document.getElementsByTagName('div'); - for(var i = 0; i < divs.length; i++) - { - if(divs[i].style.zIndex > z) z = divs[i].style.zIndex; - } - return z; -} - -function isKeyPressed(event) -{ - if (event.shiftKey==1) - { - shift = true; - } - else - { - shift = false; - } -} - -function moveDiv(div, newparent) -{ - var backup = div; - var oldparent = div.parentNode; - oldparent.removeChild(div); - newparent.appendChild(backup); -} - -function readCookie(name) {var nameEQ = name + "=";var ca = document.cookie.split(';');for(var i=0;i < ca.length;i++){var c = ca[i];while (c.charAt(0)==' ') c = c.substring(1,c.length);if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);}return null;} -function createCookie(name,value,days){if (days){var date = new Date();date.setTime(date.getTime()+(days*24*60*60*1000));var expires = "; expires="+date.toGMTString();}else var expires = "";document.cookie = name+"="+value+expires+"; path=/";} -function eraseCookie(name) {createCookie(name,"",-1);} - -var busyBannerID; -function goBusy(msg) -{ - if(!msg) msg = 'Please wait...'; - body = document.getElementsByTagName('body'); - body = body[0]; - body.style.cursor = 'wait'; - busyBannerID = bannerOn(msg); -} - -function unBusy() -{ - body = document.getElementsByTagName('body'); - body = body[0]; - body.style.cursor = 'default'; - bannerOff(busyBannerID); -} - -function setAjaxLoading() -{ - if ( document.getElementById('ajaxloadicon') ) - { - document.getElementById('ajaxloadicon').src=scriptPath + '/images/loading.gif'; - } -} - -function unsetAjaxLoading() -{ - if ( document.getElementById('ajaxloadicon') ) - { - document.getElementById('ajaxloadicon').src=scriptPath + '/images/spacer.gif'; - } -} - -/* - * Search boxes - */ - -function buildSearchBoxes() -{ - var divs = document.getElementsByTagName('*'); - var boxes = new Array(); - for ( var i = 0; i < divs.length; i++ ) - { - if ( divs[i].className) - { - if ( divs[i].className.substr(0, 9) == 'searchbox' ) - { - boxes.push(divs[i]); - } - } - } - for ( var i = 0; i < boxes.length; i++ ) - { - if ( boxes[i].className.match(/^searchbox\[([0-9]+)px\]$/) ) - { - var width = boxes[i].className.match(/^searchbox\[([0-9]+)px\]$/); - width = parseInt(width[1]); - } - else - { - var width = 120; - } - createSearchBox(boxes[i], width); - } -} - -function createSearchBox(parent, width) -{ - if ( typeof(parent) != 'object') - { - alert('BUG: createSearchBox(): parent is not an object'); - return false; - } - //parent.style.padding = '0px'; - //parent.style.textAlign = 'center'; - parent.style.width = width + 'px'; - var submit = document.createElement('div'); - submit.onclick = function() { searchFormSubmit(this); }; - submit.className = 'js-search-submit'; - var input = document.createElement('input'); - input.className = 'js-search-box'; - input.value = 'Search'; - input.name = 'q'; - input.style.width = ( width - 28 ) + 'px'; - input.onfocus = function() { if ( this.value == 'Search' ) this.value = ''; }; - input.onblur = function() { if ( this.value == '' ) this.value = 'Search'; }; - parent.appendChild(input); - var off = fetch_offset(input); - var top = off['top'] + 'px'; - var left = ( parseInt(off['left']) + ( width - 24 ) ) + 'px'; - submit.style.top = top; - submit.style.left = left; - parent.appendChild(submit); -} - -function searchFormSubmit(obj) -{ - var input = obj.previousSibling; - if ( input.value == 'Search' || input.value == '' ) - return false; - var p = obj; - while(true) - { - p = p.parentNode; - if ( !p ) - break; - if ( typeof(p.tagName) != 'string' ) - break; - else if ( p.tagName.toLowerCase() == 'form' ) - { - p.submit(); - } - else if ( p.tagName.toLowerCase() == 'body' ) - { - break; - } - } -} - -/* - * AJAX login box (experimental) - */ - -var ajax_auth_prompt_cache = false; -var ajax_auth_mb_cache = false; -var ajax_auth_level_cache = false; - -function ajaxPromptAdminAuth(call_on_ok, level) -{ - if ( typeof(call_on_ok) == 'function' ) - { - ajax_auth_prompt_cache = call_on_ok; - } - if ( !level ) - level = 2; - ajax_auth_level_cache = level; - var loading_win = '
\ -

Fetching an encryption key...

\ -

Not working? Use the alternate login form.

\ -

Please wait...

\ -
'; - ajax_auth_mb_cache = new messagebox(MB_OKCANCEL|MB_ICONLOCK, 'Please enter your username and password to continue.', loading_win); - ajax_auth_mb_cache.onbeforeclick['OK'] = ajaxValidateLogin; - ajaxAuthLoginInnerSetup(); -} - -function ajaxAuthLoginInnerSetup() -{ - ajaxGet(makeUrlNS('Special', 'Login', 'act=getkey'), function() { - if ( ajax.readyState == 4 ) - { - var response = ajax.responseText; - if ( response.substr(0,1) != '{' ) - { - alert('Invalid JSON response from server: ' + response); - return false; - } - response = parseJSON(response); - var form_html = ' \ - \ - \ - \ - \ - \ - \ - \ - \ -
Username: \ -
Password: \ -
\ -
Trouble logging in? Try the full login form.
\ - Did you forget your password?
\ - Maybe you need to create an account.
\ -
\ - \ - \ - '; - ajax_auth_mb_cache.updateContent(form_html); - $('messageBox').object.nextSibling.firstChild.tabindex = '3'; - $('ajaxlogin_user').object.focus(); - $('ajaxlogin_pass').object.onblur = function() { $('messageBox').object.nextSibling.firstChild.focus(); }; - } - }); -} - -function ajaxValidateLogin() -{ - var username,password,auth_enabled,crypt_key,crypt_data,challenge_salt,challenge_data; - username = document.getElementById('ajaxlogin_user'); - if ( !username ) - return false; - username = document.getElementById('ajaxlogin_user').value; - password = document.getElementById('ajaxlogin_pass').value; - auth_enabled = false; - - disableJSONExts(); - - // - // Encryption test - // - - var str = ''; - for(i=0;i

\ - '; - - ajax_auth_mb_cache.updateContent(loading_win); - - ajaxPost(makeUrlNS('Special', 'Login', 'act=ajaxlogin'), 'params=' + json_data, function() { - if ( ajax.readyState == 4 ) - { - var response = ajax.responseText; - if ( response.substr(0,1) != '{' ) - { - alert('Invalid JSON response from server: ' + response); - ajaxAuthLoginInnerSetup(); - return false; - } - response = parseJSON(response); - switch(response.result) - { - case 'success': - if ( typeof(ajax_auth_prompt_cache) == 'function' ) - { - ajax_auth_prompt_cache(response.key); - } - break; - case 'error': - alert(response.error); - ajaxAuthLoginInnerSetup(); - break; - default: - alert(ajax.responseText); - break; - } - } - }); - - return true; - -} - -// This code is in the public domain. Feel free to link back to http://jan.moesen.nu/ -function sprintf() -{ - if (!arguments || arguments.length < 1 || !RegExp) - { - return; - } - var str = arguments[0]; - var re = /([^%]*)%('.|0|\x20)?(-)?(\d+)?(\.\d+)?(%|b|c|d|u|f|o|s|x|X)(.*)/; - var a = b = [], numSubstitutions = 0, numMatches = 0; - while (a = re.exec(str)) - { - var leftpart = a[1], pPad = a[2], pJustify = a[3], pMinLength = a[4]; - var pPrecision = a[5], pType = a[6], rightPart = a[7]; - - //alert(a + '\n' + [a[0], leftpart, pPad, pJustify, pMinLength, pPrecision); - - numMatches++; - if (pType == '%') - { - subst = '%'; - } - else - { - numSubstitutions++; - if (numSubstitutions >= arguments.length) - { - alert('Error! Not enough function arguments (' + (arguments.length - 1) + ', excluding the string)\nfor the number of substitution parameters in string (' + numSubstitutions + ' so far).'); - } - var param = arguments[numSubstitutions]; - var pad = ''; - if (pPad && pPad.substr(0,1) == "'") pad = leftpart.substr(1,1); - else if (pPad) pad = pPad; - var justifyRight = true; - if (pJustify && pJustify === "-") justifyRight = false; - var minLength = -1; - if (pMinLength) minLength = parseInt(pMinLength); - var precision = -1; - if (pPrecision && pType == 'f') precision = parseInt(pPrecision.substring(1)); - var subst = param; - if (pType == 'b') subst = parseInt(param).toString(2); - else if (pType == 'c') subst = String.fromCharCode(parseInt(param)); - else if (pType == 'd') subst = parseInt(param) ? parseInt(param) : 0; - else if (pType == 'u') subst = Math.abs(param); - else if (pType == 'f') subst = (precision > -1) ? Math.round(parseFloat(param) * Math.pow(10, precision)) / Math.pow(10, precision): parseFloat(param); - else if (pType == 'o') subst = parseInt(param).toString(8); - else if (pType == 's') subst = param; - else if (pType == 'x') subst = ('' + parseInt(param).toString(16)).toLowerCase(); - else if (pType == 'X') subst = ('' + parseInt(param).toString(16)).toUpperCase(); - } - str = leftpart + subst + rightPart; - } - return str; -} - -function paginator_goto(parentobj, this_page, num_pages, perpage, url_string) -{ - var height = $(parentobj).Height(); - var width = $(parentobj).Width(); - var left = $(parentobj).Left(); - var top = $(parentobj).Top(); - var left_pos = left + width ; - var top_pos = height + top; - var div = document.createElement('div'); - div.style.position = 'absolute'; - div.style.top = top_pos + 'px'; - div.className = 'question-box'; - div.style.margin = '1px 0 0 2px'; - var vtmp = 'input_' + Math.floor(Math.random() * 1000000); - div.innerHTML = 'Go to page:
»×'; - - var body = document.getElementsByTagName('body')[0]; - body.appendChild(div); - - document.getElementById(vtmp).onkeypress = function(e){if(e.keyCode==13)this.nextSibling.nextSibling.onclick();}; - document.getElementById(vtmp).focus(); - - // fade the div - /* - if(!div.id) div.id = 'autofade_'+Math.floor(Math.random() * 100000); - var from = '#33FF33'; - Fat.fade_element(div.id,30,2000,from,Fat.get_bgcolor(div.id)); - */ - fly_in_bottom(div, false, true); - - var divh = $(div).Width(); - left_pos = left_pos - divh; - div.style.left = left_pos + 'px'; -} - -function paginator_submit(obj, max, perpage, formatstring) -{ - var userinput = obj.previousSibling.previousSibling.value; - userinput = parseInt(userinput); - var offset = ( userinput - 1 ) * perpage; - if ( userinput > max || isNaN(userinput) || userinput < 1 ) - { - new messagebox(MB_OK|MB_ICONSTOP, 'Invalid entry', 'Please enter a page number between 1 and ' + max + '.'); - return false; - } - var url = sprintf(formatstring, String(offset)); - fly_out_top(obj.parentNode, false, true); - window.location = url; -} -