// code for making inline labels which then move above form inputs when the inputs have content
eval(function(p,a,c,k,e,d){e=function(c){return c.toString(36)};if(!''.replace(/^/,String)){while(c--){d[c.toString(a)]=k[c]||c.toString(a)}k=[function(e){return d[e]}];e=function(){return'\\w+'};c=1};while(c--){if(k[c]){p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c])}}return p}('j 0={5:e,n:3(2){$(2).o(3(){0.d(8);$(8).q(3(){$(\'#\'+$(8).1(\'7\')).5()})});$(\'.f\').5(3(){0.5=$(8);0.c($(8))}).p(3(){0.5=e;0.d($(\'2[7=\'+$(8).1(\'9\')+\']\'))})},d:3(2){j 6=$(\'#\'+$(2).1(\'7\'));b(!6){r}b(0.5!==e&&0.5.1(\'9\')==6.1(\'9\')){0.c(6)}h b(6.u()===\'\'){0.l(6)}h{0.c(6)}},c:3(4){$(4).a(\'f\');$(\'2[7=\'+$(4).1(\'9\')+\']\').g(\'k\').g(\'m\').a(\'i\')},l:3(4){$(4).a(\'f\');b($.v.s&&$(4).1(\'t\')){$(\'2[7=\'+$(4).1(\'9\')+\']\').a(\'m\')}h{$(\'2[7=\'+$(4).1(\'9\')+\']\').a(\'k\').g(\'i\')}}};',32,32,'labeler|attr|label|function|el|focus|target|for|this|id|addClass|if|aboveLabel|check|null|islabeled|removeClass|else|abovecontent|var|overcontent|overLabel|hidden|init|each|blur|click|return|safari|placeholder|val|browser'.split('|'),0,{}));

(function($){
    $.fn.ajaxify = function(add_msg){
		var form = $(this);

		if (add_msg)
			form.prepend('<div class="msg notice">Enviando...</div>');

		form.find('.ajaxed').val('true');
		$.ajax({
			url: form.attr('action'),
			type: 'post',
			data: $(this).serialize(),
			dataType: 'json',
			success: function(data) {
				if (data.status == 'success') {
					if (add_msg) {
						form.find('.msg').remove();
						form.prepend('<div class="msg success">Enviado!</div>');
					}
					$(':input', form).not(':button, :submit, :reset, :hidden')
						.val('')
						.removeAttr('checked')
						.removeAttr('selected');
				} else {
					if (add_msg) {
						form.find('.msg').remove();
						form.prepend('<div class="msg error">Error</div>');
					}
				}
			}
		});
    }
})(jQuery);

(function($){
    $.fn.isValid = function(){
		var ret = true;
		$(this).find('.required').each(function(){
			var element = $(this);
			if ((element.val() == '')
				|| (element.hasClass('email') && !isValidEmail(element.val()))
				|| (element.hasClass('url') && !isValidUrl(element.val()))) {
				element.addClass("empty");
				ret = false;
			} else {
			}
		});

		return ret;
    }
})(jQuery);

function isValidEmail(address) {
	var pattern = new RegExp(/^((([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(\.([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+)*)|((\x22)((((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(([\x01-\x08\x0b\x0c\x0e-\x1f\x7f]|\x21|[\x23-\x5b]|[\x5d-\x7e]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(\\([\x01-\x09\x0b\x0c\x0d-\x7f]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))))*(((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(\x22)))@((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?$/i);
	return pattern.test(address);
}

function isValidUrl(address) {
	var pattern = new RegExp(/^(https?|ftp):\/\/(((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:)*@)?(((\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5]))|((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?)(:\d*)?)(\/((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)+(\/(([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)*)*)?)?(\?((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|[\uE000-\uF8FF]|\/|\?)*)?(\#((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|\/|\?)*)?$/i);
	return pattern.test(address);
}

$(document).ready(function(){
	labeler.init('#area label');

	var queryhash = window.location.hash;
	if (queryhash == '' || queryhash == '#contact')
		queryhash = '#about';

	$(queryhash).addClass('active');
	$('div.block:not(.active), #contact').hide();
	$('a[href="'+queryhash+'"]').parent().addClass('current');

	Cufon('.alter, h2');
	Cufon.replace('.alter-shadow, #navigation a', {
		textShadow: '#fff 1px 1px',
		hover: true
	});

	$('#navigation a').click(function(){
		var target = $(this).attr('href');
		if ($(target).hasClass('active')) {}
		else if ($(target).hasClass('block')) {
			$('.block.active').slideUp().removeClass('active');
			$(target).slideDown('slow').addClass('active');
			$('#navigation li.current').removeClass('current');
			$(this).parent().addClass('current');
			Cufon.refresh();
		}
	});

	$('#contact-link a').click(function(e){
		e.preventDefault();
		var mtop = (($(window).height() - $('#contact').height()) / 2) - 60;
		$('#contact').animate({left:0,top:mtop,height:"auto"}, 'slow');
		$('#wrapper').before('<div id="over"></div>').fadeIn();
		$('#over').css('opacity','.75');
	});

	$('#close').click(function(e){
		e.preventDefault();
		//$('#contact').fadeOut('slow');
		var mtop = (($(window).height() - $('#contact').height()) / 2) + $('#contact').height();
		$('#contact').animate({left:0,top:-mtop,height:"auto"}, 'slow');
		$('#over').fadeOut().remove();
	});

	$('#contact form').submit(function(e){
		var form = $(this);

		form.find('.msg').remove();
		$(':input', form).removeClass('empty');

		if ($(this).isValid()) {
			form.ajaxify(true);
		} else {
			form.prepend('<div class="msg error">Completar</div>');
			$(form).find('.empty').stop()
				.animate({ left: "-10px" }, 100).animate({ left: "10px" }, 100)
				.animate({ left: "-10px" }, 100).animate({ left: "10px" }, 100)
				.animate({ left: "0px" }, 0);
			return false;
		}
		e.preventDefault();
		return true;
	});
});
