	var map, views, favorites, paging_results = new Array(), markers = new Array(), indices = new Array(), lats = new Array(), lngs = new Array(), icons = new Array(), names = new Array(), searching = null, defaultCity = 'ergens', defaultKeyword = 'iets', hideMap = false;

	function hideGMap()
	{
		if(hideMap)
		{
			if(map && map.isLoaded())
			{
				hideMap = false;
				$('.tabContainer div.tab:eq(2)').css('display', 'hidden');
				$('.tabContainer div.tab:eq(2)').css('visibility', '');
				$('#map').css('visibility', '');
			}
			else
			{
				$('#lastviewed').append('<div>Not ready yet</div>');
				setTimeout('hideGMap();', 200);
			}
		}
	}

	function markerOrder(marker,b) {
		return GOverlay.getZIndex(marker.getPoint().lat()) + marker.importance*1000000;
	}

	function setOuterBounds(num) {
		var n_outer = markers[num].startcoord.lat() + .5*((markers[num].n_outer - markers[num].s_outer + .00075) / Math.pow(2, -(17 - map.getZoom())));
		var s_outer = markers[num].startcoord.lat() - .5*((markers[num].n_outer - markers[num].s_outer) / Math.pow(2, -(17 - map.getZoom())));
		var e_outer = markers[num].startcoord.lng() + .5*((markers[num].e_outer - markers[num].w_outer + .00025) / Math.pow(2, -(17 - map.getZoom())));
		var w_outer = markers[num].startcoord.lng() - .5*((markers[num].e_outer - markers[num].w_outer + .00025) / Math.pow(2, -(17 - map.getZoom())));
		var newOuterBounds = new GLatLngBounds(new GLatLng(s_outer, w_outer), new GLatLng(n_outer, e_outer));
		return newOuterBounds;
	}

	// http://williams.edu/Economics/ArtsEcon/mappages/markersintabsdemo.htm
	function newMarker(lats_i, location, html, iconcolor, iconnum, iconsize) {
		var customicon = icons[lats_i];

		var temp_marker = new GMarker(location, {icon:customicon, zIndexProcess:markerOrder});

		temp_marker.iconcolorurl = iconcolor;
		temp_marker.iconnumurl = iconnum;
		temp_marker.iconsizeurl = iconsize;

		if (iconcolor==null && iconnum==null && iconsize==null) {
			temp_marker.startimport = 2;
			temp_marker.importance = 2;
		}
		else {
			temp_marker.startimport = 1;
			temp_marker.importance = 1;
		}

		temp_marker.targeted = 0;
		temp_marker.startcoord = location;
		temp_marker.line = null;
		temp_marker.shifted = 0;

		var t_error = .0003;
		var shift = .0005;
		var n_coord = temp_marker.getLatLng().lat() + t_error;
		var s_coord = temp_marker.getLatLng().lat() - t_error;
		var e_coord = temp_marker.getLatLng().lng() + t_error;
		var w_coord = temp_marker.getLatLng().lng() - t_error;
		temp_marker.inBounds = new GLatLngBounds(new GLatLng(s_coord, w_coord), new GLatLng(n_coord, e_coord));

		temp_marker.n_outer = temp_marker.startcoord.lat()+shift;
		temp_marker.s_outer = temp_marker.startcoord.lat()-shift;
		temp_marker.e_outer = temp_marker.startcoord.lng()+shift;
		temp_marker.w_outer = temp_marker.startcoord.lng()-shift;
		temp_marker.outBounds = null;

		GEvent.addListener(temp_marker, "click", function() {
			var step = 0;
			for (x = 0; x < markers.length; x++) {
				var target = markers[x].getLatLng();
				if (temp_marker.inBounds.containsLatLng(target)==true && markers[x].isHidden()==false) {
					step++;
					markers[x].targeted=1;
					markers[x].outBounds = setOuterBounds(x);
				}
			}
			if (step == 1) {
				temp_marker.targeted = 0;
				temp_marker.outBounds = null;
				temp_marker.openInfoWindowHtml(html);
			}
			if (step > 1) {
				if (!map.getInfoWindow().isHidden()) { map.closeInfoWindow(); }
				thetabs = new Array();
				for (var x=0; x<markers.length; x++) {
					if (markers[x].targeted == 1)
					{
						label = 'Job'; //'<img src="' + base + 'images/pin.png" alt="Job ' + x + '" />';
						thetabs.push(new GInfoWindowTab(label, '<div style="width:'+ 88*step +'px;"></div>'+ markers[x].html));
					}
					markers[x].targeted = 0;
					markers[x].outBounds = null;
				}
				temp_marker.openInfoWindowTabsHtml(thetabs);
			}
		});
		return temp_marker;
	}

	function resultMapInitialize()
	{
		try {
		if(typeof(GMap2) == 'undefined')
			return;

		hideMap = false;

		if(!$('.tabNav li:eq(2)').hasClass('current'))
		{
			hideMap = true;
			$('.tabContainer div.tab:eq(2)').css('display', 'block');
			$('.tabContainer div.tab:eq(2)').css('visibility', 'hidden');
			$('#map').css('visibility', 'hidden');
			setTimeout('hideGMap();', 1000);
		}

		if(map)
		{
			if(debug)
				alert("Re-rendering map");
			map.clearOverlays();
			markers = new Array();
		}
		else
		{
			if(debug)
				alert("Rendering map");
			map = new GMap2(document.getElementById("map"), {
				size: new GSize(597, 397)
			});
			map.addControl(new GSmallMapControl());
			map.addControl(new GMapTypeControl());
			if(typeof(ContextMenuControl) != 'undefined')
				map.addControl(new ContextMenuControl());
		}

		if(lats.length)
		{
			var latlng = new Array();

			// Add 10 markers to the map at random locations
			for (var i =0; i < lats.length; i++)
			{
				var lat = lats[i];
				var lng = lngs[i];
				//console.debug ('Lat :- ' + lat );
				//console.debug ('Lng :- ' + lng );
				var point = new GLatLng(lat,lng);
				latlng[i] = point;

				marker = newMarker(i, point, ($e('mapdetails' + indices[i])?$e('mapdetails' + indices[i]).innerHTML:''), null, null, null);
				markers.push(marker);
				markers[i].html = ($e('mapdetails' + indices[i])?$e('mapdetails' + indices[i]).innerHTML:'');
				map.addOverlay(marker);
			}

			var latlngbounds = new GLatLngBounds( );
			for ( var i = 0; i < latlng.length; i++ )
				latlngbounds.extend( latlng[ i ] );

			var zoom = map.getBoundsZoomLevel( latlngbounds );
			if(zoom > 10)
				zoom = 10;

			map.setCenter( latlngbounds.getCenter( ), zoom );
		}
		else
			map.setCenter( new GLatLng(52.132633, 5.291266), 7);
		} catch(e) { alert(e); }
	}

	function paginateResults(ajax)
	{
		paging_results['pages'] = 0;
		paging_results['curpage'] = -1;
		paging_results['total'] = $('#results tr').length;
		paging_results['pages'] = parseInt(paging_results['total'] / _pagesize);
		if((paging_results['pages'] * _pagesize) < paging_results['total'])
			paging_results['pages']++;

		gotoPageResults(0);
		if($('.tabNav li:eq(2)').hasClass('current'))
			resultMapInitialize();
		showNotes();
	}

	function gotoNextResults()
	{
		gotoPageResults(paging_results['curpage'] + 1);
	}

	function gotoPrevResults()
	{
		gotoPageResults(paging_results['curpage'] - 1);
	}

	function gotoPageResults(page)
	{
		page = parseInt(page);
		if(page >= paging_results['pages'])
			page = paging_results['pages'] - 1;
		if(page < 0)
			page = 0;

		if(page == paging_results['curpage'])
			return;

		paging_results['curpage'] = page;

		var start = parseInt(page * _pagesize) + 1;
		var end = start + parseInt(_pagesize - 1) + 1;

		if(debug > 4)
			alert('Pagesize is ' + _pagesize + '. Loading page ' + page + ' by activating records ' + start + ' to ' + end);

		$('#results tr').removeClass('hide');
		$('#results tr:lt(' + (start) + ')').addClass('hide');
		$('#results tr:gt(' + (end-1) + ')').addClass('hide');
		$('#results tr:eq(0)').removeClass('hide');

		var paging = '';
		var paging_last = -1;
		if(paging_results['total'] < _pagesize)
			return alternateResults();

		if(page > 0)
		{
			paging += '<li class="previous" onclick="javascript:gotoPrevResults();">vorige</li><li><a onclick="javascript:gotoPageResults(0);">1</a></li>';
			paging_last = 0;
		}
		else
		{
			paging += '<li class="previous-off">vorige</li><li class="active">1</li>';
			paging_last = 0;
		}

		// <li class="hellip">&hellip;</li>

		if(paging_results['pages'] > 1)
		{
			start = (page - 2);
			end = (page + 2);
			if(start <= 0)
			{
				end += (1 - start);
				start = 1;
			}
			if(end >= (paging_results['pages'] - 1))
			{
				start -= end - (paging_results['pages'] - 1);
				end = (paging_results['pages'] - 2);
			}
			if(start <= 0)
				start = 1;
			if(end >= (paging_results['pages'] - 1))
				end = (paging_results['pages'] - 2);

			for(var i=start;i<=end;i++)
				if(i > 0 && i < (paging_results['pages'] - 1))
				{
					if(paging_last < (i-1))
						paging += '<li class="hellip">&hellip;</li>';
					paging_last = i;
					if(i == page)
						paging += '<li class="active">' + (i+1) + '</li>';
					else
						paging += '<li onclick="javascript:gotoPageResults(' + i + ');">' + (i+1) + '</li>';
				}
		}

		if(page < (paging_results['pages'] - 1))
		{
			if(paging_results['pages'] > 1)
			{
				if(paging_last < (paging_results['pages'] - 2))
					paging += '<li class="hellip">&hellip;</li>';
				paging_last = (paging_results['pages'] - 1);
				paging += '<li onclick="javascript:gotoPageResults(' + (paging_results['pages'] - 1) + ');">' + paging_results['pages'] + '</li><li class="next" onclick="javascript:gotoNextResults();">volgende</li>';
			}
			else
				paging += '<li class="next-off">volgende</li>';
		}
		else
		{
			if(paging_results['pages'] > 1)
				paging += '<li class="active">' + (paging_results['pages']) + '</li><li class="next-off">volgende</li>';
			else
				paging += '<li class="next-off">volgende</li>';
		}

		$('#search-pagination').html('<ul id="pagination-list" class="clearfix">' + paging + '</ul>');
	}

	function setStateFromArray(ids, className)
	{
		if(!ids)
			return;

		ids = ids.split(',');
		for(i=0;i<ids.length;i++)
			if(ids[i])
			{
//				alert(ids[i] + " " + className);
				$('#results_' + ids[i]).addClass(className);
				$('#fav_' + ids[i]).addClass(className);
			}
	}

	function getStateFromCookie(type, c_val)
	{
		val = "";
		if(c_val)
		{
			c_val = c_val.split(',');
			for(i=0;i<c_val.length;i++)
				if(c_val[i])
				{
					c_val[i] = parseInt((cookie_multi_types?c_val[i].replace(type + '_', ''):c_val[i]));
					if(c_val[i])
						val += "," + c_val[i];
				}
		}
		return val;
	}

	function updateResults(ajax)
	{
		var c_views = getCookie('views');
		var c_favorites = getCookie('favorites');

		if(views)
			views += "," + getStateFromCookie('job', c_views);
		else
			views = getStateFromCookie('job', c_views);

		if(favorites)
			favorites += "," + getStateFromCookie('job', c_favorites);
		else
			favorites = getStateFromCookie('job', c_favorites);

		setStateFromArray(favorites, 'fav');
		setStateFromArray(views, 'seen');

		if(userid)
		{
			$('#results tr.fav td:eq(0) a').html('E&eacute;n van je favorieten').attr('title', 'E&eacute;n van je favorieten');
			$('#search-favorites tr td:eq(0) a').html('E&eacute;n van je favorieten').attr('title', 'E&eacute;n van je favorieten');
		}

		var fav_cnt = $('#search-favorites table tr').length - 1;
		if(fav_cnt)
		{
			if(!ajax)
			{
				$('#search-favorites p:eq(0)').addClass('hide');
				$('#search-favorites table').removeClass('hide');

				$('#fav_cnt').html("(" + fav_cnt + ")");
			}
		}
		else
			$('#search-favorites p:eq(0)').removeClass('hide');
		paginateResults(ajax);
		$('#searching').addClass('hide');

		if(!ajax)
			updateSearchUI(true);
	}

	function addToFavoritesIndex(id)
	{
		$('#results_' + id).addClass('fav');

		$('#search-favorites p:eq(0)').addClass('hide');
		$('#search-favorites table').removeClass('hide');

		if(!$('#fav_' + id).length)
		{
			var x = $('#results_' + id).clone();
			x.attr('id', x.attr('id').replace('results_', 'fav_'));
			$('#search-favorites table').append(x);
			$('#fav_cnt').html("(" + ($('#search-favorites table tr').length - 1) + ")");
		}

		if(userid)
			$('.fav_' + id).html('E&eacute;n van je favorieten').attr('title', 'E&eacute;n van je favorieten');

		$('#fav_' + id + ' a').each(function() {
			if($(this).attr('href').indexOf(base) != -1)
				if($(this).attr('href').indexOf('#noteadd') != -1)
					$(this).attr('href', $(this).attr('href').replace('#noteadd', '?from=favorites#noteadd'));
				else
					$(this).attr('href', $(this).attr('href') + '?from=favorites');
		});
	}

	function showNotes()
	{
		$('#results tr').each(function() {
			var x = 'note_' + $(this).attr('id').replace('results_','');
			if(x)
			{
				x = getCookie(x);
				if(x)
				{
					$(this).addClass('note');
					$('#fav_' + $(this).attr('id').replace('results_','')).addClass('note');
				}
			}
		});
	}

	function updateSearchUI(nonajax)
	{
		if($('#search-city').val() || $('#search-keyword').val())
		{
			if(!nonajax)
			{
				if($('#search-keyword').val())
					$('#searched_keyword').html($('#search-keyword').val());
				else
					$('#searched_keyword').html(defaultKeyword);
				if($('#search-city').val())
					$('#searched_city').html($('#search-city').val());
				else
					$('#searched_city').html(defaultCity);
			}
			$('#div_feed').addClass('hide');

			$('#search-signup').fadeIn(0);
		}
		else
		{
			$('#div_feed').removeClass('hide');

			$('#search-signup').fadeOut(0);
		}

		$('#search-signup-form').fadeOut(0);
		$('#search-signup-confirm').fadeOut(0);
	}

	function searchAgain()
	{
		if(searching)
			clearTimeout(searching);
		searching = setTimeout(searchJobs, 400);

		$('#search-keyword').val(cleanSearch('search-keyword'));
		$('#search-city').val(cleanSearch('search-city'));

		$('#searching').removeClass('hide');
		updateSearchUI();
	}

	function searchJobs()
	{
		$.ajax({
			type: 'post',
			url: base + 'inc/search?ajax=true',
			data: $('#frmSearch').serialize(),
			success: function(data)
			{
				$('#search-results').html(data.toString());
				updateResults(true);
			},
			error: function(XMLHttpRequest, textStatus, errorThrown) {
				$('#msgBox').addClass('expire').html(errorThrown + '<br />' + textStatus);
			}
		});
//		setCookie('search', getCookie('search') + $('#search-keyword').val() + '|||' + $('#search-city').val(), 45);
		searching = null;
	}

	function alternateResults()
	{
		$('#search-pagination').html('');
//		$('#search-results').append($('#no-results').html());
		return;
	}

	function subscribeToAlerts()
	{
		if($('#search-signup-email').val())
			$.ajax({
				type: 'post',
				url: base + 'inc/subscribe.php?ajax=true&mode=add',
				data: {email: $('#search-signup-email').val(), keyword: ($('#searched_keyword').html() == defaultCity?defaultCity:$('#search-keyword').val()), city: $('#search-city').val()},
				success: function(data)
				{
					$('#search-signup').addClass('hide');
					$('#search-signup-form').addClass('hide');
					$('#search-signup-confirm').removeClass('hide');
				}
			});
	}
