/**
 * Beta sign-up
 **/
var BetaSignup = Class.create({
	
	initialize: function(form){	
		form.observe('submit', this.save);
	},
	
	save: function(event){
		
		event.preventDefault();
		var form = $('sign-up');
		
		form.request({
		    onCreate: function(){
		    	$$('.error').each(function(error){
		    		error.remove();
		    	})
		    	form.disable();
		    },
		    onComplete: function(transport){
		    	var response = transport.responseJSON;
		    	if(response.status){
		    		location.href = 'https://'+response.message+'.flatplanapp.com/';
		    	} else {
					
					response.message.evalJSON().each(function(error){
						var input = $(error.id);
						if(input.previous() && input.previous().hasClassName('error'))
							input.previous().update(error.message);
						else 
							input.insert({before:'<span class="error">'+error.message+'</span>'});
					});					
		    		form.enable();
		    	}
		    }
		});
		
	}	

});

/**
 * Google maps service
 **/
var Gmap = Class.create({
	
	initialize: function(){

		var map = new google.maps.Map($('gmap'), {
			zoom: 5,
			center: new google.maps.LatLng(57.938183,6.28418, 14.899398),
			mapTypeId: google.maps.MapTypeId.ROADMAP,
			disableDefaultUI: true		
		});

	},

	/**
	 * Pans the map to either the oslo- or berlin-office
	 **/
	panTo: function(n){
		if(n == 'oslo'){
			this.map.setCenter(new GLatLng(59.910422, 10.746592),15);
		} else if(n = 'berlin'){
			this.map.setCenter(new GLatLng(52.498059,13.447558),15);
		}
	},

});

/**
 * Charcase
 **/
var Charcase = Class.create({

	initialize: function(form){
		this.form = form;
		this.form.getInputs().each(function(input){
			if(input.data('lowercase',false)){
				input.observe('keyup',this.lowercase);
			};
		}.bind(this));
	},
	
	lowercase: function(e){
		var element = Event.element(e);
		element.value = element.value.toLowerCase();
	}
	
});

Beezwax.Behaviour.define({
	'.frontpage' : { initialize : function(){
		new FancyZoom('screenshot-thumb-1');
		new FancyZoom('screenshot-thumb-2');
		new FancyZoom('screenshot-thumb-3');
	}},
	'#sign-up' : { initialize : function(element){
		new BetaSignup(element);
		new Charcase(element);
	}},
	'.contact' : { initialize : function(){
		var gmap = new Gmap();
	}}
});

/* Settings for Fancyxoom */
FancyZoomBox.directory = '/images/fancyzoom';
/* Settings for Recaptcha */
var RecaptchaOptions = { theme : 'clean' };
