jQuery(function($){$('#cnpj').mask("99.999.999/9999-99");});
jQuery(function($){$('#cpf').mask("999.999.999-99");});
jQuery(function($){$('#cep').mask("99999-999");});
jQuery(function($){$('.time').mask("99:99");});
jQuery(function($){$('#date').mask("99/99/9999");});
jQuery(function($){$('.date').mask("99/99/9999");});

maskphone('phone');
maskphone('whatsapp');
maskphone('register-phone');

function maskphone(id) {
	if (document.getElementById(id)) {
		var mask = "";
		if (document.getElementById(id).value.length == 14) {
			mask = "(99) 9999-9999";
		} else {
			mask = "(99) 99999-9999";
		}
		//Mask
		jQuery(function($){$('#' + id).mask(mask).focusout(function (event) {
			var target, phone, element;  
		    target = (event.currentTarget) ? event.currentTarget : event.srcElement;  
		    phone = target.value.replace(/\D/g, '');
		    element = $(target);  
		    element.unmask();
		    if (phone.length == 10) {
		        element.mask("(99) 9999-9999");
		    } else {  
		        element.mask("(99) 99999-9999");
		    }  
		});});
		document.getElementById(id).addEventListener('keydown', function (event) {
		    if (event.keyCode == 8) {
		    	this.mask("(99) 99999-9999");  
		    }
		    if (event.keyCode == 46) {
		    	this.mask("(99) 99999-9999");
		    }
		});
	}
}

function toggleVisibility(id) {
	var e = document.getElementById(id);
	if (e.style.display == 'block') {
		e.style.display = 'none';
	} else {
		e.style.display = 'block';
	}
}

String.prototype.replaceAll = function(de, para){
    var str = this;
    var pos = str.indexOf(de);
    while (pos > -1){
		str = str.replace(de, para);
		pos = str.indexOf(de);
	}
    return (str);
}

//Dropdown
function DropDown(el) {
	this.dd = el;
	this.initEvents();
}

DropDown.prototype = {
	initEvents : function() {
		var obj = this;
		obj.dd.on('click', function(event){
			$(this).toggleClass('active');
			event.stopPropagation();
		});
	}
}

$(function() {
	var dd = new DropDown($('.dd'));
	$(document).click(function() {
		$('.wrapper-dropdown').removeClass('active');
		$('.dropdown-delivery').removeClass('active');
	});
});

function goTo(id) {
	$('body,html').scrollTop($("#" + id).offset().top - 150);
}

function goToTop() {
	$('body,html').scrollTop(0);
}

function backTo(id) {
	$('body,html').animate({scrollTop: $("#" + id).offset().top - 70}, 2000);
}

function money(value){
	return 'R$ ' + value.toFixed(2).replace(/d(?=(\d{3})+\.)/g,'$&,').replace('.',',');
}

function callBack(output) {
	if (callback == 'newsletter') {
		disablePopup();
		document.getElementById('popup-text').innerHTML = "Cadastro realizado com sucesso!";
		loadPopup('');
	} else if (callback == 'message') {
		disablePopup();
		document.getElementById('from').value = output.id;
		sendMessage();
	} else if (callback == 'pedido') {
		checkout('true');
	} else if (callback == 'review') {
		disableOnlyPopup();
		callBackReview();
	} else if (callback == 'avaliacao') {
		disablePopup();
		callBackReview();
	} else if (callback == 'job') {
		document.location.href = '/conta/vagas-de-emprego/inserir';
	} else if (callback == 'cv') {
		document.location.href = '/conta/curriculos/inserir';
	} else if (callback == 'rede-social') {
		document.location.href = '/conta/rede-social/inserir';
	} else if (callback == 'social') {
		if (output != null) {
			document.getElementById('user').value = output.id;
		}
		insertComment();
	} else if (callback == 'messenger') {
		document.getElementById('redirect').value = '/conta/bate-papo';
	} else if (callback == 'chat') {
		document.location.href = '/conta/bate-papo?usuario=' + document.getElementById('to').value;
	} else if (callback == 'schedule') {
		callBackSchedule();
	} else if (callback == 'inserir-empresa') {
		document.location.href = '/inserir-empresa?plano=' + document.getElementById('plano').value;
	} else if (callback == 'painel') {
		document.location.href = '/conta';
	} else if (callback == 'login') {
		document.location.href = output.url;
	} else if (callback == 'report-job') {
		loadPopup('reportjob');
	}
}

