

function AddFacilityController(extOptions){
	var map = null;
	var locationMarker = null;
	var markerObiektuIcon = new GIcon(null, "http://maps.google.com/mapfiles/kml/pal5/icon13.png", null, "http://maps.google.com/mapfiles/kml/pal5/icon13s.png");
	
	var icon = new GIcon(G_DEFAULT_ICON);
	icon.iconSize = new GSize(32,32);
	icon.shadowSize = new GSize(56,32);
	icon.iconAnchor = new GPoint(16,32);
	icon.infoWindowAnchor = new GPoint(16,0);					
	icon.image = "http://maps.google.com/mapfiles/kml/pal5/icon13.png";	
	icon.shadow = "http://maps.google.com/mapfiles/kml/pal5/icon13s.png";	
	
	var init = function(){
		$('#o_wsp').val('kliknij na mapie');
		checkForSourceSignature();
		slideshow();
		setGhosts();
	};
	
	//opcje
	var options = {

	}
		
	for(k in extOptions){
		options[k] = extOptions[k];
	}

	this.initMap = function(){	
		if (GBrowserIsCompatible()) {		
			var lat=52.17393169256846; 
			var lng=18.8525390625; 
			var zoom=6; 		
			map = new GMap2(document.getElementById('addFacilityMapContener'));			
			map.enableScrollWheelZoom();
			map.setCenter(new GLatLng(lat, lng), zoom); 
			map.addControl(new GLargeMapControl());
			map.addControl(new GMenuMapTypeControl());

		}		
	};
	
	
	this.bindEvents = function(){
		GEvent.addListener(map, "click", function(overlay,latlng){
			if(typeof(latlng) != 'undefined'){
				changeCoordinates(latlng);
			}
		});

		$('#addFacilityFormF').submit(function(){
			sendRequest();
			return false;		
		});
		
		$('.submitBD').click(function(){
			$('#addFacilityFormF').submit();
			return false;
		});	

		$('.wspInput').blur(function(){
			var lng = parseFloat($('#o_wsp_lon').val().replace(',', '.'));
			var lat = parseFloat($('#o_wsp_lat').val().replace(',', '.'));
			if(lng && lat){
				latlng = new GLatLng(lat, lng);
				changeCoordinates(latlng, true);
			}
		});
		
		$('.wspStdInput').blur(function(){
			var latlng = getStdWsp();
			if(latlng){
				changeCoordinates(latlng, true);
			}
		});
		
		$('.showWspInputsB').click(function(){
			$('.wspInputs').show();
		});
		
	};
	
	/**
	*	stawianie markera
	*/
	var putLocationMarker = function(latlng, center){
			
		var currentZoom = map.getZoom();
		$('#gmapsZoom').val(currentZoom);
		center = typeof(center) != 'undefined' ? center : false;
		
		//usuwanie starego markera
		if (locationMarker){
			map.removeOverlay(locationMarker);
		}

		//centrowanie mapy
		if(center){
			map.setCenter(latlng, 13);
		}
		
		//tworzenie markera
		locationMarker = new GMarker(latlng, {  icon : icon,  title:'Przesuń by dokładnie określić swoje położenie', draggable:true });				
		//dodawanie markera do mapy 
		map.addOverlay(locationMarker);	
	
		//drag markera
		GEvent.addListener(locationMarker, "dragend", function(latlng){
			changeCoordinates(latlng, false);
		});	
	};
	
	var sendRequest = function(){		
		var setRed = function(fieldRef, b){
			if(b){
				fieldRef.css( 'border', '2px solid red');
			} else {
				fieldRef.css( 'border', '');
			}
		};			
				
		var addFacilityFormF = $('#addFacilityFormF');
				
		var refData = {
			o_nazwa : addFacilityFormF.find('#o_nazwa'),
			o_kontakt : addFacilityFormF.find('#o_kontakt'),
			o_kontakt_kom : addFacilityFormF.find('#o_kontakt_kom'),
			o_miasto : addFacilityFormF.find('#o_miasto'),
			o_ulica : addFacilityFormF.find('#o_ulica'),
			o_kontakt_email : addFacilityFormF.find('#o_kontakt_email'),
			o_www : addFacilityFormF.find('#o_www'),
			o_oskontakt : addFacilityFormF.find('#o_oskontakt'),
			o_kontakt_kom : addFacilityFormF.find('#o_rodzaj'),
			o_wsp : addFacilityFormF.find('#o_wsp'),
			o_wsp_lon : addFacilityFormF.find('#o_wsp_lon'),
			o_wsp_lat : addFacilityFormF.find('#o_wsp_lat')
		};
				
		var valid = true;
		//alert(refData.o_nazwa);
		
		//o_nazwa
		if(refData.o_nazwa.val().length<2 ){ valid = false; setRed(refData.o_nazwa, true);} 
		else {	setRed(refData.o_nazwa, false);	}	

		//o_kontakt
		if(refData.o_kontakt.val().length<2 ){ valid = false; setRed(refData.o_kontakt, true);} 
		else {	setRed(refData.o_kontakt, false);	}	

		
		var serializedData = $("#addFacilityFormF").serialize();


		if(valid){
		
			$('.meteor-hasGhost').val('');
		
			$('.submitBD').attr('disabled', true);
			$.get('index.php?c=AddFacility&submited=1&'+serializedData, {}, function(response){
				$('.submitBD').attr('disabled', false);
				var result = eval(response);
				
				if(result.status == 1){
					Util.alert({ text:'Zgłoszenie zostało wysłane.<br/>Skontaktujemy się z Państwem w celu potwierdzenia przyjęcia oferty.', title:"INFORMACJA", icon : 'info'} );
				} else {
					Util.alert({ text:'Wystapił błąd podczas wysylania zgłoszenia. <br/>Prosimy spróbować później.'});
				}
			});
			
		} else {
			Util.alert({ text:'Proszę wypełnić pola zaznaczone na czerwono'});
		}
	};
	
	/** zmiana współrżednych */
	var changeCoordinates = function(latlng, centerMap){
		var o_lon = latlng.lng();
		var o_lat = latlng.lat()
		
		if(!(o_lon > 14.017578 && o_lon < 24.2) || !(o_lat > 48.9 && o_lat < 54.9)){
			Util.alert({ text:'Obiekt musi leżeć na terenie Polski!'});
			return;				
		}
		
		var o_lonFormat = (o_lon + ' ').substr(0,7);
		var o_latFormat = (o_lat + '').substr(0,7);
		
		var wspText = o_latFormat+" ; "+o_lonFormat;
		$('#o_wsp').val(wspText);					
		$('#o_lon').val(o_lon);
		$('#o_lat').val(o_lat);
		$('#o_wsp_lon').val(o_lonFormat);
		$('#o_wsp_lat').val(o_latFormat);	
	
		putLocationMarker(latlng, centerMap);
		setStdWsp(latlng);
		$('.wspInputs:hidden').show();
	};

	/** 
	*	pobieranie współrzednych z pól stopnie, minuty , sekundy
	*/
	var getStdWsp = function(){
		var wsp = [];
		wsp['lon_st'] = parseInt($('#o_wsp_lon_st').val());
		wsp['lon_m'] = parseInt($('#o_wsp_lon_m').val());
		wsp['lon_sek'] = parseInt($('#o_wsp_lon_sek').val());
		wsp['lat_st'] = parseInt($('#o_wsp_lat_st').val());
		wsp['lat_m'] = parseInt($('#o_wsp_lat_m').val());
		wsp['lat_sek'] = parseInt($('#o_wsp_lat_sek').val());
		for(var i in wsp){
			if(isNaN(wsp[i])){
				return null;
			}
		}
		
		var lng = wsp['lon_st'] + wsp['lon_m']/60 + wsp['lon_sek']/3600;
		var lat = wsp['lat_st'] + wsp['lat_m']/60 + wsp['lat_sek']/3600;
		return new GLatLng(lat, lng);
	};
	

	/** 
	*	ustawianie współrzednych z pól stopnie, minuty , sekundy
	*/
	var setStdWsp = function(latlng){
		var o_lon = latlng.lng();
		var o_lat = latlng.lat();
		var wsp = [];
		wsp['lon_st'] = parseInt(o_lon);
		wsp['lon_m'] = parseInt((o_lon - wsp['lon_st']) * 60);
		wsp['lon_sek'] = parseInt((((o_lon - wsp['lon_st']) * 60) - wsp['lon_m']) * 60);
		wsp['lat_st'] = parseInt(o_lat);
		wsp['lat_m'] = parseInt((o_lat - wsp['lat_st']) * 60);
		wsp['lat_sek'] = parseInt((((o_lat - wsp['lat_st']) * 60) - wsp['lat_m']) * 60);	
		
		$('#o_wsp_lon_st').val(wsp['lon_st']);
		$('#o_wsp_lon_m').val(wsp['lon_m']);
		$('#o_wsp_lon_sek').val(wsp['lon_sek']);
		$('#o_wsp_lat_st').val(wsp['lat_st']);
		$('#o_wsp_lat_m').val(wsp['lat_m']);
		$('#o_wsp_lat_sek').val(wsp['lat_sek']);
	};
	
	/**
	*	sprawdzanie hasha ze źródłem
	*/
	var  checkForSourceSignature = function(){
		var hash='';
		if (hash = window.location.hash){
			$('#source').val(hash.substr(1));
		}
	};	
	
	/** włącza animację komentarzy włąścicieli */
	var slideshow = function(){
		var animElements = $('.animElement');
		var currentElement = 0;
		var nextElement = function(){  return currentElement< animElements.length-1 ? ++currentElement : currentElement=0; }
		setInterval(function(){
			$('.animElement:visible').fadeOut(function(){
				$(animElements[nextElement()]).fadeIn();
			});			
		}, 8000);		
	};


	setGhosts = function(){
		$('input.meteor-setGhost, textarea.meteor-setGhost').each(function(){
			var field = $(this);
			field.val(field.attr('title'));
			field.addClass('meteor-hasGhost');
			field.removeClass('meteor-setGhost');
			field.focus(function(){
				var f = $(this);
				if(f.hasClass('meteor-hasGhost')){
					f.val('');
					f.removeClass('meteor-hasGhost')
				}
			});
		});
	};
	
	init();
};





