/* *********************************************************************
 * Projete Web, js/base.js
 * *********************************************************************/
$(function() {	
	
	$('[title]').tipTip();
	
	initForms();
	
	initHeader();
	
	initMenu();
	
	initBusca();
	
	initTwitter();
	
	initServicos();
	
	initPortfolio();
	
	if (controller == 'index') {
		initSlideshow();
	}

	if (controller != 'portfolio') { // Conflito com colorbox
		initSyntaxHighlighter();
	}
	
	if (controller == 'localizacao') {
		initMaps();
	}
	
	$('.addthis_button').each(function (i) {
		$(this).attr('addthis:title', $('.blog-titulo a').eq(i).text());
		$(this).attr('addthis:url', 'http://' + location.hostname + $('.blog-titulo a').eq(i).attr('href'));		
	});
	
	// Nova janela para links externos
	$('a[href^=http]').click(function(e) {
		e.preventDefault();
		window.open($(this).attr('href'));
	});
	///////////////////////////////
	
	
	
	
}); // Fim do ready

/* *********************************************************************
 * Header
 * *********************************************************************/
function initHeader() {
	$('.close-box').click(function(e) {
		e.preventDefault();
		$('.box-full').slideUp(500);
	});
	
	$('#mail').click(function(e) {
		e.preventDefault();
		$('#box-contato').slideToggle(500);
	});
	
}

/* *********************************************************************
 * Menu
 * *********************************************************************/
function initMenu() {
	$(".nav").lavaLamp({
		fx: "backout",
		speed: 700	
	});
}

/* *********************************************************************
 * Slideshow
 * *********************************************************************/
function initSlideshow() {
	$(window).load(function() {
		$('#slider').nivoSlider({
			effect: 'random', //Specify sets like: 'fold,fade,sliceDown'
			pauseTime: 4000,
			directionNav: false
		});
	});
	/*$.ajax({
		url: baseUrl+'/ajax/slide',
		dataType: 'json',
		type: 'get',
		
		beforeSend: function() {
			//$('#mascara').show();
		},
		complete: function() {
			//$('#mascara').hide();
		},
		success: function(data) {
			for(var i = 0; i < data.length; ++i){
	            $('#slider').append($(data[i]));
	        }
			$('#slider').nivoSlider({
				effect: 'random', //Specify sets like: 'fold,fade,sliceDown'
				pauseTime: 4000,
				directionNav: false
			});
		}
	});*/
}

/* *********************************************************************
 * Maps - Localização
 * *********************************************************************/
function initMaps() {
	// Google Maps
	$('#form-mapa input[type="text"]').focusin(function() {
		if ($(this).val() == 'Endereço') {$(this).val('');}
	});
	$('#form-mapa input[type="text"]').focusout(function() {
		if ($(this).val() == '') {$(this).val('Endereço');}
	});
	
	$('#form-mapa').submit(function(e) {
		e.preventDefault();
		if ($('#form-mapa input[type="text"]').val().length < 3 || $('#form-mapa input[type="text"]').val() == 'Endereço') {
			$('.dialogs').text('Sua busca deve conter pelo menos 3 caracteres!').dialog({
				title: 'Atenção',
				modal: true,
				resizable: false,
				buttons: {
					Ok: function() {
						$(this).dialog('close');
						$('#form-mapa input[type="text"]').focus();
					}
				}
			});
		}
		else {
			tracarRota();
		}
	});
	loadMaps();
	/////////////////////////////
}

/* *********************************************************************
 * Twitter
 * *********************************************************************/
