var map;
var beericon;
var newicon;

var rules= {
	'#trigger' : function(el) {
		el.style.cursor='pointer';
		el.onclick = function() {
			Effect.Fade('bigimg',{afterFinish:function(){Element.setOpacity('map',1);}});
			map.closeInfoWindow();	
			var dims =  Element.getDimensions($('map'));
			$('map').setStyle('width:' + dims.width -180 + 'px');
			$('map').style.left = '180px';
			Effect.Appear($('db'));
			map.closeInfoWindow() ;
			Element.hide('trigger');
		}	
	},
	'#suche' : function(el) {
		el.onclick = showPoint;
	},
	'#a' : function(el) {
		el.onblur = showPoint;
	},
	'.gray' : function(el) {
		el.onfocus = function() {
			Element.removeClassName(el,'gray');
			if (el.getAttribute('rel') == el.value) {
				el.value = '';
			}
		},
		el.onblur = function() {
			if ($F(el).length == 0 ) {
				Element.addClassName(el,'gray');
				if (el.value = el.getAttribute('rel')) {
				}
			}
		}
	},
	'.win' : function(el) {
		el.style.cursor='pointer';
		el.onclick = function() {
			var url = el.getAttribute('rel');
		 	map.closeInfoWindow() ;
		 	map.setCenter(null,10);
		 	Element.setOpacity($('map'),0.7);
			$('bigimg').innerHTML = '<img src="' +url + '"/>';
			Effect.Grow('bigimg');;
		}
	  },
	  '#bigimg' : function(el) {
			el.style.cursor='pointer';
			el.onclick = function() {
				Effect.Fade(el,{afterFinish:function(){Element.setOpacity($('map'),1);}});
			 	map.setCenter(null,4);
	      }
	 },
	 '#caltrigger' : function(el) {
		el.onclick = function() {
			Element.hide(el);
			var cal1 = new YAHOO.widget.Calendar("cal1","callContainer"); 
			cal1.cfg.setProperty("DATE_FIELD_DELIMITER", "."); 
			cal1.cfg.setProperty("MDY_DAY_POSITION", 1);
			// NAV_ARROW_LEFT
			cal1.cfg.setProperty("MDY_MONTH_POSITION", 2); 
			cal1.cfg.setProperty("MDY_YEAR_POSITION", 3); 
			cal1.cfg.setProperty("MD_DAY_POSITION", 1); 
			cal1.cfg.setProperty("MD_MONTH_POSITION", 2); 
			cal1.cfg.setProperty("MONTHS_SHORT",   ["Jan", "Feb", "M\u00E4r", "Apr", "Mai", "Jun", "Jul", "Aug", "Sep", "Okt", "Nov", "Dez"]); 
			cal1.cfg.setProperty("MONTHS_LONG",    ["Januar", "Februar", "M\u00E4rz", "April", "Mai", "Juni", "Juli", "August", "September", "Oktober", "November", "Dezember"]); 
			cal1.cfg.setProperty("WEEKDAYS_1CHAR", ["S", "M", "D", "M", "D", "F", "S"]); 
			cal1.cfg.setProperty("WEEKDAYS_SHORT", ["So", "Mo", "Di", "Mi", "Do", "Fr", "Sa"]); 
			cal1.cfg.setProperty("WEEKDAYS_MEDIUM",["Son", "Mon", "Die", "Mit", "Don", "Fre", "Sam"]); 
			cal1.cfg.setProperty("WEEKDAYS_LONG",  ["Sonntag", "Montag", "Dienstag", "Mittwoch", "Donnerstag", "Freitag", "Samstag"]); 
			cal1.cfg.setProperty("START_WEEKDAY", 1);
			cal1.render(); 
			cal1.selectEvent.subscribe(function(type,args) { 
				//var calDate = cal1.getSelectedDates()[0];
				var dates = args[0];
				var date = dates[0];
				var year = date[0], month = date[1], day = date[2]; 
				var datum = day + '.' + month + '.' + year;
			//	console.log(datum);
				$('datum').value=datum;
				Effect.Fade($('callContainer'));
			},cal1,true);
			new Draggable('callContainer');
		}
	}
};
var gmarkers = [];
var htmls = [];
var i = 0;

