﻿/// <reference path="jquery-vsdoc.js" />
/// <reference path="jquery.form.js" />
/// <reference path="jquery.ui.min.js" />

function goTo(url) {
	window.location = url;
}

function twitterShare(str,text) {
	mywindow = window.open('http://twitter.com/share?url=' + str + '&text=' + text, "Tweet_widow", "channelmode=no,directories=no,location=no,menubar=no,scrollbars=no,toolbar=no,status=no,width=500,height=375,left=300,top=200");
	mywindow.focus();
}

function AddToShoppingCart(productID, sender) {
	var quantity = $(sender).parents(".tobuy").find("#quantity").val();
	try {
		quantity = parseInt(quantity);
	} catch (ex) {
		alert("A quantidade informada não é válida");
	}

	$.post('/ShoppingCart/Add', { id: productID, quantity: quantity }, function (data) {
	    if (data == 'OK') {
	        alert('Produto adicionado ao carrinho');
	        RefreshShoppingCart();
	    } else if (data == 'UNAVAILABLE') {
	        alert('O produto não está disponível na quantidade informada.');
	    } else {
	        alert('Não foi possível adicionar o produto ao carrinho');
	    }
	});
}

function AddBatchToShoppingCart(source) {
	$(source).each(function (i) {
		if ($(":checkbox[name*=Selected]",this).is(":checked") != true) return;
		var id = $("[name*=ID]", this).val();
		var quantity = $("[name*=Quantity]", this).val();

		$.post('/ShoppingCart/Add', { id: id, quantity: quantity });

	});
	RefreshShoppingCart();
	alert("Produtos adicionados ao carrinho.");
}

function RefreshShoppingCart() {
    $.post('/ShoppingCart/Resume', function (data) {
        $('#shoppingCart').html(data);
        EnableCheckout();
        UpdateShoppingCartClass();
    });
}

function UpdateShoppingCartClass() {
    $.post('/ShoppingCart/Class', function (data) {
        $('#shoppingCart').attr('class', data);
    });
}

function EnableCheckout() {
	var total = parseFloat($("#shoppingCart #rawtotal").val());

	if (total > 100.00) {
		$(".cart .ticket").hide();
		$(".cart .checkout").css({ display: "block" });
		if(total < 200.00)
			$(".product .shipping a").css({ display: "block" });
		else
			$(".product .shipping a").hide();
	} else {
		$(".cart .ticket").show();
		$(".cart .checkout").hide();
		$(".product .shipping a").hide();
	}
}

function UpdateShoppingCart(formID) {
	$('#shoppingCart-form-' + formID).submit();
}

function ChangeOrder(select) {
	window.location.search = "?order=" + select.value;
}

function UpdateValue(sender,quantity) {
	if ($(sender).is("select")) {
		var value = $(sender).val().split('-');
		$("#trueprice").val(value[1]);
		sender = $(quantity);
	}
	var value = parseFloat($(sender).siblings("#trueprice").val());
	try {
		var quantity = parseInt($(sender).val());
	} catch (ex) {
		alert("A quantidade informada não é válida");
	}

	var total = (quantity * value).toFixed(2).split('.');
	$(sender).parent().siblings(".total").find(".price strong").html("R$ " + total[0] + "<sup>" + (total[1]||"00") + "</sup>");
}

function ProceedToCheckout(canProceed, hasGiftCards, onlyGiftCards, addressUrl, giftCardUrl) {
	$.post('/ShoppingCart/CheckProductAvailability', function (data) {
        if (data == 'OK') {
            if (onlyGiftCards || (hasGiftCards && canProceed)) {
                window.location = giftCardUrl;
            } else if (canProceed) {
                window.location = addressUrl;
            } else {
               	alert('Digite seu CEP para calcular o frete e verificar a disponibilidade de entrega em sua região.');
                $('#form-shipping #zipcode').focus().addClass('input-validation-error');
            }
        } else {
            alert('Existem produtos que não estão disponíveis para venda na quantidade informada.');
        }
    });    
}

