var in_ie_hell = false;
var in_iHell = false;
var scroll_footer = false;
var body_scroll_top = 0;
var footer_menu_h = 30;
var EL_footer_menu, EL_beton_content, EL_brand_content, EL_site_wrapper, EL_home_logo, EL_navigation,
	document_body;

window.addEvent('domready', function() {
	if(Browser.Engine.trident==true) { 
		in_ie_hell=true; 
	}
	// PAGE ELEMENTS
	document_body = $(document.body);
	EL_site_wrapper  = $('site_wrapper');
	EL_footer_menu = $('footer_menu');
	EL_beton_content = $('beton_content');
	EL_brand_content = $('brand_content');
	EL_navigation = $('navigation');
	EL_home_logo = $('home_logo');
	EL_beton_button = $('beton_button');
	EL_brand_button = $('brand_button');
	if($$('a.enlarge_link').length>0) { init_gallery(); }
	// IPAD & IPHONE FIXES
	if((navigator.userAgent.match(/iPhone/i)) || (navigator.userAgent.match(/iPod/i)) || (navigator.userAgent.match(/iPad/i))) {
		in_iHell = true;
		// ALTER OVERFLOWING DIVS
		iFixes();
		scroll_footer = true;
	}
	trigger_links();
	if($('focus_content')!=null) {
		set_focus_top();
	}
	position_stuff();
	init_slideshows();
	if(document_body.hasClass('test')) {
		// scroll_footer = true;
	}
	if(scroll_footer==true) {
		init_scroll_footer();
	}
});

//////////////////////////////////////////////////////////////////
/////////////////// POSITION ELEMENTS //////////////////////////
//////////////////////////////////////////////////////////////////

var page_dims, EL_footer_menu_top, reset_tiles, active_min_w;
var beton_left, brand_right;
var min_page_width = 1000;
var min_page_height = 750;
var tile_width = 285;
var home_view_port = 595;
var center_view_port = 860;
var beton_view_port = 945;
var total_height;

function position_stuff(apply_position, body_state, manual_calculate) {
	if(typeof apply_position=='undefined') { apply_position = true; }
	if(typeof body_state=='undefined') { body_state = document_body.id; }
	if(typeof manual_calculate=='undefined') { manual_calculate = false; }
	
	page_dims = get_page_size();
	//if(in_iHell==true) { alert('window H = '+page_dims.window_h +' en page H = '+page_dims.page_h); }
	
	// HEIGHT BUSINESS
	if(page_dims.window_h > min_page_height) {
		total_height = page_dims.window_h;
	} else if(page_dims.window_h < min_page_width) {
		total_height = min_page_height;
	}
	if(in_iHell==true) {
		if(manual_calculate==true) {
			var content_dims;
			if(body_state=='home') {
				content_dims = $('home_content').getCoordinates();
			} else if(body_state=='center_pages') {
				content_dims = $('center_content').getCoordinates();
			} else {
				content_dims = $('focus_text').getCoordinates();
			}
			var content_total_height = content_dims.top + content_dims.height;
			if(content_total_height>page_dims.window_h) {
				total_height = content_total_height;
			} else {
				total_height = page_dims.window_h;
			}
			//alert('content_total_height = '+content_total_height+' | Top = '+content_dims.top +' H = '+content_dims.height);
		} else {
			if(page_dims.page_h>total_height) {
				total_height = page_dims.page_h;
			} else {
				total_height = page_dims.window_h;
			}
		}
	}
	EL_site_wrapper.setStyle('height', total_height);
	reset_tiles = false;
	reset_logo = false;
	// HOME
	if(body_state=='home') {
		reset_tiles = true;
		reset_footer = false;
		active_min_w = home_view_port;
	} else if(body_state=='center_pages') {
		reset_tiles = true;
		reset_footer = false;
		reset_logo = true;
		active_min_w = center_view_port;
	// BETON / BRAND ANDERE LOCATIES
	} else {
		reset_footer = true;
		reset_logo = true;
		reset_tiles = false;
		// SET TILES ->
		if(body_state=='betonboringen') {
			beton_left = 272;
			brand_right = page_dims.window_w - beton_view_port - tile_width;
			if(apply_position==true) {
				EL_beton_content.setStyle('left', beton_left);
				EL_brand_content.setStyle('right', brand_right);
			}
		} else if(body_state='brandpreventie') {
			beton_left = page_dims.window_w - beton_view_port - tile_width;
			brand_right = 272;
			if(apply_position==true) {
				EL_beton_content.setStyle('left', beton_left);
				EL_brand_content.setStyle('right', brand_right);
			}
		}
	}
	// CENTERED TILES
	if(reset_tiles==true) {
		var space_left = (page_dims.window_w - active_min_w) / 2;
		beton_left = space_left - tile_width;
		brand_right = space_left - tile_width;
		if(apply_position==true) {
			EL_beton_content.setStyle('left', beton_left);
			EL_brand_content.setStyle('right', brand_right);
		}
	}
	if(apply_position==true) {
		position_logo(document_body.id);	
		position_EL_footer_menu(document_body.id);	
		position_beton_brand_links(document_body.id);
	} else {
		var tile_positions = new Object();
		tile_positions.beton_left = beton_left;
		tile_positions.brand_right = brand_right;
		return tile_positions;
	}
}

