var xhr = new XHR();
var markers = new Array();
var map;
var editmarker;

jq(document).ready(function() {	
	
	for(var i=1; i<17; i++) {
		var timg = new Image();
		timg.src = '/gfx/custom/mapa/'+i+'.png';
	}

  jq('.carousel').jcarousel({
		scroll: 1,
		buttonNextHTML: '<div class="nextbtn"></div>',
		buttonPrevHTML: '<div class="prevbtn"></div>',
		itemFallbackDimension: 400
  });
	
	// form edycji
	jq('table.zabytek_edycja input, table.zabytek_edycja textarea, table.zabytek_edycja select').focus(function() {
		var f = jq(this);
		f.parents('table.zabytek_edycja tr').addClass('active');
	});
	
	jq('table.zabytek_edycja input, table.zabytek_edycja textarea, table.zabytek_edycja select').blur(function() {
		var f = jq(this);
		f.parents('table.zabytek_edycja tr').removeClass('active');
	});
	
	if($('editmap')) loadEditMap();
	
	jq('#npframe').css('display', 'none');
	jq('h4.newphotos').click(function() {
		jq('#npframe').slideDown(500, function() {
			jq(this).fadeTo(500, 1);
		});
		jq(this).removeClass('newphotos');
	});
	
	jq('input.deleteimage').click(function() {
		if(jq(this).attr('checked')) {
			if(confirm('Czy na pewno chcesz usunąć to zdjęcie?')) {
				var t = jq(this).attr('id').split('_');
				var imgid = t[1];
				jq('div#imgdiv_'+imgid).fadeTo(500, 0).slideUp(500);
				jq('input#noarch').attr('checked', 'true');
			} else {
				jq(this).removeAttr('checked');
			}
		}
	});
	
	// form edycji - lista województw, gmin i powiatów
	jq('select#wojewodztwo_id').change(updatePowiaty);
	jq('select#powiat_id').change(updateGminy);
	
	if($('wojewodztwo_id') && $('powiat_id')) updatePowiaty($('powiat_id').value);
	
	// Small map
	if($('smallmap')) {
		var latlng = new google.maps.LatLng($('lat').value, $('lng').value);
		var prefs = {
			zoom: 13,
			center: latlng,
			mapTypeId: google.maps.MapTypeId.HYBRID
		};
		
		map = new google.maps.Map($('smallmap'), prefs);
		
		var mrk = new google.maps.Marker({
			position: new google.maps.LatLng($('lat').value, $('lng').value),
			map: map
		});
	}
	
	// big search map
	if($('bigsmap')) {
		var latlng = new google.maps.LatLng(centerlat, centerlng);
		var prefs = {
			zoom: 8,
			center: latlng,
			mapTypeId: google.maps.MapTypeId.ROADMAP,
			scrollwheel: false
		};
		map = new google.maps.Map($('bigsmap'), prefs);
		map.fitBounds(new google.maps.LatLngBounds(new google.maps.LatLng(maxlat, minlng), new google.maps.LatLng(minlat, maxlng)));
		google.maps.event.addListener(map, 'idle', refreshMarkers);
	}
	
	// fancybox
	jq('a[rel=lightbox]').fancybox({
		'transitionIn'	:	'elastic',
		'transitionOut'	:	'elastic',
		'speedIn'		:	600, 
		'speedOut'		:	200,
		'titlePosition'	: 'inside'
	});
	
	jq('textarea.expandable').each(function() {
		var t = jq(this);
		t.parent().css('height', (this.offsetHeight+12)+'px');
	});
	
	// expandable textarea
	jq('textarea.expandable').focus(function() {
	
		var t = jq(this);
		//t.parent().css('height', (this.offsetHeight+12)+'px');
		t.css('position', 'absolute');
		t.css('z-index', '10000').animate({
			width: '700px'
		}, 300);
		
	});
	
	jq('textarea.expandable').blur(function() {
		var t = jq(this);
		t.animate({
			width: '300px'
		}, 300);
	});
	
	// tipbox
	jq('div.tipbox a.closetipbox').click(function() {
		var t = jq(this);
		t.parent().fadeTo(500, 0, function() {
			jq(this).slideUp();
			setCookie('pz_tip1', 1, 30);
		});
	});
});

