
acms.modules.googlemap = {

	init:function(){ //{{{

		$('.acms-module-googlemap').each(function(){ 

			var that = this;
			var div = $('.acms-module-googlemap-plan', this);
			div.css('height', $('[name=height]', this).val());
			div.css('width', $('[name=width]', this).val());
			
			var latlng = new google.maps.LatLng($('[name=latitude]', this).val(), $('[name=longitude]', this).val());
			var myOptions = {
				zoom: parseInt($('[name=zoom]', that).val()),
				center: latlng,
				mapTypeId: google.maps.MapTypeId.ROADMAP
			};
			var map = new google.maps.Map(div.get(0), myOptions);
			var marker = new google.maps.Marker({ 
				position: new google.maps.LatLng($('[name=marker_lat]', this).val(), $('[name=marker_long]', this).val()),
				map: map 
			});

			if($('[name=content]', this).val() !== ''){
				var infowindow = new google.maps.InfoWindow({ content: $('[name=content]', this).val() });
				google.maps.event.addListener(marker, 'click', function() {
					infowindow.open(map,marker);
				});
			}

		});
	},//}}}
	initToolBar:function(){//{{{
		$('body').append("<div id='acms-module-googlemap'></div>");
		var w = $('#acms-module-googlemap');
		w.dialog({ 'title':"Carte Google Map", 'width':700, 'modal':true, 'autoOpen':false });

		$('.acms-module-googlemap').each(function(){
			var that = this;
			var id_box = $(this).attr('id').substr(4);

			$('#btEdit', that).button({'icons':{'primary':'ui-icon-pencil'}, 'text':false}).click(function(){
				acms.modules.googlemap.admin(id_box);
			});

		});
	},//}}}
	add:function(box_parent){ //{{{
		acms.modules.googlemap.admin(undefined, box_parent);
	},//}}}
	admin:function(id_box, box_parent){//{{{

		var that = this;

		var w = $('#acms-module-googlemap');
		var map = undefined;
		var marker = undefined;
		var tab = undefined;

		$.ajax({
			'url':'/modules/googlemap/controller/form.html', 
			'dataType':'html',
			'data':'id_box='+id_box,
			'success':function(data){
				w.html(data);
				that.init();
			}
		});
		
		this.init = function(){//{{{
			var tiny = acms.clone(acms.tinyMCE);
			tiny.height = 100;
			tiny.width = 670;
			tiny.setup = function(ed){
				ed.onInit.add(function(ed, evt){
					tab = $('#fr_content', w);
					ed.setContent(tab.val());
				});
			};
			$('#editor', w).tinymce(tiny);

			$("#tab_langs", w).tabs({'select':function(event, ui){
				if(tab !== undefined){
					tab.val(tinyMCE.get('editor').getContent());
				}
				tab = $('#'+$(ui.tab).attr('href').substr(5, 2)+'_content', w);
				tinyMCE.activeEditor.setContent(tab.val());
			}});
			
			$(".ui-tabs-nav", w).removeClass( "ui-widget-header");

			$('#btFermer', w).button({'icons':{'primary':'ui-icon-circle-close'}}).click(function(){
				w.dialog('close');
			});

			$('#btValider', w).button({'icons':{'primary':'ui-icon-circle-check'}}).click(function(){ that.validate(); });
			$('#btLocaliser', w).button({'icons':{'primary':'ui-icon-flag'}}).click(function(){ that.localize(); });

			
			if($('[name=id_googlemap]', w).val() !== undefined){
				var latlng = new google.maps.LatLng($('[name=latitude]', w).val(), $('[name=longitude]', w).val());
				var myOptions = {
					zoom: parseInt($('[name=zoom]', w).val()),
					center: latlng,
					mapTypeId: google.maps.MapTypeId.ROADMAP
				};
				map = new google.maps.Map($('#map', w).get(0), myOptions);

				var marker_latlng = latlng;
				if($('[name=marker_lat]', w).val() !== undefined && $('[name=marker_long]', w).val() !== undefined){
					marker_latlng = new google.maps.LatLng($('[name=marker_lat]', w).val(), $('[name=marker_long]', w).val());
				}
				marker = new google.maps.Marker({ position: marker_latlng, map: map, draggable: true });
			}else{
				var latlng = new google.maps.LatLng('46.941558972835914', '2.92556234040374');
				var myOptions = { zoom: 5, center: latlng, mapTypeId: google.maps.MapTypeId.ROADMAP };
				map = new google.maps.Map($('#map', w).get(0), myOptions);
				marker = new google.maps.Marker({ position: latlng, map: map, draggable: true });
			}

			w.dialog('open');
			google.maps.event.trigger(map, 'resize');
			map.setCenter(latlng);
		}//}}}
		this.localize = function(){//{{{
			var geocoder = new google.maps.Geocoder();
			geocoder.geocode( { 'address': $('[name=address]', w).val() }, function(results, status) {
				if (status == google.maps.GeocoderStatus.OK) {
					map.setCenter(results[0].geometry.location);
					marker.setPosition(results[0].geometry.location);
				} else {
					$('#msg').alert("Geocode was not successful for the following reason: " + status);
				}
			});
		}//}}}
		this.validate = function(){//{{{

			var pos = map.getCenter();
			$('[name=latitude]', w).val(pos.lat());
			$('[name=longitude]', w).val(pos.lng());

			var pos = marker.getPosition();
			$('[name=marker_lat]', w).val(pos.lat());
			$('[name=marker_long]', w).val(pos.lng());

			$('[name=zoom]', w).val(map.getZoom());

			tab.val(tinyMCE.get('editor').getContent());

			var data = {};
			$('input, textarea', w).each(function(k, v){
				data[$(v).attr('name')] = $(v).val();
			});

			$.ajax({
				'url':'/modules/googlemap/controller.php', 
				'data':data,
				'success':function(data){
					if(data.error === true){
						$("#msg").alert(data.msg);
					}else{
						if(box_parent !== undefined && data.id_box !== undefined){
							w.dialog('close');
							var html = "<div id=box_"+data.id_box+" class='acms-box'/>";
							if($(box_parent).hasClass('acms-zone')){
								box_parent.before(html);
							}else{
								box_parent.after(html);
							}
							acms.updateContainer({'container_id':box_parent.parent().attr('id'), 'boxes':box_parent.parent().sortable("toArray"), 'id_page':$(".acms-page").attr('id').substr(5), 'success':function(){
								w.dialog('close');
								window.location = window.location;
							}});
						}else{
							w.dialog('close');
							window.location = window.location;
						}
					}
				}
			});

		};//}}}

	}//}}}

};


