var browserIsIE=(navigator.userAgent.indexOf("MSIE")>=0);
var browserIsFireFox=(navigator.userAgent.indexOf("Firefox")>=0);

var imgPreload=new Image();
var imgPreloadPrev=new Image();
var imgPreloadNext=new Image();
var sourceAnchor;
var stillExpanding=false;
var windowWidth=0, windowHeight=0, currExpansionIndx=0;
var initWide,initHigh,initX,initY;
var onResizeTimer;
var slideshowTimer;
var expandableImgDiv, expandableImg, slideShowButton, content, imagesContentContainerContentDIV;

var deltaW,deltaH,deltaX,deltaY;
var oldMouseX, oldMouseY, minLocX, maxLocX, minLocX, maxLocY;
var e, eventX, eventY;
var dragableImage;
var startSlideshowBool=true;

var imagesInitCalled=false;

var imgArray=null;//=[];
var As=[];
var imageIndex=0;

function imagesInit(){
	try{
		if(imagesInitCalled)return;
		imagesInitCalled=true;
		var preloadEvalStr="";
		
		expandableImgDiv=$("expandableImgDiv");  
		expandableImg=$("expandableImg");
		slideShowButton=$('slideShowButton');
		content=$("content");
		imagesContentContainerContentDIV=$("imagesContentContainerContentDIV");
		
		As=$$("a",imagesContentContainerContentDIV);
		var holderLength=As.length-1;
		
		var imgURL=false;
		
		imgArray=new Array(holderLength);
		
		for(var i=holderLength;i>-1;--i){
			imgURL=false;
			imgURL=As[i].getAttribute("valuetype");
			if(!imgURL)imgURL=As[i].valuetype;
			imgArray[i]=new Image();
			imgArray[i].src=imgURL;
			As[i].onclick=function(i){ return expandCollapseImgClick(this); };
		}
		initDragging();
		
		onresize=function(){
			clearTimeout(onResizeTimer);
			onResizeTimer=setTimeout("resizingPage()", 200);
		}
		
	}catch(e){}
}
function resizingPage(){
	try{
		if($('expandableImgDiv').className!="hide"){
			getSize();
			if((windowWidth<(parseInt($('expandableImgDiv').style.left)+parseInt($('expandableImg').style.width)))||(windowHeight<(parseInt($('expandableImgDiv').style.top)+parseInt($('expandableImg').style.height))))
				closeImagePopupDiv();
			else clearTimeout(onResizeTimer);
		}
		else clearTimeout(onResizeTimer);
		return false;
	}catch(e){return false;}
}
function expandCollapseImgClick(thisAnchorElmt,index){
	if(!stillExpanding){
		preloadSelectedImage(thisAnchorElmt);
		
		getPrevImgSrc();
		getNextImgSrc();
		
		getSize();
		expandImage(thisAnchorElmt);
	}
	return false;
}
function getSize(){
	windowWidth=content.clientWidth;
	windowHeight=content.clientHeight;
}
function getOrigAnchorAttrs(thisAnchorElmt){
	var anchorChild=thisAnchorElmt.firstChild;
	if(anchorChild.width)return anchorChild.width+"^"+anchorChild.height+"^"+getElmtCoords(anchorChild);
	else return "50^12^"+getElmtCoords(thisAnchorElmt);
}
function expandImage(thisAnchorElmt){
		stillExpanding=true;
		setOpacity(0);
		
		$('closeButton').className="hide";
		$('expandableImgDivBtns').className="hide";
		$('expandableImgDiv').className="";
		$('expandableImg').src=thisAnchorElmt.getAttribute("valuetype");
		
		sourceAnchor=thisAnchorElmt;
		var splitAnchorAttrs=getOrigAnchorAttrs(thisAnchorElmt).split("^");
		initWide=splitAnchorAttrs[0];
		initHigh=splitAnchorAttrs[1];
		initX=splitAnchorAttrs[2];
		initY=splitAnchorAttrs[3];
		
		$('expandableImg').style.width=initWide+'px';
		$('expandableImg').style.height=initHigh+'px';
		$('expandableImgDiv').style.left=initX+'px';
		$('expandableImgDiv').style.top=initY+'px';
		
		var endW=imgPreload.width;
		var endH=imgPreload.height;
		var minExpW=windowWidth-68;
		var minExpH=windowHeight-68;
		if(minExpW<endW){
			endH*=(minExpW/endW);
			endW=minExpW;
		}
		if(minExpH<endH){
			endW*=(minExpH/endH);
			endH=minExpH;
		}
		deltaW=endW-initWide;
		deltaH=endH-initHigh;
		deltaX=Math.floor((windowWidth/2)-(endW/2)-initX);
		deltaY=Math.floor((windowHeight/2)-(endH/2)-initY);
		setTimeout("transformSize(true)",5);
}
function transformSize(makeBigBool){
	currExpansionIndx=0;
	expandCollapseIMG(makeBigBool,initWide,initHigh,initX,initY);
}
function closeImagePopupDiv(){
	endSlideShow();
	if(!stillExpanding&&$('closeButton').className!="hide"){
		stillExpanding=true;
		$('closeButton').className="hide";
		$('expandableImgDivBtns').className="hide";
		initX=parseInt($('expandableImgDiv').style.left);
		initY=parseInt($('expandableImgDiv').style.top);
		initWide=$('expandableImg').width;
		initHigh=$('expandableImg').height;
		var origAnchorAttrsStr=getOrigAnchorAttrs(sourceAnchor).split("^");
		deltaW=origAnchorAttrsStr[0]-initWide;
		deltaH=origAnchorAttrsStr[1]-initHigh;
		deltaX=origAnchorAttrsStr[2]-initX;
		deltaY=origAnchorAttrsStr[3]-initY;
		setTimeout("transformSize(false)",5);
	}
}
function getElmtCoords(elmt){
	var containerScrollTop=0;
	if(typeof(elmt.offsetParent)!='undefined'){
		var yCoord=0, xCoord=0;
		for(var xCoord=0;elmt;elmt=elmt.offsetParent){
			yCoord+=elmt.offsetTop;
			xCoord+=elmt.offsetLeft;
		}
		
		//var containerScrollTop=0;
		try{
			yCoord-=$('imagesContentContainerContentDIV').scrollTop;
			//alert("$('imagesContentContainerContentDIV').scrollTop="+$('imagesContentContainerContentDIV').scrollTop)
			//alert("yCoord="+yCoord)
		}catch(e){}
		return (xCoord-content.scrollLeft)+"^"+(yCoord-content.scrollTop);
	}
}


