var isHoveringSuggestNameOrActivity = false;
var isHoveringSuggestCity = false;
var isHoveringSuggestFirstName = false;
var arrowSelectedSuggestNameOrActivity = -1;
var lengthSuggestNameOrActivity = 0;
var arrowSelectedSuggestCity = -1;
var lengthSuggestCity = 0;
var arrowSelectedSuggestFirstName = -1;
var lengthSuggestFirstName = 0;

$(document).ready(function() {
  $('a.tips').cluetip( {
    splitTitle : '|',
    showTitle : false
  });
  // apply ifixpng
    $('img[src$=.png]').ifixpng();
    $('div#form').ifixpng();
    $('div#searchBox .searchBot').ifixpng();
    $('div#navRight .topnl').ifixpng();
    $('div#navRight .topen').ifixpng();
    $('div#navRight .topfr').ifixpng();
    $('div#navRight .topde').ifixpng();
    $('div#navRight .center').ifixpng();
    $('div#navRight .bottom').ifixpng();
});

function SetAllCheckBoxes(FormName, FieldName, CheckValue) {
  if (!document.forms[FormName])
    return;
  var objCheckBoxes = document.forms[FormName].elements[FieldName];
  if (!objCheckBoxes)
    return;
  var countCheckBoxes = objCheckBoxes.length;
  if (!countCheckBoxes)
    objCheckBoxes.checked = CheckValue;
  else
    // set the check value for all check boxes
    for ( var i = 0; i < countCheckBoxes; i++)
      objCheckBoxes[i].checked = CheckValue;
}

function setVisible(element, isVisible) {
  if (element != null) {
    if (isVisible) {
      element.style.display = "block";
    } else {
      element.style.display = "none";
    }
  }
}

var directionsDisplay;
var map;

function initializeMap(id, points, goToDetail, center, zoom) {

  //var latlng = new google.maps.LatLng(center[0], center[1]);
  var latLngs = [];
  for ( var i = 0; i < points.length; ++i) {
    latLngs[i] = new google.maps.LatLng(points[points.length-1-i][0], points[points.length-1-i][1])
  }

  var myOptions;
  if(points.length > 1){
    myOptions = {
      mapTypeId : google.maps.MapTypeId.ROADMAP
    };
  }else{
    myOptions = {
      zoom : zoom,
      center : new google.maps.LatLng(center[0], center[1]),
      mapTypeId : google.maps.MapTypeId.ROADMAP
    };
  }
  var map = new google.maps.Map(document.getElementById(id), myOptions);


  if(points.length > 1){
    // this allows to ensure that the zoom has a minimum initial value of 15, even after a fotBounds
	var zoomChangedListener = google.maps.event.addListener(map, 'zoom_changed', function() {
      var zoomChangeBoundsListener = google.maps.event.addListener(map,'bounds_changed',function (event) {
    	var z = this.getZoom();
    	if (z > 15) { this.setZoom(15); }
    	google.maps.event.removeListener(zoomChangeBoundsListener);
    	google.maps.event.removeListener(zoomChangedListener);
      });
    });

	map.fitBounds(getBoundsForLatLngs(latLngs));

  }

  for ( var i = 0; i < points.length; ++i) {
    var index = points.length - 1 - i;
    var marker = new MarkerWithLabel( {
      position : new google.maps.LatLng(points[index][0], points[index][1]),
      map : map,
      clickable: true,
      title : "",
      "detailUrl": points[index][3],
      icon: points[index][2]
    });
    if(goToDetail){
      google.maps.event.addListener(marker, 'click', function() {
        window.open(this.detailUrl,"_parent");
      });
    }
  }

  return map;
}

function getBoundsForLatLngs(latLngs) {
    var bounds = new google.maps.LatLngBounds;
    for (var i = 0; i < latLngs.length; i++){
      bounds.extend(latLngs[i]);
    }
    return bounds;
}

function showPreloader(){
	$('.findButton').hide();
	$('#preloader').show();

	var preloader = $('#preloader');
	setTimeout("preloader.src = preloader.src",5);
	
}