function updatePowiaty(preVal) {
	if(!isNaN(parseInt(preVal))) var pv = preVal; else var pv = '';
	
	jq('select#powiat_id').fadeTo(400, 0, function() {
		xhr.aLoad('GET', '/ajax_getpowiaty.php?preval='+pv+'&wojewodztwo='+jq('select#wojewodztwo_id').val(), '', function() {
			jq('select#powiat_id').replaceWith(xhr.responseText);
			jq('select#powiat_id').change(updateGminy).css('opacity', 0).fadeTo(400, 1);
			if(pv=='') jq('select#powiat_id').change();
			else updateGminy(jq('select#gmina_id').val());
		});
	});
	jq('select#gmina_id').fadeTo(400, 0);
}

function updateGminy(preVal) {
	if(!isNaN(parseInt(preVal))) var pv = preVal; else var pv = '';
	
	jq('select#gmina_id').fadeTo(400, 0, function() {
		xhr.aLoad('GET', '/ajax_getgminy.php?preval='+pv+'&powiat='+jq('select#powiat_id').val(), '', function() {
			jq('select#gmina_id').replaceWith(xhr.responseText);
			jq('select#gmina_id').css('opacity', 0).fadeTo(400, 1);
		});
	});
}

function woj(id) {
	if(id!=0) $('bigmap').src='/gfx/custom/mapa/'+id+'.png';
	else $('bigmap').src='/gfx/custom/mapa/0.gif';
	
	$('wojsel').selectedIndex = id;
	
	var wojid = id;
	jq('div#powiatdiv').fadeTo(400, 0, function() {
		jq(this).html('');
		xhr.aLoad('GET', '/ajax_getpowiaty2.php?w='+wojid, '', function() {
			jq('div#powiatdiv').html(xhr.responseText).fadeTo(400, 1);
		});
	});
	jq('div#gminadiv').fadeTo(400, 0, function() { jq(this).html(''); });
	
}

function powiat(pid) {
	var powiatid = pid;
	
	jq('div#gminadiv').fadeTo(400, 0, function() {
		jq(this).html('');
		if(powiatid!=0) {
			xhr.aLoad('GET', '/ajax_getgminy2.php?p='+powiatid, '', function() {
				jq('div#gminadiv').html(xhr.responseText).fadeTo(400, 1);
			});
		}
	});
}

function loadEditMap() {
	var latlng = new google.maps.LatLng(parseInt($('lat').value)!=0 ? $('lat').value : 52.025459, parseInt($('lng').value)!=0 ? $('lng').value : 19.204102);
	var prefs = {
		zoom: 8,
		center: latlng,
		mapTypeId: google.maps.MapTypeId.ROADMAP
	};
	
	
	map = new google.maps.Map($('editmap'), prefs);
	
	if(parseInt($('lng')).value!=0) {
		var lat = $('lat').value;
		var lng = $('lng').value;
		editmarker = addEditMarker(lat, lng);
		map.setZoom(13);
	}
	
	google.maps.event.addListener(map, 'click', function(e) {
		if(editmarker.setMap) editmarker.setMap(null);
		editmarker = addEditMarker(e.latLng.lat(), e.latLng.lng());
		$('lat').value = Math.round(e.latLng.lat()*10000)/10000;
		$('lng').value = Math.round(e.latLng.lng()*10000)/10000;
	});
}

function addEditMarker(lat, lng) {
	var mrk = new google.maps.Marker({
		position: new google.maps.LatLng(lat, lng),
		map: map,
		title: 'Przesuń obiekt, by zmienić jego współrzędne',
		draggable: true
	});
	
	google.maps.event.addListener(mrk, 'dragend', function(e) {
		$('lat').value = Math.round(e.latLng.lat()*10000)/10000;
		$('lng').value = Math.round(e.latLng.lng()*10000)/10000;
	});
	
	return mrk;
}

