punbb/style/imports/minmax.js
changeset 6 5e1f1e916419
parent 5 e3d7322305bf
child 7 98bbc533541c
equal deleted inserted replaced
5:e3d7322305bf 6:5e1f1e916419
     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 @*/