function hidePreloader(){
	$('.findButton').show();
	$('#preloader').hide();
}

function calcRoute(directionsDisplay, directionsService, startPoint, endPoint, arrival, onfoot , highway , toll) {
  var start;
  var end;
  if(arrival){
    var start = endPoint;
    var end = new google.maps.LatLng(startPoint[0], startPoint[1]);
  }else{
    var start = new google.maps.LatLng(startPoint[0], startPoint[1]);
    var end = endPoint;
  }
  var travelMode = google.maps.DirectionsTravelMode.DRIVING;
  if(onfoot){
    travelMode = google.maps.DirectionsTravelMode.WALKING;
  }

  var request = {
    origin : start,
    destination : end,
    travelMode : travelMode,
    avoidHighways: highway,
    avoidTolls: toll
  };
  directionsService.route(request, function(response, status) {
    if (status == google.maps.DirectionsStatus.OK) {
      directionsDisplay.setDirections(response);
    }
  });
}

function share(site, app_id, message, telmessage, tel, addressmessage, address) {
	FB.ui({
		app_id : app_id,
		method : 'stream.publish',
		attachment : {
			name : '',
			caption : '',
			description : message + "\n\n" + telmessage + tel + "\n"
					+ addressmessage + address,
			media : [ {
				type : 'image',
				src : 'http://www.' + site + '.be/site_images/lgo_' + site
						+ '.png',
				href : 'http://www.' + site + '.be/'
			} ]

		}
	}, function(response) {

	});
}

function fbLogout() {
	FB.api({
		method : 'Auth.revokeAuthorization'
	}, function(response) {
		//
	});
}

function shareOnTwitter(tweetLabel, message, telmessage, tel, addressmessage,address) {
	$("div").remove('#tweetbox-root');
	$("#tweetbox-root-wrapper").append("<div id='tweetbox-root' class='twitter-anywhere-tweet-box'></div>");
	$("#tweetbox-root").dialog({
		height: 225,
		width: 433,
		modal: true,
		maxHeight: 225,
		resizable: false
	});
    $(window).resize(function() {
        $("#tweetbox-root").dialog("option", "position", "center");
    });
	
		twttr.anywhere(function(T) {
			T("#tweetbox-root").tweetBox(
					{
						label : tweetLabel,
						height : 100,
						width : 400,
						defaultContent : message + "\n\n" + telmessage + tel
								+ "\n" + addressmessage + address,
						onTweet : function(plaintext, html) {
							$("#tweetbox-root").dialog('close');
							$("#tweetbox-root").hide();
						}
					});
			$("#tweetbox-root").show();
			
		});
}

function suggestNameActivity(nameActivity) {
    $.post('/registration/autoSuggestion?suggestionField=nameOrActivity&suggestionValue='+encodeURIComponent(nameActivity.replace("%", "")), function(data) {
        var result = data.split("|");
        $('.ui-menu-item').remove();
        if (data.length > 0){
        	lengthSuggestNameOrActivity = result.length; 
        	for(i=0; i<result.length; i++){
        		var tmp = result[i];
        		tmp = tmp.replace("'", "\\\'");
        		var link = jQuery('<a/>', {
        		    id: 'suggestNameActivity'+i,
        		    tabindex: '-1',
        		    href: "javascript:fillInNameActivity(\'"+tmp+"\')",
        		    text: result[i]
        		});
        		link.addClass('ui-corner-all');
        		var liItem = jQuery('<li/>', {});
        		liItem.addClass('ui-menu-item');
        		liItem.append(link);
        		$("#autoSuggestionNameOrActivity").append(liItem);
        	}
        	$('[id^="suggestNameActivity"]').hover(
        		function(){
        			$('[id^="suggestNameActivity"]').removeClass("suggestionHover");
        			arrowSelectedSuggestNameOrActivity = -1;
        			isHoveringSuggestNameOrActivity = true;
        		},
        		function(){
        			isHoveringSuggestNameOrActivity = false;
        		}
        	);
        	$("#autoSuggestionNameOrActivityRoot").show();
        } else {
        	isHoveringSuggestNameOrActivity = false;
        	$("#autoSuggestionNameOrActivityRoot").hide();
        }
    });
    arrowSelectedSuggestNameOrActivity = -1;
}