function ProceedToPayment() {
	//var billingAddressID = parseInt($('#Billing_ID').val());
	var shippingAddressID = parseInt($('#Shipping_ID').val());
    if (shippingAddressID > 0) {
        $.post('/Checkout/SelectAddress', { shippingAddressID: shippingAddressID }, function (data) {
            if (data == 'UNAVAIABLE') {
                alert('Entrega indisponível para o endereço de entrega selecionado');
            } else if (data == 'OK') {
                window.location = '/Checkout/Payment';
            }
        });
    } else {
        alert('Selecione o endereço de entrega');
    }
}

function VerificaCPF() {
	if (vercpf(document.frmcpf.cpf.value))
	{ document.frmcpf.submit(); } else {
		errors = "1"; if (errors) alert('CPF NÃO VÁLIDO');
		document.retorno = (errors == '');
	}
}

function ValidarCPF_CNPJ(text) {
	if (typeof (text) == 'undefined')
		return false;

	if (text.length == 11)
		return ValidarCPF(text);
	else if (text.length == 14 || text.length == 15)
		return ValidarCNPJ(text);
}

function ValidarCPF(cpf) {
	if (cpf.length != 11 || cpf == "00000000000" || cpf == "11111111111" || cpf == "22222222222" || cpf == "33333333333" || cpf == "44444444444" || cpf == "55555555555" || cpf == "66666666666" || cpf == "77777777777" || cpf == "88888888888" || cpf == "99999999999")
		return false;
	add = 0;
	for (i = 0; i < 9; i++)
		add += parseInt(cpf.charAt(i)) * (10 - i);
	rev = 11 - (add % 11);
	if (rev == 10 || rev == 11)
		rev = 0;
	if (rev != parseInt(cpf.charAt(9)))
		return false;
	add = 0;
	for (i = 0; i < 10; i++)
		add += parseInt(cpf.charAt(i)) * (11 - i);
	rev = 11 - (add % 11);
	if (rev == 10 || rev == 11)
		rev = 0;
	if (rev != parseInt(cpf.charAt(10)))
		return false;

	return true;
}

function ValidarCNPJ(cnpj) {
	var numeros, digitos, soma, i, resultado, pos, tamanho, digitos_iguais;
	digitos_iguais = true;

	if (cnpj.length < 14 && cnpj.length < 15)
		return false;

	for (i = 0; i < cnpj.length - 1; i++) {
		if (cnpj.charAt(i) != cnpj.charAt(i + 1)) {
			digitos_iguais = false;
			break;
		}
	}

	if (!digitos_iguais) {
		tamanho = cnpj.length - 2
		numeros = cnpj.substring(0, tamanho);
		digitos = cnpj.substring(tamanho);
		soma = 0;
		pos = tamanho - 7;
		for (i = tamanho; i >= 1; i--) {
			soma += numeros.charAt(tamanho - i) * pos--;
			if (pos < 2)
				pos = 9;
		}
		resultado = soma % 11 < 2 ? 0 : 11 - soma % 11;
		if (resultado != digitos.charAt(0))
			return false;
		tamanho = tamanho + 1;
		numeros = cnpj.substring(0, tamanho);
		soma = 0;
		pos = tamanho - 7;
		for (i = tamanho; i >= 1; i--) {
			soma += numeros.charAt(tamanho - i) * pos--;
			if (pos < 2)
				pos = 9;
		}
		resultado = soma % 11 < 2 ? 0 : 11 - soma % 11;

		if (resultado != digitos.charAt(1))
			return false;

		return true;
	}
	else {
		return false;
	}

}

function PayWithCreditCard() {
	if (ValidarCartao()) {
		disablePaymentButton();
		return true;
	} else {
		return false;
	}
}

