/* *********************************** */
/* ESSENTIAL CONTROLS FOR PHOTOGALLERY */
/* *********************************** */

if(!this.FUNCHLD) this.FUNCHLD = new Array();


// ---------.---------.---------.---------.---------.---------.---------.
// -- CHECK EACH IMAGES AND LOAD IFF THEY ARE VISIBLE
var imagePhotogal = new Object(); {
	var o = imagePhotogal;
	FUNCHLD[o.thisInd = FUNCHLD.length] = imagePhotogal;

	// -- CHECK EACH IMAGE IF THEY ARE LOADED
	o.checkLoadImg = function() {
		var objMain = document.getElementById("pnlThumbList");
		
		// START FROM ZERO AND END ON LAST IMAGE LOADED
		var hasAlreadyImg = false;
		for(var i=0; i<999; i++) {
			var objImg 		= document.getElementById("tbi_" + i);

			// TERMINATE THIS IF objImg IS NULL (NEXT IMG DOESN'T EXISTS		
			if(objImg) {
				var objImgPH	= objImg.offsetParent;
				var objImg_file	= document.getElementById("tbi_f_" + i);

				// GET THE OFFSET HEIGHT
				// TABLE.TD.A.TABLE.TD.image
				var offs = eval(RetPar("objImgPH", 4, ".offsetLeft"));
				
				// ONLY LOAD WHICH IS VISIBLE IN THE PANEL AND IF objImg.src IS NOT SET
				if(
					offs >= objMain.scrollLeft - objImgPH.offsetWidth && 
					offs <= objMain.scrollLeft + objMain.offsetWidth &&
					!objImg.hasNowImg 
				){
					if(!hasAlreadyImg) hasAlreadyImg = true;
					objImg.hasNowImg = true;
					objImg.src = objImg_file.value;
				}
				// STOPS ON LAST IMAGE
				else if(hasAlreadyImg) {
					break;
				}
			} else {
				break;
			}
		}
	}


	// ---------.---------.---------.---------.---------.---------.---------.
	// -- CREATES IMAGE THUMBNAILS
	// -- THIS IS MUCH LITTLE THAN POSTING IT AS PHP
	o.w = 75;
	o.h = 90;
	o.ct = 0;
	o.imgSpacing = 20;
	o.createThumbnail = function(pFilename, pAccess, pDescription) {
		var ct = this.ct;
		// NOW, PRODUCE AN OUTPUT
		document.writeln(
			(ct!=0 ? "<TD><DIV STYLE='width:"+ this.imgSpacing + ";'></TD>" : "")+
			"<TD>" +
			"<A CLASS='imgtb' ID='tbi_ch_" + ct + "' HREF='#' ONCLICK='swtImgTB.switchTo(this); FUNCHLD["+this.thisInd+"].loadImg(\"" + pAccess + "\", this); return false;'>" +
				"<TABLE BORDER=0 CELLSPACING=0 CELLPADDING=0 WIDTH="+this.w+" HEIGHT="+this.h+"><TD CLASS='img_content'>" +
				"<IMG SRC='"+par+"/images/_for_photogallery/ico_loader_01.gif' ID='tbi_" + ct + "'></TABLE>" +
				"<INPUT TYPE='hidden' ID='tbi_f_" + ct + "' VALUE='"+par+"/thumb.php?tbmode=sq&f="+ escape(pFilename) +"&w="+this.w+"&h="+this.h+"'>" +
				"</A>" +
			"</TD>"
		);
		this.ct++;
	}

	// ---------.---------.---------.---------.---------.---------.---------.
	// -- LOADS IMAGE TO THE MAIN VIEWER
	o.loadImg = function(pFilename, pObjImg) {
		// LOADS THE IMAGE
		var t_filename = pFilename;
		
		this.openImg(t_filename, pObjImg);
		
		// ADJUST THE SCROLLER TO THE OBJECT
		var pObjImgPH = pObjImg.offsetParent;
		var pImgOffset = eval(RetPar("pObjImgPH", 4, ".offsetLeft")) - (document.getElementById("pnlThumbList").offsetWidth / 2) + (pObjImgPH.offsetWidth/2);
		scrThumbList.doScrollTo(pImgOffset);
		
	}
	// -- OPENS THE IMAGE
	o.openImg = function(pFilename, pObjImg) {
		var objImgControls = document.getElementById("pnlImgControls");
		var objMain = document.getElementById("pnlImgContent");
		var t_filename = pFilename;
		
		// HIDE THE CONTROLS
		objImgControls.style.display = "none";
		
		// PUT THE IMAGE TO THE PLACEHOLDER
		objMain.innerHTML = 
			"<TABLE HEIGHT=100% WIDTH=100% CELLSPACING=0 CELLPADDING=0 BORDER=0><TD STYLE='vertical-align:middle; text-align:center;'>" + 
				"<IMG SRC='" + t_filename + "' ID='imgmain'>" +
			"</TD></TABLE>";
			
		// CHECK THE IMAGE IF NEEDS
		imageCtrl.checkSize(true);
	}
	
	
	// -- CLEAR
	var o;
}







