/**
* SoftCOM Spółka jawna - http://www.softcom.wroc.pl
* @author SoftCOM Spółka jawna <biuro@softcom.wroc.pl>
* @copyright Copyright (c) 2007-2008, SoftCOM Spółka jawna
* 
* Funkcje dla zmiany kierunku, kraju i regionu
*
*/

//mapa
var Map = null;
var Regiony = new Array();
var Kraje = new Array();


function RegionReload(wybrany_kraj, region, wybrany_region) {
	if (wybrany_kraj>0) {
		new Ajax.Request('/regiony/json', {
		  method:'get',
		  parameters: '?kraj='+wybrany_kraj+'&element='+region+'&selected='+wybrany_region,	
		  requestHeaders: {Accept: 'application/json'},
		  onSuccess: function(transport){
		    var data = transport.responseText.evalJSON(true);
		    
		    if (data.error=='') {
		      if (data.element!='') {
					//pozycje combo
		     		var options = '<option value="0">-- dowolny --</option>';
      	  		for (var i = 0; i < data.regiony.length; i++) {
      	  			selected = ''; 
      	  			if (data.selected == data.regiony[i].id) {
      	  				selected = ' selected="selected"';
      	  			}
        	    		options += '<option value="' + data.regiony[i].id + '"'+selected+'>' + data.regiony[i].nazwa + '</option>';
      	  		}
					//aktualizuje i włącza combo
					$(data.element).enable();  
	      	  		$(data.element).update(options);
					Regiony.clear();
					Regiony = data.regiony;
					PokazRegionNaMapie(region);
      	  	}
      	  	else {
      	  	  	alert('Błąd. Nie podano elementu.');
      	  	}
      	 }
      	 else {
      	  	 alert(data.error);
      	 }
		}});	
	}
	else {
		$(region).disable();
		$(region).update('');
	}
	
}


/*
*	Funkcja przeładowuje kraje z podanego kierunku w polu COMBO  
*	wybrany_kierunek - identyfikator wybranego kierunku (jeżeli kierunek = 0 to blokujemy combo Kraj)
*   kraj - id pola formularza (combo), które zawiera listę krajów
*   wybrany_kraj - identyfikator kraju, który ma zostać wybrany 
*	region - id pola formularza (combo), które zawiera listę regionów (załadowanie  krajów musi zablokować i wyczyścić pole regionu)
*	wybrany_region - identyfikator regionu, który ma zostać wybrany
*/
function KrajReload(wybrany_kierunek, kraj, wybrany_kraj, region, wybrany_region) {
	//jeżeli jest pole region
	if (region!='') {
		$(region).disable();
		$(region).update('');
	}
	
	//jeżeli wybrany jest jakiś kierunek
	if (wybrany_kierunek>0) {
		new Ajax.Request('/kraje/json', {
		  method:'get',
		  parameters: '?kierunek='+wybrany_kierunek+'&element='+kraj+'&selected='+wybrany_kraj+'&region_element='+region+'&region_selected='+wybrany_region,
		  requestHeaders: {Accept: 'application/json'},
		  onSuccess: function(transport){
		  var data = transport.responseText.evalJSON(true);
		  if (data.error=='') {
		    	if (data.element!='') {
					//pozycje combo
		    		var options = '<option value="0">-- dowolny --</option>';
					var selected_id = 0;
     	  			for (var i = 0; i < data.kraje.length; i++) {
						var selected = ''; 
     	  				if ( (data.selected == data.kraje[i].id) || (data.kraje.length==1) ) {
     	  					selected = ' selected="selected"';
     	  					selected_id = data.kraje[i].id;
     	  				}      	
        	    		options += '<option value="' + data.kraje[i].id + '"'+selected+'>' + data.kraje[i].nazwa + '</option>';
     	  			}	
					//aktualizuje i włącza combo z krajami
					$(data.element).enable();      	  		
	      	  		$(data.element).update(options);
					//zapamiętuje dane krajów
					Kraje.clear();
					Kraje = data.kraje;
					PokazKrajNaMapie(kraj);
					//jeżeli jest pole region  
					if (data.region_element!='') {
						//jeżeli podany jest identyfikator regionu jaki ma być wybrany lub kraj zawiera tylko 1 pozycję to od razu odświeżamy regiony
						if ((data.region_selected>0) || (data.kraje.length==1))  {
							RegionReload(selected_id, data.region_element, data.region_selected);
						}
					}
      	  	}
      	  	else {
      	  		alert('Błąd. Nie podano elementu.');
      	  	}
        }
        else {
        		alert(data.error);
        }
		}});	
	}
	else {
		$(kraj).disable();
		$(kraj).update('');
	}
	
}



//Pokazuje region na mapie
function PokazRegionNaMapie(value_obj_name) {
	if (Map) {
		var id_regionu = $F(value_obj_name);
		var lat = 0;
		var lng = 0;	
		var zoom = 4;
		for (var i = 0; i < Regiony.length; i++) {
			if (Regiony[i].id == id_regionu) {
				lat = Regiony[i].lat;
				lng = Regiony[i].lng;
				zoom = Regiony[i].zoom;
				break;		
			}
		}	
		//jeżeli są jakieś współrzędne
		if ( (lat>0) && (lng>0) ) {
			Map.setCenter(new GLatLng(lat, lng), zoom);
		}
	}
}

//Pokazuje kraj na mapie
function PokazKrajNaMapie(value_obj_name) {
	if (Map) {
		var id_kraju = $F(value_obj_name);
		var lat = 0;
		var lng = 0;	
		var zoom = 4;
		for (var i = 0; i < Kraje.length; i++) {
			if (Kraje[i].id == id_kraju) {
				lat = Kraje[i].lat;
				lng = Kraje[i].lng;
				zoom = Kraje[i].zoom;
				break;		
			}
		}	
		//jeżeli są jakieś współrzędne
		if ( (lat>0) && (lng>0) ) {
			Map.setCenter(new GLatLng(lat, lng), zoom);
		}
	}
}