var EL_footer_menu_min_width = 375;
function position_EL_footer_menu(page) {
	var EL_footer_menu_width;
	if(page=='betonboringen') {
		EL_footer_menu_width = page_dims.window_w - (EL_beton_content.getStyle('left').toInt() + tile_width + 30);
		if(EL_footer_menu_width < EL_footer_menu_min_width) {
			EL_footer_menu.setStyle('width', EL_footer_menu_min_width);		
		} else {
			EL_footer_menu.setStyle('width', EL_footer_menu_width);
		}
	} else if(page=='brandpreventie') {
		EL_footer_menu_width = page_dims.window_w - (EL_brand_content.getStyle('right').toInt() + tile_width + 30);
		if(EL_footer_menu_width < EL_footer_menu_min_width) {
			EL_footer_menu.setStyle('width', EL_footer_menu_min_width);		
		} else {
			EL_footer_menu.setStyle('width', EL_footer_menu_width);
		}
	} else {
		EL_footer_menu.setStyle('width', '60%');
	}
	// TOP POSITION
	if(scroll_footer==false) {
		var footer_top =  page_dims.window_h - footer_menu_h;
		EL_footer_menu.setStyle('top', footer_top);
	}
}
function position_logo(page) {
	var left_offset, direction;
	if(page=='center_pages') {
		left_offset = EL_beton_content.getStyle('left').toInt();
		left_offset = left_offset + tile_width + 10;
		direction = 'left';
	} else if(page=='betonboringen') {
		left_offset = 10;
		direction = 'left';
	} else if(page=='brandpreventie') {
		left_offset = 10;
		direction = 'right';
		EL_home_logo.setStyle('left', 'auto');
	}
	if(typeof left_offset!='undefined') {
		EL_home_logo.setStyle(direction, left_offset);
	}
}
var min_links_width = 175;
function position_beton_brand_links(page) {
	var link_width = '50%';
	if(page=='center_pages') {
		link_width = EL_beton_content.getStyle('left').toInt() + tile_width + 40;	
	} else if(page=='brandpreventie') {		
		link_width = EL_beton_content.getStyle('left').toInt() + tile_width + 70;	
	} else if(page=='betonboringen') {
		link_width = EL_brand_content.getStyle('right').toInt() + tile_width + 70;	
	}
	if((link_width!='50%') && (link_width<min_links_width)) { link_width = min_links_width; }
	EL_brand_button.setStyle('width', link_width);
	EL_beton_button.setStyle('width', link_width);
}
window.addEvent('resize', function() {
	position_stuff();
	if(scroll_footer==true) { scroll_footer_menu(); }
});

