Prototype.Browser.IE6 = Prototype.Browser.IE && parseInt(navigator.userAgent.substring(navigator.userAgent.indexOf("MSIE")+5)) == 6;
Prototype.Browser.IE7 = Prototype.Browser.IE && parseInt(navigator.userAgent.substring(navigator.userAgent.indexOf("MSIE")+5)) == 7;
Prototype.Browser.IE8 = Prototype.Browser.IE && !Prototype.Browser.IE6 && !Prototype.Browser.IE7;

function aboutusInteractive(bioInteractiveArray) {
	this.bioInteractiveArray = bioInteractiveArray;
	
	for(var i=0;i<this.bioInteractiveArray.length;i++) {
		var alink = document.createElement('a');
		var transparentGif = document.createElement('img');
		this.bioInteractiveArray[i].htmlParentNode.jsInteractiveNode = this;
		alink.jsInteractiveNode = this;
		alink.jsNode = this.bioInteractiveArray[i];
		alink.style.position = 'absolute';
		alink.style.width = this.bioInteractiveArray[i].htmlParentNode.offsetWidth+'px';
		alink.style.height = this.bioInteractiveArray[i].htmlParentNode.offsetHeight+'px';
		alink.style.top = '0px';
		alink.style.left = '0px';
		alink.style.zIndex = '3001';
		this.bioInteractiveArray[i].htmlParentNode.appendChild(alink);
		
		transparentGif.src = "/images/pixel.gif";
		transparentGif.width = alink.offsetWidth;
		transparentGif.height = alink.offsetHeight;
		alink.appendChild(transparentGif);
		
		alink.onmouseover = function() {
			if (this.jsNode != this.jsInteractiveNode.active)
				this.jsNode.onmouseover();
		}
		alink.onmouseout = function() {
			if (this.jsNode != this.jsInteractiveNode.active)
				this.jsNode.onmouseout();
		}
		alink.onclick = function() {
			if (this.jsNode == this.jsInteractiveNode.active)
				return;
			if (this.jsInteractiveNode.active) {	
				this.jsInteractiveNode.active.htmlContentNode.style.display = 'none';
				this.jsInteractiveNode.active.onmouseout();
			}
			this.jsInteractiveNode.active = this.jsNode;
			this.jsInteractiveNode.active.htmlContentNode.style.display = 'block';
		}
	}
	
	this.setActive = function(bioInteractiveObject) {
		this.active = bioInteractiveObject;
		bioInteractiveObject.setActive();
		bioInteractiveObject.htmlContentNode.style.display = 'block';
	}
}

