	
	DomControl.opacity_change_callback = function( obj, opacity, direction ) {
		
		try {
			
				PhotoViewer.fading = true;
				
				var container_div = DomControl.Get_object_by_id(PhotoViewer.container_div_id);
				var active_img = DomControl.Get_object_by_id(PhotoViewer.photo_img_id);
				
				if ( direction == DomControl.OPACITY_DIRECTION_DOWN && opacity <= 0 ) {
					
					DomControl.Disable_display(container_div);
					
					if ( PhotoViewer.loading_img_src ) {
						active_img.src = PhotoViewer.loading_img_src;
					} 	
					
					PhotoViewer.fading = false;
				}
				
				if ( direction == DomControl.OPACITY_DIRECTION_UP && opacity >= 100 ) {
					
					PhotoViewer.fading = false;
				}
				
		}
		catch( e ) {
			ScriptManager.ErrorHandler.Handle_error( e );
		}
		
	}
	
	function PhotoViewer() {
		
	}
	
	PhotoViewer.show_photo = function( image_filename, title ) {
		
		try {
			
			if ( PhotoViewer.fading ) {
				return true;
			}
			
			var container_div = DomControl.Get_object_by_id(PhotoViewer.container_div_id);
			var viewer_div    = DomControl.Get_object_by_id(PhotoViewer.viewer_div_id);
			var active_img    = DomControl.Get_object_by_id(PhotoViewer.photo_img_id);
			var title_div     = DomControl.Get_object_by_id(PhotoViewer.photo_title_id);
			
			PhotoViewer.set_position();
			
			active_img.src = PhotoViewer.photo_base_uri + '/' + image_filename;
			
			if ( typeof(title) == 'undefined' ) {
				title = '';
			}
			
			DomControl.Set_inner_html(title_div, title);

			DomControl.Enable_display( container_div );
				
			if ( PhotoViewer.enable_fade_effect ) { 
				PhotoViewer.fading = true;
				DomControl.Change_opacity( viewer_div, 0 );
				DomControl.Enable_display(viewer_div);
				DomControl.Opacity_fade_up( viewer_div, 100, PhotoViewer.fade_increment, PhotoViewer.fade_delay );
			}
			else {
				DomControl.Enable_display( viewer_div );
			}
			
			
		}
		catch( e ) {
			ScriptManager.ErrorHandler.Handle_error( e );
		}
	}
	
	PhotoViewer.hide_photo = function() {

		try {
			
			if ( PhotoViewer.fading ) {
				return true;
			}
			
			var viewer_div = DomControl.Get_object_by_id(PhotoViewer.viewer_div_id);
			var active_img = DomControl.Get_object_by_id(PhotoViewer.photo_img_id);

			if ( PhotoViewer.enable_fade_effect ) { 
				PhotoViewer.fading = true;
				DomControl.Opacity_fade_down( viewer_div, 0, PhotoViewer.fade_increment, PhotoViewer.fade_delay );
			}
			else {
				DomControl.Disable_display(viewer_div);
				DomControl.Disable_display(container_div);
			}
			
		}
		catch( e ) {
			ScriptManager.ErrorHandler.Handle_error( e );
		}

		
	}
	
	PhotoViewer.is_fully_visible = function() {
		try {
			var container_div = DomControl.Get_object_by_id(PhotoViewer.container_div_id);
			
			if ( container_div.style.display != '' && PhotoViewer.fading == false ) {
				if ( DomControl.Get_opacity(container_div) == 100 ) {
					return true;
				}
			}
			
			return 0;
		}
		catch( e ) {
			ScriptManager.ErrorHandler.Handle_error( e );
		}
	}
	
	PhotoViewer.hide_if_not_clicked = function(event, frame) {
		
		try {
			
			if ( !PhotoViewer.fading ) { 
				if ( PhotoViewer.PopupWindow_isClicked(event, frame) === 0 ) {
					if ( PhotoViewer.is_fully_visible() ) {
						PhotoViewer.hide_photo();
					}
				}
			}
		}
		catch( e ) {
			ScriptManager.ErrorHandler.Handle_error( e );
		}
		
		
	}
	
	PhotoViewer.set_position = function() {
		
		try {
			var container_div = DomControl.Get_object_by_id(PhotoViewer.container_div_id);
			
			DomControl.Set_top( container_div, DomControl.Get_scroll_top() + PhotoViewer.offset_top );
			
			if ( (navigator.appVersion.indexOf("MSIE")!=-1) && (parseInt(navigator.appVersion) <= 6) ) {
				container_div.style.width = DomControl.Document_get_width();
			}
			else {
				container_div.style.width = '100%'; 
			}
			
			//container_div.style.marginLeft = '0' ; //'2%'; PhotoViewer.offset_width + 'px';
		}
		catch( e ) {
			ScriptManager.ErrorHandler.Handle_error( e );
		}


	}

	PhotoViewer.PopupWindow_isClicked = function(e, frame) {
		
		try { 


			if (document.all) { // Need to hard-code this to trap IE for error-handling
				
				if ( frame ) {
					
					var t = frame.event.srcElement;
					
				}
				else {
					var t = window.event.srcElement;
				}
				
				while (t.parentElement != null) {
					if (t.id==PhotoViewer.viewer_div_id) {
						return true;
					}
				
					t = t.parentElement;
				}
			
				return 0;
			}
			else if (e) {
				var t = e.originalTarget;
				while (t.parentNode != null) {
					if (t.id==PhotoViewer.viewer_div_id) {
						return true;
					}
		
					t = t.parentNode;
				}
		
				return 0;
			}
	
			return false;
		}
		catch( e ) {
			throw e;
		}
	}

	DomControl.Add_event_listener( document, 'mouseup', PhotoViewer.hide_if_not_clicked );
	