/*
 * Class for Olandsbladets galleries
 * @author: Daniel Auener <daniel@internetavdelningen.se>
 */
var Gallery = Class.create({ 


	// Initialize Gallery functionality
	initialize: function(gallery) {
		
		this.gallery = gallery;
		
		// hide loader
		this.gallery.down(".galleryLoader").hide();
		
		// init image count
		this.imageCount = this.gallery.select("ul li").size();
		this.iterator = 0;
		
		if (this.imageCount == 0) this.gallery.addClassName("noImages").update("Inga bilder");
		if (this.imageCount >= 1) {

			// show first picture
			this.gallery.down("ul li").appear().setStyle({cursor:"pointer"});
			if (!gallery.hasClassName("noZoom")) {
				this.gallery.select("ul li").invoke("observe","click", function() {
					var url = window.location.href;
					$("whiteBack").setStyle({top:0+"px",left:0+"px",width:document.viewport.getDimensions().width+"px",height:($("entire").getDimensions().height+24)+"px",backgroundColor:"white",opacity:0.8});
					new Ajax.Request(url+"&gallery=show",{
						//parameters: {gallery:"show"},
						onComplete: function (response) {
							var gallery_big = new Element("div").addClassName("gallery").addClassName("big").setStyle({
								top:(document.viewport.getScrollOffsets().top+100)+"px",
								left:((document.viewport.getDimensions().width/2)-256)+"px"
							});
							gallery_big.insert(response.responseText);
							var closeElement = new Element("div").update("<img src='images/icon-gallery-close.jpg' />").setStyle({position:"relative",top:"4px",right:"4px",cursor:"pointer"});
							closeElement.observe("click",function() {$("whiteBack").setStyle({width:0+"px",height:0+"px"}); gallery_big.remove();});
							$("bigGallery").insert(gallery_big);
							new Gallery(gallery_big);				
							gallery_big.insert(closeElement);
						}
					});
				});
			}
			
			if (this.imageCount > 1) {
				// create and insert controls
				this.prevControl = new Element("div").addClassName("previous");
				this.nextControl = new Element("div").addClassName("next");
				this.countControl = new Element("div").addClassName("count").update("1/"+this.imageCount);
				this.controls = new Element("div").addClassName("controls").insert(this.prevControl).insert(this.nextControl).insert({bottom:this.countControl});
				this.gallery.insert({top:this.controls});
				
				// listen till control events
				this.prevControl.observe("click",this.previous.bindAsEventListener(this));
				this.nextControl.observe("click",this.next.bindAsEventListener(this));
			}
		} 
		

    },
	
	next: function() {
		var lastImage = this.iterator;
		this.iterator = (this.iterator < this.imageCount-1) ? this.iterator + 1 : 0;
		this.updateImage(lastImage);
	},
	
	previous: function() {
		var lastImage = this.iterator;
		this.iterator = (this.iterator > 0) ? this.iterator - 1 : this.imageCount - 1;
		this.updateImage(lastImage);
	},
	
	updateImage: function(lastImage) {
		
		// update count control
		this.countControl.update((this.iterator+1)+"/"+this.imageCount);
		
		// show current image
		new Effect.Appear(this.gallery.select("ul li")[this.iterator], {
			afterSetup: function() {
				// hide last selected image
				this.gallery.select("ul li")[lastImage].setStyle({display:"none"});
				this.gallery.select("ul li")[this.iterator].setStyle({cursor:"pointer"});
			}.bind(this)
		});
		
	}
	
	
});


