function testimonials(testimonialsDivId, testimonials, testimonialNumber) {
	this.testimonials = testimonials;
	this.testimonialNumber = testimonialNumber || 0;
	this.container = document.getElementById(testimonialsDivId);
	this.emptyDiv = function(obj) { if (obj) with (obj) while (firstChild) removeChild(firstChild); }
	this.setHeight = function() {
		var a = this;
		var o = a.container.cloneNode(false);
		var max = 0;
		with (o.style) {
			visibility = 'hidden';
			position = 'absolute';
			top = '0';
			left = '0';
		}
		document.getElementsByTagName('BODY')[0].appendChild(o);
		for (var i = 0, j = a.testimonials.length; i < j; i++) {
			a.emptyDiv(o);
			with (o) {
				innerHTML = a.testimonials[i];
				max = max > o.offsetHeight ? max : o.offsetHeight;
			}
		}
		document.getElementsByTagName('BODY')[0].removeChild(o);
		with (a.container) if (offsetHeight < max) style.height = max + 'px';
	}
	this.makeRelative = function() {
		var o = this.container.cloneNode(true);
		o.setAttribute('id', '');
		with (o.style) {
			position = 'absolute';
			top = '0';
			left = '0';
		}
		var w = this.container.offsetWidth;
		var h = this.container.offsetHeight;
		this.emptyDiv(this.container);
		with (this.container) {
			with (style) {
				position = 'relative';
				width = w + 'px';
				height = h + 'px';
				overflow = 'hidden';
			}
			appendChild(o);
		}
	}
	this.fade = function(obj, delay, amount) {
		var thisObj = this;
		var o = parseFloat(obj.style.opacity) + amount;
		if (o > 1) o = 1
		  else if (o < 0) o = 0;
		with (obj.style) {
			opacity = o;
			filter = 'progid:DXImageTransform.Microsoft.BasicImage(opacity=' + o + ')';
		}
		if (o == 0 && amount < 0) {
			this.container.removeChild(obj);
			delete obj;
			}
		  else if (!(o == 1 && amount > 0)) setTimeout(function() { thisObj.fade(obj, delay, amount); }, delay);
	}
	this.fadeTo = function(testimonialNumber) {
		var thisObj = this;

		var original = this.container.firstChild;
		original.style.opacity = '1';
		var o = original.cloneNode(true);
		o.style.opacity = '0';
		this.emptyDiv(o);
		o.innerHTML = this.testimonials[testimonialNumber];
		this.container.appendChild(o);

		this.fade(original, 30, -.05);
		this.fade(o, 30, .05);
	}
	this.fadeToNext = function() {
		this.testimonialNumber = this.testimonialNumber == this.testimonials.length - 1 ? 0 : this.testimonialNumber + 1;
		this.fadeTo(this.testimonialNumber);
	}
	this.setHeight();
	this.makeRelative();
}

var fader1, fader2;

function startFaders() {
	function preCacheFirst(a) {
		if (a && a.length) {
			var b = new Image();
			b.src = a[0].src;
		}
	}
	preCacheFirst(faderImages1);
	preCacheFirst(faderImages2);

	if (faderImages1 && faderImages1.length) {
		var fader1 = new testimonials('fader-1', faderImages1);
		fader1.fadeTo(fader1.testimonialNumber);
		setTimeout(function() { fader1.fadeToNext(); setInterval(function() { fader1.fadeToNext(); }, 6000); }, 6000);
	} else {
		var obj = document.getElementById('fader-1');
		if (obj) obj.parentNode.removeChild(obj);
	}
	if (faderImages2 && faderImages2.length) {
		var fader2 = new testimonials('fader-2', faderImages2);
		fader2.fadeTo(fader2.testimonialNumber);
		setTimeout(function() { fader2.fadeToNext(); setInterval(function() { fader2.fadeToNext(); }, 6000); }, 9000);
	} else {
		var obj = document.getElementById('fader-2');
		if (obj) obj.parentNode.removeChild(obj);
	}

	if (faderImages1 && faderImages1.length)
		for (var i = 0, j = faderImages1.length; i < j; i++) {
			var b = new Image();
			b.src = faderImages1[i].src;
			if (faderImages2 && faderImages2.length && faderImages2[i]) {
				var c = new Image();
				c.src = faderImages2[i].src;
			}
		}
	if (faderImages2 && faderImages2.length)
		for (var i = 0, j = faderImages2.length; i < j; i++) {
			var b = new Image();
			b.src = faderImages2[i].src;
		}
}

var addListener = function () {
    if (window.addEventListener) {
	return function (el, type, fn) {
		el.addEventListener(type, fn, false);
	};
    } else if (window.attachEvent) {
	return function (el, type, fn) {
		var f = function () {
			fn.call(el, window.event);
		};
		el.attachEvent("on" + type, f);
	};
    } else {
	return function (el, type, fn) {
		element["on" + type] = fn;
	};
    }
}();

addListener(window, "load", startFaders);