function bioInteractive(htmlParentNode, imageBackground, imageBackgroundSilhouette, reflectionBackground, reflectionBackgroundSilhouette, titleNormalStatePos, titleHoverStatePos, titleActiveStatePos,htmlContentNode) {
	
	this.htmlParentNode = htmlParentNode;
	this.htmlParentNode.jsNode = this;
	this.htmlContentNode = htmlContentNode;
	this.image = new Array();
	this.reflection = new Array();
	this.imageBackground = imageBackground;
	this.imageBackgroundSilhouette = imageBackgroundSilhouette;
	this.reflectionBackground = reflectionBackground;
	this.reflectionBackgroundSilhouette = reflectionBackgroundSilhouette;
	
	this.mouseOutEffects = new Array();
	this.mouseOverEffects = new Array();
	
	this.title = new titleDetail(titleNormalStatePos, titleHoverStatePos, titleActiveStatePos);
	this.htmlParentNode.appendChild(this.title.htmlNode);
	
	this.canvas = new createCanvas();
	this.htmlParentNode.appendChild(this.canvas.htmlNode);
	
	createImage(this.image,this.imageBackground.width,this.imageBackground.height,13,100);
	
	for(var i=0;i<this.image.length;i++) {
		var img = document.createElement('img');
		img.id = htmlParentNode.id+"_img"+i;
		img.src = this.imageBackground.url;
		img.height = this.imageBackground.height;
		img.width = this.imageBackground.width;
		this.image[i].htmlNode.appendChild(img);
		this.canvas.htmlNode.appendChild(this.image[i].htmlNode);
		img.style.position = 'relative';
		setOpacity(img,this.image[i].opacity);
		img.style.top = (this.image[i].offset+(this.imageBackground.height-46))+'px';
		img.style.display = 'none';
		
		var imgSilhouette = document.createElement('img');
		imgSilhouette.src = this.imageBackgroundSilhouette.url;
		imgSilhouette.height = this.imageBackgroundSilhouette.height;
		imgSilhouette.width = this.imageBackgroundSilhouette.width;
		this.image[i].htmlNode.appendChild(imgSilhouette);
		imgSilhouette.style.position = 'relative';
		setOpacity(imgSilhouette,this.image[i].opacity);
		imgSilhouette.style.top = (this.image[i].offset+(this.imageBackgroundSilhouette.height-46))+'px';
		
		this.mouseOverEffects.push("new Effect.Morph('"+ img.id +"', { sync: true, style: 'top: "+ this.image[i].offset +"px;'})");
		this.mouseOutEffects.push("new Effect.Morph('"+ img.id +"', { sync: true, style: 'top: "+ (this.image[i].offset+(this.imageBackground.height-46)) +"px;'})");
	}
	
	createReflection(this.reflection,this.reflectionBackground.width,this.reflectionBackground.height,16,15,22,15);
	
	for(var i=0;i<this.reflection.length;i++) {
		var img = document.createElement('img');
		img.id = htmlParentNode.id+"_reflection"+i;
		img.src = this.reflectionBackground.url;
		img.height = this.reflectionBackground.height;
		img.width = this.reflectionBackground.width;
		if (i==0)
			this.reflection[i].htmlNode.style.marginTop = '8px';
		this.reflection[i].htmlNode.appendChild(img);
		this.canvas.htmlNode.appendChild(this.reflection[i].htmlNode);
		img.style.position = 'relative';
		setOpacity(img,this.reflection[i].opacity);
		img.style.top = this.reflection[i].offset+'px';
		img.style.display = 'none';
		
		var imgSilhouette = document.createElement('img');
		imgSilhouette.src = this.reflectionBackgroundSilhouette.url;
		imgSilhouette.height = this.reflectionBackgroundSilhouette.height;
		imgSilhouette.width = this.reflectionBackgroundSilhouette.width;
		this.reflection[i].htmlNode.appendChild(imgSilhouette);
		imgSilhouette.style.position = 'relative';
		setOpacity(imgSilhouette,this.reflection[i].opacity);
		imgSilhouette.style.top = this.reflection[i].offset+'px';
		
		this.mouseOverEffects.push("new Effect.Morph('"+ img.id +"', { sync: true, style: 'top: "+ (this.reflection[i].offset+(this.reflectionBackground.height-46)) +"px;'})");
		this.mouseOutEffects.push("new Effect.Morph('"+ img.id +"', { sync: true, style: 'top: "+ this.reflection[i].offset +"px;'})");
	}
	
	eval("this.mouseOutEffect = function () { return new Effect.Parallel(["+this.mouseOutEffects.join(", ")+"], { duration: 0.2, delay: 0.0, afterFinish: function() {$('"+htmlParentNode.id+"').jsNode.toSilhouette(); } }); };");
	eval("this.mouseOverEffect = function () { return new Effect.Parallel(["+this.mouseOverEffects.join(", ")+"], { duration: 0.2, delay: 0.0, beforeStart: function() {$('"+htmlParentNode.id+"').jsNode.toImage(); } }); };");
	eval("this.setActiveEffect = function () { return new Effect.Parallel(["+this.mouseOverEffects.join(", ")+"], { duration: 0.0, delay: 0.0, beforeStart: function() {$('"+htmlParentNode.id+"').jsNode.toImage(); } }); };");
	
	this.onmouseover = function () {
		this.title.onmouseover();
		if (this.current_effect)
			this.current_effect.cancel();
		this.current_effect = this.mouseOverEffect();
	}
	
	this.onmouseout = function () {
		this.title.onmouseout();
		if (this.current_effect)
			this.current_effect.cancel();
		this.current_effect = this.mouseOutEffect();
	}
	
	this.setActive = function () {
		this.title.onmouseover();
		this.current_effect = this.setActiveEffect();
	}
	
	this.toImage = function () {
		for(var i=0;i<this.image.length;i++) {
			this.image[i].htmlNode.lastChild.style.display = 'none';
			this.image[i].htmlNode.firstChild.style.display = 'block';
		}
		
		for(var i=0;i<this.reflection.length;i++) {
			this.reflection[i].htmlNode.lastChild.style.display = 'none';
			this.reflection[i].htmlNode.firstChild.style.display = 'block';
		}
	}
	
	this.toSilhouette = function () {
		for(var i=0;i<this.image.length;i++) {
			this.image[i].htmlNode.firstChild.style.display = 'none';
			this.image[i].htmlNode.lastChild.style.display = 'block';
		}
		
		for(var i=0;i<this.reflection.length;i++) {
			this.reflection[i].htmlNode.firstChild.style.display = 'none';
			this.reflection[i].htmlNode.lastChild.style.display = 'block';
		}
	}
}

