     ajxx.allowWidthReduction = false;
     ajxx.allowHeightReduction = true;
     ajxx.objectLoadTime = 'before'; 
     ajxx.cacheAjax = true; 
     ajxx.preserveContent = true; 
     
     
     ajxx.push(ajxx.overrides, 'contentId');
     ajxx.push(ajxx.overrides, 'allowWidthReduction');
     ajxx.push(ajxx.overrides, 'allowHeightReduction');
     ajxx.push(ajxx.overrides, 'objectType');
     ajxx.push(ajxx.overrides, 'objectWidth');
     ajxx.push(ajxx.overrides, 'objectHeight');
     ajxx.push(ajxx.overrides, 'objectLoadTime');
     ajxx.push(ajxx.overrides, 'swfObject');
     ajxx.push(ajxx.overrides, 'cacheAjax');
     ajxx.push(ajxx.overrides, 'preserveContent');
     
     
     ajxx.preloadTheseAjax = [];
     ajxx.cacheBindings = [];
     ajxx.sleeping = [];
     ajxx.clearing = ajxx.createElement('div', null, 
     		{ clear: 'both', borderTop: '1px solid white' }, null, true);
     
     ajxx.htmlExpand = function(a, params, custom) {
	 if (!ajxx.$(params.contentId) && !ajxx.clones[params.contentId]) return true;
     	
     	for (var i = 0; i < ajxx.sleeping.length; i++) {
     		if (ajxx.sleeping[i] && ajxx.sleeping[i].a == a) {
     			ajxx.sleeping[i].awake();
     			ajxx.sleeping[i] = null;
     			return false;
     		}
     	}
     	try {
     		ajxx.hasHtmlexpanders = true;
         	new ajxxExpander(a, params, custom, 'html');
         	return false;
     	} catch (e) {
     		return true;
     	}	
     };
     
     ajxx.identifyContainer = function (parent, className) {
     	for (i = 0; i < parent.childNodes.length; i++) {
         	if (parent.childNodes[i].className == className) {
     			return parent.childNodes[i];
     		}
     	}
     };
     
     ajxx.preloadAjax = function (e) {
     	var aTags = document.getElementsByTagName('A');
     	var a, re;
     	for (i = 0; i < aTags.length; i++) {
     		a = aTags[i];
     		re = ajxx.isajxxAnchor(a);
     		if (re && re[0] == 'ajxx.htmlExpand' && ajxx.getParam(a, 'objectType') == 'ajax' && ajxx.getParam(a, 'cacheAjax')) {
     			ajxx.push(ajxx.preloadTheseAjax, a);
     		}
     	}
     	ajxx.preloadAjaxElement(0);
     };
     
     ajxx.preloadAjaxElement = function (i) {
     	if (!ajxx.preloadTheseAjax[i]) return;
     	var a = ajxx.preloadTheseAjax[i];
     	var cache = ajxx.getNode(ajxx.getParam(a, 'contentId'));
     	var ajax = new ajxxAjax(a, cache);	
        	ajax.onError = function () { };
        	ajax.onLoad = function () {
        		ajxx.push(ajxx.cacheBindings, [a, cache]);
        		ajxx.preloadAjaxElement(i + 1);
        	};
        	ajax.run();
     };
     
     ajxx.getCacheBinding = function (a) {
     	for (i = 0; i < ajxx.cacheBindings.length; i++) {
     		if (ajxx.cacheBindings[i][0] == a) {
     			var c = ajxx.cacheBindings[i][1];
     			ajxx.cacheBindings[i][1] = c.cloneNode(1);
     			return c;
     		}
     	}
     };
     
     ajxxExpander.prototype.htmlCreate = function () {
     	this.tempContainer = ajxx.createElement('div', null,
     		{
     			padding: '0 '+ ajxx.marginRight +'px 0 '+ ajxx.marginLeft +'px',
     			position: 'absolute',
     			left: 0,
     			top: 0
     		},
     		document.body
     	);
     	this.innerContent = ajxx.getCacheBinding(this.a);
     	if (!this.innerContent) this.innerContent = ajxx.getNode(this.contentId);
     	
     	this.setObjContainerSize(this.innerContent);
     	this.tempContainer.appendChild(this.innerContent); 
     	ajxx.setStyles (this.innerContent, { position: 'relative', visibility: 'hidden' });
     	this.innerContent.className += ' ajaxx-display-block';
     	
     	this.content = ajxx.createElement(
         	'div',
         	{	className: 'ajaxx-html' },
     		{
     			position: 'relative',
     			zIndex: 3,
     			overflow: 'hidden',
     			width: this.thumbWidth +'px',
     			height: this.thumbHeight +'px'
     		}
     	);
         
     	if (this.objectType == 'ajax' && !ajxx.getCacheBinding(this.a)) {
         	var ajax = new ajxxAjax(this.a, this.innerContent);
         	var pThis = this;
         	ajax.onLoad = function () {	pThis.onLoad(); };
         	ajax.onError = function () { location.href = ajxx.getSrc(this.a); };
         	ajax.run();
     	}
         else this.onLoad();
     };
         
     ajxxExpander.prototype.htmlGetSize = function() {
     	this.innerContent.appendChild(ajxx.clearing);
     	this.newWidth = this.innerContent.offsetWidth;
         this.newHeight = this.innerContent.offsetHeight;
         this.innerContent.removeChild(ajxx.clearing);
         if (ajxx.ie && this.newHeight > parseInt(this.innerContent.currentStyle.height)) { 
     		this.newHeight = parseInt(this.innerContent.currentStyle.height);
     	}
     };
     
     ajxxExpander.prototype.setObjContainerSize = function(parent, auto) {
     	if (this.swfObject || this.objectType == 'iframe') {
     		var c = ajxx.identifyContainer(parent, 'ajaxx-body');
     		c.style.width = this.swfObject ? this.swfObject.attributes.width +'px' : this.objectWidth +'px';
     		c.style.height = this.swfObject ? this.swfObject.attributes.height +'px' : this.objectHeight +'px';
     	}
     };
     
     ajxxExpander.prototype.writeExtendedContent = function () {
     	if (this.hasExtendedContent) return;
     	this.objContainer = ajxx.identifyContainer(this.innerContent, 'ajaxx-body');
     	if (this.objectType == 'iframe') {
     		if (ajxx.ie && ajxx.ieVersion() < 5.5) window.location.href = ajxx.getSrc(this.a);
     		var key = this.key;
     		this.objContainer.innerHTML = '';
     		this.iframe = ajxx.createElement('iframe', { frameBorder: 0 },
     		   { width: this.objectWidth +'px', height: this.objectHeight +'px' }, 
     		   this.objContainer);
     		if (ajxx.safari) this.iframe.src = null;
     		this.iframe.src = ajxx.getSrc(this.a);
     		
     		if (this.objectLoadTime == 'after') this.correctIframeSize();
     		
     	} else if (this.swfObject) {	
     		this.objContainer.id = this.objContainer.id || 'ajxx-flash-id-' + this.key;
     		this.swfObject.write(this.objContainer.id);	
     	}
     	this.hasExtendedContent = true;
     };
     
     ajxxExpander.prototype.correctIframeSize = function () {
     	var wDiff = this.innerContent.offsetWidth - this.objContainer.offsetWidth;
     	if (wDiff < 0) wDiff = 0;
         
     	var hDiff = this.innerContent.offsetHeight - this.objContainer.offsetHeight;
     	ajxx.setStyles(this.iframe, { width: (this.x.span - wDiff) +'px', height: (this.y.span - hDiff) +'px' });
         ajxx.setStyles(this.objContainer, { width: this.iframe.style.width, height: this.iframe.style.height });
         
         this.scrollingContent = this.iframe;
         this.scrollerDiv = this.scrollingContent;
     };
     
     ajxxExpander.prototype.htmlSizeOperations = function () {
     	this.setObjContainerSize(this.innerContent);
     	
     	if (this.objectLoadTime == 'before') this.writeExtendedContent();		
     
         if (this.x.span < this.newWidth && !this.allowWidthReduction) this.x.span = this.newWidth;
         if (this.y.span < this.newHeight && !this.allowHeightReduction) this.y.span = this.newHeight;
         this.scrollerDiv = this.innerContent;
         
         this.mediumContent = ajxx.createElement('div', null, 
         	{ 
         		width: this.x.span +'px',
         		position: 'relative',
         		left: (this.x.min - this.thumbLeft) +'px',
         		top: (this.y.min - this.thumbTop) +'px'
         	}, this.content, true);
     	
         this.mediumContent.appendChild(this.innerContent);
         document.body.removeChild(this.tempContainer);
         ajxx.setStyles(this.innerContent, { border: 'none', width: 'auto', height: 'auto' });
         
         var node = ajxx.identifyContainer(this.innerContent, 'ajaxx-body');
         if (node && !this.swfObject && this.objectType != 'iframe') {    
         	var cNode = node; 
         	node = ajxx.createElement(cNode.nodeName, null, {overflow: 'hidden'}, null, true);
         	cNode.parentNode.insertBefore(node, cNode);
         	node.appendChild(ajxx.clearing); 
         	node.appendChild(cNode);
         	
         	var wDiff = this.innerContent.offsetWidth - node.offsetWidth;
         	var hDiff = this.innerContent.offsetHeight - node.offsetHeight;
         	node.removeChild(ajxx.clearing);
         	
         	var kdeBugCorr = ajxx.safari || navigator.vendor == 'KDE' ? 1 : 0; 
         	ajxx.setStyles(node, { 
         			width: (this.x.span - wDiff - kdeBugCorr) +'px', 
         			height: (this.y.span - hDiff) +'px',
         			overflow: 'auto', 
         			position: 'relative' 
         		} 
         	);
     		if (kdeBugCorr && cNode.offsetHeight > node.offsetHeight)	{
         		node.style.width = (parseInt(node.style.width) + kdeBugCorr) + 'px';
     		}
         	this.scrollingContent = node;
         	this.scrollerDiv = this.scrollingContent;
         	
     	} 
     	
         if (this.iframe && this.objectLoadTime == 'before') this.correctIframeSize();
         if (!this.scrollingContent && this.y.span < this.mediumContent.offsetHeight) this.scrollerDiv = this.content;
     	
     	if (this.scrollerDiv == this.content && !this.allowWidthReduction && this.objectType != 'iframe') {
     		this.x.span += 17; 
     	}
     	if (this.scrollerDiv && this.scrollerDiv.offsetHeight > this.scrollerDiv.parentNode.offsetHeight) {
     		setTimeout("try { ajxx.expanders["+ this.key +"].scrollerDiv.style.overflow = 'auto'; } catch(e) {}",
     			 ajxx.expandDuration);
     	}
     };
     
     ajxxExpander.prototype.htmlSetSize = function (w, h, x, y, offset, end) {
     	try {
     		ajxx.setStyles(this.wrapper, { visibility: 'visible', left: x +'px', top: y +'px'});
     		ajxx.setStyles(this.content, { width: w +'px', height: h +'px' });
     		ajxx.setStyles(this.mediumContent, { left: (this.x.min - x) +'px', top: (this.y.min - y) +'px' });
     		
     		this.innerContent.style.visibility = 'visible';
     		
     		if (this.objOutline && this.outlineWhileAnimating) {
     			var o = this.objOutline.offset - offset;
     			this.positionOutline(x + o, y + o, w - 2*o, h - 2*o, 1);
     		}
     				
     	} catch (e) {
     		window.location.href = ajxx.getSrc(this.a);
     	}
     };
     
     ajxxExpander.prototype.reflow = function () {
     	ajxx.setStyles(this.scrollerDiv, { height: 'auto', width: 'auto' });
     	this.x.span = this.innerContent.offsetWidth;
     	this.y.span = this.innerContent.offsetHeight;
     	var size = { width: this.x.span +'px', height: this.y.span +'px' };
     	ajxx.setStyles(this.content, size);
     	this.positionOutline(this.x.min, this.y.min, this.x.span, this.y.span);
     };
     
     ajxxExpander.prototype.htmlOnClose = function() {
     	if (this.objectLoadTime == 'after' && !this.preserveContent) this.destroyObject();		
     	if (this.scrollerDiv && this.scrollerDiv != this.scrollingContent) 
     		this.scrollerDiv.style.overflow = 'hidden';
     	if (this.swfObject) ajxx.$(this.swfObject.getAttribute('id')).StopPlay();
     };
     
     ajxxExpander.prototype.destroyObject = function () {
     	this.objContainer.innerHTML = '';
     };
     
     ajxxExpander.prototype.sleep = function() {
     	if (this.objOutline) this.objOutline.table.className = 'ajaxx-display-none';
     	this.wrapper.className += ' ajaxx-display-none';
     	ajxx.push(ajxx.sleeping, this);
     };
     
     ajxxExpander.prototype.awake = function() {
     	ajxx.expanders[this.key] = this;
     	
     	this.wrapper.className = this.wrapper.className.replace(/ajaxx-display-none/, '');
     	var z = ajxx.zIndexCounter++;
     	this.wrapper.style.zIndex = z;
     	if (o = this.objOutline) {
     		if (!this.outlineWhileAnimating) o.table.style.visibility = 'hidden';
     		o.table.className = null;
     		o.table.style.zIndex = z;
     	}
     	this.show();
     };
     
     
     ajxxAjax = function (a, content) {
     	this.a = a;
     	this.content = content;
     };
     
     ajxxAjax.prototype.run = function () {
     	try { this.xmlHttp = new XMLHttpRequest(); }
     	catch (e) {
     		try { this.xmlHttp = new ActiveXObject("Msxml2.XMLHTTP"); }
     		catch (e) {
     			try { this.xmlHttp = new ActiveXObject("Microsoft.XMLHTTP"); }
     			catch (e) { this.onError(); }
     		}
     	}
     	this.src = ajxx.getSrc(this.a);
     	if (this.src.match('#')) {
     		var arr = this.src.split('#');
     		this.src = arr[0];
     		this.id = arr[1];
     	}
     	var pThis = this;
     	this.xmlHttp.onreadystatechange = function() {
     		if(pThis.xmlHttp.readyState == 4) {	
     			if (pThis.id) pThis.getElementContent();
     			else pThis.loadHTML();
     		}
     	};
     	
     	this.xmlHttp.open("GET", this.src, true);
     	this.xmlHttp.send(null);
     };
     
     ajxxAjax.prototype.getElementContent = function() {
     	ajxx.genContainer();
     	var attribs = window.opera ? { src: this.src } : null; 
     	this.iframe = ajxx.createElement('iframe', attribs, 
     		{ position: 'absolute', left: '-9999px' }, ajxx.container);
     		
     	try {
     		this.loadHTML();
     	} catch (e) { 
     		var pThis = this;
     		setTimeout(function() {	pThis.loadHTML(); }, 1);
     	}
     };
     
     ajxxAjax.prototype.loadHTML = function() {
     	var s = this.xmlHttp.responseText;
     	if (!ajxx.ie || ajxx.ieVersion() >= 5.5) {
     		s = s.replace(/\s/g, ' ');
     		if (this.iframe) {
     			s = s.replace(new RegExp('<link[^>]*>', 'gi'), '');
     			s = s.replace(new RegExp('<script[^>]*>.*?</script>', 'gi'), '');
     			var doc = this.iframe.contentDocument || this.iframe.contentWindow.document;
     			doc.open();
     			doc.write(s);
     			doc.close();
     			try { s = doc.getElementById(this.id).innerHTML; } catch (e) {
     				try { s = this.iframe.document.getElementById(this.id).innerHTML; } catch (e) {} 
     			}
     			ajxx.container.removeChild(this.iframe);
     		} else {
     			s = s.replace(new RegExp('^.*?<body[^>]*>(.*?)</body>.*?$', 'i'), '$1');
     		}
     		
     	}
     	ajxx.identifyContainer(this.content, 'ajaxx-body').innerHTML = s;
     	this.onLoad();
     };
     
     ajxx.addEventListener(window, 'load', ajxx.preloadAjax);