function registerPopup(logged) {
	if (logged == true) {
		callBack(null);
	} else {
		loadPopup('register');
	}
}

function loginPopup(logged) {
	if (logged == true) {
		callBack(null);
	} else {
		loadPopup('login');
	}
}

$(".popup2").click(function(event) {
	event.stopPropagation();
});

$(".popup-close").click(function() {
	disablePopup();
});

$(this).keyup(function(event) {
	if (event.which == 27) {
		disablePopup();
	}
});

$("div#background-popup").click(function() {
	disablePopup();
});

function loading() {
	$("div.loader").show();
}
function closeloading() {
	$("div.loader").fadeOut('normal');
}

function changePopup(id) {
	$(".popup2").fadeOut("normal");
	$("#popup" + id).fadeIn(500);
}

var popupStatus = 0;
function loadPopup(id) {
	if (popupStatus == 0) {
		closeloading();
		$("#popup" + id).fadeIn(500);
		$("#background-popup").css("opacity", "0.8");
		$("#background-popup").fadeIn(1);
		popupStatus = 1;
	}
}
function disablePopup() {
	if(popupStatus == 1) {
		$(".popup2").fadeOut("normal");
		$("#background-popup").fadeOut("normal");
		popupStatus = 0;
	}
}

function disableOnlyPopup() {
	$(".popup2").fadeOut("normal");
	popupStatus = 0;
}

function validEmail(email) {
	email = email.toLowerCase().replace(" ", "");
	if (email != '') {
		var re = /^([\w-]+(?:\.[\w-]+)*)@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$/i;
		if (re.test(email)) {
			return true;
	    } else {
	    	return false;
	    }
	} else {
		return false;
	}
}

function validateEmail(email) {
	email = email.toLowerCase().replace(" ", "");
	if (email != '') {
		var re = /^([\w-]+(?:\.[\w-]+)*)@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$/i;
		if (!re.test(email)) {
			document.getElementById('popup-text').innerHTML = 'Atenção: O email está incorreto. Seu e-mail será seu canal de comunicação com o sistema, entre com um e-mail válido';
			loadPopup('');
	    }
	}
}

function logged() {
	$.ajax({
	    url: 		'/logged',
	    type: 		'get',
	    dataType: 	'json',
	    success: function(output) {
			if (output.success) {
				callBack(output);
			} else {
				loginPopup(output.success);
			}
	    }
	});
}

function login() {
	document.getElementById('popuplogin-attention').style.visibility = 'visible';
	var password = document.getElementById('password').value;
	if (password != '') {
		password = encodeURIComponent(password);
		var login = document.getElementById('login').value;
		if (validEmail(login)) {
			document.getElementById('popuplogin-dialog').innerHTML = 'Carregando...';
			var redirect = document.getElementById('redirect').value;
			var token = '';
			$.ajax({
			    url: 		'/login',
			    type: 		'post',
			    data: 	    'login=' + login + '&password='+ password + '&redirect=' + redirect + '&token=' + token,
			    dataType: 	'json',
			    success: function(output) {
			    	if (output.success) {
			    		if (callback == 'login') {
			    			document.location.href = output.url;
			    		} else {
			    			callBack(output);
			    		}
			    	} else {
			    		document.getElementById('popuplogin-dialog').innerHTML = output.dialog;
			    	}
			    }
			});
		} else {
			document.getElementById('popuplogin-dialog').innerHTML = "E-mail inválido, tente novamente!";
		}
	} else  {
		document.getElementById('popuplogin-dialog').innerHTML = "Por favor, informe a senha";
	}
}

function forgetPassword() {
	document.getElementById('popupforgotpassword-attention').style.visibility = 'visible';
	var login = document.getElementById('forget-password').value;
	if (validEmail(login)) {
		document.getElementById('popupforgotpassword-dialog').innerHTML = 'Carregando...';
		$.ajax({
		    url: 		'/esqueci-minha-senha',
		    type: 		'post',
		    data: 	    'login=' + login + '&app=0',
		    dataType: 	'json',
		    success: function(output) {
		    	document.getElementById('popupforgotpassword-dialog').innerHTML = output.dialog;
		    }
		});
	} else {
		document.getElementById('popupforgotpassword-dialog').innerHTML = "E-mail inválido, tente novamente!";
	}
}

