/*-----------------------------------------------------------------------
Address search JavaScript File

version: 	4.0
author:		sebastian kupke
email:		sebastian.kupke@baral.de
website:	http://www.baral.de
-----------------------------------------------------------------------*/


/* =Address search
-----------------------------------------------------------------------*/
var count = 0;

function doAddressSearch() {

	count = count + 1;
	setTimeout('doAddressSearchGo(' + count + ')',800);
}

function doAddressSearchGo(currentCount) {

	if (currentCount == count) {

		if ($('#address_search_autocomplete_choices').is(":hidden")) {
			$('#address_search_autocomplete_choices').slideDown("slow");
		}

		count = 0;

		if ($('#address_search_autocomplete').val().length > 0) {
			setAddressSearchInfo('indicator',mAddressSearchSearching);
	
			$.ajax({
		        url: 'scripts/modules/addressSearch/doAddressSearch.gsp',
		        data: 'search_input=' + $('#address_search_autocomplete').val(),
		        dataType: 'html',
		        type: 'post',
		        success: function(data){
		        	
		        	$('#address_search_autocomplete_choices').html(data);
		        	
		        	var resultCount = parseInt($('#resultCount').val());
					var maxResultCount = parseInt($('#maxResultCount').val());
	
					if (resultCount == 0) {
						setAddressSearchInfo('failure',mAddressSearchNoAddressFound);
					} else if (resultCount == 1) {
						setAddressSearchInfo('success',mAddressSearchOneAddressFound);
					} else if (resultCount > maxResultCount) {
						setAddressSearchInfo('warning',mAddressSearchMoreAddressesFound.replace(/\{0\}/,resultCount).replace(/\{1\}/,maxResultCount));
					} else {
						setAddressSearchInfo('success',mAddressSearchAddressesFound.replace(/\{0\}/,resultCount));
					}
		        }
		    });
		} else {
			$('#address_search_autocomplete_choices').html('');
			setAddressSearchInfo('hide');
		}
	}
}

function doAddressSearchByStartCharacter(character) {

	if ($('#address_search_autocomplete_choices').is(":hidden")) {
		$('#address_search_autocomplete_choices').slideDown("slow");
	}
	
	$('#address_search_autocomplete').val(character);

	setAddressSearchInfo('indicator',mAddressSearchSearching);

	$.ajax({
        url: 'scripts/modules/addressSearch/doAddressSearchByStartCharacter.gsp',
        data: 'character=' + character,
        dataType: 'html',
        type: 'post',
        success: function(data){
        	
        	$('#address_search_autocomplete_choices').html(data);
        	
        	var resultCount = parseInt($('#resultCount').val());

			if (resultCount == 0) {
				setAddressSearchInfo('failure',mAddressSearchNoStreetFound);
			} else if (resultCount == 1) {
				setAddressSearchInfo('success',mAddressSearchOneStreetFound);
			} else {
				setAddressSearchInfo('success',mAddressSearchStreetsFound.replace(/\{0\}/,resultCount));
			}
        }
    });
}

function getAddressCoords(community,street,houseNumber) {
	
	var params = 'community=' + community + '&street=' + street;
	if (houseNumber) {
		params += '&house_number=' + houseNumber;
		$('#address_search_autocomplete').val(street + ' ' + houseNumber + ', ' + community);
	} else {
		params += '&house_number=';
		$('#address_search_autocomplete').val(street + ', ' + community);
	}
	
	$.ajax({
        url: 'scripts/modules/addressSearch/getAddressCoords.gsp',
        data: params,
        dataType: 'xml',
        type: 'post',
        success: function(data){
		
			var x = parseFloat(data.getElementsByTagName('coords')[0].getAttribute('x'));
			var y = parseFloat(data.getElementsByTagName('coords')[0].getAttribute('y'));
			var content = data.getElementsByTagName('coords')[0].getAttribute('content');
			
        	if (x != null && x > 0 && y != null && y > 0) {
				center.x = x;
				center.y = y;

				setScaleFactor(4000);
				
				addressPin.point.x = x;
				addressPin.point.y = y;
				addressPin.tooltipContent = content;

				getMap();

				if (!$.browser.msie) {
					$('#address_search_pin').effect('pulsate',{times: 3});
				}
			}
        }
    });
}

function setAddressSearchPin() {
	
	$('#address_search_pin_image').attr('src','style/' + styleFolder + '/img/pins/' + addressPin.img);

	var position = getPositionFromCoords(addressPin.point.x,addressPin.point.y);

	position.y = position.y - ($('#address_search_pin').height() / 2);
	position.x = position.x - ($('#address_search_pin').width() / 2);

	$('#address_search_pin').css({
		top: position.y + 'px',
		left: position.x + 'px'
	});
}

function setAddressSearchInfo(type,text) {

	// type is success, warning, failure or indicator
	if (type == 'success') {
		$('#address_search_info_image').attr('src','style/' + styleFolder + '/img/info/success.gif');
		$('#address_search_info_text').html(text).css('color','green');
		$('#address_search_info').css('visibility','visible');
	} else if (type == 'warning') {
		$('#address_search_info_image').attr('src','style/' + styleFolder + '/img/info/warning.gif');
		$('#address_search_info_text').html(text).css('color','orange');
		$('#address_search_info').css('visibility','visible');
	} else if (type == 'failure') {
		$('#address_search_info_image').attr('src','style/' + styleFolder + '/img/info/failure.gif');
		$('#address_search_info_text').html(text).css('color','red');
		$('#address_search_info').css('visibility','visible');
	} else if (type == 'indicator') {
		$('#address_search_info_image').attr('src','style/' + styleFolder + '/img/info/load.gif');
		$('#address_search_info_text').html(text).css('color','gray');
		$('#address_search_info').css('visibility','visible');
	} else {
		$('#address_search_info_text').html('');
		$('#address_search_info').css('visibility','hidden');
	}
}