function init_scroll_footer() {
	// output('- - - - init_scroll_footer - - - -');
	scroll_footer_menu();
	window.addEvent('scroll', function() { scroll_footer_menu(); });	
}
function scroll_footer_menu() {
	// scroll top 
	body_scroll_top = document_body.getScroll().y;
	var footer_top_pos = window_h + body_scroll_top - footer_menu_h;
	// output('body_scroll_top: '+body_scroll_top);
	EL_footer_menu.setStyle('top', footer_top_pos);
}
function set_focus_top() {
	var focus_div = $('focus_content');
	var active_sub_link = $('active_page');

	var active_position = active_sub_link.getCoordinates();
	focus_div.setStyles({
		top: active_position.top,
		width: active_position.width
	});
	/*
	if(in_iHell==true) {
		// CHECK OF PAGINA NIET TE KORT IS
		var focus_total_top = focus_div.getCoordinates().top.toInt();
		var focus_text_h = $('focus_text').getCoordinates().height.toInt();
		var focus_total_height = focus_total_top + focus_text_h;
		if(focus_total_height>total_height) {
			EL_site_wrapper.setStyle('height', focus_total_height);
		}
		// position_stuff();
	}
	*/
}
///////////////////////////////////////////////////////////////////////
///////////// iPAD iPHONE gekuth /////////////////////////////////
/////////////////////////////////////////////////////////////////////
var center_content_div;
function iFixes() {
	
	// SCROLLING DIVS -> MOET OP OVERFLOW AUTO KOMEN + FOOTER MENU POSITIONERING AANPASSEN

	// FOCUS_TEXT idem
}
///////////////////////////////////////////////////////////////////////
///////////// TEST JS OUTPUT /////////////////////////////////
/////////////////////////////////////////////////////////////////////
var output_div_available;
var output_div;
function output(string) {
	if(output_div_available==undefined) {
		if($('output')!=null) {
			output_div_available=true;
			output_div = $('output');
		} else {
			output_div_available=false;		
		}
	}
	if(output_div_available==true) {
	//$('output').appendText("<br />"+string);	
		var cur_content = output_div.innerHTML;
		output_div.innerHTML = cur_content+'<br />'+string;
	}
	return false;
}

///////////////////////////////////////////////////////////////////////
///////////// FADING SLIDESHOW /////////////////////////////////
/////////////////////////////////////////////////////////////////////
var page_galleries;
function init_slideshows() {
	if($('page_gallery')!=null) {
		make_fading_slideshow($('page_gallery'), 'div.slideshow_slide');
	}
}


var gallery_slide_interval = 3500;
var fade_speed = 500;
var slides_z_index = 0;
var fade_delay;
var auto_play;
var slideshow_auto_play = false;