function refreshMarkers() {
	zoom = map.getZoom();
	var ne = map.getBounds().getNorthEast();
	var sw = map.getBounds().getSouthWest();
	var lat1 = ne.lat(); var lng1 = ne.lng();
	var lat2 = sw.lat(); var lng2 = sw.lng();	
	
	xhr.sLoad('GET', '/getpoints.php?'+httpparams+'&zoom='+zoom+'&lat1='+lat1+'&lng1='+lng1+'&lat2='+lat2+'&lng2='+lng2);
	
	for(var i=0; i<markers.length; i++) markers[i].setMap(null);
	markers = new Array();
	
	var obXML = xhr.responseXML.documentElement;
	for(var i=0; i<obXML.childNodes.length; i++) {
		if(obXML.childNodes.item(i).nodeType==1) {
			var ob = obXML.childNodes.item(i);
			var lat = ob.getAttribute('lat');
			var lng = ob.getAttribute('lng');
			var id = ob.getAttribute('id');
			var oldid = ob.getAttribute('oldid');
			
			var nmarker = new google.maps.Marker({
				position: new google.maps.LatLng(lat, lng),
				map: map,
				title: ob.tagName=='k' ? 'Wiele obiektów - przybliż mapę!' : ob.getAttribute('n'),
				icon: ob.tagName=='k' ? '/m4.php?c='+ob.getAttribute('c') : '/img/markers/m'+ob.getAttribute('t')+'.png',
				obiektid: id
			});
			
			if(ob.tagName=='k') {
				google.maps.event.addListener(nmarker, 'click', function() {
					map.panTo(this.getPosition());
					map.setZoom(parseInt(map.getZoom())+1);
				});
			} else {
				google.maps.event.addListener(nmarker, 'click', function() {
					location.href = '/m/obiekt/'+this.obiektid+'/';
				});
			}
			
			markers.push(nmarker);
		}
	}
}

var helpers = new Array();

function setImgDesc(id, desc) {	
	$('d_'+id).value = desc;
	closeHelper(id);
}

function openHelper(id, textbox) {
	if(!$('hlp_'+id)) return;
	if(helpers[id]==true) return;
	var helper = jq('#hlp_'+id);
	var $textbox = jq(textbox);
	
	helper.css('left', ($textbox.offset().left)+'px');
	helper.css('top', ($textbox.offset().top+$textbox.offset().height)+'px');
	helper.css('min-width', ($textbox.offset().width)+'px');
	
	helper.fadeIn();
	
	helpers[id]=true;
	
}

function closeHelper(id) {
	if(!$('hlp_'+id)) return;
	helpers[id]=false;
	jq('#hlp_'+id).fadeOut(500);
}

function googleMapsSearch(key, btn) {
	var phrase = ($('adres').value!='' ? $('adres').value+', ' : '')+$('miejscowosc').value+($('adres').value=='' ? ', '+$('gmina').value : '');
	btn.disabled = true;
	xhr.aLoad('GET', '/gmapssearch.php?key='+key+'&phrase='+phrase, '', function() {
		if(xhr.responseText=='nf') {
			alert('Nie odnaleziono miejsca w Google Maps. Być może adres jest nieprawidłowy.');
			btn.disabled = false;
		} else {
			var cr = xhr.responseText.split('|');
			var lat = Math.round(cr[0]*10000)/10000;
			var lng = Math.round(cr[1]*10000)/10000;
			$('lat').value = lat;
			$('lng').value = lng;
			if(editmarker.setMap) editmarker.setMap(null);
			editmarker = addEditMarker(lat, lng);
			map.panTo(new google.maps.LatLng(lat, lng));
			btn.disabled = false;
		}
	});
}

function setCookie(c_name, value, expiredays) {
  var exdate=new Date();
  exdate.setDate(exdate.getDate()+expiredays);
  document.cookie=c_name+ '=' +escape(value)+((expiredays==null) ? '' : ';expires='+exdate.toGMTString());
}

