//Author: StarWare.com.pl

var cms_googlemaps = {
	
		loading: false,
		
		callback_queue: [],
		
		callback: function(){ 
			cms_googlemaps.loading = false;
			for(i=0; i<cms_googlemaps.callback_queue.length; i++){
				if (jQuery.isFunction(cms_googlemaps.callback_queue[i])) {
					cms_googlemaps.callback_queue[i]();
				}
			}
			cms_googlemaps.callback_queue = [];
		},
		
		execute: function(callback){
			if (((typeof(google)=='undefined') ? true : typeof(google['maps'])=='undefined')) {
				cms_googlemaps.callback_queue.push(callback);
				if (!cms_googlemaps.loading) {
					cms_googlemaps.loading = true;
					var script = document.createElement("script");
					script.type = "text/javascript";
					script.src = "http://maps.google.com/maps/api/js?sensor=false&callback=cms_googlemaps.callback";
					document.body.appendChild(script);
				}
			} else{
				callback();
			}
		},
		
		lat_fix:function(lat){
			lat = parseFloat(lat);
			if (isNaN(lat) || lat<-90 || lat>90) 	lat=0;
			return lat;
		},

		lng_fix:function(lng){
			lng = parseFloat(lng);
			if (isNaN(lng) || lng<-90 || lng>90) 	lng=0;
			return lng;
		},

		latlng_string_fix:function(latlng_string){ //1224.123, 112,234\n 123.11, 123.234
			if (typeof(latlng_string)!='string' || latlng_string == "") return "0.0, 0.0";
			var lines = latlng_string.split("\n");
			var result = [];
			for(i=0; i<lines.length; i++){
				if ( lines[i] == "") continue;
				var p = lines[i].split(',');
				p[0] = cms_googlemaps.lat_fix(p[0]);
				p[1] = cms_googlemaps.lng_fix(p[1]); 
				if (p[0]==0 || p[1]==0) continue;
				result.push(p[0] + ", " + p[1]);
			}
			return result.join("\n");
		}
		
	};

