[1] | 1 | // minmax.js - written by Andrew Clover <and@doxdesk.com> |
---|
| 2 | // Adapted for PunBB by Rickard Andersson and Paul Sullivan |
---|
| 3 | |
---|
| 4 | /*@cc_on |
---|
| 5 | @if (@_win32 && @_jscript_version>4) |
---|
| 6 | |
---|
| 7 | var minmax_elements; |
---|
| 8 | |
---|
| 9 | function minmax_bind(el) { |
---|
| 10 | var em, ms; |
---|
| 11 | var st= el.style, cs= el.currentStyle; |
---|
| 12 | |
---|
| 13 | if (minmax_elements==window.undefined) { |
---|
| 14 | if (!document.body || !document.body.currentStyle) return; |
---|
| 15 | minmax_elements= new Array(); |
---|
| 16 | window.attachEvent('onresize', minmax_delayout); |
---|
| 17 | } |
---|
| 18 | |
---|
| 19 | if (cs['max-width']) |
---|
| 20 | st['maxWidth']= cs['max-width']; |
---|
| 21 | |
---|
| 22 | ms= cs['maxWidth']; |
---|
| 23 | if (ms && ms!='auto' && ms!='none' && ms!='0' && ms!='') { |
---|
| 24 | st.minmaxWidth= cs.width; |
---|
| 25 | minmax_elements[minmax_elements.length]= el; |
---|
| 26 | minmax_delayout(); |
---|
| 27 | } |
---|
| 28 | } |
---|
| 29 | |
---|
| 30 | var minmax_delaying= false; |
---|
| 31 | function minmax_delayout() { |
---|
| 32 | if (minmax_delaying) return; |
---|
| 33 | minmax_delaying= true; |
---|
| 34 | window.setTimeout(minmax_layout, 0); |
---|
| 35 | } |
---|
| 36 | |
---|
| 37 | function minmax_stopdelaying() { |
---|
| 38 | minmax_delaying= false; |
---|
| 39 | } |
---|
| 40 | |
---|
| 41 | function minmax_layout() { |
---|
| 42 | window.setTimeout(minmax_stopdelaying, 100); |
---|
| 43 | var i, el, st, cs, optimal, inrange; |
---|
| 44 | for (i= minmax_elements.length; i-->0;) { |
---|
| 45 | el= minmax_elements[i]; st= el.style; cs= el.currentStyle; |
---|
| 46 | |
---|
| 47 | st.width= st.minmaxWidth; optimal= el.offsetWidth; |
---|
| 48 | inrange= true; |
---|
| 49 | if (inrange && cs.minWidth && cs.minWidth!='0' && cs.minWidth!='auto' && cs.minWidth!='') { |
---|
| 50 | st.width= cs.minWidth; |
---|
| 51 | inrange= (el.offsetWidth<optimal); |
---|
| 52 | } |
---|
| 53 | if (inrange && cs.maxWidth && cs.maxWidth!='none' && cs.maxWidth!='auto' && cs.maxWidth!='') { |
---|
| 54 | st.width= cs.maxWidth; |
---|
| 55 | inrange= (el.offsetWidth>optimal); |
---|
| 56 | } |
---|
| 57 | if (inrange) st.width= st.minmaxWidth; |
---|
| 58 | } |
---|
| 59 | } |
---|
| 60 | |
---|
| 61 | var minmax_SCANDELAY= 500; |
---|
| 62 | |
---|
| 63 | function minmax_scan() { |
---|
| 64 | var el; |
---|
| 65 | for (var i= 0; i<document.all.length; i++) { |
---|
| 66 | el= document.all[i]; |
---|
| 67 | if (!el.minmax_bound) { |
---|
| 68 | el.minmax_bound= true; |
---|
| 69 | minmax_bind(el); |
---|
| 70 | } |
---|
| 71 | } |
---|
| 72 | } |
---|
| 73 | |
---|
| 74 | var minmax_scanner; |
---|
| 75 | function minmax_stop() { |
---|
| 76 | window.clearInterval(minmax_scanner); |
---|
| 77 | minmax_scan(); |
---|
| 78 | } |
---|
| 79 | |
---|
| 80 | minmax_scan(); |
---|
| 81 | minmax_scanner= window.setInterval(minmax_scan, minmax_SCANDELAY); |
---|
| 82 | window.attachEvent('onload', minmax_stop); |
---|
| 83 | |
---|
| 84 | @end @*/ |
---|