var tGallery = {

	deleteImg : function() {
		
		var div = document.getElementById( 'tGallery_imageEditor' )
		if ( ! div ) {
			alert( "tGallery: Image Editor <div> is missing, check page code");
			return false;
		}
	
		var imageName = div.currentimage
		if (imageName == "") { return }
		
		if ( ! confirm("Are you sure you want to delete " + imageName + "?") ) {
			return false;
		}
		
		tAjax.dispatchRequest( 'tGalleryAdmin/pictureUtils.php?action=delete&pictureFolder=' + tGallery_pictureFolder + '&picture=' + imageName,  'tGallery.handleImageDelete( response, \'' + imageName + '\')' )
		
	},
	

	editImgInfo : function( imageName ) {
		
		if ( didDoDrag == "no" ) {
			tAjax.dispatchRequest( 'tGalleryAdmin/pictureUtils.php?action=getInfo&pictureFolder=' + tGallery_pictureFolder + '&picture=' + imageName,  'tGallery.showImageInfo( response, \'' + imageName + '\')' )
		} else {
	
			button = document.getElementById( 'tg_saveOrderButton' )
			if ( button ) {		
				button.style.display = "block"
			}
 		}

		didDoDrag = "no"
	},
	
	
	editGalleryInfo : function( galleryIdentifier ) {
		
		if ( didDoDrag == "no" ) {
			tAjax.dispatchRequest( 'tGalleryAdmin/galleryUtils.php?action=getInfo&identifier=' + galleryIdentifier,  'tGallery.showGalleryInfo( response, \'' + galleryIdentifier + '\')' )
		} else {
	
			button = document.getElementById( 'tg_saveOrderButton' )
			if ( button ) {		
				button.style.display = "block"
			}
		
		
		}
		didDoDrag = "no"
	},
	
	
	showImageInfo : function( response, imageName ) {
	
		var imgInfo = new Array()
		imgInfoParts = response.split('###')
		
		var i
		for ( i=0; i< imgInfoParts.length; i++ ) {
			imgInfo[ imgInfoParts[i] ] = imgInfoParts[i+1]
			i++
		}
				
		div = document.getElementById( 'tGallery_imageEditor' )
		if ( ! div ) { alert( "tGallery: Image Editor <div> is missing, check page code"); return false; }
		
		thumImg = document.getElementById( 'tg_imageEditor_imageThumbnail' )
		if ( thumImg ) {		
			thumImg.src = tGallery_innards_path + '/tGallery/thumbFeed.php?pictureFolder=' + imgInfo.pictureFolder + '&picture=' + imgInfo.filename + '&size=220&aspectRatio=0'
		}
		
		showCheck = document.getElementById( 'tg_imageEditor_show' )
		if ( showCheck ) {	
			if ( imgInfo.show == 1 ) {	
				showCheck.checked = true
			} else {
				showCheck.checked = false
			}
		}
				
		notes = document.getElementById( 'tg_imageEditor_notes' )
		if ( notes ) {		
			notes.value = imgInfo.notes
		}
		
					
		title = document.getElementById( 'tg_imageEditor_title' )
		if ( title ) {		
			title.value = imgInfo.title
		}
		
		width = document.getElementById( 'tg_imageEditor_width' )
		if ( width ) {		
			width.value = imgInfo.width
		}
		
		height = document.getElementById( 'tg_imageEditor_height' )
		if ( height ) {		
			height.value = imgInfo.height
		}
		
		price = document.getElementById( 'tg_imageEditor_price' )
		if ( price ) {		
			price.value = imgInfo.price
		}
		
				
		filename = document.getElementById( 'tg_imageEditor_filename' )
		if ( filename ) {		
			filename.innerHTML = imgInfo.filename
		}
		
		alt = document.getElementById( 'tg_imageEditor_alt' )
		if ( alt ) {		
			alt.value = imgInfo.alt
		}
		
		
		div.currentimage = imgInfo.filename
		div.style.top = (window.scrollY + 50) + "px"
		div.style.display = "block"
	
	},
	
	showGalleryInfo : function( response, galleryIdentifier ) {
	
		var imgInfo = new Array()
		imgInfoParts = response.split('###')
				
		var i
		for ( i=0; i< imgInfoParts.length; i++ ) {
			imgInfo[ imgInfoParts[i] ] = imgInfoParts[i+1]
			i++
		}
				
		div = document.getElementById( 'tGallery_galleryEditor' )
		if ( ! div ) { alert( "tGallery: Gallery Editor <div> is missing, check page code"); return false; }
				
		showCheck = document.getElementById( 'tg_galleryEditor_show' )
		if ( showCheck ) {	
			if ( imgInfo.show == 1 ) {	
				showCheck.checked = true
			} else {
				showCheck.checked = false
			}
		}
		
		showPrices = document.getElementById( 'tg_galleryEditor_showprices' )
		if ( showPrices ) {	
			if ( imgInfo.showprices == 1 ) {	
				showPrices.checked = true
			} else {
				showPrices.checked = false
			}
		}
			
		showSizes = document.getElementById( 'tg_galleryEditor_showsizes' )
		if ( showSizes ) {	
			if ( imgInfo.showsizes == 1 ) {	
				showSizes.checked = true
			} else {
				showSizes.checked = false
			}
		}
		
		showTitles = document.getElementById( 'tg_galleryEditor_showtitles' )
		if ( showTitles ) {	
			if ( imgInfo.showtitles == 1 ) {	
				showTitles.checked = true
			} else {
				showTitles.checked = false
			}
		}
			
		showCaptions = document.getElementById( 'tg_galleryEditor_showcaptions' )
		if ( showCaptions ) {	
			if ( imgInfo.showcaptions == 1 ) {	
				showCaptions.checked = true
			} else {
				showCaptions.checked = false
			}
		}
			
				
		notes = document.getElementById( 'tg_galleryEditor_notes' )
		if ( notes ) {		
			notes.value = imgInfo.notes
		}
		
					
		title = document.getElementById( 'tg_galleryEditor_title' )
		if ( title ) {		
			title.value = imgInfo.title
		}

				
		filename = document.getElementById( 'tg_galleryEditor_identifier' )
		if ( filename ) {		
			filename.innerHTML = imgInfo.identifier
		}
		
					
		imagemode = document.getElementById( 'tg_galleryEditor_imagemode' )
		if ( imagemode ) {
			if ( imgInfo.imagemode == '' ) {
				imagemode.value = 0
			} else { 
				imagemode.value = imgInfo.imagemode
			}
		}
		
					
		imagesize = document.getElementById( 'tg_galleryEditor_imagesize' )
		if ( imagesize ) {		
			imagesize.value = imgInfo.imagesize
		}
		
		imagequality = document.getElementById( 'tg_galleryEditor_imagequality' )
		if ( imagequality ) {		
			imagequality.value = imgInfo.imagequality
		}
		
		
	
		div.currentgallery = imgInfo.identifier
		div.style.top = (window.scrollY + 50) + "px"
		div.style.display = "block"
	
	},
	
	saveImgeInfo : function() {
				
		var div = document.getElementById( 'tGallery_imageEditor' )
		if ( ! div ) {
			alert( "tGallery: Image Editor <div> is missing, check page code");
			return false;
		}
	
		var filename = div.currentimage
				
		if (filename == '') {
			alert( "tGallery: Unable to retrieve filename from editor");
			return false; 
		}
		
		var	notes = document.getElementById( 'tg_imageEditor_notes' )
		var newNotes
		if ( notes ) {		
			newNotes = notes.value
		} else {
			alert( "tGallery: Unable to retrieve new notes whilst trying to save image info, check page code.");
			return false;
		}	
		
		var	title = document.getElementById( 'tg_imageEditor_title' )
		var newTitle
		if ( title ) {		
			newTitle = title.value
		} else {
			alert( "tGallery: Unable to retrieve new title whilst trying to save image info, check page code.");
			return false;
		}	
		
		var	width = document.getElementById( 'tg_imageEditor_width' )
		var newWidth
		if ( width ) {		
			newWidth = width.value
		} else {
			alert( "tGallery: Unable to retrieve new width whilst trying to save image info, check page code.");
			return false;
		}	
		
		var	height = document.getElementById( 'tg_imageEditor_height' )
		var newHeight
		if ( height ) {		
			newHeight = height.value
		} else {
			alert( "tGallery: Unable to retrieve new height whilst trying to save image info, check page code.");
			return false;
		}	
		
		var	price = document.getElementById( 'tg_imageEditor_price' )
		var newPrice
		if ( price ) {		
			newPrice = price.value
		} else {
			alert( "tGallery: Unable to retrieve new price whilst trying to save image info, check page code.");
			return false;
		}	
		
			
		var alt = document.getElementById( 'tg_imageEditor_alt' )
		var altTag
		if ( alt ) {		
			altTag = alt.value
		} else {
			alert( "tGallery: Unable to retrieve new altTag whilst trying to save image info, check page code.");
			return false;
		}	
		
			
		showCheck = document.getElementById( 'tg_imageEditor_show' )
		if ( showCheck ) {	
			if ( showCheck.checked ) {	
				show = 1
			} else {
				show = 0
			}
		}
	
		tAjax.dispatchRequest( 'tGalleryAdmin/pictureUtils.php?action=saveInfo&pictureFolder=' + tGallery_pictureFolder + '&picture=' + filename + '&title=' + newTitle + '&notes=' +  escape(newNotes)  + '&price=' + escape(newPrice) + '&width=' + escape(newWidth) + '&height=' + escape(newHeight) + '&alt=' + escape(altTag) + '&show=' + show,  'tGallery.handleImageInfoSave( response, \'' + filename + '\', ' + show + ')' )
	},
	
	saveGalleryInfo : function() {
				
		var div = document.getElementById( 'tGallery_galleryEditor' )
		if ( ! div ) {
			alert( "tGallery: Gallery Editor <div> is missing, check page code");
			return false;
		}
	
		var identifier = div.currentgallery
				
		if (identifier == '') {
			alert( "tGallery: Unable to retrieve identifier from editor");
			return false; 
		}
		
		var	notes = document.getElementById( 'tg_galleryEditor_notes' )
		var newNotes
		if ( notes ) {		
			newNotes = notes.value
		} else {
			alert( "tGallery: Unable to retrieve new notes whilst trying to save gallery info, check page code.");
			return false;
		}	
		
		var	title = document.getElementById( 'tg_galleryEditor_title' )
		var newTitle
		if ( title ) {		
			newTitle = title.value
		} else {
			alert( "tGallery: Unable to retrieve new title whilst trying to save gallery info, check page code.");
			return false;
		}
		
					
		showCheck = document.getElementById( 'tg_galleryEditor_show' )
		if ( showCheck ) {	
			if ( showCheck.checked ) {	
				show = 1
			} else {
				show = 0
			}
		}
			
		showTitles = document.getElementById( 'tg_galleryEditor_showtitles' )
		if ( showTitles ) {	
			if ( showTitles.checked ) {	
				showt = 1
			} else {
				showt = 0
			}
		}
		
		showCaptions = document.getElementById( 'tg_galleryEditor_showcaptions' )
		if ( showCaptions ) {	
			if ( showCaptions.checked ) {	
				showc = 1
			} else {
				showc = 0
			}
		}
	
		showPrices = document.getElementById( 'tg_galleryEditor_showprices' )
		if ( showPrices ) {	
			if ( showPrices.checked ) {	
				showp = 1
			} else {
				showp = 0
			}
		}
		
		showSizes = document.getElementById( 'tg_galleryEditor_showsizes' )
		if ( showSizes ) {	
			if ( showSizes.checked ) {	
				shows = 1
			} else {
				shows = 0
			}
		}
	
		var	imagesize = document.getElementById( 'tg_galleryEditor_imagesize' )
		var newSize
		if ( imagesize ) {		
			newSize = imagesize.value
		} else {
			alert( "tGallery: Unable to retrieve new image size whilst trying to save gallery info, check page code.");
			return false;
		}	
		
		var	imagemode = document.getElementById( 'tg_galleryEditor_imagemode' )
		var newMode
		if ( imagemode ) {		
			newMode = imagemode.value
		} else {
			alert( "tGallery: Unable to retrieve new image mode whilst trying to save gallery info, check page code.");
			return false;
		}	
		
		var	imagequality = document.getElementById( 'tg_galleryEditor_imagequality' )
		var newQual
		if ( imagequality ) {		
			newQual = imagequality.value
		} else {
			alert( "tGallery: Unable to retrieve new image quality whilst trying to save gallery info, check page code.");
			return false;
		}	
	
		tAjax.dispatchRequest( 'tGalleryAdmin/galleryUtils.php?action=saveInfo&identifier=' + identifier + '&title=' + escape(newTitle) + '&imagequality=' +  escape(newQual)  + '&imagemode=' +  escape(newMode)  + '&imagesize=' +  escape(newSize)  + '&notes=' +  escape(newNotes)  + '&showprices=' + showp + '&showsizes=' + shows + '&showcaptions=' + showc +'&showtitles=' + showt + '&show=' + show,  'tGallery.handleGalleryInfoSave( response, \'' + identifier + '\', ' + show + ')' )
	},
	
	
	handleImageDelete : function( response, imgName ) {
		
		if ( response != "" ) {
			alert( response )
		} else {
		
			tGallery.hideImageInfo()
			
			var img = document.getElementById( 'tg_thumb_' + imgName );
			img.parentNode.parentNode.className = 'tg_deletedImage';
			img.parentNode.parentNode.style.display = "none"
		}
	},
	
	handleImageInfoSave : function( response, imgName, show ) {
		
		if ( response == '' ) {
			
			var img = document.getElementById( 'tg_thumb_' + imgName );
			if ( show == 1 ) {
				img.className = 'tg_imageThumb';
			} else {
				img.className = 'tg_hiddenThumb';
			}
			
			tGallery.hideImageInfo()
		} else {			
			alert( 'Error saving image info for ' + imgName + ':\n' + response )
		}
	
	},
	
	
	handleGalleryInfoSave : function( response, identifier, show ) {
		
		if ( response == '' ) {
			
			var gal = document.getElementById( 'tg_gal_' + identifier );
			if ( show == 1 ) {
				gal.className = 'tGallery_galleryLink';
			} else {
				gal.className = 'tGallery_hiddenGalleryLink';
			}
			
			tGallery.hideGalleryInfo()
		} else {			
			alert( 'Error saving gallery info for ' + identifier + ':\n' + response )
		}
	
	},

	
	hideImageInfo : function() {
	
		div = document.getElementById( 'tGallery_imageEditor' )
		div.style.display = "none"
		
		filename = document.getElementById( 'tg_imageEditor_filename' )
		if ( filename ) {		
			filename.innerHTML = ''
		}
		
		
		thumImg = document.getElementById( 'tg_imageEditor_imageThumbnail' )
		if ( thumImg ) { thumImg.src = "" }
		
		div.currentimage = ''

	},
	
	
	hideGalleryInfo : function() {
	
		div = document.getElementById( 'tGallery_galleryEditor' )
		div.style.display = "none"
		
		filename = document.getElementById( 'tg_galleryEditor_identifier' )
		if ( filename ) {		
			filename.innerHTML = ''
		}
		
				
		div.currentgallery = ''

	},

	
	getImageOrder : function( listId ) {
	
		var list = document.getElementById( listId )
		
		var items = list.getElementsByTagName("li")		
		
		var pics = new Array()
		
		for (var i = 0, n = items.length; i < n; i++) {
			if ( items[i].className == 'tg_deletedImage' ) { continue; }
			pics.push(items[i]['attributes']['picturename'].value)
		}
		
		pics.reverse()
		
		return pics		
	},
	
	getGalleryOrder : function( listId ) {
	
		var list = document.getElementById( listId )
		
		var items = list.getElementsByTagName("li")		
		
		var galleries = new Array()
		
		for (var i = 0, n = items.length; i < n; i++) {
			if ( items[i].className == 'tg_deletedGallery' ) { continue; }
			galleries.push(items[i]['attributes']['identifier'].value)
		}
		
		galleries.reverse()
		
		return galleries		
	},
	
	saveImageOrder : function( listId ) {
	
		var pics = tGallery.getImageOrder( listId )
		
		var picsSerialised = ''
		for (var i = 0, n = pics.length; i < n; i++) {
			picsSerialised += pics[i] + "|"
		}
			
		tAjax.dispatchRequest( 'tGalleryAdmin/pictureUtils.php?action=saveNewOrder&pictureFolder=' + tGallery_pictureFolder + '&data=' + escape(picsSerialised),  'tGallery.saveOrderResponseHandler( response )' )
	
	},
	
	saveGalleryOrder : function( listId ) {
	
		var galleries = tGallery.getGalleryOrder( listId )
		
		var galleriesSerialised = ''
		for (var i = 0, n = galleries.length; i < n; i++) {
			galleriesSerialised += galleries[i] + "|"
		}
	
		tAjax.dispatchRequest( 'tGalleryAdmin/galleryUtils.php?action=saveNewOrder&data=' + escape(galleriesSerialised),  'tGallery.saveOrderResponseHandler( response )' )
	
	},
	
	reverseGalleryOrder : function( listId ) {
	
		tGallery.reverseListOrder( listId ) 
		button = document.getElementById( 'tg_saveOrderButton' )
		if ( button ) {		
			button.style.display = "block"
		}
			
	},
	
	reverseListOrder : function( listId ) {
	
		var list = document.getElementById( listId )
				
		if ( list == null ) {
			alert( "Couldnt reverse list - unable to find an element with the id'" + listid + '"' );
		}
		
		var items = list.getElementsByTagName("li")	
						
		var count = items.length
		if ( count == 0 ) { return; }		
		
		count--
				
		var oldItems = new Array()
	
		for ( var i = count;  i >= 0; i-- ) {
		
			oldItems.push( items[i] )	
			list.removeChild( items[i] );
		}
		
		oldItems.reverse()
		
		list.appendChild( oldItems[0] )
		
		for ( var i = 1; i < oldItems.length; i++ ) {
			list.insertBefore(  oldItems[i], list.firstChild );
		}

	},

	randomListOrder : function( listId ) {
		
		
	},

	
	saveOrderResponseHandler : function( response ) {
		
		if ( response == "" ) {
		
			button = document.getElementById( 'tg_saveOrderButton' )
			if ( button ) {		
				button.style.display = "none"
			}
			
		} else {
			alert( response )
		}
	},
	
	getStyle : function(oElm, strCssRule) {
		var strValue = "";
		if(document.defaultView && document.defaultView.getComputedStyle){
			strValue = document.defaultView.getComputedStyle(oElm, "").getPropertyValue(strCssRule);
		} else if(oElm.currentStyle){
			strCssRule = strCssRule.replace(/\-(\w)/g, function (strMatch, p1){
				return p1.toUpperCase();
			});
			strValue = oElm.currentStyle[strCssRule];
		}
		return strValue;
	},

		
	calculateDivWidth : function( id ) {
	
		var div = document.getElementById( id )
		
		if ( div == null ) { return; }	
		
		var items = div.getElementsByTagName("img")		
		
		var totalWidth = 0;
		
		for (var i = 0, n = items.length; i < n; i++) {
			totalWidth  += items[i].width;
			totalWidth  += parseInt(tGallery.getStyle(items[i], "margin-right"));
			totalWidth  += parseInt(tGallery.getStyle(items[i], "margin-left"));
		}
				
		totalWidth += 400;
		totalWidth += 'px';
		div.style.width = totalWidth;		
	},
	
	toggleImageAction : function( select ) {
			
		var newTitle = select.value
		var actionButton = document.getElementById( 'tg_imageEditor_actionButton' )
		if ( actionButton ) {
			actionButton.value = newTitle
		}
	
	},
	
	doImageAction : function( actionButton ) {
	
		var div = document.getElementById( 'tGallery_imageEditor' )
		if ( ! div ) {
			alert( "tGallery: Image Editor <div> is missing, check page code");
			return false;
		}
	
		var filename = div.currentimage
		
		var action = actionButton.value
		var destination = document.getElementById( 'tg_imageEditor_actionDestination' );
		if ( ! destination) {
			alert("tGallery: Unable to determine action destination, check page HTML for an input with id 'tg_imageEditor_actionDestination'")
			return
		}
		
		if ( action == "move" || action == "copy" ) {
		
				tAjax.dispatchRequest( 'tGalleryAdmin/pictureUtils.php?action=' + escape(action) + '&pictureFolder=' + tGallery_pictureFolder + '&image=' + escape(filename) + '&destination=' + escape(destination.value),  'tGallery.imageActionResponseHandler( response, "'+escape(action)+'" )' )		
		
		} else {
			alert("tGallery: Unsupported action requested - '" + action + "', should be 'move' or 'copy'")
		}	
	
	},

	imageActionResponseHandler : function( response, mode ) {
		
		if ( response == "" ) {
		
			if ( mode == 'move' ) {
				document.location = document.location
			} else {
				alert('Image copied')
			}
			
		} else {
			alert( response )
		}
	},

	createNewGallery : function() {
	
		var newNameField = document.getElementById( 'tGallery_newGalleryName' )
		if ( ! newNameField ) {
			alert( "tGallery: New Gallery name field is missing, check page code");
			return false;
		}
		
		tAjax.dispatchRequest( 'tGalleryAdmin/galleryUtils.php?action=newGallery&identifier=' + escape(newNameField.value),  'tGallery.createNewGalleryResponseHandler( response )' )		
		return false;
		
	},


	createNewGalleryResponseHandler : function( response ) {
	
		if ( response == "" ) {
				document.location = document.location
		} else {
			alert( response )
		}

	}


}


