$(document).ready(function(){
	$('div.badge-hiring')
		.mouseenter(function(){
			$(this).animate({top: '0px'}, 200, function(){
				$('div.hint-hiring').fadeIn(300);
			});
		})
		.mouseleave(function(){
			var $this = $(this);
			$('div.hint-hiring').fadeOut(200, function(){
				$this.animate({top: '-10px'}, 300);
			});
		})
		.find('a').click(function(event){
			event.preventDefault();
		});
	
	$('#button_go_to_contact').click(function(event){
		$.scrollTo('#contact_card', 800, {easing: 'easeOutCubic'});
		event.preventDefault();
	});
	
	$('div.gallery div.wrapper')
		.mouseenter(function(){
			$('div.control-prev, div.control-next').fadeIn(300);
		})
		.mouseleave(function(){
			$('div.control-prev, div.control-next').fadeOut(300);
		});
	
	$('#gallery_canvas').serialScroll({
		items: 'img.canvas-item',
		axis: 'x',
		prev: 'div.control-prev a',
		next: 'div.control-next a',
		duration: 700,
		force: true,
		easing: 'easeOutCubic',
		onBefore: function(event, target, scrolled, items, scrollPos) {
			$('#gallery_slider a.item-indicator.active').removeClass('active');
			$('#gallery_slider a.item-indicator').eq(scrollPos).addClass('active');
		}
	});
	
	$('#gallery_slider a.item-indicator').click(function(event){
		$('#gallery_canvas').trigger( 'goto', [ $('#gallery_slider a.item-indicator').index(this) ] );
		event.preventDefault();
	});
	
	$('#contact_card_canvas').serialScroll({
		items: 'div.canvas-item',
		axis: 'x',
		duration: 600,
		force: true,
		easing: 'easeOutCubic'
	});
	
	$('.form-input').each(function(){
		var $this = $(this);
		$this
			.data('watermark', $this.val())
			.focus(function(event){
				$this.removeClass('invalid');
				
				if ($this.val() == $this.data('watermark'))
					$this.val('');
			})
			.blur(function(event){
				if ($this.val().length == 0)
					$this.val($this.data('watermark'));
			});
	});
	
	$('#button_submit').click(function(){
		var $name = $('#input_name');
		var $email = $('#input_email');
		var $message = $('#input_message');
		
		$('#contact_card div.success-hint, #contact_card div.failure-hint').hide();
		
		isEmpty($name) ? $name.addClass('invalid') : $name.removeClass('invalid');
		isEmpty($email) || !isValidEmail($email.val()) ? $email.addClass('invalid') : $email.removeClass('invalid');
		isEmpty($message) ? $message.addClass('invalid') : $message.removeClass('invalid');
			
		if ($('.form-input.invalid').length != 0) return;
		
		$('#contact_card_canvas').trigger( 'goto', [ 1 ] );
		
		$.ajax({
			url: 'http://tm-internal.heroku.com/offers',
			type: 'GET',
			dataType: 'jsonp',
			data: {
				'name': $name.val(),
				'email': $email.val(),
				'message': $message.val()
			},
			success: function(data, textStatus, XMLHttpRequest){
				if (data.status == 0){
					$('#contact_card div.success-hint').fadeIn(400);
					_gaq.push(['_trackPageview', '/business/successful_offer']);
				}else{
					$('#contact_card div.failure-hint').fadeIn(400);
					_gaq.push(['_trackPageview', '/business/failed_offer']);
				}	
			},
			error: function(XMLHttpRequest, textStatus, errorThrown){
				$('#contact_card div.failure-hint').fadeIn(400);
				_gaq.push(['_trackPageview', '/business/failed_offer']);
			}
		});
	});
	
	$('#button_flip_contact_form').click(function(){
		var isFrontVisible = $('#contact_card div.front-side').is(':visible');
		var rotation = isFrontVisible ? '-180deg' : '0deg';
		var buttonImg = isFrontVisible ? 'button-getintouch.png' : 'button-howtoreachus.png';
		
		$(this).fadeTo(300, 0.2, function(){
			$(this).attr('src', 'assets/img/' + buttonImg).fadeTo(300, 1);
		});
		
		$('#contact_card').css({
			'-webkit-transition-duration': '1s',
			'-webkit-transform': 'rotateY(' + rotation + ')'
		});
		
		setTimeout(function(){
			$('#contact_card div.front-side').toggle();
			$('#contact_card div.back-side').toggle();
		}, 300);
	});
});

function isEmpty(input){
	if (input.val().length == 0 || input.val() == input.data('watermark')) {
		return true;
	}	
	return false;
}

function isValidEmail(email){
	var reg = /^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9\-\.])+\.([A-Za-z]{2,4})$/;
	if(reg.test(email) == false){
		return false;
	}
	return true;
}
