
function ImageFlow(){this.defaults={ImageFlowID:'imageflow',preloadImages:true,reflections:false,reflectionP:0.5,reflectionPNG:false,reflectionGET:'',imageFocusMax:2,imageFocusM:1.0,imageCursor:'default',startID:4,startAnimation:true,slider:true,sliderCursor:'pointer',sliderWidth:39,xStep:150,captions:true,opacity:true,opacityArray:[10,8,6,4,2],onClick:function(){openTeacherBio(this.url);},moreText:'More'};var thisObject=this;this.init=function(options){var optionsArray=new Array('ImageFlowID','preloadImages','reflections','reflectionP','reflectionPNG','reflectionGET','imageFocusMax','imageFocusM','imageCursor','startID','startAnimation','slider','sliderCursor','sliderWidth','xStep','captions','opacity','opacityArray','onClick','moreText');var max=optionsArray.length;for(var i=0;i<max;i++){var name=optionsArray[i];this[name]=(options!==undefined&&options[name]!==undefined)?options[name]:thisObject.defaults[name];}
var ImageFlowDiv=document.getElementById(thisObject.ImageFlowID);if(ImageFlowDiv){ImageFlowDiv.style.visibility='visible';this.ImageFlowDiv=ImageFlowDiv;if(this.createStructure()){this.imagesDiv=document.getElementById(thisObject.ImageFlowID+'_images');this.captionDiv=document.getElementById(thisObject.ImageFlowID+'_caption');this.scrollbarDiv=document.getElementById(thisObject.ImageFlowID+'_scrollbar');this.sliderDiv=document.getElementById(thisObject.ImageFlowID+'_slider');this.indexArray=[];this.current=0;this.imageID=0;this.target=0;this.memTarget=0;this.firstRefresh=true;this.firstCheck=true;this.busy=false;if(this.slider===false){this.scrollbarDiv.style.display='none';}
var width=this.ImageFlowDiv.offsetWidth;var height=Math.round(width*0.5085);document.getElementById(thisObject.ImageFlowID+'_loading_txt').style.paddingTop=((height*0.5)-22)+'px';ImageFlowDiv.style.height=height+'px';this.loadingProgress();}}};this.createStructure=function(){var imagesDiv=document.createElement('div');imagesDiv.setAttribute('id',thisObject.ImageFlowID+'_images');imagesDiv.setAttribute('class','images');imagesDiv.setAttribute('className','images');var node=null;var max=this.ImageFlowDiv.childNodes.length;for(var index=0;index<max;index++){node=this.ImageFlowDiv.childNodes[index];if(node&&node.nodeType==1&&node.nodeName=='IMG'){if(thisObject.reflections===true){var version='2';if(thisObject.reflectionPNG===true){version='3';}
var src=node.getAttribute('src',2);src='reflect'+version+'.php?img='+src+thisObject.reflectionGET;node.setAttribute('src',src);}
var imageNode=node.cloneNode(true);imagesDiv.appendChild(imageNode);}}
var loadingP=document.createElement('p');var loadingText=document.createTextNode(' ');loadingP.setAttribute('id',thisObject.ImageFlowID+'_loading_txt');loadingP.appendChild(loadingText);var loadingDiv=document.createElement('div');loadingDiv.setAttribute('id',thisObject.ImageFlowID+'_loading');loadingDiv.setAttribute('class','loading');loadingDiv.setAttribute('className','loading');var loadingBarDiv=document.createElement('div');loadingBarDiv.setAttribute('id',thisObject.ImageFlowID+'_loading_bar');loadingBarDiv.setAttribute('class','loading_bar');loadingBarDiv.setAttribute('className','loading_bar');loadingDiv.appendChild(loadingBarDiv);var captionDiv=document.createElement('div');captionDiv.setAttribute('id',thisObject.ImageFlowID+'_caption');captionDiv.setAttribute('class','caption');captionDiv.setAttribute('className','caption');var scrollbarDiv=document.createElement('div');scrollbarDiv.setAttribute('id',thisObject.ImageFlowID+'_scrollbar');scrollbarDiv.setAttribute('class','scrollbar');scrollbarDiv.setAttribute('className','scrollbar');var sliderDiv=document.createElement('div');sliderDiv.setAttribute('id',thisObject.ImageFlowID+'_slider');sliderDiv.setAttribute('class','slider');sliderDiv.setAttribute('className','slider');scrollbarDiv.appendChild(sliderDiv);var success=false;if(thisObject.ImageFlowDiv.appendChild(imagesDiv)&&thisObject.ImageFlowDiv.appendChild(loadingP)&&thisObject.ImageFlowDiv.appendChild(loadingDiv)&&thisObject.ImageFlowDiv.appendChild(captionDiv)&&thisObject.ImageFlowDiv.appendChild(scrollbarDiv)){for(index=0;index<max;index++){node=this.ImageFlowDiv.childNodes[index];if(node&&node.nodeType==1&&node.nodeName=='IMG'){this.ImageFlowDiv.removeChild(node);}}
success=true;}
return success;};this.loadingProgress=function(){var p=thisObject.loadingStatus();if(p<100||thisObject.firstCheck===true&&thisObject.preloadImages===true){if(thisObject.firstCheck===true&&p==100){thisObject.firstCheck=false;window.setTimeout(thisObject.loadingProgress,100);}
else{window.setTimeout(thisObject.loadingProgress,40);}}
else{document.getElementById(thisObject.ImageFlowID+'_loading_txt').style.display='none';document.getElementById(thisObject.ImageFlowID+'_loading').style.display='none';window.setTimeout(thisObject.addResizeEvent,1000);thisObject.initMouseWheel();thisObject.MouseDrag.init();thisObject.Key.init();thisObject.refresh(true);document.getElementById(thisObject.ImageFlowID+'_scrollbar').style.visibility='visible';var startID=thisObject.startID-1;if(startID<0){startID=0;}
if(startID>thisObject.max){startID=thisObject.max-1;}
thisObject.glideTo(startID);if(thisObject.startAnimation===true){thisObject.moveTo(5000);}}};this.loadingStatus=function(){var max=thisObject.imagesDiv.childNodes.length;var i=0,completed=0;var image=null;for(var index=0;index<max;index++){image=thisObject.imagesDiv.childNodes[index];if(image&&image.nodeType==1&&image.nodeName=='IMG'){if(image.complete===true){completed++;}
i++;}}
var finished=Math.round((completed/i)*100);var loadingBar=document.getElementById(thisObject.ImageFlowID+'_loading_bar');loadingBar.style.width=finished+'%';var loadingP=document.getElementById(thisObject.ImageFlowID+'_loading_txt');var loadingTxt=document.createTextNode('loading images '+completed+'/'+i);loadingP.replaceChild(loadingTxt,loadingP.firstChild);return finished;};this.refresh=function(){this.iWidth=thisObject.imagesDiv.offsetWidth;this.maxHeight=Math.round(thisObject.iWidth*0.51);this.maxFocus=thisObject.imageFocusMax*thisObject.xStep;this.size=thisObject.iWidth*0.5;this.scrollbarWidth=Math.round(thisObject.iWidth*0.6);this.sliderWidth=thisObject.sliderWidth*0.5;thisObject.ImageFlowDiv.style.height=thisObject.maxHeight+'px';thisObject.imagesDiv.style.height=Math.round(thisObject.iWidth*0.338)+'px';thisObject.captionDiv.style.width=thisObject.iWidth+'px';thisObject.captionDiv.style.marginTop=Math.round(thisObject.iWidth*0.03)+'px';thisObject.scrollbarDiv.style.width=thisObject.scrollbarWidth+'px';thisObject.scrollbarDiv.style.marginTop=Math.round(thisObject.iWidth*0.02)+'px';thisObject.scrollbarDiv.style.marginLeft=Math.round(thisObject.iWidth*0.2)+'px';thisObject.sliderDiv.style.cursor=thisObject.sliderCursor;thisObject.sliderDiv.onmousedown=function(){thisObject.MouseDrag.start(this);return false;};var multi=(thisObject.reflections===true)?thisObject.reflectionP+1:1;var max=thisObject.imagesDiv.childNodes.length;var i=0;var image=null;for(var index=0;index<max;index++){image=thisObject.imagesDiv.childNodes[index];if(image!==null&&image.nodeType==1&&image.nodeName=='IMG'){this.indexArray[i]=index;image.url=image.getAttribute('longdesc');image.xPosition=(-i*thisObject.xStep);image.i=i;if(thisObject.firstRefresh){if(image.getAttribute('width')!==null&&image.getAttribute('height')!==null){image.w=image.getAttribute('width');image.h=image.getAttribute('height')*multi;}
else{image.w=image.width;image.h=image.height;}}
if((image.w)>(image.h/(thisObject.reflectionP+1))){image.pc=118;image.pcMem=118;}
else{image.pc=100;image.pcMem=100;}
image.style.cursor=thisObject.imageCursor;i++;}}
this.max=thisObject.indexArray.length;if(thisObject.firstRefresh){thisObject.firstRefresh=false;}
thisObject.moveTo(thisObject.current);thisObject.glideTo(thisObject.imageID);};this.moveTo=function(x){this.current=x;this.zIndex=thisObject.max;for(var index=0;index<thisObject.max;index++){var image=thisObject.imagesDiv.childNodes[thisObject.indexArray[index]];var currentImage=index*-thisObject.xStep;if((currentImage+thisObject.maxFocus)<thisObject.memTarget||(currentImage-thisObject.maxFocus)>thisObject.memTarget){image.style.visibility='hidden';image.style.display='none';}
else{var z=Math.sqrt(10000+x*x)+100;var xs=x/z*thisObject.size+thisObject.size;image.style.display='block';var newImageH=(image.h/image.w*image.pc)/z*thisObject.size;var newImageW=0;switch(newImageH>thisObject.maxHeight){case false:newImageW=image.pc/z*thisObject.size;break;default:newImageH=thisObject.maxHeight;newImageW=image.w*newImageH/image.h;break;}
var newImageTop=(thisObject.iWidth*0.34-newImageH)+((newImageH/(thisObject.reflectionP+1))*thisObject.reflectionP);image.style.left=xs-(image.pc/2)/z*thisObject.size+'px';if(newImageW&&newImageH){image.style.height=newImageH+'px';image.style.width=newImageW+'px';image.style.top=newImageTop+'px';}
image.style.visibility='visible';switch(x<0){case true:this.zIndex++;break;default:this.zIndex=thisObject.zIndex-1;break;}
switch(image.i==thisObject.imageID){case false:image.onclick=function(){thisObject.glideTo(this.i);};break;default:this.zIndex=thisObject.zIndex+1;if(image.url!==''){image.onclick=thisObject.onClick;}
break;}
image.style.zIndex=thisObject.zIndex;}
x+=thisObject.xStep;}};var oImageID='teacher_1';this.glideTo=function(imageID){var x=-imageID*thisObject.xStep;this.target=x;this.memTarget=x;this.imageID=imageID;var caption=thisObject.imagesDiv.childNodes[imageID].getAttribute('summary')+' <span class="more">[<a href="#"  onclick="openTeacherBio(\''+thisObject.imagesDiv.childNodes[imageID].getAttribute('longdesc')+'\'); return false;">'+this.moreText+'</a>]</span>';if(caption===''||thisObject.captions===false){caption='&nbsp;';}
thisObject.captionDiv.innerHTML=caption;teacher=thisObject.imagesDiv.childNodes[imageID].getAttribute('longdesc');jQuery("#"+oImageID).hide();jQuery("#"+teacher).show();oImageID=thisObject.imagesDiv.childNodes[imageID].getAttribute('longdesc');if(thisObject.MouseDrag.busy===false){this.newSliderX=(imageID*thisObject.scrollbarWidth)/(thisObject.max-1)-thisObject.MouseDrag.newX;thisObject.sliderDiv.style.marginLeft=(thisObject.newSliderX-thisObject.sliderWidth)+'px';}
if(thisObject.opacity===true||thisObject.imageFocusM!==thisObject.defaults.imageFocusM){thisObject.setOpacity(thisObject.imagesDiv.childNodes[imageID],thisObject.opacityArray[0]);thisObject.imagesDiv.childNodes[imageID].pc=thisObject.imagesDiv.childNodes[imageID].pc*thisObject.imageFocusM;var opacityValue=0;var rightID=0;var leftID=0;var last=thisObject.opacityArray.length;for(var i=1;i<(thisObject.imageFocusMax+1);i++){if((i+1)>last){opacityValue=thisObject.opacityArray[last-1];}
else{opacityValue=thisObject.opacityArray[i];}
rightID=imageID+i;leftID=imageID-i;if(rightID<thisObject.max){thisObject.setOpacity(thisObject.imagesDiv.childNodes[rightID],opacityValue);thisObject.imagesDiv.childNodes[rightID].pc=thisObject.imagesDiv.childNodes[rightID].pcMem;}
if(leftID>=0){thisObject.setOpacity(thisObject.imagesDiv.childNodes[leftID],opacityValue);thisObject.imagesDiv.childNodes[leftID].pc=thisObject.imagesDiv.childNodes[leftID].pcMem;}}}
if(thisObject.busy===false){window.setTimeout(thisObject.animate,50);thisObject.busy=true;}};this.animate=function(){switch(thisObject.target<thisObject.current-1||thisObject.target>thisObject.current+1){case true:thisObject.moveTo(thisObject.current+(thisObject.target-thisObject.current)/3);window.setTimeout(thisObject.animate,50);thisObject.busy=true;break;default:thisObject.busy=false;break;}};this.setOpacity=function(object,value){if(thisObject.opacity===true){object.style.opacity=value/10;object.style.filter='alpha(opacity='+value*10+')';}};this.initMouseWheel=function(){if(window.addEventListener){thisObject.ImageFlowDiv.addEventListener('DOMMouseScroll',thisObject.eventMouseWheel,false);}
thisObject.ImageFlowDiv.onmousewheel=thisObject.eventMouseWheel;};this.eventMouseWheel=function(event){var delta=0;if(!event){event=window.event;}
if(event.wheelDelta){delta=event.wheelDelta/120;}
else if(event.detail){delta=-event.detail/3;}
if(delta){thisObject.handleMouseWheel(delta);}
if(event.preventDefault){event.preventDefault();}
event.returnValue=false;};this.handleMouseWheel=function(delta){var change=false;var newImageID=0;if(delta>0){if(thisObject.imageID>=1){newImageID=thisObject.imageID-1;change=true;}}
else{if(thisObject.imageID<(thisObject.max-1)){newImageID=thisObject.imageID+1;change=true;}}
if(change===true){thisObject.glideTo(newImageID);}};this.MouseDrag={object:null,objectX:0,mouseX:0,newX:0,busy:false,init:function(){thisObject.addEvent(thisObject.ImageFlowDiv,'mousemove',thisObject.MouseDrag.drag);thisObject.addEvent(thisObject.ImageFlowDiv,'mouseup',thisObject.MouseDrag.stop);thisObject.addEvent(document,'mouseup',thisObject.MouseDrag.stop);thisObject.ImageFlowDiv.onselectstart=function(){var selection=true;if(thisObject.MouseDrag.busy===true){selection=false;}
return selection;};},start:function(o){thisObject.MouseDrag.object=o;thisObject.MouseDrag.objectX=thisObject.MouseDrag.mouseX-o.offsetLeft+thisObject.newSliderX;},stop:function(){thisObject.MouseDrag.object=null;thisObject.MouseDrag.busy=false;},drag:function(e){var posx=0;if(!e){e=window.event;}
if(e.pageX){posx=e.pageX;}
else if(e.clientX){posx=e.clientX+document.body.scrollLeft+document.documentElement.scrollLeft;}
thisObject.MouseDrag.mouseX=posx;if(thisObject.MouseDrag.object!==null){var newX=(thisObject.MouseDrag.mouseX-thisObject.MouseDrag.objectX)+thisObject.sliderWidth;if(newX<(-thisObject.newSliderX)){newX=-thisObject.newSliderX;}
if(newX>(thisObject.scrollbarWidth-thisObject.newSliderX)){newX=thisObject.scrollbarWidth-thisObject.newSliderX;}
var step=(newX+thisObject.newSliderX)/(thisObject.scrollbarWidth/(thisObject.max-1));var imageID=Math.round(step);thisObject.MouseDrag.newX=newX;thisObject.MouseDrag.object.style.left=newX+'px';if(thisObject.imageID!==imageID){thisObject.glideTo(imageID);}
thisObject.MouseDrag.busy=true;}}};this.Key={init:function(){document.onkeydown=function(event){thisObject.Key.handle(event);};},handle:function(event){var charCode=thisObject.Key.get(event);switch(charCode){case 39:thisObject.handleMouseWheel(-1);break;case 37:thisObject.handleMouseWheel(1);break;}},get:function(event){event=event||window.event;return event.keyCode;}};this.addEvent=function(obj,type,fn){if(obj.addEventListener){obj.addEventListener(type,fn,false);}
else if(obj.attachEvent){obj["e"+type+fn]=fn;obj[type+fn]=function(){obj["e"+type+fn](window.event);};obj.attachEvent("on"+type,obj[type+fn]);}};this.addResizeEvent=function(){var otherFunctions=window.onresize;if(typeof window.onresize!='function'){window.onresize=function(){thisObject.refresh();};}
else{window.onresize=function(){if(otherFunctions){otherFunctions();}
thisObject.refresh();};}};}
var domReadyEvent={name:"domReadyEvent",events:{},domReadyID:1,bDone:false,DOMContentLoadedCustom:null,add:function(handler){if(!handler.$$domReadyID){handler.$$domReadyID=this.domReadyID++;if(this.bDone){handler();}
this.events[handler.$$domReadyID]=handler;}},remove:function(handler){if(handler.$$domReadyID){delete this.events[handler.$$domReadyID];}},run:function(){if(this.bDone){return;}
this.bDone=true;for(var i in this.events){this.events[i]();}},schedule:function(){if(this.bDone){return;}
if(/KHTML|WebKit/i.test(navigator.userAgent)){if(/loaded|complete/.test(document.readyState)){this.run();}
else{setTimeout(this.name+".schedule()",100);}}
else if(document.getElementById("__ie_onload")){return true;}
if(typeof this.DOMContentLoadedCustom==="function"){if(typeof document.getElementsByTagName!=='undefined'&&(document.getElementsByTagName('body')[0]!==null||document.body!==null)){if(this.DOMContentLoadedCustom()){this.run();}
else{setTimeout(this.name+".schedule()",250);}}}
return true;},init:function(){if(document.addEventListener){document.addEventListener("DOMContentLoaded",function(){domReadyEvent.run();},false);}
setTimeout("domReadyEvent.schedule()",100);function run(){domReadyEvent.run();}
if(typeof addEvent!=="undefined"){addEvent(window,"load",run);}
else if(document.addEventListener){document.addEventListener("load",run,false);}
else if(typeof window.onload==="function"){var oldonload=window.onload;window.onload=function(){domReadyEvent.run();oldonload();};}
else{window.onload=run;}}};var domReady=function(handler){domReadyEvent.add(handler);};domReadyEvent.init();function startImageFlow(imageFlowID,moreText){domReady(function(){var instanceOne=new ImageFlow();instanceOne.init({ImageFlowID:imageFlowID,moreText:moreText});});}
var currentTeacher='';function openTeacherBio(teacher){if(currentTeacher!=''){jQuery("#"+currentTeacher).hide();}
jQuery("#"+teacher).show();jQuery('#teacherbio').fadeIn('fast');currentTeacher=teacher;}
function closeTeacherBio(teacher){jQuery('#teacherbio').fadeOut('fast');}