function PayWithDebitCard() {
	if (ValidarCPF_CNPJ($("#cpf-debito").val())) {
		disablePaymentButton();
        $("#cpf-debito").attr('class', 'sm_input');
        window.open('/Checkout/Pay?orderID=0', 'PayPopup', 'width=800,height=600');
        $.post('/Checkout/PayWithDebitCard', { bandeira: $("input:checked[name=banco_debito]").val(), cpf: $("#cpf-debito").val() }, function (data) {
            var orderID = data;
            window.open('/Checkout/Pay?orderID=' + orderID + '&cpf=' + $("#cpf-debito").val(), 'PayPopup', 'width=800,height=600');
            window.location = '/Checkout/Completed/' + orderID;
        });
    } else {
        alert('CPF inválido');
        $("#cpf-debito").attr('class', 'sm_input input-validation-error');
        $("#cpf-debito").focus();
    }
}

function ValidarCartao() {
    var retorno = true;

    if (IsEmpty('#form-paywithcreditcard #nome')) {
        $('#form-paywithcreditcard #nome').attr('class', 'input-validation-error');
        retorno = false;
    } else {
        $('#form-paywithcreditcard #nome').attr('class', '');
    }

    if (IsEmpty('#form-paywithcreditcard #cartao')) {
        $('#form-paywithcreditcard #cartao').attr('class', 'input-validation-error');
        retorno = false;
    } else {
        $('#form-paywithcreditcard #cartao').attr('class', '');
    }

    if (IsEmpty('#form-paywithcreditcard #expiracao')) {
        $('#form-paywithcreditcard #expiracao').attr('class', 'sm_input input-validation-error');
        retorno = false;
    } else {
        $('#form-paywithcreditcard #expiracao').attr('class', 'sm_input');
    }

    if (IsEmpty('#form-paywithcreditcard #codigo')) {
        $('#form-paywithcreditcard #codigo').attr('class', 'sm_input input-validation-error');
        retorno = false;
    } else {
        $('#form-paywithcreditcard #codigo').attr('class', 'sm_input');
    }

    return retorno;
}

function IsEmpty(field) {
    if ($(field).val().length == 0) {
        return true;
    }
    return false;
}

function PayWithBoleto() {
	if (ValidarCPF_CNPJ($("#cpf-boleto").val())) {
		disablePaymentButton();
		$("#cpf-boleto").attr('class', 'sm_input');
		window.open('/Checkout/Pay?orderID=0', 'PayPopup', 'width=800,height=600');
		$.post('/Checkout/PayWithBoleto', { bandeira: $("input:checked[name=banco_boleto]").val(), cpf: $("#cpf-boleto").val() }, function (data) {
			var orderID = data;
			window.open('/Checkout/Pay?orderID=' + orderID + '&cpf=' + $("#cpf-boleto").val(), 'PayPopup', 'width=800,height=600');
			window.location = '/Checkout/Completed/' + orderID;
		});
	} else {
		alert('CPF ou CNPJ inválido');
		$("#cpf-boleto").attr('class', 'sm_input input-validation-error');
		$("#cpf-boleto").focus();
	}
}

function disablePaymentButton() {
	$('.finalizar_compra a').addClass("off").removeAttr('onclick').unbind('click').click(function (event) {
		event.preventDefault();
		event.stopPropagation();
		$(this).blur();

		return false;
	});
}

function validateRegistration(form) {
	if (form.userid.value == "") {
		$("#validationSummary2").text("Você deve primeiro cadastrar seu email e sua senha").show();
		return false;
	}
}

function getAddress(target, sender) {
	if (typeof (target) == "undefined" || $(sender).hasClass("input-validation-error"))
		return;
	if (typeof (target.jquery) == "undefined")
		target = $(target);

	$(sender).after('<span class="loading">');
	$.get('/Shipping/GetAddress/', { postalcode: sender.value }, function (data) {
		//data = $(data);

		if (data.status == "OK") {
			target.find("input[name*=StreetName]").val(data.address.street);
			target.find("input[name*=City]").val(data.address.city);
			target.find("select[name*=State]").val(data.address.state.toString().toLowerCase());

			target.find("input[name*=Number]").focus();
		}
	}).complete(function () {
		$(sender).siblings('.loading').remove();
	});
}