function titleDetail(normalStatePos, hoverStatePos, activeStatePos) {
	this.htmlNode = document.createElement('div');
	this.htmlNode.className = 'title';
	this.htmlNode.jsNode = this;
	this.htmlNode.style.backgroundPosition = normalStatePos;
	
	this.normalStatePos = normalStatePos;
	this.hoverStatePos = hoverStatePos;
	this.activeStatePos = activeStatePos;
	
	this.onmouseover = function () {
		this.htmlNode.style.backgroundPosition = this.hoverStatePos;
	}
	
	this.onmouseout = function () {
		this.htmlNode.style.backgroundPosition = this.normalStatePos;
	}
	
	this.active = function () {
		this.htmlNode.style.backgroundPosition = this.activeStatePos;
	}
}

function createCanvas() {
	this.htmlNode = document.createElement('div');
	this.htmlNode.className = 'canvas';
	this.htmlNode.jsNode = this;
}

function createImage(imageArray,imageWidth,imageHeight,gradientHeight,maxOpacity) {
	var image = new sliceDetail(document.createElement('div'), 0, (imageHeight-gradientHeight), maxOpacity);
	var gradientIncrement = Math.round((maxOpacity/(gradientHeight+1))*100)/100;
	image.htmlNode.style.overflow = 'hidden';
	image.htmlNode.style.height = image.height + 'px';
	image.htmlNode.style.width = imageWidth+'px';
	imageArray.push(image);

	for(var i=gradientHeight;i>0;i--) {
		image = new sliceDetail(document.createElement('div'), (((imageArray.last().offset*-1)+imageArray.last().height)*-1), 1, Math.round(gradientIncrement*i));
		image.htmlNode.style.overflow = 'hidden';
		image.htmlNode.style.height = image.height + 'px';
		image.htmlNode.style.width = imageWidth+'px';
		imageArray.push(image);
	}
}

function createReflection(imageArray,imageWidth,imageHeight,topGradientHeight,topMaxOpacity,bottomGradientHeight,bottomMaxOpacity) {
	var topGradientIncrement = Math.round((topMaxOpacity/(topGradientHeight+1))*100)/100;
	var bottomGradientIncrement = Math.round((bottomMaxOpacity/(bottomGradientHeight+1))*100)/100;
	
	var image = new sliceDetail(document.createElement('div'), (40-imageHeight), 1, Math.round(topGradientIncrement*1));
	image.htmlNode.style.overflow = 'hidden';
	image.htmlNode.style.height = image.height + 'px';
	image.htmlNode.style.width = imageWidth+'px';
	imageArray.push(image);
	
	for(var i=1;i<topGradientHeight;i++) {
		image = new sliceDetail(document.createElement('div'), (((imageArray.last().offset*-1)+imageArray.last().height)*-1), 1, Math.round(topGradientIncrement*i));
		image.htmlNode.style.overflow = 'hidden';
		image.htmlNode.style.height = image.height + 'px';
		image.htmlNode.style.width = imageWidth+'px';
		imageArray.push(image);
	}
	
	for(var i=bottomGradientHeight;i>0;i--) {
		image = new sliceDetail(document.createElement('div'), (((imageArray.last().offset*-1)+imageArray.last().height)*-1), 2, Math.round(bottomGradientIncrement*i));
		image.htmlNode.style.overflow = 'hidden';
		image.htmlNode.style.height = image.height + 'px';
		image.htmlNode.style.width = imageWidth+'px';
		imageArray.push(image);
	}
}

function sliceDetail(htmlNode, offset, height, opacity) {
	this.htmlNode = htmlNode;
	this.offset = offset;
	this.height = height;
	this.opacity = opacity;
}

function backgroundDetail(url, width, height) {
	this.url = url;
	this.width = width;
	this.height = height;
}

function setOpacity(object, opacity) {
	if (Prototype.Browser.IE) {
		if (Prototype.Browser.IE8) {
			object.style.filter = 'progid:DXImageTransform.Microsoft.Alpha(Opacity='+opacity+')';
		} else {
			object.style.filter = 'alpha(opacity='+opacity+')';
		}
	} else {
		object.style.opacity = (opacity/100);
	}
}