if(!console) { var console = { log: function(){ } }; }

$(document).ready(function(){
	// Track outgoing links
	$('a[href*=http://]').click(function(){
		pageTracker._trackPageview('/outgoing/' + $(this).attr('href').substring('http://'.length));
		return true;
	});
	
	$('div.job p.details img, #jobs li.pro strong')
		.attr('title', 'Esta empresa investe em buscar gente talentosa e escolheu comprar um anúncio Na Labuta Pro')
		.tooltip({fade: true, delay: 100, showURL: false, top: 2, left: 2});
	
	// Home tabs
	if($('#list')[0]) {
		// Listing and HTML for filters
		$('#categories ul').prepend('<li class="selected"><a href="#all"><span>&nbsp;</span>Tudo</a></li>');
		var count = {
			'fulltime': $('#jobs li.fulltime').length,
			'freelance': $('#jobs li.freelance').length,
			'intern': $('#jobs li.intern').length
		};
		$('#filter').append(''
				+ '<label><input type="hidden"   class="checkbox" name="category" value="all" /></label>'
				+ '<label><input type="checkbox" class="checkbox" name="fulltime" checked="checked" /> Empregos <em>(' + count.fulltime + ')</em></label>'
				+ '<label><input type="checkbox" class="checkbox" name="freelance" checked="checked" /> Freelas <em>(' + count.freelance + ')</em></label>'
				+ '<label><input type="checkbox" class="checkbox" name="intern" checked="checked" /> Estágios <em>(' + count.intern + ')</em></label>'
				);
		$('#categories ul li a')
			.hover(function(){
				if($(this).parent().hasClass('selected')) return;
				$(this).stop().fadeTo(200, .5);
			}, function(){
				$(this).stop().fadeTo(200, 1);
			}).click(function(){
				$('#categories ul li').removeClass('selected');
				$(this).parent().addClass('selected');
				$('#filter input:hidden').val($(this).attr('href').split('#')[1]);
				$(this).stop().fadeTo(100, 1);
				filter();
				return false;
			}
		);
		
		// RSS
		$('#filter p a').hover(function(){ $('#rss').slideDown(200); }, function(){}).click(function(){ return false; });
		$('#rss')
			.hide()
			.addClass('enhanced')
			.css({left: $('#filter p').offset().left - 24, top: $('#filter p').offset().top})
			.hover(function(){}, function(){ $(this).slideUp(200); });
		
//		$("#jobs li").tsort('input', {'order': 'desc', 'attr': 'val'});
		$('#jobs li').each(function(){
			var text = $('strong', this).text() + ' ' + $('a', this).text() + ' ' + $('em', this).text(); 
			$(this)
				.addClass('enhanced')
				.attr('text', text.toLowerCase().replace(/  /g, ' '))
				.click(function(event){
					window.location.href = $('a', this).attr('href');
				});
		});
		
		// Filtering
		$('#filter input:checkbox').click(function(){ filter(); });
		var filter = function(){
			var queryItems = [];
			var query = '';
			var queryBase = '#jobs li';
			
			// Restrict the filter to the selected category
			if($('#filter input:hidden').val() != 'all') queryBase += '.' + $('#filter input:hidden').val();
			
			// Restrict to the checked types
			$('#filter input.checkbox').each(function(){
				if($(this).is(':checked')) {
					queryItems.push(queryBase + '.' + $(this).attr('name'));
				}
			});
			
			// Add search restriction
			if($('#search input').val() != $('#search input').data('idle') && $('#search input').val() != '') {
				$.each(queryItems, function(i, item){
					queryItems[i] = item + '[text*=' + $('#search input').val().toLowerCase() + ']';
				});
			}
			
			// Turn this into a jQery selector string and apply the filter visually
			query = queryItems.join(', ');
			if(query.length == 0) {
				$('#jobs li').slideDown(190);
			} else {
				$('#jobs li:not(' + query + ')').slideUp(200);
				$(query).slideDown(200);
			}
		}
		
		$('#categories').append('<div id="search"><input type="text" name="city" value="" /><span class="bgimage">x</span></a>');
		$('#search span').hide().click(function(){
			$(this).fadeOut(200).prev().val('');
			$(this).prev().blur();
			filter();
		});
		$('#search input').keyup(function(){
			if($(this).val() != '') {
				$('#search span').fadeIn(200);
			} else {
				$('#search span').fadeOut(200);
			}
			filter();
		});
		/*
		$('#search input').data('idle', $('#search input').val());
		$('#search input').focus(function(){
			if($(this).val() == $(this).data('idle')) $(this).val('');
		}).blur(function(){
			if($(this).val() == '') $(this).val($(this).data('idle'));
		}).keyup(function(){
			if($(this).val() != '') $('#search span').fadeIn(200);
			filter();
		});
		*/
	}
	
	// Post job form
	if($('form.job')[0]) {
		// First focus, etc
		if(!('#flashMessage')[0]) $('#JobEmail').focus();
		$('#JobCity').parent().removeClass('required');
		$('#JobAnywhere').parent().removeClass('required');
		$('div.required label').append(' <span>*</span>');
		
		// Location Fields
		$.getJSON('/locations/cities.js', function(data){
			$('#JobCity').autocomplete(data, { minChars: 0, selectFirst: false, formatItem: function(row, i, total) { return row.city; } });
			$('#JobCity').result(function(event, data, formatted){
				if(data.state) {
					$('#JobState').val(data.state);
					$('#JobTitle').focus();
				} else $('#JobState').focus();
			});
		});
		$.getJSON('/locations/states.js', function(data){
			$('#JobState').autocomplete(data, { minChars: 0, selectFirst: false, formatItem: function(row, i, total) { return row.state; } });
			$('#JobState').result(function(event, data, formatted){
				$('#JobTitle').focus();
			});
		});
		
		var state = $('#JobState').remove();
		$('#JobCity').after(state);
		$('label[for=JobState]').parent().remove();
		var handleLocation = function(){
			if($('#JobAnywhere').attr('checked')) {
				$('#JobLocation').fadeTo(200, .3, function(){ $('#JobLocation input, #JobLocation select').attr('disabled', 'disabled'); });
				$('#JobLocation .error-message').fadeTo(350, 0);
			} else {
				$('#JobLocation').fadeTo(200, 1, function(){ $('#JobLocation input, #JobLocation select').removeAttr('disabled'); });
				$('#JobLocation .error-message').fadeTo(350, 1);
			}
		}
		$('#JobAnywhere').bind('click', handleLocation);
		handleLocation();
		
		// Freelance = anywhere, etc
		$('#JobType').change(function(){
			if($(this).val() == '2') {
				if($('#JobCity').val() == '') {
					$('#JobAnywhere').attr('checked','checked');
					handleLocation();
				}
			} else {
				if(!$(this).data('changed')) {
					$('#JobAnywhere').removeAttr('checked');
					handleLocation();
				}
				$(this).data('changed', true);
			}
		});
		
		// Terms agreement
		$('#JobAgree').parent().addClass('job-agree');
		
		// WYSIWYG
		$('textarea.wysiwyg').fck({height: '320px', width: '530px', path: '/js/fckeditor/', config: {CustomConfigurationsPath: '/js/public.fckconfig.js'}, toolbar: 'Public'});
	}
	
	// Share by e-mail
	if($('li#share-email')[0]) {
		$('li#share-email a')
			//.attr('href', $('li#share-email a').attr('href'));
			.click(function(){
				if($('form#ShareAddForm')[0]) {
					$('#ShareFromName').focus();
				} else {
					$.get($(this).attr('href'), null, function(data){
						$('div.share').append(data);
						layoutCorrections();
						$('#ShareFromName').focus();
						$('#ShareAddForm').prepend('<div style="display:none" class="result"></div>');
						$('#ShareAddForm div.submit').append('<span class="indicator bgimage">Enviando...</span>');
						$('#ShareAddForm div.submit>span').fadeTo(5, 0);
						$('#ShareAddForm').submit(function(){
							$form = this;
							$('.error-message', $form).slideUp(100, function(){ $(this).remove() });
							$('#ShareAddForm .result').slideUp(100, function() {$(this).empty(); });
							$('#ShareAddForm div.submit>span').fadeTo(100, 1);
							$.post($(this).attr('action') + '.js', $(this).serialize(), function(data){
								var message = '';
								if(data && data.success) {
									$('input:text, textarea', $form).val('');
									$('#ShareFromName').focus();
									message = 'Sua mensagem foi enviada. Esperamos que seu amigo goste!';
								} else {
									if(data.validation) {
										var i = 0;
										var first = -1;
										$.each(data.validation, function(i, val){
											if(first < 0) first = i;
											$('[name="data[Share][' + i + ']"]').after('<div class="error-message">' + val + '</div>');
										});
										$('[name="data[Share][' + first + ']"]').focus();
									} else {
										message = 'Ocorreu um erro enviando sua mensagem.';	
									}
								}
								$('div.submit>span', $form).fadeTo(300, 0);
								$('div.result', $form).html(message).slideDown(300);
							},'json');
							return false;
						});
					});
				}
				return false;
			});
	}
	
	// Layout corrections
	function layoutCorrections() {
		$('div.input').addClass('cleared');
		if($.browser.mozilla) $('button span, .button span').css('margin-right', '-2px');
	}
	layoutCorrections();
	
	// AJAX contact form
	if($('#ContactSendForm')[0]) {
		$('#ContactSendForm button').wrap('<div class="submit"></div>');
		$('#ContactSendForm div.submit').append('<span class="indicator bgimage">Enviando...</span>');
		$('#ContactSendForm div.submit').after('<div style="display:none" class="result"></div>');
		$('#ContactSendForm div.submit>span').fadeTo(5, 0);
		$('#ContactSendForm').submit(function(){
				$form = $(this);
				$('div.submit>span', $form).fadeTo(100, 1);
				$('div.result', $form).slideUp(100);
				$('div.error-message').slideUp(100, function(){ $(this).remove(); })
				$.post($(this).attr('action') + '.js', $(this).serialize(), function(data){
					var message = '';
					if(data && data.success) {
						$('input:text, textarea', $form).val('');
						message = 'Sua mensagem foi enviada, obrigado.';
					} else {
						if(data.validation) {
							var i = 0;
							var first = -1;
							$.each(data.validation, function(i, val){
								if(first < 0) first = i;
								$('[name="data[Contact][' + i + ']"]').after('<div class="error-message">' + val + '</div>');
							});
							$('[name="data[Contact][' + first + ']"]').focus();
						} else {
							message = 'Ocorreu um erro enviando sua mensagem.';	
						}
					}
					$('div.submit>span', $form).fadeTo(300, 0);
					$('div.result', $form).html(message).slideDown(300);
				},'json');
				return false;
			});
	}
});