//------------------------------
var Gallery = new function() {  
//------------------------------
	this.hmm = 2;

	//---------------------------------------------------------
	
	this.init = function() {
		var self = Gallery;

		//if admin mode
		if($('delButn')){
			$('delButn').style.visibility='hidden';
		}
		if($('resetButn')){
			$('resetButn').style.visibility='hidden';
		}
		//$('largeImage').style.visibility='hidden';
	};

	//----------------------------------------------------------
	//modify submit button action for category submit
	this.catFormSub = function(action){
		self.do_wait;
		$('action').value = action;
		$('categoryForm').submit();
	};
	//modify submit button action for photo submit
	this.phoFormSub = function(action){
		self.do_wait;
		$('action').value = action;
		$('photoForm').submit();
	};
	//----------------------------------
	this.do_wait = function(ev){
		var self = Gallery;
		//disable the button
	   ev.value= "please Wait...";
	   ev.disabled = true;
	
	};
	//----------------------------------
	this.editCat = function(catId){
		var self = Gallery;
		var pars = 'catid=' + catId + '&action=getCatData';
		var url = 'galleryAdmin.php';
		var myAjax = new Ajax.Request( url, { method: 'get', parameters: pars, onComplete: self.returnCatInfo });	
		$('catid').value = catId;
		$('adminMessage').innerHTML="";
	};
	//---------------------------------
	this.catReset = function(){
		var self = Gallery;
		$('adminFormHead').innerHTML = 'Add a New Category:';
		$('saveButn').value = "New Category";
		$('delButn').style.visibility='hidden';
		$('resetButn').style.visibility='hidden';
		$('restricted').checked = false;
		$('catid').value = '';
		$('action').value = '';
	};
	//---------------------------------
	this.returnCatInfo = function(result){
		//alert(result.responseText);
		var respArr = result.responseText.split('|');
		$('catname').value = respArr[0];
		$('creator').value = respArr[1];
		$('restricted').value = respArr[2];
		if(respArr[2] == 0){
			$('restricted').checked = false;
		}else{
			$('restricted').checked = true;
		}
		$('saveButn').value = "Edit Category";
		$('saveButn').onclick = function() {Gallery.catFormSub('editCat')};
		$('delButn').style.visibility='visible';
		$('delButn').onclick = function() {Gallery.catFormSub('deleteCat')};
		$('adminFormHead').innerHTML = 'Edit Category:';
		$('action').value = 'editCat';
		if($('resetButn')){
			$('resetButn').style.visibility='visible';
		}
	};
	//----------------------------------
	this.editPho = function(phoId){
		var self = Gallery;
		var pars = 'phoid=' + phoId + '&action=getPhoData';
		var url = 'photoAdmin.php';
		var myAjax = new Ajax.Request( url, { method: 'get', parameters: pars, onComplete: self.returnPhoInfo });	
		$('phoid').value = phoId;
		$('adminMessage').innerHTML="";
	};	
	//---------------------------------
	this.phoReset = function(){
		$('phoid').value = '';
		$('saveButn').value = "New Photo";
		$('saveButn').onclick = function() {Gallery.catFormSub('editPho')};
		$('delButn').style.visibility='hidden';
		$('adminFormHead').innerHTML = 'New Photo';
		$('action').value = 'newPho';
		if($('resetButn')){
			$('resetButn').style.visibility='hidden';
		}
		$('phoname').readonly = false;
		$('photo').style.visibility='visible';
	}
	//---------------------------------
	this.returnPhoInfo = function(result){
		//alert(result.responseText);
		var respArr = result.responseText.split('|');
		var respType = respArr[0].toLowerCase();	//sucess | error
		if(respType == 'success'){
			$('phoname').value = respArr[1];					
			$('photographer').value = respArr[2];
			$('description').value = respArr[3];
			
			//set edit restrictions, 1 yes, 0 no
			var restrict = respArr[4];
			if(restrict == 0){
				$('delButn').style.visibility='visible';
				$('delButn').disabled=false;
				$('delButn').onclick = function() {Gallery.phoFormSub('deletePho')};
				if($('resetButn')){
					$('resetButn').style.visibility='visible';
				}
			}else{
				//hide 	photo upload field and make photo name readonly
				$('phoname').readonly = true;
				$('photo').style.visibility='hidden';
			}
	
			$('saveButn').value = "Edit Photo";
			$('saveButn').onclick = function() {Gallery.phoFormSub('editPho')};
			$('adminFormHead').innerHTML = 'Edit Photo: '+respArr[1];
			$('action').value = 'editPho';
			
		}
		else{
			$('adminMessage').innerHTML="An error occured while retrieving data for this photo.";
		}
	};
	//----------------------------------
	this.setGalCover = function(phoid,catid){
		var self = Gallery;
		var pars = 'phoid=' + phoid + '&catid='+catid+'&action=setGalCover';
		var url = 'photoAdmin.php';
		var myAjax = new Ajax.Request( url, { method: 'get', parameters: pars, onComplete: self.returnSetCover });
	};
	//----------------------------------
	this.returnSetCover = function(result){
		alert(result.responseText);
	}
/**/	
};
window.onload = initGalleryScript; 

	var opacitySpeed = 2;	// Speed of opacity - switching between large images - Lower = faster
	var opacitySteps = 10; 	// Also speed of opacity - Higher = faster
	var slideSpeed = 5;	// Speed of thumbnail slide - Lower = faster
	var slideSteps = 5;	// Also speed of thumbnail slide - Higher = faster
	var columnsOfThumbnails = 0;	// Hardcoded number of thumbnail columns, use false if you want the script to figure it out dynamically. Letting JS get value from hidden field that PHP populates
	
	/* Don't change anything below here */
	var largeImage = false;
	var imageToShow = false;
	var currentOpacity = 100;
	var slideWidth = false;
	var thumbTotalWidth = false;
	var viewableWidth = false;
	
	var currentUnqiueOpacityId = false;
	var currentActiveImage = false;
	var thumbDiv = false;
	var thumbSlideInProgress = false;
	
	var browserIsOpera = navigator.userAgent.indexOf('Opera')>=0?true:false;
	var leftArrowObj;
	var rightArrowObj;
	var thumbsColIndex = 1;
	var thumbsLeftPos = false;
