$(function(){
	$(".nav dt").click(function(e){
		e.preventDefault();
		slideToggleNavMenu(this, null, null);
	});	
	
	setAutoCompleteToSearch();
	
	$.fn.serializePost = function() {  
        var data = {};  
        var formData = this.serializeArray();  
        for (var i = formData.length; i--;) {  
            var name = formData[i].name;  
            var value = formData[i].value;  
            var index = name.indexOf('[]');  
        if (index > -1) {  
            name = name.substring(0, index);  
            if (!(name in data)) {  
                data[name] = [];  
            }  
            data[name].push(value);  
        }  
        else  
            data[name] = value;  
	    }  
	    return data;
	};
	
	$(".novo_captcha").click(function(e){
		e.preventDefault();
		var $form = $(this).closest('form');
		reloadCaptcha($form);
	});
	
	$('#select_tipofesta').selectCustomizer({
		onSelect: function(value){
			if (value != ""){
				$('[name="select_tipofesta"]').closest("form").submit();
			}
		}
	});
	
	$('#select_bairro').selectCustomizer({
//		formatItem: function(item, value){
//			return '<span><a href="'+value+'">'+item+"</a></span>"; 
//		}
		onSelect: function(){
			$('[name="select_bairro"]').closest("form").submit();
		}
	});	

	$('#franquias').slimscroll({
		color: '#a0c7e6', //f7801c
		size: '8px',
		railVisible: true,
		railColor: '#455663', //85450f
		railOpacity: 0.4,
		opacity: 0.7,
		width: 220,
		height: 280
	});
});

function slideToggleNavMenu(menuNav, open, durationSlide){	
	var dt = $(menuNav);
	var dd = dt.next();	
	durationSlide = durationSlide !== null ? durationSlide : 650;
	
	var imgO = dt.find(".open");
	var imgC = dt.find(".close");
	
	if (dt.data("open") == undefined){
		var b = open !== null ? open : imgC.css("opacity") == 1 ? true : false;
		dt.data("open", b);
	}
	
	var o = open !== null ? open : !dt.data("open"); 
	
	if (o){
		imgO.fadeTo("slow", 0);
		imgC.fadeTo("slow", 1);
		dd.slideDown(durationSlide);
		dt.data("open", true);
	}else{
		imgO.fadeTo("slow", 1);
		imgC.fadeTo("slow", 0);		
		dd.slideUp(durationSlide);
		dt.data("open", false);
	}

	//console.log("open : " + open);
	//console.log("dt.data('open') : " + dt.data("open"));
}

function fixThumbsHeight(eles){
	eles = $(eles);
	var h = 0, hc = 0;
	var e = [];
	eles.each(function(index, ele) {			
		hc = $(ele).height();
		tc = $(ele).position().top; //top current		
		if (hc > h) {
			h = hc;
		}
		e.push(ele);
		if ((index+1) == eles.length || $(eles[index+1]).position().top != tc){
			//console.log(ele + " : " + $(eles[index+1]).position().top + " : " + tc);
			for (var i = 0; i < e.length; i++ ){
				$(e[i]).css("height", h + "px");
			}			
			e = [];
			h = 0;
		}		
	});
}

function format(item) {
	return item.cidade + " - " + item.estado;
}

var valueCidade = "";
function setAutoCompleteToSearch(){
	$("#cidade_search").autocomplete(baseUrl + "/async/get-cidades", {
		width: 326,
		scrollHeight: 350,
		delay:100,
		matchContains: true,
		selectFirst: true,
		autoFill: true,
		dataType: "json",
		parse: function(data) {
			return $.map(data, function(row) {
				return {
					data: row,
					value: row.cidade,
					result: row.cidade + " - " + row.estado
				};
			});
		},
		formatItem: function(item) {
			return format(item);
		}
	}).result(function(e, item) {
		var form = $("#cidade_search").closest("form");
		form.find('[name="cidadeSel"]').val(item.cidade);
		form.find('[name="estadoSel"]').val(item.estado);
	}).focus(function(){
		var $this = $(this);
		if (!valueCidade){
			valueCidade = $this.val();
		}
		$this.val("");
	}).blur(function(){
		var $this = $(this);
		if ($this.val() == ""){
			$this.val(valueCidade);
		}
	});	
}

function reloadCaptcha(form){
	var $form = $(form);
	$.ajax({ 
        url: baseUrl + '/async/reload-captcha', 
        dataType:'json',
        success: function(data){
        	$form.find('img[name="captcha_img"]').attr('src', data.src);  
        	$form.find('input[name="captcha[id]"]').attr('value', data.id);
        	$form.find('input[name="captcha[input]"]').val('');
        }
    }); 
}

/*=====email======*/

function build_wrapper_steps_form(ele){
	$(ele).carouFredSel({
		auto: false,
		circular: true,
		infinite: true,
		align:"left",
		items:{
			visible: 1
		},
		scroll: {
			items: 1,
			duration: 600,
			easing: "easeInOutQuint"
		}
	});
}

var fieldsErrors = {};
function validateAndSendEmail(form, urlValidate, urlSend, onValidComplete, onInValidComplete, onSendComplete, onNotSendComplete){
	var fs = $(form).serializePost();
	var $form = $(form);
	$.post( urlValidate, fs,
		function( data ) {
			var fe = fieldsErrors[$form.attr("id")];
			
			if(fe === undefined){				
				fieldsErrors[$form.attr("id")] = fe = [];
			}
			$(fe.join(", ")).each(function(){
				$(this).parent().find(".form_error").remove();
			});
			fe.splice(0, fe.length);
			
			if (data.valid){
				onValidComplete(data);
				sendEmail(urlSend, fs, onSendComplete, onNotSendComplete);
				reloadCaptcha(form);
			}else{
				if (typeof(onInValidComplete) == "function") onInValidComplete(data);
				var errors = "Campo(s) com * são obrigatório(s).\n\nSão eles:\n\n";								
				for (var i=0; i<data.fieldsError.length; i++){					
					fe.push("#" + data.fieldsError[i].field);
					errors += "- " + data.fieldsError[i].title + "\n";
				}
				$(fe.join(", ")).before('<span class="form_error">*</span>');
				if (fe.length) {$(fe[0]).focus();}
				alert(errors);
				if (data.fieldsError.length == 1 && data.fieldsError[0].title == "Código de validação"){
					reloadCaptcha(form);
				}
			}
	}, 'json');
}

function sendEmail(url, formSerialized, onSendComplete, onNotSendComplete){
	$.post( url, formSerialized,
		function( data ) {			
			if (data.sended){		
				onSendComplete(data);				
			}else{
				//console.log(data);
				onNotSendComplete(data);				
			}
	}, 'json');
}

function shareFb(e){
	e.preventDefault();
	FB.ui({
		method: 'feed',
		name: e.data.url,
		link: e.data.url,
		picture: e.data.picture,
		caption: e.data.caption,
		description: e.data.description,
		message: 'Deixe uma mensagem aqui para seus amigos'
	});
}