function make_fading_slideshow(slideshow_holder, element_tag) {
	var slideshow_holder_id = slideshow_holder.id;
	var slides = $$('#'+slideshow_holder_id+' '+element_tag);
	var num_slides = slides.length;
	slideshow_holder.slides_z_index = num_slides;
	
	slideshow_holder.his_slides = slides; 
	slideshow_holder.num_slides = num_slides; 
	slideshow_holder.cur_index = 0;
	
	var has_thumb_slider = false;
	
	var top_pos, left_pos;
	top_pos = left_pos = 0;

	slides.each(function(slide, index) {
		slide.store('his_index', index);
		slide.store('his_z_index', num_slides);
		slide.setStyles({
			position: 'absolute',
			top: top_pos,
			left: left_pos,
			'z-index': num_slides
		});
		num_slides--;
	});

	// CONTROL BUSINESS  / FADE
	slideshow_holder.store('fading', false);
	slideshow_holder.store('auto_play', true);
	
	var slide_interval = gallery_slide_interval;
	slideshow_holder.store('fade_interval', slide_interval);
	
	if(slideshow_holder_id=='intro_slideshow') {	
		slideshow_holder.store('auto_play', true);
	}

	if(slideshow_holder.retrieve('auto_play')==true) {
		// slideshow_holder.store('auto_play', false);
		slideshow_holder.store('fade_delay', fade_slide_V2.delay(slideshow_holder.retrieve('fade_interval'), slideshow_holder));
	} else {
		slideshow_holder.store('auto_play', false);
	}
}
function show_slide(slideshow_holder, slide_index) {
	fade_slide_V2(slideshow_holder, 'none', slide_index);
}
function fade_slide_V2(active_slideshow, slideshow_direction, slide_to_show_index) {
	
	if(active_slideshow==undefined) {
		active_slideshow = this;
	}
	active_slideshow.slides_z_index++;
	if(typeof slide_to_show_index=='undefined') {
		slide_to_show_index = -1;
	}
	if(slideshow_direction==undefined) {
		slideshow_direction = 'next';
	}

	active_slideshow.store('this_fade_speed', fade_speed);

	var NEXT_reset_top = false;
	var PREV_reset_top = false;
	var cur_index = active_slideshow.cur_index;
	var slides = active_slideshow.his_slides;
	var num_slides = active_slideshow.num_slides;
	var next_index;
	
	if(slide_to_show_index!=-1) {
		next_index = slide_to_show_index;
	} else if(slideshow_direction=='next') {
		if((cur_index+1)<num_slides) {
			next_index = cur_index+1;
		} else {
			next_index = 0;
		}	
	} else if(slideshow_direction=='prev') {
		if(cur_index==0) {
			next_index = num_slides - 1;
		} else {
			next_index = cur_index - 1;					
		}
	}
	// output('next_index = '+next_index+' | cur_index = '+cur_index)
	if(next_index!=cur_index) {
		active_slideshow.store('fading', true);
		// ZET SLIDE TO SHOW: OPACITY 0, Z-INDEX MAX
		slides[next_index].setStyles({
			opacity: 0,
			'z-index': active_slideshow.slides_z_index
		});
		if(in_ie_hell==true) { slides[next_index].setStyle('display', 'block'); }
		top_opacity_start = 0;
		top_opacity_end = 1;
		// if(active_slideshow.id=='page_slideshow') {	output('cur_index = '+cur_index+' | next_index = '+next_index); }
	
		var fade_top = new Fx.Tween(slides[next_index], {property: 'opacity', duration: active_slideshow.retrieve('this_fade_speed')});
		fade_top.start(top_opacity_start, top_opacity_end).chain(
				function(){ 
					if(in_ie_hell==true) { slides[cur_index].setStyle('display', 'none'); }
					active_slideshow.cur_index = next_index;
					active_slideshow.store('fading', false);
					var this_auto_play = active_slideshow.retrieve('auto_play');
					if(this_auto_play==true) {
						clearTimeout(active_slideshow.retrieve('fade_delay'));
						active_slideshow.store('fade_delay', fade_slide_V2.delay(active_slideshow.retrieve('fade_interval'), active_slideshow));
					}
				}
		);
	}
}

///////////////////////////////////////////////////////////////////////
///////////// GALLERY EN MODAL STUFF! /////////////////////////////////
/////////////////////////////////////////////////////////////////////
var modal_to_show = '';
var modal_pic_height=0;
var image_to_enlarge;

var gallery_links, num_pics;
function init_gallery() {
	gallery_link = $$('a.enlarge_link');
	num_pics = gallery_link.length;
	gallery_link.each(function(link, index) {
		link.store('his_index', index);
		link.addEvent('click', function() {
			enlarge_image(this, true);
			return false;
		});
	});
}

