var item_galleries = new Array();
var enlarged_img;
var caption_span;
var mh_gal_go_to_end = false;
var pic_index = 0;
var image_counting = false;
var counter_span, large_holder, prev_img_link, next_img_link, num_gal_items;

function init_item_galleries() {
	var item_galleries = $$('.item_gallery_holder');
	for(var i=0;i<item_galleries.length;i++) {
		var gallery_id = item_galleries[i].getProperty('id');
		activate_gallery(gallery_id);
	}
}

function activate_gallery(item_gallery_id) {
	pic_index = 0;
	num_gal_items = 0;
	var image_margin=15;
	var max_items_vis = 4;
	var read_viewport_w = true;
	var check_nav_visible = false;
	enlarged_img=$('modal_gal_focus');
	large_holder = enlarged_img.getParent();

	var gal_index = 0;
	var item_gallery_belt = $$('#'+item_gallery_id+' .item_gallery_belt')[0];
		
	var gal_prev = $$('#'+item_gallery_id+' a.gal_prev')[0];
	var gal_next = $$('#'+item_gallery_id+' a.gal_next')[0];

	var item_gallery_list = $$('#'+item_gallery_id+' ul.item_gallery_list')[0];
	var item_gallery_list_items = $$('#'+item_gallery_id+' li.gal_item_li');
	var item_gallery_pic_links = $$('#'+item_gallery_id+' a.item_gal_link');
	num_gal_items = item_gallery_list_items.length;
	var gallery_viewport_w = item_gallery_belt.getStyle('width').toInt();

	var gal_item_animator = new Fx;
	
	if($('image_numbering')!=null) {
		image_counting = true;
		counter_span = $('cur_image_index');
	}
	
	// PAK ALLE IMG WIDTHS
	var gall_image_pos = new Array();
	for(var i=0; i<item_gallery_list_items.length; i++) {
		gall_image_pos[i] = item_gallery_list_items[i].getStyle('left').toInt();
	}
	// CHECK VIEWPORT WIDTH
	if(read_viewport_w==true) {
		var gal_list_width = item_gallery_list.getStyle('width').toInt();
	} else {
		if(num_gal_items>0) {
			var last_left = gall_image_pos[num_gal_items-1];
			var last_width = item_gallery_list_items[num_gal_items-1].getElement('img').width;
			var gal_list_width = last_left + last_width + image_margin;
		} else {
			gal_list_width = 0;
		}
		// output('last_left = '+last_left+' gal_list_width = '+gal_list_width+' & last_width = '+last_width);
	}
	var end_reached = false;
	// NAV VISIBLE ?
	if(check_nav_visible==true) {
		if(num_gal_items<=max_items_vis) {
			gal_next.setStyle('visibility', 'hidden');
			gal_prev.setStyle('visibility', 'hidden');
		} else {
			gal_next.setStyle('visibility', 'visible');
			gal_prev.setStyle('visibility', 'visible');
			if(mh_gal_go_to_end==true) {
				var cur_end = -1*(gal_list_width - gallery_viewport_w) + image_margin;
				gal_index = num_gal_items-max_items_vis;
				end_reached=true;
				item_gallery_list.setStyle('left', cur_end);
				output('scroll to end: gal_index = '+gal_index);
				// alert('scroll to end yesch');
			}
		}
	}
	
	/*
	CHECK FOR PREV NEXT LARGE IMAGE NAV
	#modal_img_prev .modal_img_nav
	#modal_img_next .modal_img_nav
	#prev_active_area .nav_active_area
	#next_active_area .nav_active_area
	*/
	if($('large_prev')!=null) {
		prev_img_link = $('large_prev');
		next_img_link = $('large_next');
		
		toggle_large_prev_next_visibility(pic_index);
		
		prev_img_link.onclick=function() {
			prev_image();
			return false;
		}
		next_img_link.onclick=function() {
			next_image();
			return false;
		}
	}
	
	function next_image() {
		if((pic_index+1)<num_gal_items) {
			pic_index++;
			show_large_pic(item_gallery_pic_links[pic_index]);
			update_counter(pic_index);
			// toggle_large_prev_next_visibility(pic_index);
		}
	}
	function prev_image() {
		if((pic_index-1)>=0) {
			pic_index--;
			show_large_pic(item_gallery_pic_links[pic_index]);
			update_counter(pic_index);
			// toggle_large_prev_next_visibility(pic_index);
		}	
	}
	// POP-UP LINK VAN IMAGES
	item_gallery_pic_links.each(function(gal_link, i){
		gal_link.store('img_link_index', i);
		gal_link.onclick=function() {
			show_large_pic(this);			
			return false;
		}
	});
	
	// NEXT BUTTON
	// Quart.easeOut
	if(gal_next) {
		gal_next.onclick=function() {
			next_image();
			var cur_start = item_gallery_list.style.left;
			if(cur_start=='') { cur_start='0px'; }
			var cur_start_val = cur_start.toInt();
			var cur_diff = (-1*cur_start_val) + gallery_viewport_w;
			// NEXT POS BEKIJKEN, ALS VOLGENDE WITRUIMTE OVERLAAT, DAN NEXT POS AANPASSEN NAAR MAX
			var next_left_pos = gall_image_pos[gal_index+1];
			if((gal_index<num_gal_items) && (end_reached==false)) {
				gal_index++;
				var space_left = next_left_pos+gallery_viewport_w+ image_margin;
				if(space_left>=(gal_list_width)) {	
					var cur_end = -1*(gal_list_width - gallery_viewport_w) + image_margin;
					end_reached=true;
				} else {
					var cur_end = '-'+gall_image_pos[gal_index]+'px';
				}
				var cur_duration = 275;//cur_start_val - cur_end.toInt();
				gal_item_animator = new Fx.Tween(
						item_gallery_list, 
						{ property: 'left', duration: cur_duration, transition: Fx.Transitions.Quart.easeIn }
					)
					.start(cur_start, cur_end);
			}
			return false;
		}
	}
	// PREV BUTTON
	if(gal_prev) {
		gal_prev.onclick=function() {
			prev_image();
			if(gal_index>0) {
				var cur_start = item_gallery_list.style.left;
				var max_gal_index = num_gal_items-1;
				gal_index--;
				if(end_reached==true) { end_reached=false; }
				var cur_end = '-'+gall_image_pos[gal_index]+'px';
				output('cur_start = '+cur_start+' & cur_end = '+cur_end);
				var cur_duration = 275;//-1*(cur_start.toInt() - cur_end.toInt());
				gal_item_animator = new Fx.Tween(
					item_gallery_list, 
					{ property: 'left', duration: cur_duration, transition: Fx.Transitions.Quart.easeIn }
					)
					.start(cur_start, cur_end);
			}
			return false;
		}
	}
}

