//////////////////////////////////////////////////////////////////
/////////////////// MODAL EN AJAX STUFF //////////////////////////
//////////////////////////////////////////////////////////////////

function check_modal_links() {
	var modal_form_links = $$('a.modal_form');
	modal_form_links.addEvent('click', function() {
		show_form_modal(this);
		return false;
	});
}
// MH LOGIN
function check_login_links() {
	var modal_mh_links = $$('a.mh_login_modal');
	modal_mh_links.addEvent('click', function() {
		show_login_modal(this);
		return false;
	});
}
// NIEUWSBRIEF POP-UP
function check_newsletter_links() {
	var newsletter_show_links = $$('a.newsletter_show');
	newsletter_show_links.addEvent('click', function() {
		show_newsletter_modal(this);
		return false;
	});
}

function check_add_to_mh_links() {
	var add_to_mh_links = $$('a.add_to_mh');
	add_to_mh_links.addEvent('click', function() {
		var link_data = return_string_relevant_info(this.href);
		add_to_mh_items(link_data[1]);
		if($('mh_dropbox')==null) {
			link_insert_loader(this);
		}
		return false;
	});
}
function add_to_mh_items(product_id) {
	// LOAD FILE
	var load_file = '_inc/_content_readers/load_ajax.inc.php?part=add_to_mh&product_id='+product_id;
	// MAKE ZE CALL
	sendRequest(load_file, handle_add_to_mh_request);
	// SHOW LOADING
	if($('mh_dropbox')!=null) {
		var new_list_item = new Element('li', { 
				id: 'loading_added_to_mh', 
				title: 'Adding to Mijn Histoire', 
				html: '<img src="_img/mh_loader_50px.gif" alt="loading" />', 
				'class': 'gal_item_li'
			});
		// PAK ZN LEFT POS, ZODAT HIJ ALS LAATSTE ERBIJ STAAT
		var cur_gal_item_lis = $$('#mh_dropbox li.gal_item_li');
		var num_cur_gal_item_lis = cur_gal_item_lis.length;
			var next_left_pos = num_cur_gal_item_lis * 55;
			var next_left_pos_str = next_left_pos+'px';
			new_list_item.setStyle('left', next_left_pos_str);
		new_list_item.inject(drop, 'top');
	}
}
function check_del_from_mh_links() {
	var del_from_mh_links = $$('a.del_from_mh');
	del_from_mh_links.addEvent('click', function() {
		var link_data = return_string_relevant_info(this.href);
		remove_from_mh_items(link_data[1], this);
		return false;
	});
}
function remove_from_mh_items(product_id, del_link) {
	// LOAD FILE
	var load_file = '_inc/_content_readers/load_ajax.inc.php?part=del_from_mh&product_id='+product_id;
	// MAKE ZE CALL
	sendRequest(load_file, handle_add_to_mh_request);
	// SHOW LOADING
	var loading_delete_action_html = new Element('img', { 
				id: 'loading_del_from_mh', 
				title: 'Deleting from Mijn Histoire', 
				src: '_img/mh_loader_50px.gif', 
				alt: 'loading'
			});
	loading_delete_action_html.inject(del_link, 'top');
	
	//del_link

}

////////////////////////////////////////////////////////////////
//////// GRID NAVIGATION //////////////////////////////////////////
////////////////////////////////////////////////////////////////
var grid_prev_but, grid_next_but, grid_loader, images_grid, grid_refresher, num_grids, selection_type;
var grid_counter=0;
var prev_grid_counter;
var grid_refresh_rate = 6000;
var refresh_active = true;
var page_overview_ids = new Array();
var page_overview_ids_set = false;
var js_num_grids;

function init_image_grid_nav() {
	images_grid = $('images_grid');
	grid_loader = $('grid_loader');
	grid_prev_but = $('img_grid_prev');
	grid_next_but = $('img_grid_next');	
	num_grids = grid_next_but.get('rel');
	// SELECTION TYPE
	if(document.body.id=='projecten') {
		selection_type = 'projecten';
	} else {
		selection_type = 'producten';
	}
	//output('init nav - num_grids = '+num_grids);
	
	// PAK ARRAY VAN PHP JAVASCRIPT en zet in client-side om (ivm session verloop gekuth)
	if((typeof cur_product_ids!='undefined') && (page_overview_ids_set==false)) {
		var cur_time = get_clock_time();
		output('Start refreshing: '+cur_time);
		page_overview_ids = cur_product_ids;
		page_overview_ids_set = true;
	}
	js_num_grids = page_overview_ids.length;
	num_grids = js_num_grids;
	
	grid_prev_but.onclick = function() {
		show_grid('prev');
		clear_refresh_delay();
		return false;
	};
	grid_next_but.onclick = function() {
		show_grid('next');
		clear_refresh_delay();
		return false;
	};
	// AUTOMATISCH REFRESHEN
	if(refresh_active==true) {
		set_refresh_delay();
	}
}
function set_refresh_delay() {
	grid_refresher = show_grid.delay(grid_refresh_rate);
}
function clear_refresh_delay() {
	if(grid_refresher!=undefined) {
		$clear(grid_refresher);
		refresh_active = false;
		// output('REFRESH CLEARED');
	}
}