function init_image_enlargements() {
	var large_img_links = $$('.enlarge_image');
	large_img_links.addEvent('click', function() {
		enlarge_image(this, true);
		return false;
	});
}
var show_prev_next = false;
var cur_img_index;
var gal_prev_link, gal_next_link;
function enlarge_image(the_link, insert_gallery_modal) {
	// PREV NEXT BUTTONS ?
	var prev_next_linkage = '';
	if(num_pics>1) {
		var prev_index, next_index;
		show_prev_next = true;
		cur_img_index = the_link.retrieve('his_index');
		// PREV index
		if((cur_img_index - 1)>=0) {
			prev_index = cur_img_index - 1;	
		} else {
			prev_index = num_pics - 1;
		}
		// NEXT index
		if((cur_img_index + 1)<num_pics) {
			next_index = cur_img_index + 1;	
		} else {
			next_index = 0;
		}
		// Creating an new anchor with an Object
		gal_prev_link = new Element('a', {
		    href: gallery_link[prev_index].href,
		    'class': 'show_image',
		    id: 'prev_image',
		    html: '&lt;',
		    events: {
		        click: function(){
		            enlarge_image(this, false);
		            return false;
		        }
		    }
		});
		gal_prev_link.store('his_index', prev_index);	
		gal_next_link = new Element('a', {
		    href: gallery_link[next_index].href,
		    'class': 'show_image',
		    id: 'next_image',
		    html: '&gt;',
		    events: {
		        click: function(){
		            enlarge_image(this, false);
		            return false;
		        }
		    }
		});
		gal_next_link.store('his_index', next_index);	
	}
	// INSERT NEW MODAL ?
	var modal_position = '';
	if(insert_gallery_modal==true) {
		// SHOW LOADER
		toggle_opacity(the_link, 'transparent');
		// INSERT MODAL HOLDING HTML
		insert_modal_html();
	// PAK HUIDIGE MODAL TOP & LEFT
	} else {
		var cur_modal_dims = $('enlarge_img').getCoordinates();
		modal_position = ' style="top:'+cur_modal_dims.top+'px ; left: '+cur_modal_dims.left+'px;display: block; "';
	}
	
	// LOAD FILE
	image_to_enlarge = the_link.href;
	// MODAL ID
	modal_to_show = 'enlarge_img';
	
	// PRELOAD IMAGE
	var load_img = new Image();
	load_img.onload = function() {
		var his_width = load_img.width;
		var his_height = load_img.height;
		var html_to_show='<div id="enlarge_img" class="page_modal"'+modal_position+'><a name="close_werk_modal" id="close_modal"><img src="'+image_to_enlarge+'" id="modal_enlarge_image" border="0" /></a></div>';
		
		var container = document.getElementById('modal_holder');
		container.innerHTML = html_to_show;
		
		if(insert_gallery_modal==true) {
			toggle_opacity(the_link, 'full');
			launch_modal(modal_to_show, true);
		} else {
			launch_modal(modal_to_show, false);		
		}
	}
	load_img.src=image_to_enlarge;
}


function insert_msg_modal(the_link, msg) {
	// SHOW LOADER
	link_insert_loader(the_link);
	// INSERT MODAL HOLDING HTML
	insert_modal_html();
	// MODAL ID
	modal_to_show = 'de_vorm_message';
	
	var html_to_show='<div id="de_vorm_message" class="page_modal"><a name="close_werk_modal" id="close_modal" class="close_modal"></a><hr class="clear" style="height: 10px;">'+msg+'</div>';
	
	var container = document.getElementById('modal_holder');
	container.innerHTML = html_to_show;

	hide_inserted_loader();
	launch_modal(modal_to_show);
}

function insert_modal_html() {
	// INSERT HTML AT TOP OF PAGE
	var body_tag = document.getElementsByTagName("body").item(0);
	// -- MODAL
	var page_modal = document.createElement("div");
	page_modal.setAttribute('id','modal_holder');
	body_tag.insertBefore(page_modal, body_tag.firstChild);
	// -- OVERLAY
	var overlay_div = document.createElement("div");
	overlay_div.setAttribute('id','overlay');
	body_tag.insertBefore(overlay_div, page_modal.nextSibling);
}
///////// SHOW LOADING /////////
var active_link;
function toggle_opacity(link, state) {
	active_link = link;
	var linked_img=link.getElement('img');
	if(linked_img!=null) {
		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 + ')';
		}
	}
}
var active_loading_link;
var active_loading_link_html;
var mix_loader_html = ' <img src="_img/ajax_loader.gif" alt="Loading..." border="0" />';

function link_insert_loader(the_link) {
	active_loading_link = the_link;
	active_loading_link_html = the_link.innerHTML;
	the_link.innerHTML = active_loading_link_html + mix_loader_html;
}
function hide_inserted_loader() {
	if((active_loading_link!='') && (active_loading_link!=null)) {
		active_loading_link.innerHTML = active_loading_link_html;
	} 
}

/* -----------------------------------------------------
	SET OVERLAY STUFF
 -----------------------------------------------------*/
var page_size_object;
var overlay_div;
var scroll_x, scroll_y, window_w, window_h;


