var map;
var geocoder;
var maxZoom = 7;
var minZoom = 4;

$(document).ready(function(){

	loadGoogleMaps();
	
	cookie = readCookie("flowerpower");
	if(cookie != null) {
		data = unescape(cookie).split("|");
		$('#signup-form-wrapper').css('display','none');
		div = $('#signup-form-done').css('backgroundImage','url(images/flower-'+data[1]+'.png)').html("Your flower was planted in zip code "+data[0]+".").css('display','block');	
	}
	
	// User clicks the terms checkbox
	$('#signup-terms-checkbox').toggle(function() {
		$(this).addClass('on');
	}, function() {
		$(this).removeClass('on');
	});
	
	// Instructions
	$("#instructions").colorbox({inline:true, href:"#instructions-full"});
	// Open videos in light window
	$("#video-seeds").colorbox({inline:true, href:"#video-seeds-full"});
	$("#video-single").colorbox({inline:true, href:"#video-single-full"});
	// Open terms in light window
	$("#terms-of-service").colorbox({width:"600px", height:"80%", iframe:true});
	
	// User submits the form
	$('#signup-form').submit(function(event) {
		event.preventDefault();
		
		// Trim spacecs
		$('#email').attr('value', trim($('#email').attr('value')));
		$('#zip').attr('value', trim($('#zip').attr('value')));
		
		// Validate
 		var email = new RegExp('^([0-9a-z]+[-._+&])*[0-9a-z]+@([-0-9a-z]+[.])+[a-z]{2,6}$');
		var zip = new RegExp('^[0-9]{5}$');
  		var m = email.exec($('#email').attr('value'));
		var m2 = zip.exec($('#zip').attr('value'));
		if(m == null || m2 == null || 
		   $('#firstname').attr('value') == 'First Name' ||
		   $('#lastname').attr('value') == 'Last Name' ||
		   !$('#signup-terms-checkbox').hasClass('on')) {
			alert("You must complete each field, enter a valid email address and 5 digit zip code, and agree to the Terms of Service.");
			return;
		}

		$('#signup-form-wrapper').fadeTo("fast", 0.25);
		$('#signup-form-working').css('display','block');

		var zip = $('#zip').attr('value');
	
		if(zip != "") {
			if (GBrowserIsCompatible()) {
				if(!geocoder) geocoder = new GClientGeocoder();
					
				geocoder.getLocations(zip, function(response) {
					if (!response || response.Status.code != 200) {
						$('#signup-form-wrapper').fadeOut("fast");
						$('#signup-form-working').css('display','none');
						$('#signup-form-error').css('display','block');
					} else {
						place = response.Placemark[0];
						point = new GLatLng(place.Point.coordinates[1],
											place.Point.coordinates[0]);
						
						var state = "";
						var county = "";
						var city = "";
						
						try {
							state = place.AddressDetails.Country.AdministrativeArea.AdministrativeAreaName;
							county = place.AddressDetails.Country.AdministrativeArea.SubAdministrativeArea.SubAdministrativeAreaName;
							city = place.AddressDetails.Country.AdministrativeArea.SubAdministrativeArea.Locality.LocalityName;
						} catch(e) {}
						
						$.post("save.php", {
							  'flower[firstname]': $('#firstname').attr('value'), 
							  'flower[lastname]': $('#lastname').attr('value'),
							  'flower[email]': $('#email').attr('value'),
							  'flower[zip]': $('#zip').attr('value'),
							  'flower[lat]': point.lat(),
							  'flower[lng]': point.lng(),
							  'flower[state]': state,
							  'flower[county]': county,
							  'flower[city]': city
							},
							function(data){
								
								map.setCenter(point, 7);
								$('#signup-form-wrapper').fadeOut("fast");
								$('#signup-form-working').css('display','none');
								var msg = 'Check back often to see if your city blooms the BIGGEST.<br /><br /><a href="http://twitter.com/home?status=I%20just%20spread%20the%20flower%20power%20with%20@BigKennyTV%20to%20celebrate%20The%20Quiet%20Times%20http%3A%2F%2Fbit.ly/flowerpower" target="_blank">Tweet your Flower Power.</a></a>'; 
								div = $('#signup-form-done').css('backgroundImage','url(images/flower-'+data.color+'.png)').html("Your flower was planted in zip code "+data.zip+". "+msg).css('display','block');
								icon2 = new GIcon();
								icon2.image = "/flowerpower/images/flower-" + data.color + ".png";
								icon2.iconSize = new GSize(20, 18);
								icon2.iconAnchor = new GPoint(10, 9);
								map.addOverlay(new GMarker(point, icon2));

							}, "json"
						);

						
						
					}								
				});
			}
		}

	});
});

$(window).unload(function(){
	GUnload();
});


function loadGoogleMaps() {
	if (GBrowserIsCompatible()) {
		map = new GMap2(document.getElementById("map"));
	
		G_NORMAL_MAP.getMinimumResolution = function () { return minZoom };
		G_NORMAL_MAP.getMaximumResolution = function () { return maxZoom };

		map.addControl(new GSmallMapControl());

		map.setCenter(new GLatLng(39.0997265, -94.5785667), minZoom);
		
		// Set up the copyright information
		// Each image used should indicate its copyright permissions
		var myCopyright = new GCopyrightCollection("© ");
		myCopyright.addCopyright(new GCopyright('Demo',
		  new GLatLngBounds(new GLatLng(-90,-180), new GLatLng(90,180)),
		  0,'©2009'));
		
		// Create the tile layer overlay and 
		// implement the three abstract methods
		var flowers = new GTileLayer(myCopyright);
		flowers.getTileUrl = function(tile, zoom) {
			//return "/flowerpower/tile.php?x=" + tile.x + "&y=" + tile.y + "&zoom=" + zoom;
			return "/flowerpower/tiles/tile_" + tile.x + "_" + tile.y + "_" + zoom + ".png";
		};
		flowers.isPng = function() { return true;};
		flowers.getOpacity = function() { return 1.0; }
		
		map.addOverlay(new GTileLayerOverlay(flowers));
		
  }
}

function readCookie(name) {
	var nameEQ = name + "=";
	var ca = document.cookie.split(';');
	for(var i=0;i < ca.length;i++) {
		var c = ca[i];
		while (c.charAt(0)==' ') c = c.substring(1,c.length);
		if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
	}
	return null;
}

function trim(str) {
	return str.replace(/^\s\s*/, '').replace(/\s\s*$/, '');
}