Event.observe(window, 'load', init_app);
Event.observe(window, 'unload', GUnload);

function cancelEdit() {
			
		//	$('map').style.width = $('map').style.width + 180 + 'px';
			$('map').style.marginLeft='0px';
			$('wrap').style.backgroundColor='#ffffff';
			Element.hide($('db'));
}

function init_app(event) {
 	Behaviour.register(rules);
 	Behaviour.apply(rules);
 	Uploader.Init();
  	new Draggable($('bigimg'));
  	map = new GMap2($("map"));
 	map.addControl(new GMenuMapTypeControl(true,false));
  	map.setMapType(G_HYBRID_MAP);
    map.setMapType(G_PHYSICAL_MAP);
    map.addControl(new GSmallMapControl());
    map.setCenter(new GLatLng(51.507563, 10.797715), 4);
/*
    var anne = new GScreenOverlay('./anne-ka.gif',
  		new GScreenPoint(1, 1, 'fraction', 'fraction'),  // screenXY
  		new GScreenPoint(130,80),  // overlayXY
    	new GScreenSize(80,80, 'pixels', 'pixels')); 				
    map.addOverlay(anne),{opacity:0.6}; 	
 */
 	window.setTimeout(function(){GDownloadUrl("./uploads/db.json", process_it);},12);
    
 }


var newmarker;
showPoint = function() {
	var overlayControl = new GOverviewMapControl();
    map.addControl(overlayControl);
	if (newmarker) map.removeOverlay(newmarker);
	var search = $F('a');
    var geo = new GClientGeocoder(); 
	geo.getLocations(search, function (result) { 
            // If that was successful
            if (result.Status.code == G_GEO_SUCCESS) {
             // document.getElementById("message").innerHTML = "Found " +result.Placemark.length +" results";
                var p = result.Placemark[0].Point.coordinates;
     			var center = new GLatLng(p[1],p[0]);	
     			map.setCenter(center,15);
             	$('gps').value = p[1]+'#'+p[0];
     			newmarker = new GMarker(center, {icon: new GIcon(G_DEFAULT_ICON), draggable: true});
	            map.addOverlay(newmarker);
 				GEvent.addListener(newmarker, "dragstart", function() {map.closeInfoWindow();});
				GEvent.addListener(newmarker, "dragend", function() { $('gps').value = newmarker.getPoint().lat() +'#'+newmarker.getPoint().lng();});
              // centre the map on the first result
            }
	});
}


process_it = function(doc) {
	beericon = getIcon('beer');
	newicon  = getIcon('new');
	var jsonData = eval('(' + doc + ')');
    clu = new Clusterer(map);
    clu.gridSize = 16;
    clu.SetMaxLinesPerInfoBox(70);
    clu.minMarkersPerClusterer = 5;
    clu.SetMaxVisibleMarkers(150);
	clu.icon = beericon;
	clu.maxLinesPerInfoBox = 6;

    for (var i=0; i<jsonData.markers.length; i++) {
    	var item = jsonData.markers[i];
    	var point = new GLatLng(item.lng, item.lat);
    	var bild = item.item[0];
    	var html = '<div>'
    	  		+ '<table class="win" rel="'
    	  		+ bild.img 
    	  		+ '"><tr><td valign="top"><h1>' 
    	  		+ bild.name 
    	  		+ '</h1>von '
    	  		+ item.von 
    	  		+ '</td><td>'  
    	  		+ '<img alt="Vergrš§ern" id="win_'
    	  		+ item.id 
    	  		+ '_big" src="' 
    	  		+ bild.th  
    	  		+ '"/></td></tr><tr><td colspan=2></td></tr></table></div>';
        if (i > jsonData.markers.length - 13) {
        	var marker = createMarker(point,item.von,html,item.name,newicon);
    		map.addOverlay(marker);
    	} else {
			var marker = createMarker(point,item.von,html,item.name,beericon);
	        if (bild.name.length) clu.AddMarker(marker,bild.name);
        }	
    }
}          