function register() {
	var name = document.getElementById('register-name').value;
	var email = document.getElementById('register-email').value;
	var password = document.getElementById('register-password').value;
	var phone = document.getElementById('register-phone').value;
	var newsletter = document.getElementById('register-newsletter').value;
	
	document.getElementById('popupregister-attention').style.visibility = 'visible';
	if (name != '') {
		if (phone != '') {
			if (password != '') {
				if (validEmail(email)) {
					var formData = new FormData();
					formData.append("token", '');
					formData.append("name", name);
					formData.append("email", email);
					formData.append("password", password);
					formData.append("phone", phone);
					formData.append("newsletter", newsletter);
					formData.append("logo", document.querySelector("#image-file-photo").files[0]);
					formData.append("checklogo", document.getElementById("image-check-photo").value);
					
					var request = new XMLHttpRequest();
					request.onreadystatechange = function() {
						if (request.readyState == 4 && request.status == 200) {
							var output = JSON.parse(request.responseText);
							if (output.success) {
								document.getElementById('popupregister-attention').style.visibility = 'hidden';
							    if (callback == 'register' || callback == 'login') {
							    	document.location.href = output.url;
							    } else {
							    	callBack(output);
								}
							} else {
								document.getElementById('popupregister-dialog').innerHTML = output.dialog;
							}
						}
					};
					
					document.getElementById('popupregister-dialog').innerHTML = 'Carregando...';
					request.open("POST", "/registro", true);
					request.send(formData);
				} else {
					document.getElementById('popupregister-dialog').innerHTML = "E-mail inválido, tente novamente!";
				}
			} else {
				document.getElementById('popupregister-dialog').innerHTML = "Informe uma senha!";
			}
		} else {
			document.getElementById('popupregister-dialog').innerHTML = "Informe seu telefone!";
		}
	} else {
		document.getElementById('popupregister-dialog').innerHTML = "Informe seu nome!";
	}
}

// new image uploading
if (typeof indexArray != 'undefined') {
	for (var i = 0; i < indexArray.length; i++) {
		
		var index = indexArray[i];
		var image = imageArray[i];
		var fileName = fileNameArray[i];
		
		if (image == 'true') {
			$("#image-select-" + index).hide();
			$("#image-" + index).attr('src', fileName);
			$("#image-" + index).show();
			$("#image-remove-" + index).show();
		}
		
		addMyEventListener(document.getElementById("image-select-" + index), document.getElementById("image-file-" + index));
		document.getElementById("image-file-" + index).addEventListener("change", function() {
			var thisindex = this.id.replace("image-file-", "");
			
			var file = document.getElementById('image-file-' + thisindex).files[0];
			var imageType = /^image\//;
			if (imageType.test(file.type)) {
				var reader = new FileReader();
				reader.onload = function (e) {
					$("#image-" + thisindex).attr('src', e.target.result);
					$("#image-" + thisindex).show();
					
					document.getElementById("image-check-" + thisindex).value = true;
					
					if (uploadImages == true) {
						var formData = new FormData();
						formData.append("service", thisindex.split('-')[0]);
						formData.append("id", thisindex.split('-')[1]);
						formData.append("file", file);
						
						$.ajax({
							url: "/super/usuarios/usuario/imagem",
							type: "post",
							data: formData,
							processData: false,
							contentType: false,
							success: function (output) {
								
							}
						});
					}
				}
				reader.readAsDataURL(file);
				
				$("#image-select-" + thisindex).hide();
				$("#image-remove-" + thisindex).show();
			}
		}, false);
		
		document.getElementById("image-remove-" + index).addEventListener("click", function() {
			var thisindex = this.id.replace("image-remove-", "");
			
			$("#image-select-" + thisindex).show();
			$("#image-" + thisindex).hide();
			$("#image-" + thisindex).attr('src', '');
			$("#image-remove-" + thisindex).hide();
			
			document.getElementById("image-check-" + index).value = false;
			
			if (uploadImages == true) {
				var formData = new FormData();
				formData.append("service", thisindex.split('-')[0]);
				formData.append("id", thisindex.split('-')[1]);
				formData.append("file", null);
				
				$.ajax({
					url: "/super/usuarios/usuario/imagem",
					type: "post",
					data: formData,
					processData: false,
					contentType: false,
					success: function (output) {
						
					}
				});
			}
		}, false);
	}
}