// MAKE ZE CALL
function show_grid(direction) {
	// output('cur grid_count = '+grid_counter);
	if((direction==undefined) || (direction=='next')) { 
		direction='next'; 
		if((grid_counter+1)<num_grids) {
			grid_counter++;
		} else {
			output('reset');
			direction = 0;
			grid_counter = 0;
		}
	} else if(direction=='prev') {
		if((grid_counter-1)>=0) {
			grid_counter--;
		} else {
			grid_counter = 0;
		}
	} 
	//output('grid_counter = '+grid_counter);
	
	if(grid_counter==prev_grid_counter) {
		var cur_time = get_clock_time();
		output('SAME Number: '+cur_time);
		grid_counter++;
	}

	var cur_ids_string = page_overview_ids[grid_counter];
	var extra_get_ids = '&id_selection='+cur_ids_string;
	output(grid_counter+' | ids = '+cur_ids_string+' num: '+page_overview_ids.length);

	var load_file = '_inc/_content_readers/load_ajax.inc.php?part=next_image_grid&direction='+direction+'&count='+grid_counter+'&selection_type='+selection_type+'&num_grids='+num_grids+extra_get_ids;
	// SHOW LOADER
	grid_loader.setStyles({
		display: 'block',
		opacity: 0.5
	});
	// GET IT
	sendRequest(load_file, handle_move_grid);
	// SET PREV GRID COUNTER TO CUR GRID COUNTER
	prev_grid_counter = grid_counter;
}

function handle_move_grid(req) {
	var html_to_show = req.responseText;
	// UPDATE GRID
	var myFx = new Fx.Tween(images_grid, {property: 'opacity'});
	myFx.start(1,0).chain(
	    //Notice that "this" refers to the calling object (in this case, the myFx object).
	    function(){ 
	    	images_grid.innerHTML = html_to_show; 
	    	this.start(0,1);
			init_image_grid_nav();
			init_tips(true);
			if(document.body.id!='projecten') {
				init_drag_to_mh();
			}
			grid_loader.setStyle('display', 'none');
	    }
	); 	
	
}
function get_clock_time() {
	var current_time = new Date();
	var hours = current_time.getHours();
	var minutes = current_time.getMinutes();
	if (minutes < 10){
		minutes = "0" + minutes;
	}
	var clock_time =  hours+':'+minutes;
	return clock_time;
}
function return_string_relevant_info(the_link) {
	var full_href_string = the_link.toString();
	var string_length = full_href_string.length;
	var bracket_index = full_href_string.indexOf("#");
	var relevant_info = full_href_string.substring((bracket_index+1), string_length);
	var relevant_info_array = relevant_info.split('-');
    // REF URL: 
	var ref_url = full_href_string.substring(0, bracket_index);
	relevant_info_array.push(ref_url); 
	return relevant_info_array;
}


var modal_to_show = '';
var modal_pic_height=0;
var image_to_enlarge;

function show_form_modal(the_link) {
	// LINK DATA
	var link_data = return_string_relevant_info(the_link.href);
	var form_type = link_data[0];
	var extra_query_string='';
	if(link_data.length>2) {
		// #question-54-product 
		var product_id = link_data[1];
		var enq_about = unescape(link_data[2]);
		var ref_url = unescape(link_data[3]);
		extra_query_string = '&product_id='+product_id+'&enq_about='+enq_about;
	} else {
		// #buy_multiple_contact
		var ref_url = unescape(link_data[1]);
	}
	// SHOW LOADER
	link_insert_loader(the_link);
	// INSERT MODAL HOLDING HTML
	insert_modal_html();
	// MODAL ID
	modal_to_show = 'form_modal';
	// LOAD FILE
	var load_file = '_inc/_content_readers/load_ajax.inc.php?part='+form_type+'&modal_id='+modal_to_show+'&ref_url='+ref_url+extra_query_string;
	// MAKE ZE CALL
	sendRequest(load_file, handle_form_request);
}
function show_login_modal(the_link) {
	// LINK DATA
	var ref_url = unescape(the_link.href);
	// SHOW LOADER
	link_insert_loader(the_link);
	// INSERT MODAL HOLDING HTML
	insert_modal_html();
	// MODAL ID
	modal_to_show = 'login_modal';
	// LOAD FILE
	var load_file = '_inc/_content_readers/load_ajax.inc.php?part=login&modal_id='+modal_to_show+'&ref_url='+ref_url;
	// MAKE ZE CALL
	sendRequest(load_file, handle_form_request);
}
function show_newsletter_modal(the_link) {
	// LINK DATA
	var link_data = return_string_relevant_info(the_link.href);
	var newsletter_id = link_data[0];
	var extra_query_string='';
	var ref_url = unescape(link_data[1]);

	// SHOW LOADER
	link_insert_loader(the_link);
	// INSERT MODAL HOLDING HTML
	insert_modal_html();
	// MODAL ID
	modal_to_show = 'newsletter_modal';
	// LOAD FILE
	var load_file = '_inc/_content_readers/load_ajax.inc.php?part=newsletter&modal_id='+modal_to_show+'&ref_url='+ref_url+'&nb_id='+newsletter_id;
	// MAKE ZE CALL
	sendRequest(load_file, handle_form_request);
}