function toggle_large_prev_next_visibility(index) {
	output('index: '+index);
	//alert('pic_index = '+pic_index+' nun_pics = '+num_pics)
	if(pic_index==0) {
		prev_img_link.style.visibility='hidden';
		next_img_link.style.visibility='visible';		
	} else if(pic_index==(num_gal_items-1)) {
		prev_img_link.style.visibility='visible';
		next_img_link.style.visibility='hidden';		
	} else {
		prev_img_link.style.visibility='visible';
		next_img_link.style.visibility='visible';		
	}
}


function update_counter(index) {
	if(image_counting==true) {
		counter_span.innerHTML = index+1;
	}
}

function toggle_opacity(link, state) {
	active_link = link;
	var linked_img=link.getElement('img');
	if(state=='full') {
		opacity_val=1;
	} else {
		opacity_val=0.5;
	}
	if(in_ie_hell==false) {
		linked_img.style.opacity = opacity_val;
	} else {
		linked_img.style.filter = 'alpha(opacity=' + opacity_val*100 + ')';
	}
}


//////////////////////////////////////////////////////////////////
/////////////////// ENLARGE PIC IN GALLERY MODAL /////////////////
//////////////////////////////////////////////////////////////////

function show_large_pic(the_link) {
	var img_to_show =the_link.href;
	var img_id = the_link.rel;

	// SHOW LOADING
	toggle_opacity(the_link, 'transparent');

	var img_settings = the_link.rev;
	image_settings_array = get_image_settings(img_settings);
	var img_width = image_settings_array[0];
	var img_height = image_settings_array[1];
	pic_index = the_link.retrieve('img_link_index');

	// PRELOAD IMAGE
	var load_img = new Image();
	load_img.onload = function() {
		enlarged_img.src=img_to_show;
		enlarged_img.width=img_width;
		enlarged_img.height=img_height;
		output('img_width: '+img_width);
		large_holder.setStyle('width', img_width+'px');
		toggle_opacity(the_link, 'full');
		update_counter(pic_index);
		toggle_large_prev_next_visibility(pic_index);
		// SET CAPTION
		//caption_span.innerHTML=img_caption;
	}
	load_img.src=img_to_show;
}
var full_scr_link_checked_yet = false;
var full_scr_link = 0;
var full_scr_link_large = 0;


function get_image_settings(img_settings) {
	// {width:238###height:315}
	img_settings_array = img_settings.split('###');
	// WIDTH
	var img_width_raw = img_settings_array[0]; //  '{width: 315'
	var img_width = img_width_raw.split('{width:')[1];	
	// HEIGHT
	var img_height_raw = img_settings_array[1]; //  height: 445
	var img_height = img_height_raw.split('height:')[1];
	img_height = img_height.replace("}", "");
	img_caption='';
	/*
	// CAPTION
	img_caption_raw = img_settings_array[2]; // caption: ''}
	var img_caption = img_caption_raw.replace("caption: '", "");
	img_caption = img_caption.replace("'}", "");
	*/
	var image_settings_array = new Array(img_width, img_height, img_caption);
	// output(image_settings_array);
	return image_settings_array;
}
