// <!-- 

/****************************************************
*			    	General Routines
*             ==================
*        (c) Adrian Jones, woodsgood.ca
*			          May 2006 	 
*      Tested: Moz 1.5, IE 6.0, Op 8, NS 8   
*****************************************************/
	
var Img=new Array();					// main image array
var w,h,c,oW=0,oH=0,iN;				// local variables
var iOffset=50;				
var hFlag=false;wFlag=false;		// loop flags
var loop=50;							// loop timer (ms)
var border=3;							//	image border (px)
var imgNAME="image";					// id of image
var boxNAME="imgContainer";		// id of image container
var capNAME="imgCaption";			// id of image caption
var fin=true;							// action flag	

var l=0;
function cX (n) {
 	getObject("bx"+l+"").className="bx";		
 	getObject("bx"+n+"").className="bx2";
 	l=n;		
}

var Img=new Array();
var n=new Array();
function doImageSelections (inArray) {
   var l=0; 
   var n=inArray.length;		// change name to suit image array
   for (i=0;i<n;i++) {
 	  var m=	'<a href="javascript:changeImg('+i+')">';
 	  m+=		'<img src="images/boxred.gif" id="bx'+i+'" class="bx" alt="b"></a>';
  	  document.write(m); 
 	  Img[i]=inArray[i];		// change name to suit image array
 	  n[i]=new Image();n.src=Img[i]
 	}
}


// Main called function with parameters (image_array_number)
function changeImg(iN) {
//	alert(iN);
	if(fin) {
		cX(iN);
		fin=false;							// 
		var Nimg=Img[iN][imLoc];
//		var im=new Image();im.src=Img[iN][imLoc];
//		w=im.width;h=im.height;			// image width and height
		w=parseInt(Img[iN][imW],10);					// width
		h=parseInt(Img[iN][imH],10);					// height
		c=Img[iN][imCap];					// caption
		lnk=Img[iN][imLnk];				// link
		hideImage(Nimg,lnk);				// hide and update image & caption
		initImageBox(w,h);				// size image box and fade in image and caption
	}
}

function initImageBox(fW,fH) {
	var iW=(oW==0)? Math.abs(fW-iOffset):oW;			// if first time, start off with offset
	var iH=(oH==0)? Math.abs(fH-iOffset):oH;
	oW=fW;oH=fH;
	hFlag=false;wFlag=false;		// reset variables
	slideIn(boxNAME,iW,2*border+fW,iH,2*border+fH);
} 

function slideIn(oID,nW,eW,nH,eH) {
//			alert(eW+":"+nW);			
	if (hFlag&&wFlag) {							// if both width and height done,
		clearTimeout(tim);						// clear timeout, ...
		fadeIn(imgNAME,0);						// ...fade in image and ... 
		fadeIn(capNAME,0);						// ...caption
//		alert(oID+":"+getObject(oID).style.width+":"+border);
	} else {
  		obj=getObject(oID);
		if (Math.abs(nW-eW)>1) {
			obj.style.width=nW+"px";
			nW += Math.round((eW-nW)/2);		// halve distace between current and end values
		} else {wFlag=true; }					// when done width, set flag
 		if (Math.abs(nH-eH)>1) {
			obj.style.height=nH+"px";
 			nH += Math.round((eH-nH)/2);
 		} else { hFlag=true;	}					// when done height, set flag
  		tim = setTimeout("slideIn('"+oID+"',"+nW+","+eW+","+nH+","+eH+")", loop);
	}
}

function hideImage(imgSrc,imgLnk) {
	ca=getObject(capNAME);setOpacity(ca,0);ca.innerHTML=c;		// change caption
	im=getObject(imgNAME);setOpacity(im,0);im.src=imgSrc;
	im.onclick=mClick;im.lnk=imgLnk;			// change to new image
} 
function mClick()	{ if(this.lnk) window.location.href=this.lnk; }

function fadeIn(objId,opacity) {
	obj=getObject(objId);
	if (opacity <= 100) {
		setOpacity(obj, opacity);
		opacity += 10;
		var tim=setTimeout("fadeIn('"+objId+"',"+opacity+")", 50);
	} else {clearTimeout(tim);fin=true;}
} 


function setOpacity(obj, opacity) { 
	opacity = (opacity == 100)?99.999:opacity; 
	obj.style.filter = "alpha(opacity:"+opacity+")"; 
	obj.style.KHTMLOpacity = opacity/100; 
	obj.style.MozOpacity = opacity/100; 
	obj.style.opacity = opacity/100;
}

function getObject(obj) {
	if(document.all) {
		if(typeof obj=="string") { 
			return document.all(obj);
		} else {return obj.style;}
	} 
	if(document.getElementById) {
		if(typeof obj=="string") {
			return document.getElementById(obj); 
		} else {return obj.style;}
	} 
return null; 
}
-->