function expandCollapseIMG(fadeIn, initWide, initHigh, initX, initY){
	if(currExpansionIndx==31){
		stillExpanding=false;
		if(fadeIn){
			showButtons(true);
		}
		else $('expandableImgDiv').className="hide";
		return;
	}
	else{
	
	//alert("expandImgDiv(initY,deltaY)="+expandImgDiv(initY,deltaY))
	//alert("Number(currExpansionIndx*deltaY)="+Number(currExpansionIndx*deltaY))
	//alert("Number(currExpansionIndx*deltaY/30)="+Number(currExpansionIndx*deltaY/30))
	//alert("Number(Math.ceil(currExpansionIndx*deltaY)/30+start)="+Number(currExpansionIndx*deltaY/30+initY))
	
		if(fadeIn)setOpacity(Math.abs(3.33*currExpansionIndx));
		else setOpacity(100-(3.33*currExpansionIndx));
		$('expandableImgDiv').style.left=expandImgDiv(initX,deltaX)+'px';
		$('expandableImgDiv').style.top=expandImgDiv(initY,deltaY)+'px';
		$('expandableImg').style.width=expandImgDiv(initWide,deltaW)+'px';
		$('expandableImg').style.height=expandImgDiv(initHigh,deltaH)+'px';
		currExpansionIndx++;					
		setTimeout("expandCollapseIMG("+fadeIn+","+initWide+", "+initHigh+","+initX+","+initY+")", 4);											
	}
}
function expandImgDiv(start,change){
	/*
	var t=(currExpansionIndx*change);
	if(t<30)t=30;
	return Math.floor(start+Math.ceil(t/30));
	*/
	//return Number(currExpansionIndx*deltaY/30)+start
	var returnVal=Number(currExpansionIndx*change/30+start);
	if(!returnVal||returnVal==NaN)returnVal=currExpansionIndx
	return returnVal;//Number(currExpansionIndx*change/30+start);
	
	
	//return Number(currExpansionIndx*change/30+start);
}
function showButtons(showBoolean){
	$('closeButton').className=$('expandableImgDivBtns').className=(showBoolean)?"":"hide";
}

function preloadSelectedImage(thisAnchorElmt){
	for(var i=As.length-1;i>-1;i--)
		if(thisAnchorElmt==As[i]){
			imageIndex=i;
			return imgPreload.src=imgArray[i].src;
		}
	//goes here if no return
	var imgURL=thisAnchorElmt.getAttribute("valuetype");
	if(!imgURL)imgURL=thisAnchorElmt.valuetype;
	if(imgURL!=imgPreload.src)imgPreload.src=imgURL;//if preload when needed.
}

function getPrevImgSrc(){
	return imgPreloadPrev.src=(imageIndex>0)?imgArray[imageIndex-1].src:imgArray[imgArray.length-1].src;
}
function getNextImgSrc(){
	return imgPreloadNext.src=(imageIndex<(imgArray.length-1))?imgArray[imageIndex+1].src:imgArray[0].src;
}

function updateImageIndex(incrBool){
	if(incrBool){
		if(imageIndex<imgArray.length-1)return ++imageIndex;
		else return imageIndex=0;
	}
	else{
		if(imageIndex>0)return --imageIndex;
		else return imageIndex=imgArray.length-1;
	}
}