// old image uploading
if (typeof setGalleryButton != 'undefined') {
	addMyEventListener(document.getElementById("thumb-gallery-select"), document.getElementById("photos"));
	document.getElementById("photos").addEventListener("change", handleGallery, false);
}

function addMyEventListener(object1, object2) {
	object1.addEventListener("click", function(e) {
		object2.click();
		e.preventDefault(); // Prevent navigation to '#'
	}, false);
}

//Gallery
var i = 1;

if (typeof setGalleryButton != 'undefined') {
	for (var j = 1; j <= galleryList.length; j++) {
		var divGallery = createDiv(j);
		document.getElementById("thumb-gallery").appendChild(divGallery);
		
		var img = createFigure(j);
		
		img.src = "/files/" + service + "/" + announceid + "/" + galleryList[j - 1].name;
		divGallery.appendChild(img);
		
		var remove = createRemoveButtom(j);
		divGallery.appendChild(remove);
		
		remove.addEventListener("click", function(e){
			var id = this.id.replace("remove", "");
			removeFigure(id);
			removeButtom(id);
			removeDiv(id);
		}, false);
		
		i = i + 1;
	}
}

function createDiv(i) {
	var div = document.createElement("div");
	div.id = 'divGallery' + i;
	div.style.display = 'inline-block';
	div.style.position = 'relative';
	div.style.width = '180px';
	div.style.height = '110px';
	div.style.marginLeft = '0px';
	div.style.marginRight = '10px';
	div.style.marginBottom = '10px';
	div.style.border = 'solid 1px #ccc';
	return div;
}

function createFigure(i) {
	var img = document.createElement("img");
	img.id = 'gallery' + i;
	img.classList.add("obj");
	img.style.position = 'relative';
	img.style.width = '180px';
	img.style.height = '110px';
	return img;
}

function createRemoveButtom(i) {
	var remove = document.createElement("img");
	remove.src = '/resources/images/remove.png';
	remove.id = 'remove' + i;
	remove.title = 'Remover figura';
	remove.style.position = 'absolute';
	remove.style.cursor = 'pointer';
	remove.style.width = '20px';
	remove.style.height = '20px';
	remove.style.top = '10px';
	remove.style.right = '10px';
	return remove;
}

function removeFigure(id) {
	var img = document.querySelector("#gallery" + id);
	img.parentNode.removeChild(img);
}

function removeButtom(id) {
	document.getElementById('remove' + id).remove();
}

function removeDiv(id) {
	document.getElementById('divGallery' + id).remove();
}

function handleGallery() {
	for (var j = 0; j < this.files.length; j++) {
		var file = this.files[j];
		var imageType = /^image\//;
		
		if (!imageType.test(file.type)) {
			continue;
		}
		
		var divGallery = createDiv(i);
		document.getElementById("thumb-gallery").appendChild(divGallery);
		
		var img = createFigure(i);
		img.file = file;
		divGallery.appendChild(img);
		
		var reader = new FileReader();
		reader.onload = (function (aImg) {
			return function (e) {
				aImg.src = e.target.result;
			};
		})(img);
		reader.readAsDataURL(file);
		
		var remove = createRemoveButtom(i);
		divGallery.appendChild(remove);
		
		remove.addEventListener("click", function(e){
			var id = this.id.replace("remove", "");
			removeFigure(id);
			removeButtom(id);
			removeDiv(id);
		}, false);
		
		i = i + 1;
	}
}

function budgetCityCategory() {
	var id = document.getElementById('id').value;
	var name = document.getElementById('name').value;
	var email = document.getElementById('email').value;
	var phone = document.getElementById('phone').value;
	var message = document.getElementById('message').value;
	if (name != '') {
		if (validEmail(email)) {
			if (phone != '') {
				$.ajax({
				    url: 		'/budget-category',
				    type: 		'post',
				    data: 	    'id=' + id + "&name=" + name + "&email=" + email + "&phone=" + phone + "&message=" + message,
				    dataType: 	'json',
				    success: function(output) {
				    	if (output.success) {
				    		document.getElementById('popupbudget-dialog').innerHTML = output.dialog;
				    		document.getElementById('popupbudget-attention').style.visibility = 'visible';
				    		document.getElementById('name').value = "";
				    		document.getElementById('email').value = "";
				    		document.getElementById('phone').value = "";
				    		document.getElementById('message').value = "";
				    	}
				    }
				});
			} else {
				document.getElementById('popupbudget-dialog').innerHTML = "Informe um telefone de contato";
				document.getElementById('popupbudget-attention').style.visibility = 'visible';
			}
		} else {
			document.getElementById('popupbudget-dialog').innerHTML = "Informe um e-mail válido";
			document.getElementById('popupbudget-attention').style.visibility = 'visible';
		}
	} else {
		document.getElementById('popupbudget-dialog').innerHTML = "Informe o seu nome";
		document.getElementById('popupbudget-attention').style.visibility = 'visible';
	}
}

