var slide;
var thumbs;
var gallery_name;
var slideshow_toggle_checkbox;
var slideshow_timeout;
var slideshow_time;

CH.ns(function() {with(CH) {
	
	Gallery = {
		initialize: function(gal_name, num_visible, inc, contentId, left_id, right_id, slideshow_checkbox_id, seconds, adZone) {
			gallery_name = gal_name;
			this.adZone = adZone;
			
			thumbs = $$('.gallery #carousel .gallery_thumb');

			var picture_id = self.document.location.hash.substr(1);
			
			if (picture_id) {
				var found = false;
				
				for (i=0; i<thumbs.length; i++) {
					if (thumbs[i].id.substr(12) == picture_id) {
						thumbs[i].addClassName('selected');
						new Req.ajax({
							url: "/ajax/gallery/switch_picture/",
							options: {
								onlyLatestOfClass: 'load_gallery',
                                parameters: "picture_id="+picture_id+'&gallery='+gallery_name+'&override_this_url=\/picture\:'+picture_id+'&ad_zone='+this.adZone
							}
						});
						
						$('current_image_index').innerHTML = (i+1);
						found = true;
					}
					else
						thumbs[i].removeClassName('selected');
				}
				if (!found) {
					thumbs[0].addClassName('selected');
				}
			} else {
				thumbs[0].addClassName('selected');
			}
			
			slide = new Slideousel(
				contentId,
				{
					numVisible: num_visible,
					slider_element: 'ul',
					increment: inc,
					leftId: left_id,
					rightId: right_id,
					disabledClass: 'slide_disabled',
					show_selected: true,
					selected_class: 'selected'
				}
			);
			
			if (slideshow_checkbox_id) {
				slideshow_toggle_checkbox = $(slideshow_checkbox_id);
				slideshow_toggle_checkbox.observe('click', this.toggle_slideshow.bindAsEventListener(this));
				slideshow_time = 850 * seconds;
			}
		},
		
		toggle_slideshow: function() {
			if (slideshow_toggle_checkbox.checked)
				slideshow_timeout=setTimeout("Gallery.advance_slideshow();",slideshow_time);
			else
				clearTimeout(slideshow_timeout);
		},
		
		advance_slideshow: function() {
			Gallery.img_next(true);
			slideshow_timeout=setTimeout("Gallery.advance_slideshow();",slideshow_time);
		},
		
		img_previous: function(move) {
			if (move)
				slide.moveLeft();
			
			for (i=0; i<thumbs.length; i++) {
				if (thumbs[i].hasClassName('selected')) {
					if (i > 0) {
						this.refresh_ads();
						
						thumbs[i].removeClassName('selected');
						thumbs[i-1].addClassName('selected');
						new_picture_id = thumbs[i-1].id.substr(12);
						
						new Req.ajax({
							url: "/ajax/gallery/switch_picture/",
							options: {
								onlyLatestOfClass: 'load_gallery',
                                parameters: "picture_id="+new_picture_id+'&gallery='+gallery_name+'&override_this_url=\/picture\:'+new_picture_id+'&ad_zone='+this.adZone
							}
						});
						
						self.document.location.hash = '#'+new_picture_id;
						$('current_image_index').innerHTML = i;
					}
					break;
				}
			}
		},
		
		img_next: function(move) {
			if (move)
				slide.moveRight();
			
			for (i=0; i<thumbs.length; i++) {
				if (thumbs[i].hasClassName('selected')) {
					if (i+1 < thumbs.length) {
						this.refresh_ads();
						
						thumbs[i].removeClassName('selected');
						thumbs[i+1].addClassName('selected');
						new_picture_id = thumbs[i+1].id.substr(12);
						
						new Req.ajax({
							url: "/ajax/gallery/switch_picture/",
							options: {
								onlyLatestOfClass: 'load_gallery',
                                parameters: "picture_id="+new_picture_id+'&gallery='+gallery_name+'&ad_zone='+this.adZone
							}
						});
						
						self.document.location.hash = '#'+new_picture_id;
						
						$('current_image_index').innerHTML = (i+2);
					}
					break;
				}
			}
		},
		
		show_picture: function(picture_id) {
			this.refresh_ads();
			
			var selected_thumb = $$('.gallery #carousel .selected');
			
			
			if (selected_thumb[0])
				selected_thumb[0].removeClassName('selected');
			
			$('image_thumb_'+picture_id).addClassName('selected');
					
			new Req.ajax({
				url: "/ajax/gallery/switch_picture/",
				options: {
					onlyLatestOfClass: 'load_gallery',
					parameters: "picture_id="+picture_id+'&gallery='+gallery_name+'&ad_zone='+this.adZone
				}
			});
			
			self.document.location.hash = '#'+picture_id;
			
			for (i=0; i<thumbs.length; i++) {
				if (thumbs[i].hasClassName('selected')) {
					$('current_image_index').innerHTML = (i+1);
					break;
				}
			}
		},
		
		refresh_ads: function(){
			var reload_units = new Array();
			reload_units = [['', 'SKIN'], ['billboardAd', '300x250'], ['banner_header', '728x90'], ['banner_footer', '728x90_FOOTER']];
			
			ads.reload(reload_units);
        }
	};
	
}});