function EditAddress(type, id) {
	switch (type) {
		case 0: $(".billing.edit").load("/User/EditAddress/" + id, editAddressCallback); break;
		case 1: $(".shipping.edit").load("/User/EditAddress/" + id, editAddressCallback); break;
	}
}

function DeleteAddress(id) {
	var ok = confirm("Você tem certeza que deseja apagar o endereço?\nEsta operação não poderá ser desfeita.");
	if (!ok) return;
	
	$.post("/User/DeleteAddress/" + id, function (data) {
		alert(data.message);
		switch (data.type) {
			case 0: $(".billing.saved_addresses").load("/User/Addresses", { type: data.type }); break;
			case 1: $(".shipping.saved_addresses").load("/User/Addresses", { type: data.type }); break;
		}
	});
}

function ReuseAddress(id) {
	$.post("/User/ReuseAddress/" + id, function (data) {
		switch (data.type) {
			case 0: $(".billing.saved_addresses").load("/User/Addresses", { type: data.type }); break;
			case 1: $(".shipping.saved_addresses").load("/User/Addresses", { type: data.type }); break;
		} 
	});
}

function SelectAddress(id, sender) {
	$(sender).parents(".address").siblings(".selected").removeClass("selected");
	$(sender).parents(".address").addClass("selected");

	if ($(sender).parents(".saved_addresses").hasClass("billing")) {
		$("#Billing_ID").val(id);
	} else {
		$("#Shipping_ID").val(id);
	}
}

function editAddressCallback(data) {
	$(this).find("form").submit(saveAddress);
	$(".phone").mask("(99) 9999-9999");
	$(".date").mask("99/99/9999");
	$(".cep").mask("99999-999");

	var data = { type: $(this).find("form input[name=Type]").val() };

	if ($('.content').is('.checkout_address'))
		data.checkout = true;

	$(this).siblings(".saved_addresses").load("/User/Addresses", data);
}

function saveAddress(event) {
	event.preventDefault();
	$(this).parent().load("/User/EditAddress", $(this).serializeArray(), editAddressCallback);
}

function login(event) {
	event.preventDefault();
	$.post(this.action, $(this).serialize(), function (data) {
		if (data == "logged") {
			$.fancybox.close();
			$(".topbar .user").load("/User/UserInfo");
		} else {
			$("#fancybox-content div").html(data);
			$("#fancybox-content form").submit(login);
		}
	});
}

function bindChurrascometro() {
	$("#fancybox-content form").ajaxForm({
		target: "#fancybox-content #churrascometro",
		replaceTarget: true,
		beforeSubmit: function (arr, $form, options) {
			if ($('#Men', $form).val() < 1 && $('#Women', $form).val() < 1) {
				alert("Diga quantas pessoas terão no seu churrasco.");
				return false;
			}

			if ($(':checkbox:checked', $form).length < 1) {
				alert("Selecione pelo menos um tipo de carne.");
				return false;
			}
		},
		success: function (data) {
			$("#fancybox-content #churrascometro").find(".calcular").click(function (event) {
				event.preventDefault();
				$("#fancybox-content #churrascometro").parent().load(this.href, bindChurrascometro);
			});

			$("#fancybox-content #churrascometro").find(".adicionar").click(function (event) {
				event.preventDefault();
				$(this).blur();

				AddBatchToShoppingCart("#fancybox-content #churrascometro #resultado li");
			});

			$("#fancybox-content #churrascometro").find(".imprimir").click(function (event) {
				event.preventDefault();
				$("#fancybox-content form").submit();
			});

		}
	});
}

function bindSendEmail() {
	$("#fancybox-content form #URL").val(window.location);
	$("#fancybox-content form").ajaxForm({ target: "#fancybox-content", success: bindSendEmail });
}

function bindLostPassword() {
	$("#fancybox-content form").ajaxForm({ target: "#fancybox-content", success: bindLostPassword });
}

function getQuickBuyUrl(url) {
	id = url.substring((url.lastIndexOf("/")) + 1)
	return '/Products/QuickBuy/' + id;
}