// ---------.---------.---------.---------.---------.---------.---------.
// -- IMAGE ZOOM FUNCTIONS
var imageCtrl = new Object(); {
	var o = imageCtrl;

	// -- THE VARIABLES
	FUNCHLD[o.thisInd = FUNCHLD.length] = imageCtrl;
	o.isFitToScreen = true;
	o.checkLoad_int = null;

	// -- CHECK THE SIZE OF THE IMAGE
	o.checkSize = function(pIsReset) {
		/*
		   PARAMS:
		   pIsReset	= BOOL: RESETS IMAGE CONTROL TO RESIZE IMAGE TO FIT SCREEN
		   IF THE IMAGE IS MORE THAN THE PANEL, THEN RESIZE IT
		*/
		// RESET THE IMAGE CTRL IF NEEDED
		if(pIsReset) {
			this.isFitToScreen = true;
			this.check_FitToScreenStatus();
			// SET ALSO THE ORIGINAL SIZE TO NULL
			this.origW = 
			this.origH = null;

		}

		clearInterval(this.checkLoad_int);
		this.checkLoad_int = setInterval("FUNCHLD["+this.thisInd+"]._do_CheckSize();", 100);
		o._do_CheckSize();
	}

	// -- THIS ONE WILL BE PROCESSED BY setInterval
	o._do_CheckSize = function() {
		// DO NOT LOAD THIS UNTIL IMAGE IS LOADED
		var objImg = document.getElementById("imgmain");
		if(objImg)
		if(objImg.complete) {
			// DO THIS ONLY WHEN this.isFitToScreen = true;
		
			if(this.isFitToScreen) {
				var objMain = document.getElementById("pnlImgContent");
				var objImgControls = document.getElementById("pnlImgControls");

				// IT IS WISER TO RESET THE SCROLLING OF THE IMAGE CONTENT
				objMain.scrollTop =
				objMain.scrollLeft = 0;
				
							
				// CHECK THE IMAGE'S SIZE
				var img_w = objImg.offsetWidth;
				var img_h = objImg.offsetHeight;
				
				// GET THE ORIGINAL IMAGE DIMENSIONS
				if(!this.origW || !this.origH)  {
					this.origW = img_w;
					this.origH = img_h;
				}

				// COMPUTE THE ADJUSTED SIZE BY PERCENTAGE
				// RESIZE FUNCTION
				var thisObj = this;
				var doResize = function() {
					// SET THE FINAL SIZE
					objImg.width 	= thisObj.origW * percSize;
					objImg.height 	= thisObj.origH * percSize;
				}			
				var hasResize = false;
				var percSize = 1;
				//alert(objMain.offsetHeight);
				// ADJUST IMG WIDTH
				if(this.origW > objMain.offsetWidth) {
					percSize = (objMain.offsetWidth - 5) / this.origW;
					hasResize = true;
				}
				doResize();
				// ADJUST IMG HEIGHT
				if (this.origH > objMain.offsetHeight) {
					percSize = (objMain.offsetHeight - 5) / this.origH;
					hasResize = true;
				}
				doResize();
				
				// SET THE overflow MODE OF IMAGE PLACEHOLDER TO HIDDEN
				objMain.style.overflow = "hidden";
				
				// CREATE RESIZE TAB IN THE IMAGE
				if(hasResize) {
					// SHOW CONTROLS IF ANY
					objImgControls.style.display = "";
				}
				// OR MAKE IT HIDDEN
				else {
					objImgControls.style.display = "none";
				}
			}
			
			// CLEAR INTERVAL
			clearInterval(this.checkLoad_int);
		}
	}

	
	// -- TOGGLE BETWEEN FIT TO SCREEN AND FULLSIZE
	o.toggleFitToScreen = function(pObj) {
		/*
		   pObj 	= OBJECT: REFERENCE TO THE CLICKER
		*/
		// OBJECT REFERENCES
		var objMain = document.getElementById("pnlImgContent");
		var objImg = document.getElementById("imgmain");
		
		// MAKE IT FULL ZOOM
		if(this.isFitToScreen) {
			this.isFitToScreen = false;
			objMain.style.overflow = "auto";
			// RESIZE THE IMAGE TO ORIGINAL SIZE
			objImg.width = 	this.origW;
			objImg.height = 	this.origH;
			// CHANGE TEXT OF THE CLICKER
		}
		// MAKE IT FIT TO SCREEN
		else {
			this.isFitToScreen = true;
			objMain.style.overflow = "hidden";
			// CHECK THE SIZE OF THE IMAGE
			this.checkSize();
			// CHANGE TEXT OF THE CLICKER
		}
		
		// CHANGE STATE OF THE IMAGE
		this.check_FitToScreenStatus(pObj);
	}
	// -- CHECK STATUS OF THE IMAGE
	o.check_FitToScreenStatus = function (pObj) {
		if(!pObj)
			pObj = document.getElementById("anc_toggleFitToScreen");
			
		// THE STATUS OF THE IMAGE
		// ON FIT TO SCREEN, TELL THE USER TO ZOOM IMG TO ORIGINAL SIZE
		if(this.isFitToScreen)
			pObj.innerHTML = "Original Size";
		// ELSE, REVERSE	
		else
			pObj.innerHTML = "Fit To Screen";
	}
	
	var o;

}