function suggestNameActivityDown() {
	if(arrowSelectedSuggestNameOrActivity < (lengthSuggestNameOrActivity-1)) {
		arrowSelectedSuggestNameOrActivity++;
		var tmpVar = $("#suggestNameActivity" + arrowSelectedSuggestNameOrActivity).text();
		$('#searchform\\:nameOrActivity').val(tmpVar);
		$("#suggestNameActivity" + arrowSelectedSuggestNameOrActivity).addClass("suggestionHover");
		$("#suggestNameActivity" + (arrowSelectedSuggestNameOrActivity-1)).removeClass("suggestionHover");
	}
}

function suggestNameActivityUp() {
	if(arrowSelectedSuggestNameOrActivity > 0) {
		arrowSelectedSuggestNameOrActivity--;
		var tmpVar = $("#suggestNameActivity" + arrowSelectedSuggestNameOrActivity).text();
		$('#searchform\\:nameOrActivity').val(tmpVar);
		$("#suggestNameActivity" + arrowSelectedSuggestNameOrActivity).addClass("suggestionHover");
		$("#suggestNameActivity" + (arrowSelectedSuggestNameOrActivity+1)).removeClass("suggestionHover");
	}
}

function fillInNameActivity(nameActivity) {
	$("#searchform\\:nameOrActivity").val(nameActivity);
	clearAutoCompleteNameActivity();
}

function clearAutoCompleteNameActivity() {
	arrowSelectedSuggestNameOrActivity = -1;
	lengthSuggestNameOrActivity = 0;
	isHoveringSuggestNameOrActivity = false;
	$('.ui-menu-item').remove();
	$("#autoSuggestionNameOrActivityRoot").hide();
}

function suggestLocality(locality) {
    $.post('/registration/autoSuggestion?suggestionField=city&suggestionValue='+encodeURIComponent(locality.replace("%", "")), function(data) {
        var result = data.split("|");
        $('.ui-menu-item').remove();
        if (data.length > 0){
        	lengthSuggestCity = result.length; 
        	for(i=0; i<result.length; i++){
        		var tmp = result[i];
        		tmp = tmp.replace("'", "\\\'");
        		var link = jQuery('<a/>', {
        		    id: 'suggestCity'+i,
        		    tabindex: '-1',
        		    href: "javascript:fillInCity(\'"+tmp+"\')",
        		    text: result[i]
        		});
        		link.addClass('ui-corner-all');
        		var liItem = jQuery('<li/>', {});
        		liItem.addClass('ui-menu-item');
        		liItem.append(link);
        		$("#autoSuggestionCity").append(liItem);
        	}
        	$('[id^="suggestCity"]').hover(
        		function(){
        			$('[id^="suggestCity"]').removeClass("suggestionHover");
        			arrowSelectedSuggestCity = -1;
        			isHoveringSuggestCity = true;
        		},
        		function(){
        			isHoveringSuggestCity = false;
        		}
        	);
        	$("#autoSuggestionCityRoot").show();
        } else {
        	isHoveringSuggestCity = false;
        	$("#autoSuggestionCityRoot").hide();
        }
    });
    arrowSelectedSuggestCity = -1;
}

function suggestCityDown() {
	if(arrowSelectedSuggestCity < (lengthSuggestCity-1)) {
		arrowSelectedSuggestCity++;
		var tmpVar = $("#suggestCity" + arrowSelectedSuggestCity).text();
		$('#searchform\\:city').val(tmpVar);
		$("#suggestCity" + arrowSelectedSuggestCity).addClass("suggestionHover");
		$("#suggestCity" + (arrowSelectedSuggestCity-1)).removeClass("suggestionHover");
	}
}

