var iconBlue = new GIcon();
iconBlue.image = 'http://labs.google.com/ridefinder/images/mm_20_blue.png';
iconBlue.shadow = 'http://labs.google.com/ridefinder/images/mm_20_shadow.png';
iconBlue.iconSize = new GSize(12, 20);
iconBlue.shadowSize = new GSize(22, 20);
iconBlue.iconAnchor = new GPoint(6, 20);
iconBlue.infoWindowAnchor = new GPoint(5, 1);
	
var iconRed = new GIcon();
iconRed.image = 'http://labs.google.com/ridefinder/images/mm_20_red.png';
iconRed.shadow = 'http://labs.google.com/ridefinder/images/mm_20_shadow.png';
iconRed.iconSize = new GSize(12, 20);
iconRed.shadowSize = new GSize(22, 20);
iconRed.iconAnchor = new GPoint(6, 20);
iconRed.infoWindowAnchor = new GPoint(5, 1);
	
var customIcons = [];
customIcons["standort"] = iconBlue;
customIcons["hauptsitz"] = iconRed;
	
function loadAddresses(){
	if (GBrowserIsCompatible()) {
		
		// Change this depending on the name of your PHP file
		var paramsString = Object.toJSON($('jobofferformtag').serialize());
		var params = paramsString.gsub('%5B%5D', '').toQueryParams();
		var requestParams = {
			'einsatzorte[]': params.einsatzorte,
			'einsatzortbezeichnungen[]': params.einsatzortbezeichnungen,
			'einsatzorthauptsitz': params.einsatzorthauptsitz
		}
		GDownloadUrl(ROOT_PATH + "helpers/maps/joboffer_markers.php?" + Object.toQueryString(requestParams), showAddresses);
	}
}

function loadJobAddresses(){
	if (GBrowserIsCompatible()) {
		GDownloadUrl(ROOT_PATH + "helpers/maps/joboffer_markers.php?jobnummer=" + JOBNUMMER, showAddresses);
	}
}

function showAddresses(data){
	var map;
	var bounds;
	
	map = new GMap2(document.getElementById("mapframe")); 
	bounds = new GLatLngBounds(); // for saving the points and calculating the center and zoom level
	map.addControl(new GSmallMapControl());
	map.addControl(new GMapTypeControl());
	map.setCenter(new GLatLng(0, 0), 13);
	
	var xml = GXml.parse(data);
	var markers = xml.documentElement.getElementsByTagName("marker");
	for (var i = 0; i < markers.length; i++) {
		var name = markers[i].getAttribute("name");
		var address = markers[i].getAttribute("address");
		var type = markers[i].getAttribute("type");
		var point = new GLatLng(parseFloat(markers[i].getAttribute("lat")), parseFloat(markers[i].getAttribute("lng")));
		var marker = createMarker(point, name, address, type);
		bounds.extend(point); // add point to boundries
		map.addOverlay(marker);
	}
	var zoom = map.getBoundsZoomLevel(bounds);
	if (zoom > 15) 
		zoom = 15; // limit to a max zoom level 
	map.setZoom(zoom  - 1); // calculate and set zoom level
	map.setCenter(bounds.getCenter()); // calculate and set center
}
	
function createMarker(point, name, address, type){
	var marker = new GMarker(point, customIcons[type]);
	var html = "<b>" + name + "</b><br/>" + address + '<br/><a href="http://maps.google.com/maps?&hl=de&q=' + address + '" target="_blank">Adresse in neuem Fenster öffnen.</a>';
	GEvent.addListener(marker, 'click', function(){
		marker.openInfoWindowHtml(html);
	});
	return marker;
}
/*	
function setNewMarker(lat, lng, name, address, type){
	var point = new GLatLng(lat, lng);
	var marker = createMarker(point, name, address, type);	
	bounds.extend(point); // add point to boundries
	map.addOverlay(marker);			
	var zoom = map.getBoundsZoomLevel(bounds);
	if (zoom > 15) 
		zoom = 15; // limit to a max zoom level 
	map.setZoom(zoom); // calculate and set zoom level
	map.setCenter(bounds.getCenter()); // calculate and set center
}
*/

function initializeMapsaddress(input){
	if ($('adresse_choices') == null) {
		var newDiv = new Element('div', {
			'id': 'adresse_choices',
			'class': 'autocomplete'
		});
	}
	$(input).up('div').insert(newDiv);
	new Ajax.Autocompleter(input, 'adresse_choices', '../helpers/autocomplete/mapsaddress.php', {
		minChars: 2,
		paramName: 'address'
	});
}

function getFullAddress(text, li){
	new Ajax.Request('../helpers/autocomplete/mapsfulladdress.php?address=' + text.value, {
		onSuccess: function(transport){
			var data = transport.responseJSON;
			if(data[0].country != null){
				try{
					$('strasse').value = data[0].street;
					$('plz').value = data[0].zipcode;
					$('ort').value = data[0].city;
					$('land').value = data[0].country;
				} catch(e){}
				setValidationResult(true, result);
			} else {
				setValidationResult(false);
			}		
		}
	});
}
/*
function getMarkerAddress(text, li){
	new Ajax.Request('../helpers/autocomplete/mapsfulladdress.php?einsatzorte[]=' + text.value, {
		onSuccess: function(transport){
			var data = transport.responseJSON;
			try{setNewMarker(parseFloat(data[0].lat), parseFloat(data[0].lng), 'Neu', data[0].address, 'standort');}catch(e){alert(e)}			
		}
	});
}
*/
function validateUniqueAddress(input, result){
	new Ajax.Request('../helpers/autocomplete/mapsfulladdress.php?address=' + input.value, {
		onSuccess: function(transport){
			var data = transport.responseJSON;
			setValidationResult(data[0].country != null, result);
		}
	});
}

function setValidationResult(valid, result){
	if(valid){
		$(result).addClassName('accept').removeClassName('cancel').title = 'Die Adresse kann eindeutig zugeorndet werden.';
	} else {
		$(result).addClassName('cancel').removeClassName('accept').title = 'Die Adresse kann nicht eindeutig zugeorndet werden.';
	}
}

function activateAutocomplete(newRow){
	var addressInput = $A(newRow.select('input')).first();
	addressInput.id += 1;
	addressInput.stopObserving();
	initializeMapsaddress(addressInput.id);
	
	var addressType = $$('input[name="einsatzorthauptsitz"]');
	addressType.last().value = addressType.size() - 1; 
}

function deleteEmtpyLastAddressRow(){
	var lastAddressRow = $$('#addresstable tr.addressrow').last();
	if(lastAddressRow.select('td input[id^="einsatzort"]').first().value == ''){
		lastAddressRow.remove();	
	}
}