function getIcon(name) {
  var icon = new GIcon();
  icon.iconSize = new GSize(13,32);
  icon.shadowSize = new GSize(32,32);
  icon.iconAnchor = new GPoint(5,32);
  icon.infoWindowAnchor = new GPoint(16,0);
  icon.infoShadowAnchor = new GPoint(6,32);
  var i = new GIcon(icon, "http://gedeihliches.de/images/stories/bilder/" + name + ".gif", null, "http://maps.google.com/mapfiles/kml/pal3/icon44s.png");
  return i;


}

createMarker = function (point,name,html,title,icon) {
        var marker = new GMarker(point,{icon:icon,title:title});
        GEvent.addListener(marker, "click", function() {
           cancelEdit();	
           marker.openInfoWindowHtml(html);
        });
        GEvent.addListener(marker, "infowindowopen", function(m) {
        	 marker.redraw();
             Behaviour.apply(rules);
        });
        GEvent.addListener(marker, "infowindowclose", function(m) {
        	 Behaviour.apply(rules);
        	 map.setCenter(null, 5);
        });
        gmarkers[i] = marker;
        return marker;
  }
      
      

	
	
var Uploader = {
	Init : function() {
		var formid;
		var idents = [];
		ups = document.getElementsByClassName('uploadform');
		for (i=0; i<ups.length; i++) {
			formid = ups[i].id;
			if (!ups[i].id) {
				formid = 'formid_' + Math.random(1111111);
				ups[i].setAttribute("id",formid);
			}	
			ups[i].setAttribute("method",'post');
			ups[i].setAttribute("action","");
			ups[i].setAttribute("enctype",'multipart/form-data');
			ups[i].setAttribute("onsubmit","new Uploader.Post('./uploader.php',this);return false;");
			idents[i] = document.createElement("input");
			idents[i].setAttribute("name","UPLOAD_IDENTIFIER");
			idents[i].setAttribute("type","hidden");
			idents[i].setAttribute("value",formid);
			ups[i].insertBefore(idents[i],ups[i].firstChild);
		}	
	},
	Post : function(target,upform) {
		var uniq;
		var formId;
		if ($F('name').length<5) {Effect.Pulsate($('name'),{pulses:1});return false;};
		if ($F('ort').length<5) {Effect.Pulsate($('ort'),{pulses:1});return false;};
		if ($F('gps').length<1) {Effect.Pulsate($('suche'));return false;};
		if ($('file').value.length<5) {Effect.Pulsate($('file'),{pulses:1});return false;};
		if ($F('datum').length<5) {Effect.Pulsate($('datum'),{pulses:1});return false;};
		$('progress').innerHTML='';
		formId = upform.id;
		uniq   = upform.firstChild.value; 
		Element.show($('progress'));
		if (!updater) updater = new Ajax.PeriodicalUpdater('progress', './progress.php',{asynchronous:true, frequency:0.1,postBody:'uniq=' + uniq});
		YAHOO.util.Connect.setForm(formId,1);
		YAHOO.util.Connect.asyncRequest('POST',target,{success:isOK,upload:isOK});
		Effect.Fade('submit');
	}
}
	

var updater ;

var isOK = function callBack(o) {
	updater.stop();
	var uid = $F('uid');
	var thumb = 'http://tools.webmasterei.com/sternburger/thumbs/'+ uid + '.png';
//	console.log(thumb);
	var html =  '<div ><table><tr><td valign="top"><h1>' +  $F('ort') + '</h1>von '
	   + $F('name')
	   + '</td><td>'  + '<img src="'+thumb+'" /></td></tr><tr><td colspan=2>&nbsp;</td></tr></table></div>';
	Effect.Fade('progress');
	Effect.Appear('navi');
 	newmarker.openInfoWindowHtml(html);
	newmarker.redraw();
}

   