function budgetCategory() {
	var id = document.getElementById('id').value;
	var name = document.getElementById('name').value;
	var email = document.getElementById('email').value;
	var phone = document.getElementById('phone').value;
	var message = document.getElementById('message').value;
	if (name != '') {
		if (validEmail(email)) {
			if (phone != '') {
				$.ajax({
				    url: 		'/budget-category',
				    type: 		'post',
				    data: 	    'id=' + id + "&name=" + name + "&email=" + email + "&phone=" + phone + "&message=" + message,
				    dataType: 	'json',
				    success: function(output) {
				    	if (output.success) {
				    		document.getElementById('popupbudget-dialog').innerHTML = output.dialog;
				    		document.getElementById('popupbudget-attention').style.visibility = 'visible';
				    		document.getElementById('name').value = "";
				    		document.getElementById('email').value = "";
				    		document.getElementById('phone').value = "";
				    		document.getElementById('message').value = "";
				    	}
				    }
				});
			} else {
				document.getElementById('popupbudget-dialog').innerHTML = "Informe um telefone de contato";
				document.getElementById('popupbudget-attention').style.visibility = 'visible';
			}
		} else {
			document.getElementById('popupbudget-dialog').innerHTML = "Informe um e-mail válido";
			document.getElementById('popupbudget-attention').style.visibility = 'visible';
		}
	} else {
		document.getElementById('popupbudget-dialog').innerHTML = "Informe o seu nome";
		document.getElementById('popupbudget-attention').style.visibility = 'visible';
	}
}

var rating = 0;
function brightStar(name, indice) {
	rating = indice + 1;
	var imgs = document.querySelectorAll('img[name=' + name + ']');
	for (var i=0; i < imgs.length; i++) {
       if (i <= indice)
           imgs[i].className = "bright-star";
       else
           imgs[i].className = "cleared-star";
   	}
}

var imgs = document.querySelectorAll('img[name=star-image]');
for (var i=0; i < imgs.length; i++) {
   (function(name, i) {
	   imgs[i].addEventListener('click', function () {
		   brightStar(name, i);
	   });
   })(imgs[i].name, i);
}

function review() {
	if (rating > 0) {
		var opinion = document.getElementById('review-opinion').value;
		if (opinion != '') {
			logged();
		} else {
			disableOnlyPopup();
			document.getElementById('popup-text').innerHTML = "Escreva a sua opinião sobre a loja, atendimento, etc";
			loadPopup('');
		}
	} else {
		disableOnlyPopup();
		document.getElementById('popup-text').innerHTML = "Clique sobre as estrelas para dar uma nota";
		loadPopup('');
	}
}

function callBackReview() {
	var id = document.getElementById('id').value;
	var description = encodeURIComponent(document.getElementById('review-opinion').value);
	disableOnlyPopup();
	document.getElementById('popup-text').innerHTML = "Sua avaliação está sendo enviada ...";
	loadPopup('');
	$.ajax({
	    url: 		'/avaliacao',
	    type: 		'post',
	    data: 	    'id=' + id + '&rating=' + rating + '&description=' + description + '&service=' + reviewservice,
	    dataType: 	'text',
	    success: function(output) {
			document.getElementById('review-opinion').value = '';
			location.reload();
	    }
	});
}

function displayMap() {
	var geocoder = new google.maps.Geocoder();
	geocoder.geocode({'address':address}, function (results, status) {
		if (status == google.maps.GeocoderStatus.OK) {
	    	var mapOptions = {
		  	    	zoom: 16,
					center: results[0].geometry.location,
		          	mapTypeId: google.maps.MapTypeId.ROADMAP
		        }
			var map = new google.maps.Map(document.getElementById('map-canvas'), mapOptions);
			var market = new google.maps.Marker({
				map: map,
				position: results[0].geometry.location
			});
			google.maps.event.trigger(map, 'resize');
			map.setZoom(map.getZoom());
		}
	});
}