function initTwitter() {
	String.prototype.parseURL = function() {
		return this.replace(/[A-Za-z]+:\/\/[A-Za-z0-9-_]+\.[A-Za-z0-9-_:%&\?\/.=]+/g, function(url) {
			return url.link(url);
		});
	};
	 
	String.prototype.parseUsername = function() {
		return this.replace(/[@]+[A-Za-z0-9-_]+/g, function(u) {
			var username = u.replace("@","");
			return u.link("http://twitter.com/"+username);
		});
	};
	 
	String.prototype.parseHashtag = function() {
		return this.replace(/[#]+[A-Za-z0-9-_]+/g, function(t) {
			var tag = t.replace("#","%23");
			return t.link("http://search.twitter.com/search?q="+tag);
		});
	};
	
	$.ajax({
		url: baseUrl+'/ajax/twitter',
		
		beforeSend: function() {
			//$('#mascara').show();
		},
		complete: function() {
			$('#destaque-twitter #twitter-loader').hide();
		},
		success: function(data) {
			$('#footer-content #bird').attr('title', data[0]['text']).tipTip();
						
			for(var i = 0; i < data.length; ++i){
				var border = (i < 2) ? 'border' : '';
				$('#destaque-twitter ul').append('<li class="'+border+'">'+data[i]['text'].parseURL().parseUsername().parseHashtag()+'</li>');
	        }
		}
	});
}

/* *********************************************************************
 * Busca
 * *********************************************************************/
function initBusca() {
	$('#busca, #form-busca #close-form-busca').click(function(e) {
		e.preventDefault();
		$('#form-busca').toggle('normal');
		$('#form-busca input[type="text"]').focus();
	});
	
	/*$('#busca').parent().hover(
		function() {
			
			$('#form-busca input[type="text"]').focus();
			$(this).find('form').fadeIn('normal');
		},
		function() {
			$(this).find('form').fadeOut('normal');
		}
	);*/
	
	$('#form-busca').submit(function(e) {
		e.preventDefault();
		if ($('#form-busca input[type="text"]').val().length < 3) {
			$('.dialogs').text('Sua busca deve conter pelo menos 3 caracteres!').dialog({
				title: 'Atenção',
				modal: true,
				resizable: false,
				buttons: {
					Ok: function() {
						$(this).dialog('close');						
					}
				}
			});
		} else {
			$.ajax({
				url: baseUrl+'/ajax/busca',
				dataType: 'html',
				type: 'post',
				data: $('#form-busca').serialize(),
				
				beforeSend: function() {
					$('#form-busca label').text('Carregando...');
				},
				complete: function() {
					$('#form-busca label').text('Busca:');
					$('#form-busca').hide('normal');
				},
				success: function(data) {
					$('.dialogs').html(data).dialog({
						title: 'Encontrados com o termo "'+$('#form-busca input[type="text"]').val()+'"',
						modal: true,
						width: 500
					});
				}
			});
		}
	});
}

/* *********************************************************************
 * Formulários
 * *********************************************************************/
