﻿(function($){$(document).ready(function(){
	// big bang
	var 
		debug				= false
		, $writemsg 		= $('#writemsg')
		, $msg				= $('#ymsg')
		, $subscribe		= $('#subscribe')
		, $subscribeset		= $('#subscribeset')
		, $checkboxreplace	= $('.checkbox.replace')
		, $defaultfields 	= $('input[default], textarea[default]')
		, $submit			= $('#submit')
		, $rightcolumn		= $('#right-column')
		, $rightcolumnw		= $('#right-column .wrapper')
		, $warning			= $('#warning')
		, contactmail		= 'contato' + '@' + 'sobradinho' + '.com.br'
		, hidewarning		= function () {
			setTimeout(function(){
				$warning.fadeOut();
			},2000)
			$('#contact *').unbind('focus', hidewarning);
			$submit.attr('disabled', false);
		}
		, showmsg			= function() {
			if ($writemsg.is(':checked')) {
				$msg.slideDown(function(){
					$subscribeset.fadeIn();
					$submit.val($submit.attr('send'));
				});
			}
			else { 
				$msg.slideUp(function(){
					$subscribeset.fadeOut();
					$subscribe.attr('checked', true).change();
					$submit.val($submit.attr('subscribe'));
				});
			}
		};
		
		$('#footer .email').html('<a href="mailto:' + contactmail + '" title="Nosso e-mail de contato" >' + contactmail + '</a>');
		
	$writemsg.change(showmsg);
	showmsg();
	
	$checkboxreplace
		//.hide()
		.each(function(n){
			var $checkbox 		= $(this)
				, $replacer 	= $('<div class="checkbox replace"></div>')
				, replacerid 	= 'replacer'+n;
			
			$replacer
				.toggleClass('checked', $checkbox.is(':checked'))
				.attr('id', replacerid)
				.click(function(){
					$('input[replacer='+ $(this).attr('id') +']').click().change()
				});
			
			$checkbox
				.focus(function(){ $('#' + $(this).attr('replacer')).addClass('focused'); })
				.blur(function(){ $('#' + $(this).attr('replacer')).removeClass('focused'); })
				.after($replacer)
				.wrap($('<div>').css({display:'inline-block', textIndent:'-100px', overflow:'hidden'}))
				.attr('replacer', replacerid)
				.change(function(){
					var $this = $(this);
					$('#' + $this.attr('replacer')).toggleClass('checked', $this.is(':checked'));
				});
		});
		
		jQuery.extend(jQuery.validator.messages, {
			required: "Este campo é necessário."
			, remote: "Concerte este campo, por favor."
			, email: "Por favor, informe um e-mail válido."
			, url: "Por favor, infome uma URL válida."
		});
		
		if (!debug)
		$('#contact')
			.submit(function(){
				$defaultfields.each(function(){
					$this = $(this);
					if ($this.val() === $this.attr('default')) $this.val('');
				})
			}).validate({
				debug: false,
				submitHandler: function(form) {
					
					$submit.attr('disabled', true);
					$warning
						.html('Por favor, aguarde.')
						.removeClass('error')
						.removeClass('success')
						.fadeIn(function(){
							$submit.timeout = setTimeout(function(){ 
								$('#warning').fadeOut(function(){
									$warning
										.addClass('error')
										.html('O servidor está demorando para responder. Por favor, verifique sua conexão e tente novamente mais tarde.')
										.fadeIn(function(){
											$('#contact *').bind('focus', hidewarning);
										});
								})
								$submit.attr('disabled', false);
							}, 6000); // 10 segundos

							var successmsgs	= {
									msg: '<p class="success">E-mail enviado com sucesso!</p>'
									, subscribe: '<p class="success">Inscrição realizada com sucesso!</p>'
								}
								, errormsgs	= {
									msg: '<p class="error">Houve um erro no envio do e-mail.</p>'
									, subscribe: '<p class="error">Houve um erro na inscrição do seu e-mail.</p>'
								}
								, aftermsg	= '<p>Para mais informações, nosso e-mail é <a href="mailto:' + contactmail + '" >' + contactmail + '</a>.</p>';
							
							var action = $(form).attr('action');

							$.getJSON(
								 action + ((/\?/.test(action)) ? '' : '?') + $(form).serialize().replace(/\#/gi,escape('#')).replace(/\%25/gi,'%26%2337%3B') + '&callback=?'
								, function(data) {
									clearTimeout($submit.timeout);
									$submit.attr('disabled', false);
									var resultmsg = '';
									
									if ( $msg.val().length || !$subscribe.is(':checked')) {
										if ( $writemsg.is(':checked') && data.sent ) resultmsg += successmsgs.msg;
										else if ( $writemsg.is(':checked') && !data.sent ) resultmsg += errormsgs.msg;
									}
									
									if ( ($subscribe.is(':checked') || !$writemsg.is(':checked')) && data.subscribed ) resultmsg += successmsgs.subscribe;
									else if ( $subscribe.is(':checked') && !data.subscribed ) resultmsg += errormsgs.subscribe;
									
									if (!data.sent && ( data.errors.email || data.errors.name ))
										resultmsg = '<p class="error">Houve um bloqueio de segurança no envio dos dados. Por favor, caso estes dados estejam corretos entre em contato atraves do e-mail presente no rodapé.</p>';
									
									$warning
										.fadeOut(function(){
											if ($writemsg.is(':checked') && data.sent) $msg.val('');
											$warning
												.html(resultmsg)
												.fadeIn(function(){
													$('#contact *').bind('focus', hidewarning);
												});
										})							
								}
							);

						});
					return false;
				}
				, invalidHandler: function(form) {
					$defaultfields.each(function(){
						$this = $(this);
						if (!$this.val().length) $this.val($this.attr('default'));
					});
					$submit.attr('disabled', false);
				}
				
			});
		$defaultfields
			.focus(function(){
				$this = $(this);
				if ($this.val() === $this.attr('default')) $this.val('');
			})
			.blur(function(){
				$this = $(this);
				if (!$this.val().length) $this.val($this.attr('default'));
			});
			
			
		if (debug) {
			$('#right-column p.nospan').click(function(){
				$('#yname').val('Wendely Leal');
				$('#yemail').val('eu@wendelyleal.com');
				$msg.val('Minha mensagem. áÀÁèÉã#$%¨&*:;\'"[]^');
			}).css('cursor','pointer');
		}
	
});})(jQuery);
