// JavaScript Document

$(document).ready(function() {
	//select das cidades
	$('#fieldCity').change(function() {
		document.location.href = '/' + $(this).val();
	});
	
	//fotos de destaque da página inicial
	$('#detail, #miniPhotos h3').click(function(e) {
		document.location.href = $(this).find('a').attr('href');
	});

	//busca detalhada
	$('#marca_id').change(function() {
		var $this = $(this);
		var $field = $('#modelo_id');

		if ($this.val() == '' || $this.val() == '0') {
			$field.html('<option value="">Modelo</option>').disableElement(true);
			return;
		}

		$.ajax({
			type: "POST",
			dataType: 'json',
			url: "/" + $this.parent().attr('class') + "/index/modelos/id/" + $this.val(),
			beforeSend: function() {
				$field.html('<option value="">Loading...</option>').disableElement(true);
			},
			success: function(j) {
				if (j.length == 0) {
					$field.html('<option value="">Erro...</option>');
				} else {
					var options = '<option value="">Modelo</option><option value=""></option>';
					for (var i = 0; i < j.length; i++) {
						options += '<option value="' + j[i].id + '">' + j[i].n + '</option>';
					}
					$field.html(options).disableElement(false);
				}
			},
			error: function(txt) {
				$field.html('<option value="">Erro...</option>').disableElement(true);
			}
		});
	});
	
	//botão da busca detalhada
	$('#searchForm button').click(function() {
		var $form = $('#searchForm');
		var url = $form.attr('action');
		$form.find('select').each(function(index,element) {
			$element = $(element);
			if ($element.val() != '' && $element.val() != '0') {
				url += '/' + $element.attr('name') + '/' + $element.val();
			}
		});
		if ($form.attr('action') == url) {
			if (jQuery.browser.msie && (jQuery.browser.version == '6.0' || jQuery.browser.version == '7.0')) {
				$('#tipos_veiculos_id').css({backgroundColor: '#fcc'}).change(function() {$(this).css({backgroundColor: '#fff'})});
			} else {
				$('#tipos_veiculos_id').css({border: '2px solid #f00'}).change(function() {$(this).css({border: '1px solid #ddd'})});
			}
		} else {
			document.location.href = url;
		}
		return false;
	});
});

var errForm = function(error, element) {
	var $element = $(element);
	if (error.html() == '') {
		$element.parent().find('ul.errors').slideUp();
	} else {
		var li = '<li>' + error.html() + '</li>';
		var ul = $element.parent().find('ul.errors');
		if (ul.size() > 0) {
			ul.html(li).slideDown();
		} else {
			$element.after('<ul class="errors">' + li + '</ul>');
		}
	}
};

function processFotosAndFormVeiculo(recaptcha) {
	$fotospq = $('#fotospq a');
	$fotospq.each(function(index) {
		var id = 'fotogr_' + (index+1);
		var $imggr = $('<img id="' + id + '" width="654" height="414" />').hide();
		var $this = $(this).attr('class',id);
		var $imgpq = $(this).find('img');
		var src = $imgpq.attr('src');
		var alt = $imgpq.attr('alt');
		
		var newSrc = src.replace(/-pp\.([^\.]+)$/,'.$1');
		
		$imggr.attr('alt',alt);
		$imggr.attr('src',newSrc);
		$('#fotogr').append($imggr);
		
		$this.click(function() {
			var $a = $(this);
			var $img = $a.find('img');
			var idgr = $a.attr('class');
			var $imggr = $('#fotogr').find('img:visible');
			var classpq = $imggr.attr('id');
			var src = $imggr.attr('src');
			var alt = $imggr.attr('alt');
			
			var newSrc = src.replace(/\.([^\.]+)$/,'-pp.$1');
			
			var $imgpq = $('<img width="144" height="94" />').hide();
			$imgpq.attr('alt',alt);
			$imgpq.attr('src',newSrc);
	
			$a.append($imgpq).attr('class',classpq);
			
			$imgpq.slideDown();
			$img.slideUp(400,function() {
				$(this).remove();
			});
			
			$imggr.slideUp();
			$('#' + idgr).slideDown();
		});
	});
	$('#telefone').mask('(99) 9999-9999');
	$('#mensagem').keyup(function(event) {
		var len = $(this).val().length;
		var $count = $('#countProposta');
		var max = $count.attr('rel');
		$count.text(max-len);
	}).keypress(function(event) {
		if (event.keyCode != 0 && event.keyCode != 13) return;
		var len = $(this).val().length;
		var max = $('#countProposta').attr('rel');
		if (len >= max) event.preventDefault();
	});
	$('#proposta').validate({
		submitHandler: function(form) {
			var $flashMessage = $('#flashMessage');
			var div = $('<div id="flashMessage"><a href="javascript:void(0);" onclick="$(this).parent().dequeue().slideUp();">X</a><ul></ul></div>').hide();
			$.ajax({
				url: $(form).attr('action'),
				dataType: 'json',
				type: 'post',
				data: 'ajax=true&' + $(form).serialize(),
				beforeSend: function() {
					$(form).find('input,textarea').disableElement(true).filter('input:submit').val('Enviando...');
				},
				success: function(j) {
					if ($flashMessage.size() == 0) {$flashMessage = $(form).before(div).prev();}
					$flashMessage.find('ul').html('<li>' + j.e + '</li>');
					$flashMessage.slideDown(500).delay(3000).slideUp(500);
					$inputs = $(form).find('input,textarea').disableElement(false);
					$inputs.filter('input:submit').val('Enviar');

					if (j.c) {
						$('#recaptcha').html(j.c);
					} else {
						recaptchaProposta(recaptcha);
					}
					if (j.ok) {
						$inputs.filter('input:text,textarea').val('');
					} else {
						for (r in j) {
							if (r != 'e') {
								var e = eval('j.' + r);
								for (er in e) {
									if (r == 'captcha') r = 'captcha-input';
									var msg = eval('e.' + er);
									var $ul = $('#' + r).parent().find('ul.errors');
									if ($ul.size() == 0) {
										$('#' + r).after('<ul class="errors"><li>' + msg + '</li></ul>');
									} else {
										$ul.slideDown().find('li').html(msg);
									}
								}
							};
						}
					}
				},
				error: function(obj, txt) {
					if ($flashMessage.size() == 0) {$flashMessage = $(form).before(div).prev();}
					$flashMessage.find('ul').html('<li>Ocorreu um erro no envio da proposta</li>');
					$flashMessage.slideDown(500).delay(3000).slideUp(500);
					$(form).find('input,textarea').disableElement(false).filter('input:submit').val('Enviar');
					recaptchaProposta(recaptcha);
				}
			});
			return false;
		},
		errorElement: 'li',
		className: 'errField',
		rules: {
			nome: 'required',
			email: {
				required: true,
				email: true
			},
			telefone: 'required',
			mensagem: 'required',
			'captcha[input]': 'required'
		},
		messages: {
			nome: 'Campo obrigat&oacute;rio',
			telefone: 'Campo obrigat&oacute;rio',
			email: {
				required: 'Campo obrigat&oacute;rio',
				email: 'e-mail inv&aacute;lido'
			},
			mensagem: 'Campo obrigat&oacute;rio',
			'captcha[input]': 'Campo obrigat&oacute;rio'
		},
		errorPlacement: errForm,
		success: function(label) {} 
	});
}

function recaptchaProposta(url) {
	$.ajax({
		url: url,
		dataType: 'html',
		success: function(html) {
			$('#recaptcha').html(html);
		}
	});
}