function initForms() {
	// Form contato
	$('#form-contato').submit(function(e) {
		e.preventDefault();
		
		if ($(this).valid()) {
			$.ajax({
				url: $(this).attr('action'),
				dataType: 'html',
				type: 'post',
				data: $(this).serialize(),
				
				beforeSend: function() {
					$('#form-contato input[type="submit"]').val('Enviando');
				},
				complete: function() {
					$('#form-contato input[type="submit"]').val('Enviar');
				},
				success: function(data) {
					if (data == 'sucesso') {
						$('.dialogs').html('Mensagem enviada com sucesso!').dialog({
							title: 'Sucesso',
							modal: true,
							resizable: false,
							buttons: {
								Ok: function() {
									validFormContato.resetForm();
									$('#form-contato input[type="text"], #form-contato textarea').val('');
									$(this).dialog('close');
								}
							}
						});
					} else {
						$('.dialogs').html(data).dialog({
							title: 'Atenção',
							modal: true,
							resizable: false,
							buttons: {
								Ok: function() {
									$(this).dialog('close');
								}
							}
						});
					}
				}
			});
		}
	});
	
	var validFormContato = $('#form-contato').validate({
		rules: {
			nome: {
				required: true,
				maxlength: 100
			},
			assunto: {
				required: true,
				maxlength: 100
			}
		}
	});
	
	// Form contato box
	$('#form-box').submit(function(e) {
		e.preventDefault();
		
		if ($(this).valid()) {
			$.ajax({
				url: $(this).attr('action'),
				dataType: 'html',
				type: 'post',
				data: $(this).serialize(),
				
				beforeSend: function() {
					$('#form-box input[type="submit"]').val('Enviando');
				},
				complete: function() {
					$('#form-box input[type="submit"]').val('Enviar');
				},
				success: function(data) {
					if (data == 'sucesso') {
						$('.dialogs').html('Mensagem enviada com sucesso!').dialog({
							title: 'Sucesso',
							modal: true,
							resizable: false,
							buttons: {
								Ok: function() {
									validFormBox.resetForm();
									$('#form-box input[type="text"], #form-box textarea').val('');
									$(this).dialog('close');
								}
							}
						});
					} else {
						$('.dialogs').html(data).dialog({
							title: 'Atenção',
							modal: true,
							resizable: false,
							buttons: {
								Ok: function() {
									$(this).dialog('close');
								}
							}
						});
					}
				}
			});
		}
	});
	
	var validFormBox = $('#form-box').validate({
		rules: {
			nome: {
				required: true,
				maxlength: 100
			},
			assunto: {
				required: true,
				maxlength: 100
			}
		}
	});
}

/* *********************************************************************
 * Serviços
 * *********************************************************************/
function initServicos() {
	$('#lista li .mais').click(function(e) {
		$(this).parent().siblings().find('.serv-desc').slideUp();
		$(this).parent().find('.serv-desc').slideToggle();
		
		$(this).parent().siblings().find('.serv-resumo').removeClass('serv-resumo-open');
		$(this).parent().find('.serv-resumo').toggleClass('serv-resumo-open');
		
		e.preventDefault();
	});
}

/* *********************************************************************
 * Portfólio
 * *********************************************************************/
function initPortfolio() {
	$("a[rel='colorbox']").colorbox();	
	$('#portfolio li a img').hover(function(){
		$(this).stop().animate({"opacity": "0.35"},{queue:false,duration:300});
	}, function() {
		$(this).stop().animate({"opacity": "1"},{queue:false,duration:300});
	});
}

/* *********************************************************************
 * SyntaxHighlighter
 * *********************************************************************/
function initSyntaxHighlighter() {
	function path() {
		var args = arguments,
		result = [];
		
		for(var i = 0; i < args.length; i++) {
			result.push(args[i].replace('@', baseUrl+'/default/js/syntaxhighlighter/'));
		}
		return result;
	};
		 
	SyntaxHighlighter.autoloader.apply(null, path(
		'applescript            @shBrushAppleScript.js',
		'actionscript3 as3      @shBrushAS3.js',
		'bash shell             @shBrushBash.js',
		'coldfusion cf          @shBrushColdFusion.js',
		'cpp c                  @shBrushCpp.js',
		'c# c-sharp csharp      @shBrushCSharp.js',
		'css                    @shBrushCss.js',
		'delphi pascal          @shBrushDelphi.js',
		'diff patch pas         @shBrushDiff.js',
		'erl erlang             @shBrushErlang.js',
		'groovy                 @shBrushGroovy.js',
		'java                   @shBrushJava.js',
		'jfx javafx             @shBrushJavaFX.js',
		'js jscript javascript  @shBrushJScript.js',
		'perl pl                @shBrushPerl.js',
		'php                    @shBrushPhp.js',
		'text plain             @shBrushPlain.js',
		'py python              @shBrushPython.js',
		'ruby rails ror rb      @shBrushRuby.js',
		'sass scss              @shBrushSass.js',
		'scala                  @shBrushScala.js',
		'sql                    @shBrushSql.js',
		'vb vbnet               @shBrushVb.js',
		'xml xhtml xslt html    @shBrushXml.js'
	));
	SyntaxHighlighter.all();
}