$(document).observe("dom:loaded",function() {
	$$(".gallery").each(function(gallery) {
		new Gallery(gallery);
		//alert(gallery.classNames());
		if (!gallery.hasClassName("noZoom")) {
			// show big text gallery
			if ($("show_gallery_big_"+gallery.readAttribute("text_id")) != null) {
				$("show_gallery_big_"+gallery.readAttribute("text_id")).observe("click", function() {
					var url = window.location.href;
					$("whiteBack").setStyle({top:0+"px",left:0+"px",width:document.viewport.getDimensions().width+"px",height:($("entire").getDimensions().height+24)+"px",backgroundColor:"white",opacity:0.8});
					new Ajax.Request(url+"&gallery=show",{
						//parameters: {gallery:"show"},
						onComplete: function (response) {
							var gallery_big = new Element("div").addClassName("gallery").addClassName("big").setStyle({
								top:(document.viewport.getScrollOffsets().top+100)+"px",
								left:((document.viewport.getDimensions().width/2)-256)+"px"
							});
							gallery_big.insert(response.responseText);
							var closeElement = new Element("div").update("<img src='images/icon-gallery-close.jpg' />").setStyle({position:"relative",top:"4px",right:"4px",cursor:"pointer"});
							closeElement.observe("click",function() {$("whiteBack").setStyle({width:0+"px",height:0+"px"}); gallery_big.remove();});
							$("bigGallery").insert(gallery_big);
							new Gallery(gallery_big);				
							gallery_big.insert(closeElement);
						}
					});
				});
			}

		}
		
					// show big gallery
			if ($("show_gallery_"+gallery.readAttribute("text_id")) != null) {
				$("show_gallery_"+gallery.readAttribute("text_id")).observe("click", function() {
					$("whiteBack").setStyle({top:0+"px",left:0+"px",width:document.viewport.getDimensions().width+"px",height:($("entire").getDimensions().height+24)+"px",backgroundColor:"white",opacity:0.8});
					var url = "updater/user/image_gallery.php";
					new Ajax.Request(url,{
						parameters: {gal_id:gallery.readAttribute("text_id"), big:"true", size:"500"},
						onComplete: function (response) {
							var gallery_big = new Element("div").addClassName("gallery").addClassName("big").setStyle({
								top:(document.viewport.getScrollOffsets().top+100)+"px",
								left:((document.viewport.getDimensions().width/2)-256)+"px"
							});
							gallery_big.insert(response.responseText);
							var closeElement = new Element("div").update("<img src='images/icon-gallery-close.jpg' />").setStyle({position:"relative",top:"4px",right:"4px",cursor:"pointer"});
							closeElement.observe("click",function() {$("whiteBack").setStyle({width:0+"px",height:0+"px"}); gallery_big.remove();});
							$("bigGallery").insert(gallery_big);
							new Gallery(gallery_big);				
							gallery_big.insert(closeElement);
						}
					});
				});
			}
		
		
			if ($("show_gallery_bild_"+gallery.readAttribute("text_id")) != null) {
				$("show_gallery_bild_"+gallery.readAttribute("text_id")).observe("click", function() {
					$("whiteBack").setStyle({top:0+"px",left:0+"px",width:document.viewport.getDimensions().width+"px",height:($("entire").getDimensions().height+24)+"px",backgroundColor:"white",opacity:0.8});
					var url = "updater/user/image_gallery.php";
					new Ajax.Request(url,{
						parameters: {gal_id:gallery.readAttribute("text_id"), big:"true", size:"500"},
						onComplete: function (response) {
							var gallery_big = new Element("div").addClassName("gallery").addClassName("big").setStyle({
								top:(document.viewport.getScrollOffsets().top+100)+"px",
								left:((document.viewport.getDimensions().width/2)-256)+"px"
							});
							gallery_big.insert(response.responseText);
							var closeElement = new Element("div").update("<img src='images/icon-gallery-close.jpg' />").setStyle({position:"relative",top:"4px",right:"4px",cursor:"pointer"});
							closeElement.observe("click",function() {$("whiteBack").setStyle({width:0+"px",height:0+"px"}); gallery_big.remove();});
							$("bigGallery").insert(gallery_big);
							new Gallery(gallery_big);				
							gallery_big.insert(closeElement);
						}
					});
				});
			}
	});
	
});