var Protogal = function() { }

Protogal.Settings = {
	FadeSpeed:      10,
	ScrollStepSize: 4,
	ScrollSpeed:    10
};

Protogal.GalleryData = {};

Protogal.MouseHandlers = function (p_event) {			
	var l_id = this.up('div.protogal').id;
	
	switch(p_event.type) {
	case "mouseover":
		if(this.nodeName == 'IMG') {					
			Protogal.FadeIn(l_id, this);
		} else {
			switch(this.className) {
			case "prev":
				Protogal.GalleryData[l_id].dx = -Protogal.Settings.ScrollStepSize;
				break;
			case "next":
				Protogal.GalleryData[l_id].dx = Protogal.Settings.ScrollStepSize;
				break;		
			}
			Protogal.ScrollStart(l_id);
		}
		break;
	case "mouseout":
		if(this.nodeName != 'IMG') {
			Protogal.GalleryData[l_id].dx = 0;
			Protogal.ScrollStop(l_id);
		}
		break;
	}
}

Protogal.FadeIn = function(p_id, p_elem) {	
	new Effect.Pulsate(p_elem, {duration: 1.0, from: 0.7, pulses: 1});
}


Protogal.ScrollStart = function(p_id) {
	Protogal.GalleryData[p_id].timer = setInterval('Protogal.Scroll("'+p_id+'")', Protogal.Settings.ScrollSpeed);
}

Protogal.ScrollStop = function(p_id) {
	clearInterval(Protogal.GalleryData[p_id].timer);
}

Protogal.Scroll = function(p_id) {
	var l_e = $(p_id);
	if(!l_e) return;
		
	var l_pdiv = l_e.down('.bilder');
	if(l_pdiv) {
		var l_max = 0;
		l_pdiv.getElementsBySelector('img').each(function(p_img) {
			var l_a = p_img.up('a');
			l_max += 
				l_a.getWidth() + 
				parseInt(l_a.getStyle('margin-left')) +
				parseInt(l_a.getStyle('margin-right'));
		});				
		
		l_max -= l_pdiv.getWidth();
			
		if(Protogal.GalleryData[p_id].dx < 0 || l_pdiv.scrollLeft <= l_max) {
			l_pdiv.scrollLeft += Protogal.GalleryData[p_id].dx;
		}
	}
}

Protogal.Init = function(p_e, p_use_prevnext) {
	var l_left  = p_e.down('.prev'),
			l_right = p_e.down('.next'),
			l_pics  = p_e.down('.bilder');
	if(!l_left || !l_right || !l_pics) return false;
		
	if(p_use_prevnext) {
		l_left.observe("mouseover",  Protogal.MouseHandlers);
		l_left.observe("mouseout",   Protogal.MouseHandlers);
		l_right.observe("mouseover", Protogal.MouseHandlers);
		l_right.observe("mouseout",  Protogal.MouseHandlers);
	}
		
	l_pics.getElementsBySelector('img').each(function(p_img) {
		p_img.observe("mouseover", Protogal.MouseHandlers);
		p_img.observe("mouseout", Protogal.MouseHandlers);
	});
		
	Protogal.GalleryData[p_e.id] = {
		dx:       0,
		moving:   false,
		timer:    null
	};
	
	return true;
}
