var makeaccount = new MakeAccount();
function MakeAccount()
{
	var self			= this;

	this.findLocation = findLocation;
	this.initialize = initialize;
	this.switchCountry = switchCountry;
	this.searchSuggest = searchSuggest;

	var geocoder;
	var map;
	var directionDisplay;
	var marker;
	var directionsService = new google.maps.DirectionsService();
	var POSTALCODE_NL = new RegExp(/^([0-9]{4} ?[a-z]{2})?$/i);
 	var POSTALCODE_BE = new RegExp(/^((be?)?(-| )?[0-9]{4})?$/i);
 
	function findLocation() {
		if(document.getElementById("foreign")){
			var foreign = document.getElementById("foreign").value;
		}else
		{
			var foreign = 99;
		}
		if(document.getElementById("field_postalcode") && document.getElementById("field_postalcode").value != "")
		{
			document.getElementById("field_postalcode").value = (document.getElementById("field_postalcode").value).replace(/^\s*|\s*$/g,'');
			document.getElementById("field_postalcode").value = document.getElementById("field_postalcode").value.toUpperCase();
		}
			if(document.getElementById("field_country").value == 1){
				var postcode = document.getElementById("field_postalcode").value;
				var country = "Nederland";
				var city = document.getElementById("field_city").value;
				if(!postcode.match(POSTALCODE_NL) || document.getElementById("field_postalcode").value =="")
				{
					return false;
				}
				var address = city + " " +postcode + " " + country;
			}else if(document.getElementById("field_country").value == 2){
				var postcode = document.getElementById("field_postalcode").value;
				var country = "Belgie";
				var street = document.getElementById("field_street").value;
				var city = document.getElementById("field_city").value;
				if(!postcode.match(POSTALCODE_BE) || document.getElementById("field_postalcode").value =="")
				{
					return false;
				}
				var address = street+" "+city + " " +postcode + " " + country;
				document.getElementById("field_city").readOnly = true
			}else if(document.getElementById("field_country").value == foreign){
				var country = document.getElementById("field_countryalt").value;
				var street = document.getElementById("field_street").value;
				var city = document.getElementById("field_city").value;
				var address = street+" "+city + " " + country;
			}else{
				var postcode = document.getElementById("field_postalcode").value;
				var countryid = document.getElementById("field_country").value;
				var country = document.getElementById("country_"+countryid).innerHTML;
				var street = document.getElementById("field_street").value;
				var city = document.getElementById("field_city").value;
				var address = street+" "+city + " " +postcode + " " + country;
			}

			if (geocoder) {
			
			  geocoder.geocode( { 'address': address}, function(results, status) {
				if (status == google.maps.GeocoderStatus.OK) 
				{
					document.getElementById("googlemap").style.display = "block";
					if (status != google.maps.GeocoderStatus.ZERO_RESULTS)
					{
					  	var locationpoint = results[0].geometry.location;
					  	
						document.getElementById("field_lat").value = results[0].geometry.location.lat();
						document.getElementById("field_lng").value = results[0].geometry.location.lng();
						
						marker = new google.maps.Marker({
						    position: locationpoint,
						    title: 'Uw locatie',
						    map: map
						  });
						map.setCenter(locationpoint);
					  } 
					  else 
					  {
						document.getElementById("field_lat").value = "";
					  	document.getElementById("field_lng").value = "";
				  	}
				}
				else {
				  document.getElementById("field_lat").value = "";
				  document.getElementById("field_lng").value = "";
				}
			  });
			}

	}
	function initialize() {
		geocoder = new google.maps.Geocoder();
		var latlng = new google.maps.LatLng(52.072754,5.130615);
		
		var myOptions = {
		  zoom: 14,
		  center: latlng,
		  disableDefaultUI: true,
		  mapTypeId: google.maps.MapTypeId.ROADMAP
		}
		map = new google.maps.Map(document.getElementById("googlemap"), myOptions);
		if(document.getElementById("field_lat").value != "" && document.getElementById("field_lng").value)
		{
			var latlng = new google.maps.LatLng(document.getElementById("field_lat").value,document.getElementById("field_lng").value);
			map.setCenter(latlng);
		}
	}
	function searchSuggest(object)
	{
		var socket = new Socket();

		fieldvalue = object.value;
		country = document.getElementById("field_country").value;
		if(country < 3){
		postalCode	= fieldvalue.replace(" ", "");
		areaCode	= postalCode.substr(0, 4);

		socket.addEventListener(Socket.GELADEN, function(event)
		{
			if (socket.getStatus() == 200)
			{
				try
				{
					eval(socket.getResponseText());
				}
				catch(error)
				{
				}

				if(result.plaatsnaam != "")
				{
					document.getElementById("field_city").value = result.plaatsnaam;
					document.getElementById("field_city").readOnly = true;
				}else{
					document.getElementById("field_city").readOnly = false;
					document.getElementById("field_city").value = "";
				}
				if(result.lat != "")
				{
					document.getElementById("field_lat").value = result.lat;
				}else{
					document.getElementById("field_lat").value = "";
				}
				if(result.lng != "")
				{
					document.getElementById("field_lng").value = result.lng;
				}else{
					document.getElementById("field_lng").value = "";
				}
			}
			else
			{

			}

			return null;
		});

			if(areaCode.length == 4)
			{
				socket.request(
					"/searchsuggest.php",
					{
						search: areaCode,
						country: country,
						searchsuggest : (new Date()).getTime()
					}
					,true,false
				);
			}
		}
	}

	function switchCountry(object)
	{
		fieldvalue = object.value;
		country = document.getElementById("field_country").value;
		foreign = document.getElementById("foreign").value;
		if(country == 1)
		{		
			document.getElementById("field_postalcode").disabled = false;
			document.getElementById("field_city").disabled = false;
			document.getElementById("streetrow").style.display = "none";
			document.getElementById("postcoderow").style.display = "block";
			document.getElementById("countryrow").style.display = "none";
		}else if(country == 2)
		{
			document.getElementById("field_postalcode").disabled = false;
			document.getElementById("field_city").disabled = false;
			document.getElementById("streetrow").style.display = "block";
			document.getElementById("postcoderow").style.display = "block";
			document.getElementById("countryrow").style.display = "none";
		}
		else if(country == foreign)
		{
			document.getElementById("field_postalcode").disabled = true;
			document.getElementById("field_city").disabled = false;
			document.getElementById("streetrow").style.display = "block";
			document.getElementById("postcoderow").style.display = "none";
			document.getElementById("countryrow").style.display = "block";
		}else{
			document.getElementById("field_postalcode").disabled = true;
			document.getElementById("field_city").disabled = false;
			document.getElementById("streetrow").style.display = "block";
			document.getElementById("postcoderow").style.display = "none";
			document.getElementById("countryrow").style.display = "none";
		}
		document.getElementById("field_postalcode").value = "";
		document.getElementById("field_street").value = "";
		document.getElementById("field_city").readOnly = false;
		document.getElementById("field_city").value = "";
		document.getElementById("field_countryalt").value = "";
		document.getElementById("field_lng").value = "";
		document.getElementById("field_lat").value = "";
	}
}