function get_page_size(){
	var scroll_position = window.getScroll();
	scroll_x = scroll_position.x;
	scroll_y = scroll_position.y;

	var body_size =  document_body.getScrollSize();
	body_w = body_size.x;
	body_h = body_size.y;
	
	var window_size = window.getSize();
	window_w = window_size.x;
	window_h = window_size.y;
	
	// for small pages with total height less then height of the viewport
	if(body_h < window_h){
		page_h = window_h;
	} else { 
		page_h = body_h;
	}

	// for small pages with total width less then width of the viewport
	if(scroll_x < window_w){	
		page_w = window_w;
	} else {
		page_w = body_w;
	}
	var page_size_object = new Object();
	page_size_object.page_w = page_w;
	page_size_object.page_h = page_h;
	page_size_object.window_w = window_w;
	page_size_object.window_h = window_h;
	return page_size_object;
}

function show_overlay(overlay_height_int) {
	var overlay_height = overlay_height_int + 'px';
	overlay_div.setStyle('height', overlay_height);
	overlay_div.setStyle('display', 'block');
	overlay_div.setStyle('opacity', '0');
	overlay_div.fade(0, 1);
}

function launch_modal(modal_to_display, retrigger) {

	if(typeof retrigger=='undefined') { retrigger = true; }

	page_size_object=get_page_size();

	var target_modal_div = $(modal_to_display);
	// ZET OP ZICHTBAAR
	if(retrigger==true) {
		target_modal_div.setStyle('opacity', '0');
	}
	target_modal_div.style.display = "block";
	//  MODAL DIMENSIONS
	var modal_size = target_modal_div.getSize();
	var modal_div_w = modal_size.x;
	var modal_div_h = modal_size.y;
	
	var page_height = page_size_object.page_h;
	var overlay_height = page_height;
	if(modal_div_h>page_height) {
		overlay_height = modal_div_h;
	}	

	// CENTER THE MODAL AND MAKE SURE LEFT AND TOP VALUES ARE NOT NEGATIVE
	var modal_div_x = Math.round(((page_size_object.window_w - modal_div_w) / 2));
	var modal_div_y = Math.round(scroll_y + ((page_size_object.window_h - modal_div_h) / 2));

	target_modal_div.style.top = (modal_div_y < 0) ? "0px" : modal_div_y + "px";
	target_modal_div.style.left = (modal_div_x < 0) ? "0px" : modal_div_x + "px";

 	// OVERLAY
	if(retrigger==true) {
		overlay_div = $('overlay');
		show_overlay(overlay_height);
		target_modal_div.fade(0, 1);
	}
	// ACTIVATE GALLERY
	if($('modal_gallery')) {
		activate_gallery('modal_gallery');
	}
	// ENLARGE IMAGE -> prev next links ?	
	if(modal_to_display=='enlarge_img') {
		if(typeof gal_next_link!='undefined') {
			gal_next_link.inject(target_modal_div);
			gal_prev_link.inject(target_modal_div);
		}
	}
	// CLOSE BUSINESS
	var close_link = $('close_modal');
	if(close_link) {
		close_link.onclick=function() {
			close_cur_modal();
		}
	}
	overlay_div.onclick=function() {
		close_cur_modal();
	}
}
var div_fader = new Fx;

function close_cur_modal() {
	if (document.getElementById) {
		// REMOVE THE DYNAMIC DIVS
		if ($(modal_to_show)) { 	
			var modal_to_show_to_del = $(modal_to_show);
			div_fader = new Fx.Tween(modal_to_show_to_del, { property: 'opacity', duration: 150 } ).start(1, 0);
		}
		if ($('overlay')) { 	
			var overlay = $('overlay');
			div_fader = new Fx.Tween(overlay, { property: 'opacity', duration: 150 } ).start(1, 0).chain(
				function() {  
				  	document_body.removeChild(overlay);
			  		var modal_holder = $('modal_holder');
				  	document_body.removeChild(modal_holder);
				}
			);
		}
	}
}
function start_key_functions() {
 	document.onkeydown = check_key;
}
function check_key(event) {
	// IE hack
	if (window.event) { event = window.event; }
	var keycode = event.keyCode;
	var escapeKey;
	if (event.DOM_VK_ESCAPE) {  // mozilla
		escapeKey = event.DOM_VK_ESCAPE;
	} else { // ie
		escapeKey = 27;
	}
	var key = String.fromCharCode(keycode).toLowerCase();
	if (keycode == escapeKey){ // close lightbox
			close_cur_modal();
	}
}
start_key_functions();