// ---------.---------.---------.---------.---------.---------.---------.
/* CLASSIC RETPAR */
function RetPar(frste,num,ende) {
	var str="";
	for(var x=0;x<num;x++) {
		str+=frste;
		for (var y=0;y<x;y++) {
			str+=".offsetParent"; 
		}
		str+= ende + "+"; 
	}
	return str + "0";
}

// ---------.---------.---------.---------.---------.---------.---------.
/* SET TO RESIZE SELECTED PANELS ON WINDOW RESIZE*/
var docPanel = new Object();
var _appl=navigator.appName;
// CONSTRUCTOR
docPanel.setResizer = function() {
	/* ATTACH EVENT ON WINDOW SCROLL */
	doAddEventListener(window, "resize", this.adjustPosition, false);
	doAddEventListener(window, "scroll", this.adjustPosition, false);
	
	// RUN THE onresize EVENT ON LOAD
	this.adjustPosition();
}
	
// FUNCTION TO TAKE CARE OF POSITION ADJUSTMENT
docPanel.adjustPosition = function() {
	// OBJECT REFERENCE
	var objImgPH 		= document.getElementById("pnlImgContent_Main");	// CONTENT TO BE RESIZED
	var objImgPHC 		= document.getElementById("pnlImgContent");		// CONTENT TO BE RESIZED
	var objNavControl		= document.getElementById("pnlNavControl");
	var objThumbList		= document.getElementById("pnlThumbList");
	
	// CORE PANELS
	var obj_core_header	= document.getElementById("pnl_core_header");

	// GET DOCUMENT WINDOW INFORMATION
	if (_appl.indexOf("Microsoft")>= 0) {
		var cliHeight=document.body.clientHeight, scrTop=document.body.scrollTop;
		var cliWidth=document.body.clientWidth, scrLeft=document.body.scrollLeft;}
	else {
		var cliHeight=document.body.clientHeight, scrTop=window.pageYOffset;
		var cliWidth=document.body.clientWidth, scrLeft=window.pageXOffset;
	}	
	
	// COMPUTE THE NEEDED ADJUSTMENTS
	// ONLY RESIZE THE IMAGE PLACEHOLDER
	var ImgPH_h = 	cliHeight - 
				(
					(obj_core_header ? obj_core_header.offsetHeight : 0) +
					objNavControl.offsetHeight
				);
				
	
	// ADJUST THE SIZE OF THE IMG PLACEHOLDER
	objImgPHC.style.height = 
	objImgPH.style.height = "" + ImgPH_h;
	// ADJUST THE WIDTH OF BOTH SIDES
	objImgPHC.style.width = 
	objImgPH.style.width = 
	objNavControl.style.width = "" + cliWidth + "px";
	// ADJUST WIDTH OF THE THUMBLIST SCROLLER
	//objThumbList.style.background = "skyblue";
	objThumbList.style.width = "" + (cliWidth - 40) + "px";
	
	// ADJUST IMAGE PREVIEW
	imageCtrl.checkSize();
}
