function toggle(lnk, num_children, fixedstate) {
	if (typeof lnk != 'string') {
		if (typeof lnk == 'undefined') return false;
		var imgs = _lnk2imgs(lnk, num_children);
		for (var i = 0; i < imgs.length; i++) {
			var url = imgs[i].src;
			var lead = url.substr(0, url.lastIndexOf('.') - 1);
			var state = url.substr(url.lastIndexOf('.') - 1, 1);
			var ext = url.substr(url.lastIndexOf('.'));
			state = Math.abs(parseInt(state) - 1);
			if (typeof fixedstate != 'undefined') {
				var state = fixedstate;
			} 
			if (/\d+/.test(state)) {
				imgs[i].src = lead + state + ext;
			}
		}
	}
	// Direct access API handler:
	else {
		var handle = lnk;
		if (!dom.finished || typeof dom.handles[handle] == 'undefined') return false;
		var url = dom.handles[handle].src;
		var lead = url.substr(0, url.lastIndexOf('.') - 1);
		var state = url.substr(url.lastIndexOf('.') - 1, 1);
		var ext = url.substr(url.lastIndexOf('.'));
		state = Math.abs(parseInt(state) - 1);
		if (typeof fixedstate != 'undefined') {
			var state = fixedstate;
		}
		dom.handles[handle].src = lead + state + ext;
	}
	return true;
}

function subtoggle(handle) {
	toggle(handle);
	toggle(handle + "_");
	return true;
}

function init_mo() {
	if (!dom.finished) return false;
	dom.preloaded = [];
	for (h in dom.handles) {
		var handle = dom.handles[h];
		if (typeof handle.src != 'undefined' && handle.src != null) {
			var url = handle.src;
			var lead = url.substr(0, url.lastIndexOf('.') - 1);
			var state = url.substr(url.lastIndexOf('.') - 1, 1);
			if ((state == 0) || (state == 1) ) {
				var ext = url.substr(url.lastIndexOf('.'));
			    state = Math.abs(parseInt(state) - 1);
    			url = lead + state + ext;
	    		dom.preloaded[dom.preloaded.length] = new Image();
	    		dom.preloaded[dom.preloaded.length - 1].src = url;
		    }
		}
	}
	return true;
}

function _lnk2imgs(lnk, num_children) {
	if (typeof lnk == 'undefined') return [];
	if (typeof num_children == 'undefined') {
		num_children = 1;
	}
	var doc = document;
	if (typeof lnk.document != 'undefined') {
		doc = lnk.document;
	}
	var imgs = [];
	// DOM method:
	var children = [];
	if (typeof lnk.children != 'undefined') children = lnk.children;
	if (typeof lnk.childNodes != 'undefined') children = lnk.childNodes;
	for (var i = 0; i < children.length; i++) {
		if (children[i].tagName == "IMG") imgs[imgs.length] = children[i];
	}
	// Fallback method for Netscape 4:
	if (imgs.length == 0) {
		for (var i = 0; i < doc.images.length; i++) {
			if (!/[01]\./.test(doc.images[i].src)) continue;
			var image = doc.images[i];
			if (typeof image.x != 'undefined'
				&& image.x == lnk.x
				&& image.y == lnk.y
			) {
				// Get children up to the number specified by num_children;
				for (var b = 0; b < num_children; b++) {
					if (b > i) last;
					imgs.push(doc.images[i - b]);
				}
			}
		}
	}
	return imgs;
}