var nextImgTimer;
function prevImg(btnClickBool,noSrc_isInternal){
	if(btnClickBool && !noSrc_isInternal)endSlideShow();
	if(!stillExpanding){
		showButtons(false);
		if(!noSrc_isInternal)fadeIt(false);
		if($('expandableImg').src==imgPreloadPrev.src || !imgPreloadPrev.complete || (typeof imgPreloadPrev.naturalWidth!="undefined"&&imgPreloadPrev.naturalWidth==0)){
			clearTimeout(nextImgTimer);
			if(btnClickBool)nextImgTimer=setTimeout("prevImg(true,true)",200);
			else nextImgTimer=setTimeout("prevImg(false,true)",200);
		}
		else{
			imgPreloadNext.src=imgPreload.src;
			$('expandableImg').src=imgPreload.src=imgPreloadPrev.src;
			getSelectedImgAttrs();
			updateImageIndex(false);
			imgPreloadPrev.src=getPrevImgSrc();
			fadeIt(true);
		}
	}
}
function nextImg(btnClickBool,noSrc_isInternal){
	if(btnClickBool && !noSrc_isInternal)endSlideShow();
	if(!stillExpanding){
		showButtons(false);
		if(!noSrc_isInternal)fadeIt(false);
		if($('expandableImg').src==imgPreloadNext.src || !imgPreloadNext.complete || (typeof imgPreloadNext.naturalWidth!="undefined"&&imgPreloadNext.naturalWidth==0)){
			clearTimeout(nextImgTimer);
			if(btnClickBool)nextImgTimer=setTimeout("nextImg(true,true)",200);
			else nextImgTimer=setTimeout("nextImg(false,true)",200);
		}
		else{			
			imgPreloadPrev.src=imgPreload.src;
			$('expandableImg').src=imgPreload.src=imgPreloadNext.src;
			getSelectedImgAttrs();
			updateImageIndex(true);
			imgPreloadNext.src=getNextImgSrc();
			fadeIt(true);
		}
	}
}
function getSelectedImgAttrs(){
	var oldExpandableImgW=parseInt($('expandableImg').style.width);
	var oldExpandableImgH=parseInt($('expandableImg').style.height);	
	if(oldExpandableImgW!=imgPreload.width || oldExpandableImgH!=imgPreload.height){
		getSize();
		var endW=imgPreload.width;
		var endH=imgPreload.height;
		var minExpW=windowWidth-68;
		var minExpH=windowHeight-68;
		if(minExpW<endW){
			endH*=(minExpW/endW);
			endW=minExpW;
		}
		if(minExpH<endH){
			endW*=(minExpH/endH);
			endH=minExpH;
		}
		var shrinkX=oldExpandableImgW>endW;
		var shrinkY=oldExpandableImgH>endH;
		expandOrContractForNextImg(oldExpandableImgW,endW,shrinkX,oldExpandableImgH,endH,shrinkY);
	}
}
function expandOrContractForNextImg(oldW,newW,shrinkX,oldH,newH,shrinkY){
	if(oldW!=newW || oldH!=newH){
		var oldWholder=oldW;
		var oldHholder=oldH;
		if(shrinkX&&oldW>newW)oldW=$('expandableImg').style.width=(oldW-15<newW)?newW:oldW-15;
		else if(!shrinkX&&oldW<newW)oldW=$('expandableImg').style.width=(oldW+15>newW)?newW:oldW+15;
		if(shrinkY&&oldH>newH)oldH=$('expandableImg').style.height=(oldH-15<newH)?newH:oldH-15;
		else if(!shrinkY&&oldH<newH)oldH=$('expandableImg').style.height=(oldH+15>newH)?newH:oldH+15;
		$('expandableImgDiv').style.left=(Math.floor((oldWholder-oldW)/2)+parseInt($('expandableImgDiv').style.left))+"px";
		$('expandableImgDiv').style.top=(Math.floor((oldHholder-oldH)/2)+parseInt($('expandableImgDiv').style.top))+"px";
		setTimeout("expandOrContractForNextImg("+oldW+","+newW+","+shrinkX+","+oldH+","+newH+","+shrinkY+")", 4);	
	}
}
function slideShow(){
	if(startSlideshowBool){
		startSlideshowBool=false;
		$('slideShowButton').value="End Slideshow";
		nextImg();
		clearInterval(slideshowTimer);
		slideshowTimer=setInterval("nextImg()", 3000);
	}
	else endSlideShow();
}
function endSlideShow(){
	clearInterval(slideshowTimer);
	setOpacity(100);
	startSlideshowBool=true;
	$("slideShowButton").value="View Slideshow";
}
var fadeTimerExp;
function fadeIt(fadeInBool,fadeCnt){
	clearTimeout(fadeTimerExp);
	if(!fadeCnt)fadeCnt=0;
	fadeCnt++;
	if(fadeCnt<31){
		if(fadeInBool)setOpacity(Math.abs(3.33*fadeCnt));
		else setOpacity(100-(3.33*fadeCnt));
		fadeTimerExp=setTimeout("fadeIt("+fadeInBool+","+fadeCnt+")", 4);
	}
	else{
		showButtons(true);
		return true;
	}
}