function suggestCityUp() {
	if(arrowSelectedSuggestCity > 0) {
		arrowSelectedSuggestCity--;
		var tmpVar = $("#suggestCity" + arrowSelectedSuggestCity).text();
		$('#searchform\\:city').val(tmpVar);
		$("#suggestCity" + arrowSelectedSuggestCity).addClass("suggestionHover");
		$("#suggestCity" + (arrowSelectedSuggestCity+1)).removeClass("suggestionHover");
	}
}

function fillInCity(city) {
	$("#searchform\\:city").val(city);
	clearAutoCompleteCity();
}

function clearAutoCompleteCity() {
	arrowSelectedSuggestCity = -1;
	lengthSuggestCity = 0;
	isHoveringSuggestCity = false;
	$('.ui-menu-item').remove();
	$("#autoSuggestionCityRoot").hide();
}

function suggestFirstName(firstName) {
    $.post('/registration/autoSuggestion?suggestionField=firstName&suggestionValue='+encodeURIComponent(firstName.replace("%", "")),
    		function(data) {
        var result = data.split("|");
        $('.ui-menu-item').remove();
        if (data.length > 0){
        	lengthSuggestFirstName = result.length; 
        	for(i=0; i<result.length; i++){
        		var tmp = result[i];
        		tmp = tmp.replace("'", "\\\'");
        		var link = jQuery('<a/>', {
        		    id: 'suggestFirstName'+i,
        		    tabindex: '-1',
        		    href: "javascript:fillInFirstName(\'"+tmp+"\')",
        		    text: result[i]
        		});
        		link.addClass('ui-corner-all');
        		var liItem = jQuery('<li/>', {});
        		liItem.addClass('ui-menu-item');
        		liItem.append(link);
        		$("#autoSuggestionFirstName").append(liItem);
        	}
        	$('[id^="suggestFirstName"]').hover(
        		function(){
        			$('[id^="suggestFirstName"]').removeClass("suggestionHover");
        			arrowSelectedSuggestFirstName = -1;
        			isHoveringSuggestFirstName = true;
        		},
        		function(){
        			isHoveringSuggestFirstName = false;
        		}
        	);
        	$("#autoSuggestionFirstNameRoot").show();
        } else {
        	isHoveringSuggestFirstName = false;
        	$("#autoSuggestionFirstNameRoot").hide();
        }
    });
    arrowSelectedSuggestFirstName = -1;
}

function suggestFirstNameDown() {
	if(arrowSelectedSuggestFirstName < (lengthSuggestFirstName-1)) {
		arrowSelectedSuggestFirstName++;
		var tmpVar = $("#suggestFirstName" + arrowSelectedSuggestFirstName).text();
		$('#searchform\\:firstName').val(tmpVar);
		$("#suggestFirstName" + arrowSelectedSuggestFirstName).addClass("suggestionHover");
		$("#suggestFirstName" + (arrowSelectedSuggestFirstName-1)).removeClass("suggestionHover");
	}
}

function suggestFirstNameUp() {
	if(arrowSelectedSuggestFirstName > 0) {
		arrowSelectedSuggestFirstName--;
		var tmpVar = $("#suggestFirstName" + arrowSelectedSuggestFirstName).text();
		$('#searchform\\:firstName').val(tmpVar);
		$("#suggestFirstName" + arrowSelectedSuggestFirstName).addClass("suggestionHover");
		$("#suggestFirstName" + (arrowSelectedSuggestFirstName+1)).removeClass("suggestionHover");
	}
}

function fillInFirstName(firstName) {
	$("#searchform\\:firstName").val(firstName);
	clearAutoCompleteFirstName();
}

function clearAutoCompleteFirstName() {
	arrowSelectedSuggestFirstName = -1;
	lengthSuggestFirstName = 0;
	isHoveringSuggestFirstName = false;
	$('.ui-menu-item').remove();
	$("#autoSuggestionFirstNameRoot").hide();
}

var typewatch = function(){
    var timer = 0;
    return function(callback, ms){
        clearTimeout (timer);
        timer = setTimeout(callback, ms);
    }  
}();