function show_modal(the_link) {
	// SHOW LOADER
	toggle_opacity(the_link, 'transparent');
	// INSERT MODAL HOLDING HTML
	insert_modal_html();
	// LOAD FILE
	var load_file = the_link.href;
	// MODAL ID
	modal_to_show = 'histoire_modal';
	// MAKE ZE CALL
	sendRequest(the_link, handleRequest);
}

function enlarge_image(the_link) {
	// SHOW LOADER
	link_insert_loader(the_link);
	// INSERT MODAL HOLDING HTML
	insert_modal_html();
	// LOAD FILE
	image_to_enlarge = the_link.href;
	// MODAL ID
	modal_to_show = 'histoire_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="histoire_enlarge_img" style="width:'+his_width+'px"class="page_modal"><a name="close_werk_modal" id="close_modal" class="close_modal"></a><hr class="clear" style="height: 10px;"><img src="'+image_to_enlarge+'" id="modal_enlarge_image" width="'+his_width+'" height="'+his_height+'" /></div>';
		var container = document.getElementById('modal_holder');
		container.innerHTML = html_to_show;

		hide_inserted_loader();
		launch_modal(modal_to_show);
	}
	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 = 'histoire_message';
	
	var html_to_show='<div id="histoire_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 FUNCTIONS
 -----------------------------------------------------*/
var active_link;
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 + ')';
	}
}
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;
	} 
}
/* -----------------------------------------------------
	INSTANT EDIT CALLBACK FUNCTIONS
 -----------------------------------------------------*/
function handleRequest(req) {
	var html_to_show = req.responseText;
	var container = document.getElementById('modal_holder');
	container.innerHTML = html_to_show;
	toggle_opacity(active_link, 'full');
	launch_modal(modal_to_show);
}
function handle_form_request(req) {
	var html_to_show = req.responseText;
	var container = document.getElementById('modal_holder');
	container.innerHTML = html_to_show;
	hide_inserted_loader();
	launch_modal(modal_to_show);
}
function handle_add_to_mh_request(req) {
	var html_to_show = req.responseText;
	if($('mh_dropbox')!=null) {
		var container = $('mh_dropbox');
		container.innerHTML = html_to_show;
		mh_gal_go_to_end = true;
		init_item_galleries();
		check_del_from_mh_links();
	} else if($('mh_dropbox')==null) {
		hide_inserted_loader();
	}
}

/* -----------------------------------------------------
	XMLHTTP Functions
	As found on Quirksmode. You hero.
 -----------------------------------------------------*/

function sendRequest(url,callback,postData) {
	var req = createXMLHTTPObject();
	if (!req) return;
	var method = (postData) ? "POST" : "GET";
	req.open(method,url,true);
	req.setRequestHeader('User-Agent','XMLHTTP/1.0');
	if (postData)
		req.setRequestHeader('Content-type','application/x-www-form-urlencoded');
	req.onreadystatechange = function () {
		if (req.readyState != 4) return;
		if (req.status != 200 && req.status != 304) {
		//	alert('HTTP error ' + req.status);
			return;
		}
		callback(req);
	}
	if (req.readyState == 4) return;
	req.send(postData);
}

function XMLHttpFactories() {
	return [
		function () {return new XMLHttpRequest()},
		function () {return new ActiveXObject("Msxml2.XMLHTTP")},
		function () {return new ActiveXObject("Msxml3.XMLHTTP")},
		function () {return new ActiveXObject("Microsoft.XMLHTTP")}
	];
}

function createXMLHTTPObject() {
	var xmlhttp = false;
	var factories = XMLHttpFactories();
	for (var i=0;i<factories.length;i++) {
		try {
			xmlhttp = factories[i]();
		}
		catch (e) {
			continue;
		}
		break;
	}
	return xmlhttp;
}
/* -----------------------------------------------------
	SET OVERLAY STUFF
 -----------------------------------------------------*/
var array_page_size;
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;
	}
	array_page_size = new Array(page_w, page_h, window_w, window_h);
	return array_page_size;
}

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) {

	array_page_size=get_page_size();

	var target_modal_div = $(modal_to_display);
	// ZET OP ZICHTBAAR
	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 = array_page_size[1];
	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(((array_page_size[2] - modal_div_w) / 2));
	var modal_div_y = Math.round(scroll_y + ((array_page_size[3] - 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
	overlay_div = $('overlay');
	show_overlay(overlay_height);
	target_modal_div.fade(0, 1);
	
	// ACTIVATE GALLERY
	if($('modal_gallery')) {
		activate_gallery('modal_gallery');
	}
	// ENLARGE IMAGE BUSINESS	
	if(modal_to_display=='histoire_enlarge_img') {
		
	}
	// 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();

