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