function initGalleryScript()
	{
		leftArrowObj = document.getElementById('leftArrow');		
		leftArrowObj.style.visibility='hidden';
		rightArrowObj = document.getElementById('rightArrow');	
		leftArrowObj.style.cursor = 'pointer';	
		rightArrowObj.style.cursor = 'pointer';	
		leftArrowObj.onclick = moveThumbnails;
		rightArrowObj.onclick = moveThumbnails;
		
		//get value of hidden field that PHP populated
		//alert($('columns').value);
		columnsOfThumbnails = ($('columns').value -2);
		
//		largeImage = document.getElementById('largeImage').getElementsByTagName('IMG')[0];
//		if(largeImage){
//			document.getElementById('panel_one').style.visibility='hidden';
//			document.getElementById('largeImage').style.visibility='visible';			
//		}
		var innerDiv = document.getElementById('thumbs_inner');
		if(innerDiv){
			slideWidth = innerDiv.getElementsByTagName('DIV')[0].offsetWidth;
			thumbDiv = document.getElementById('thumbs_inner');
			thumbDiv.style.left = '0px';
		}
		if(thumbDiv){
			var subDivs = thumbDiv.getElementsByTagName('DIV');
			thumbTotalWidth = 0;
			for(var no=0;no<subDivs.length;no++){
				if(subDivs[no].className=='strip_of_thumbnails')thumbTotalWidth = thumbTotalWidth + slideWidth;
			}
	
			viewableWidth = document.getElementById('thumbs').offsetWidth;
		}
		if(thumbDiv){
			if(thumbDiv.getElementsByTagName('input')[0].value != 0){
				currentActiveImage = thumbDiv.getElementsByTagName('A')[0].getElementsByTagName('IMG')[0];
				currentActiveImage.className='activeImage';
			}
		}
		else{
			rightArrowObj.style.visibility='hidden';	
		}
		Gallery.init();
	}
	
	function moveThumbnails()
	{
		if(thumbSlideInProgress)return;
		thumbSlideInProgress = true;
		if(this.id=='leftArrow'){
			thumbsColIndex--;
			rightArrowObj.style.visibility='visible';
			if(thumbDiv.style.left.replace('px','')/1>=0){
				leftArrowObj.style.visibility='hidden';
				thumbSlideInProgress = false;
				return;
			}
			
			slideThumbs(slideSteps,0);
			
		}else{
			thumbsColIndex++;
			leftArrowObj.style.visibility='visible';
			var left = thumbDiv.style.left.replace('px','')/1;	
			var showArrow = true;
			if(thumbTotalWidth + left - slideWidth <= viewableWidth)showArrow = false;
			if(columnsOfThumbnails)showArrow = true;
				
			if(!showArrow)	
			{
				rightArrowObj.style.visibility='hidden';
				thumbSlideInProgress = false;
				return;
			}	
			
			slideThumbs((slideSteps*-1),0);
		}	
		
	}
	
	function slideThumbs(speed,currentPos)
	{
		var leftPos;
		if(thumbsLeftPos){
			leftPos= thumbsLeftPos;
		}else{
			var leftPos = thumbDiv.style.left.replace('px','')/1;
			thumbsLeftPos = leftPos;
		}
		currentPos = currentPos + Math.abs(speed);		
		var tmpLeftPos = leftPos;
		leftPos = leftPos + speed;
		thumbsLeftPos = leftPos;
		thumbDiv.style.left = leftPos + 'px';
		if(currentPos<slideWidth)setTimeout('slideThumbs(' + speed + ',' + currentPos + ')',slideSpeed);else{
			//if(tmpLeftPos>=0 || (columnsOfThumbnails && thumbsColIndex==1)){
			//	document.getElementById('leftArrow').style.visibility='hidden';
			//}	
			var left = tmpLeftPos;		
			var showArrow = true;
			if(thumbTotalWidth + left - slideWidth <= viewableWidth){
				showArrow=false;
			}
			if(columnsOfThumbnails){
				if((thumbsColIndex+1)<columnsOfThumbnails){
					showArrow=true; 
				}else{
					showArrow = false;
				}
			}			
			if(!showArrow){
				document.getElementById('rightArrow').style.visibility='hidden';
			}					
			thumbSlideInProgress = false;
		}
	
	}
	function highlightCurrent(inputObj){
		if(currentActiveImage){
			if(currentActiveImage==inputObj.getElementsByTagName('IMG')[0])return;
			currentActiveImage.className='';
		}
		currentActiveImage = inputObj.getElementsByTagName('IMG')[0];
		currentActiveImage.className='activeImage';
	}
	
	function showPreview(imagePath,inputObj)
	{		
		highlightCurrent(inputObj)
		
		imageToShow = imagePath;
		var tmpImage = new Image();
		tmpImage.src = imagePath;
		currentUnqiueOpacityId = Math.random();
		moveOpacity(opacitySteps*-1,currentUnqiueOpacityId);
	}
	
	function setOpacity()
	{
		if(document.all)
		{
			largeImage.style.filter = 'alpha(opacity=' + currentOpacity + ')';
		}else{
			largeImage.style.opacity = currentOpacity/100;
		}		
	}
	function moveOpacity(speed,uniqueId)
	{
		
		if(browserIsOpera){
			largeImage.src = imageToShow;
			return;
		}
		
		currentOpacity = currentOpacity + speed;
		if(currentOpacity<=5 && speed<0){
		
			var tmpParent = largeImage.parentNode; 
			largeImage.parentNode.removeChild(largeImage);
			largeImage = document.createElement('IMG');
			tmpParent.appendChild(largeImage);
			setOpacity();
			largeImage.src = imageToShow;
		
			speed=opacitySteps;
		}
		if(currentOpacity>=99 && speed>0)currentOpacity=99;		
		setOpacity();	
		if(currentOpacity>=99 && speed>0)return;		
		if(uniqueId==currentUnqiueOpacityId)setTimeout('moveOpacity(' + speed + ',' + uniqueId + ')',opacitySpeed);		
	}