/**
 *
 * Método para remoção do valor de frete para retirada de produto na loja
 *
 */
function loadFrete(current){
    if ($(current).attr('id') != 'FormRT') {
        $('#CartForm .id').each(function(){
            if ($('input[name="' + ($(this).attr('name')).replace('id', 'frete') + '"]').length > 0) {
                $('input[name="' + ($(this).attr('name')).replace('id', 'frete') + '"]').remove();
            }
        });
    }
    else {
        $('#CartForm .id').each(function(){
            if ($('input[name="' + ($(this).attr('name')).replace('id', 'frete') + '"]').length < 1) {
                $(this).after($('<input type="hidden">').attr('name', ($(this).attr('name')).replace('id', 'frete')).val('0'));
            }
        });
    }
}


/**
 * Método para inclusão de item ao carrinho de compras das páginas de promoções
 * e produtos
 *
 * @param {Object}
 *            current recebe o link corrente
 */
function addToCart(current){
    /*
     * Executa o post na página de edição
     */
    $.ajax({
        url: $(current).attr('href'),
        dataType: "json",
        beforeSend: function(){
            $(current).addClass('loading');
        },
        success: function(result){
            $(current).removeClass('loading');
            if (result.error == 1) {
                $(current).addClass('save');
                cssClass = 'error';
            }
            else {
                var currentCount = result.count;
                if (result.count > 1) 
                    var count = result.count + ' adicionados';
                else {
                    var removeHref = $(current).attr('href').replace('add', 'remove');
                    $(current).after($('<a></a>').attr('href', removeHref).addClass('remove').bind('click', function(){
                        return removeFromCart(this)
                    }));
                    var count = result.count + ' adicionado';
                }
                $(current).parents('li:first').find('.added').html(count);
                $('#Cart').load('/jnconcursos.com.br/apostilas/carrinho #CartList', function(){
                
                    // Botão de adicionar ao carrinho da tabela
                    $('#Cart .add').click(function(){
                        return internalAddToCart(this);
                    });
                    
                    // Botão de remover do carrinho da tabela
                    $('#Cart  .remove').click(function(){
                        return internalRemoveFromCart(this);
                    });
                    
                    // Botão de remover do carrinho da tabela
                    $('#Cart  .remove').click(function(){
                        return internalRemoveFromCart(this);
                    });
                    
                    // Botão de enviar o carrinho e fechar compra
                    $("#CloseCart").click(function(){
                        $('body').append($('<div></div>').addClass('overlay').show());
                        $('body').append($('<div></div>').load('/jnconcursos.com.br/apostilas/carrinho #CartForm', function(){
                            closeButton();
                        }).addClass('CartForm').show());
                    });
                    
                });
            }
        },
        error: function(){
            $(current).removeClass('loading');
        }
    });
	return false;
}

/**
 * Método para inclusão de item ao carrinho de compras de página de visualização
 * do carrinho
 *
 * @param {Object} current recebe o link corrente
 */
function internalAddToCart(current){
    /*
     * Executa o post na página de edição
     */
    $.ajax({
        url: $(current).attr('href'),
        dataType: "json",
        beforeSend: function(){
            $(current).addClass('loading');
        },
        success: function(result){
            $(current).removeClass('loading');
            if (result.error == 1) {
                cssClass = 'error';
            }
            else {
                if (result.count > 1) 
                    var count = result.count + ' adicionados';
                else {
                    var count = result.count + ' adicionado';
                }
                $('.cart a[href="' + $(current).attr('href') + '"]').prev('.added').html(count);
                
                $(current).parents('tr:first').find('.item-quant').html(result.count);
                $('#total').html('R$' + result.total);
            }
        },
        error: function(){
            $(current).removeClass('loading');
        }
    });
	return false;
}

/**
 * Método para inclusão de item ao carrinho de compras de página de visualização
 * do carrinho
 *
 * @param {Object} current recebe o link corrente
 */
function viewAddToCart(current){
    /*
     * Executa o post na página de edição
     */
    $.ajax({
        url: $(current).attr('href'),
        dataType: "json",
        beforeSend: function(){
            $(current).addClass('loading');
        },
        success: function(result){
            $(current).removeClass('loading');
            if (result.error == 1) {
                cssClass = 'error';
            }
            else {
                if (result.count > 1) 
                    var count = result.count + ' adicionados';
                else {
                    var count = result.count + ' adicionado';
                }
                $('.apostila').find('.added').html(count);
            }
        },
        error: function(){
            $(current).removeClass('loading');
        }
    });
	return false;
}

/**
 * Método para item do carrinho de compras
 *
 * @param {Object}
 *            current recebe o link corrente
 */
function removeFromCart(current){
    /*
     * Executa o post na página de edição
     */
    $.ajax({
        url: $(current).attr('href'),
        dataType: "json",
        beforeSend: function(){
            $(current).addClass('loading');
        },
        success: function(result){
            $(current).removeClass('loading');
            if (result.error == 1) {
                cssClass = 'error';
            }
            else {
                var currentCount = result.count;
                if (result.count > 1) 
                    var count = result.count + ' adicionados';
                else 
                    var count = result.count + ' adicionado';
                $(current).parents('li:first').find('.added').html(count);
                if (result.count < 1) {
                    $(current).remove();
                }
                $('#total').html('R$' + result.total);
                cssClass = 'success';
                $('#Cart').load('/jnconcursos.com.br/apostilas/carrinho #CartList', function(){
                
                    // Botão de adicionar ao carrinho da tabela
                    $('#Cart .add').click(function(){
                        return internalAddToCart(this);
                    });
                    
                    // Botão de remover do carrinho da tabela
                    $('#Cart  .remove').click(function(){
                        return internalRemoveFromCart(this);
                    });
                    
                    // Botão de enviar o carrinho e fechar compra
                    $("#CloseCart").click(function(){
                        $('body').append($('<div></div>').addClass('overlay').show());
                        $('body').append($('<div></div>').load('/jnconcursos.com.br/apostilas/carrinho #CartForm', function(){
                            closeButton();
                        }).addClass('CartForm').show());
                    });
                    
                });
            }
        },
        error: function(){
            $(current).removeClass('loading');
        }
    });
    return false;
}

/**
 * Método para item do carrinho de compras
 *
 * @param {Object}
 *            current recebe o link corrente
 */
function internalRemoveFromCart(current){
    /*
     * Executa o post na página de edição
     */
    $.ajax({
        url: $(current).attr('href'),
        dataType: "json",
        beforeSend: function(){
            $(current).addClass('loading');
        },
        success: function(result){
            $(current).removeClass('loading');
            if (result.error == 1) {
                cssClass = 'error';
            }
            else {
                var currentCount = result.count;
                if (result.count > 1) 
                    var count = result.count + ' adicionados';
                else 
                    var count = result.count + ' adicionado';
                $('.cart a[href="' + $(current).attr('href') + '"]').parent().find('.added').html(count);
                if (result.count < 1) {
                    $('.cart a[href="' + $(current).attr('href') + '"]').remove();
                    $(current).parents('tr:first').remove();
                }
                else {
                    $(current).parents('tr:first').find('.item-quant').html(result.count);
                }
                $('#total').html('R$ ' + result.total);
                cssClass = 'success';
            }
        },
        error: function(){
            $(current).removeClass('loading');
            alert('Houve uma falha ao tentar adicionar ao carrinho. Tente novamente');
        }
    });
    return false;
}

function sendCart(){
    $('.overlay').fadeOut('normal', function(){
        $(this).remove()
    });
    
    $('.CartForm').hide('normal', function(){
        $(this).remove()
    });
    
    $.get('/jnconcursos.com.br/apostilas/finalize', function(){
        window.location.reload()
    });
}

function partnerAnimate(){
  var partner = '.home-parceiro';
  var h = $(partner).height();
  $(partner).css({'height' : 0, 'visibility' : 'visible'});
  $(partner).appendTo('body');
  $(partner).animate({
    height: h
  }, 2000);
  setTimeout(function(){
    $(partner).animate({
      height: 0
    }, 2000, function(){$(partner).remove()})
  }, 10000)
  
}

$(function(){
  if($('.home-parceiro').length > 0){
    setTimeout('partnerAnimate()', 5000);
  }
  
    // Botão de adicionar ao carrinho da página de apostilas
    $('.cart .add').click(function(){
        return addToCart(this);
    });
    // Botão de adicionar ao carrinho da página de apostilas
    $('.apostila .add').click(function(){
        return viewAddToCart(this);
    });
    
    // Botão de remover do carrinho da página de produtos
    $('.cart .remove').click(function(){
        return removeFromCart(this);
    });
    
    // Botão de adicionar ao carrinho da tabela
    $('.cart-list .add').click(function(){
        return internalAddToCart(this);
    });
    
    // Botão de remover do carrinho da tabela
    $('.cart-list  .remove').click(function(){
        return internalRemoveFromCart(this);
    });
    
    $(".item-name a").mousemove(function(e){
        $(this).find('img').css({
            'left': e.pageX - $(this).offset().left + 20,
            'top': 10
        });
    }).mouseout(function(){
        $(this).find('img').css({
            'left': -99999
        });
    });
    
    $('.send-cart').click(function(){
        return closeCart(this);
    });
    
    // Botão de enviar o carrinho e fechar compra
    $("#CloseCart").click(function(){
        $('body').append($('<div></div>').addClass('overlay').show());
        $('body').append($('<div></div>').load('/jnconcursos.com.br/apostilas/carrinho #CartForm', function(){
            closeButton();
        }).addClass('CartForm').show());
    });
    
    $('#SendCart').click(function(){
        sendCart();
    });
});

function closeButton(){
    $('.close-cart-button').click(function(){
        $('.overlay').fadeOut('normal', function(){
            $(this).remove()
        });
        $('.CartForm').hide('normal', function(){
            $(this).remove()
        });
        return false;
    });
    $('#CartForm input').click(function(){
        loadFrete(this);
    });
    
    $('#SendCart').click(function(){
        sendCart();
    });
}


(function($){
    $.fn.marquee = function(klass){
        var newMarquee = [], last = this.length;
        
        // works out the left or right hand reset position,
        // based on scroll
        // behavior, current direction and new direction
        function getReset(newDir, marqueeRedux, marqueeState){
            var behavior = marqueeState.behavior, width = marqueeState.width, dir = marqueeState.dir;
            var r = 0;
            if (behavior == 'alternate') {
                r = newDir == 1 ? marqueeRedux[marqueeState.widthAxis] -
                (width * 2) : width;
            }
            else 
                if (behavior == 'slide') {
                    if (newDir == -1) {
                        r = dir == -1 ? marqueeRedux[marqueeState.widthAxis] : width;
                    }
                    else {
                        r = dir == -1 ? marqueeRedux[marqueeState.widthAxis] -
                        (width * 2) : 0;
                    }
                }
                else {
                    r = newDir == -1 ? marqueeRedux[marqueeState.widthAxis] : 0;
                }
            return r;
        }
        
        // single "thread" animation
        function animateMarquee(){
            var i = newMarquee.length, marqueeRedux = null, $marqueeRedux = null, marqueeState = {}, newMarqueeList = [], hitedge = false;
            
            while (i--) {
                marqueeRedux = newMarquee[i];
                $marqueeRedux = $(marqueeRedux);
                marqueeState = $marqueeRedux.data('marqueeState');
                
                if ($marqueeRedux.data('paused') !== true) {
                    // TODO read scrollamount, dir, behavior,
                    // loops and last from data
                    marqueeRedux[marqueeState.axis] += (marqueeState.scrollamount * marqueeState.dir);
                    
                    // only true if it's hit the end
                    hitedge = marqueeState.dir == -1 ? marqueeRedux[marqueeState.axis] <=
                    getReset(marqueeState.dir * -1, marqueeRedux, marqueeState) : marqueeRedux[marqueeState.axis] >=
                    getReset(marqueeState.dir * -1, marqueeRedux, marqueeState);
                    
                    if ((marqueeState.behavior == 'scroll' && marqueeState.last == marqueeRedux[marqueeState.axis]) ||
                    (marqueeState.behavior == 'alternate' && hitedge && marqueeState.last != -1) ||
                    (marqueeState.behavior == 'slide' && hitedge && marqueeState.last != -1)) {
                        if (marqueeState.behavior == 'alternate') {
                            marqueeState.dir *= -1; // flip
                        }
                        marqueeState.last = -1;
                        
                        $marqueeRedux.trigger('stop');
                        
                        marqueeState.loops--;
                        if (marqueeState.loops === 0) {
                            if (marqueeState.behavior != 'slide') {
                                marqueeRedux[marqueeState.axis] = getReset(marqueeState.dir, marqueeRedux, marqueeState);
                            }
                            else {
                                // corrects the position
                                marqueeRedux[marqueeState.axis] = getReset(marqueeState.dir * -1, marqueeRedux, marqueeState);
                            }
                            
                            $marqueeRedux.trigger('end');
                        }
                        else {
                            // keep this marquee going
                            newMarqueeList.push(marqueeRedux);
                            $marqueeRedux.trigger('start');
                            marqueeRedux[marqueeState.axis] = getReset(marqueeState.dir, marqueeRedux, marqueeState);
                        }
                    }
                    else {
                        newMarqueeList.push(marqueeRedux);
                    }
                    marqueeState.last = marqueeRedux[marqueeState.axis];
                    
                    // store updated state only if we ran an
                    // animation
                    $marqueeRedux.data('marqueeState', marqueeState);
                }
                else {
                    // even though it's paused, keep it in the
                    // list
                    newMarqueeList.push(marqueeRedux);
                }
            }
            
            newMarquee = newMarqueeList;
            
            if (newMarquee.length) {
                setTimeout(animateMarquee, 25);
            }
        }
        
        // TODO consider whether using .html() in the wrapping
        // process could lead to loosing predefined events...
        this.each(function(i){
            var $marquee = $(this), width = $marquee.attr('width') ||
            $marquee.width(), height = $marquee.attr('height') ||
            $marquee.height(), $marqueeRedux = $marquee.after('<div ' +
            (klass ? 'class="' + klass + '" ' : '') +
            'style="display: block-inline; width: ' +
            width +
            'px; height: ' +
            height +
            'px; overflow: hidden;"><div style="float: left; white-space: nowrap;">' +
            $marquee.html() +
            '</div></div>').next(), marqueeRedux = $marqueeRedux.get(0), hitedge = 0, direction = ($marquee.attr('direction') ||
            'left').toLowerCase(), marqueeState = {
                dir: /down|right/.test(direction) ? -1 : 1,
                axis: /left|right/.test(direction) ? 'scrollLeft' : 'scrollTop',
                widthAxis: /left|right/.test(direction) ? 'scrollWidth' : 'scrollHeight',
                last: -1,
                loops: $marquee.attr('loop') || -1,
                scrollamount: $marquee.attr('scrollamount') ||
                this.scrollAmount ||
                2,
                behavior: ($marquee.attr('behavior') || 'scroll').toLowerCase(),
                width: /left|right/.test(direction) ? width : height
            };
            
            // corrects a bug in Firefox - the default
            // loops for slide is -1
            if ($marquee.attr('loop') == -1 &&
            marqueeState.behavior == 'slide') {
                marqueeState.loops = 1;
            }
            
            $marquee.remove();
            
            // add padding
            if (/left|right/.test(direction)) {
                $marqueeRedux.find('> div').css('padding', '0 ' + width + 'px');
            }
            else {
                $marqueeRedux.find('> div').css('padding', height + 'px 0');
            }
            
            // events
            $marqueeRedux.bind('stop', function(){
                $marqueeRedux.data('paused', true);
            }).bind('pause', function(){
                $marqueeRedux.data('paused', true);
            }).bind('start', function(){
                $marqueeRedux.data('paused', false);
            }).bind('unpause', function(){
                $marqueeRedux.data('paused', false);
            }).data('marqueeState', marqueeState); // finally:
            // store
            // the
            // state
            
            // todo - rerender event allowing us to do
            // an ajax hit and redraw the marquee
            
            newMarquee.push(marqueeRedux);
            
            marqueeRedux[marqueeState.axis] = getReset(marqueeState.dir, marqueeRedux, marqueeState);
            $marqueeRedux.trigger('start');
            
            // on the very last marquee, trigger the
            // animation
            if (i + 1 == last) {
                animateMarquee();
            }
        });
        
        return $(newMarquee);
    };
}(jQuery));

function alteraConteudo(id, conteudo){
    $(id).find('.ativo').fadeOut();
    $(id).find('.ativo').removeClass('ativo');
    $(conteudo).fadeIn();
    $(conteudo).addClass('ativo');
}

function sliderHeader(){
    var cnt = 0;
    var id = "#sliderHeader";
    var array = $('#sliderHeader img');
    var sliderLength = array.length;
    $(array).load().css({
        'display': 'none',
        'visibility': 'visible'
    });
    $(array).first().addClass('ativo');
    $(array).first().fadeIn('ativo');
    timer = setInterval(function(){
        alteraConteudo(id, array[(cnt += 1) % sliderLength])
    }, 15000);
}

function slideShow(){
    intervalo = setInterval(function(){
        trocaSlide()
    }, 10000);
}

function trocaSlide(){
    if (play) {
        var linkAtivo = $("#sliderNav .ativo");
        var linkSeguinte = $(linkAtivo).next();
        var ativo = $(".slide.ativo");
        var seguinte = $(".slide.ativo").next(".slide");
        
        if ($(ativo).attr("id") == $(".slide:last").attr("id")) {
            seguinte = $(".slide:first");
            linkSeguinte = $("#sliderNav li:first");
        }
        
        $(ativo).fadeOut(1000);
        $(linkAtivo).removeClass('ativo');
        $(ativo).removeClass('ativo');
        $(seguinte).fadeIn(1000);
        $(seguinte).addClass('ativo');
        $(linkSeguinte).addClass('ativo');
    }
}

function fecharBatePapo(){
    $("#batePapo").fadeOut(500);
    $("#blackOverlay").hide();
    $("#batePapo").html('');
    return false;
}

function abrirBatePapo(){
    $("#blackOverlay").show();
    $("#batePapo").fadeIn(500);
    $("#batePapo").html('<a href="#" id="fecharBatePapo">Fechar</a><iframe src="http://settings.messenger.live.com/Conversation/IMMe.aspx?invitee=b4f3fdee32e3fcb7@apps.messenger.live.com&mkt=pt-br" width="600" height="400" style="border: solid 1px black; width: 600px; height: 400px;" frameborder="0" scrolling="no"></iframe>');
    
    $("#fecharBatePapo").click(function(){
        return fecharBatePapo();
    });
    
    return false;
}

$(function(){
    sliderHeader();
    $(".nav .main a:contains('/')").addClass('ativo');
    if ($('#slider')) {
        $('.slide:first').addClass('ativo');
        $('#sliderNav li:first').addClass('ativo');
        
        /* Inicia slider da Home */
        play = 1;
        slideShow();
        $('#sliderNav a').click(function(){
            play = 0;
            id = $(this).attr('href');
            if ($(id).attr('class') != 'ativo') {
                $('.slide.ativo').fadeOut(1000);
                $('.slide.ativo').removeClass('ativo');
                $('#sliderNav .ativo').removeClass('ativo');
                $(id).fadeIn(1000);
                $(id).addClass('ativo');
                $(this).parent().addClass('ativo');
            }
            return false;
        });
    }
    
    $('marquee').marquee();
    
    $("#areaDoAluno input").focusin(function(){
        if ($(this).val() == 'seu e-mail' || $(this).val() == 'password') {
            $(this).val('');
        }
    }).focusout(function(){
        if ($(this).val() == '') {
            if ($(this).attr('name') == 'username') {
                $(this).val('seu e-mail');
            }
            else {
                $(this).val('password');
            }
            
        }
    });
    
    /* Ativa o menu corrente */
    var pagina = window.location.href;
    $(".nav .main a").each(function(){
        if (pagina.indexOf($(this).attr('href')) > -1) {
            if ($(this).html().indexOf('Home') < 0) {
                $(this).addClass('ativo');
            }
        }
    });
    if ($(".nav .main .ativo").index() < 0) {
        $(".nav .main a:first").addClass('ativo');
    }
    
    /* Adiciona classe às imagens com alinhamento em html */
    $("img[align=left]").addClass('fLeft');
    $("img[align=right]").addClass('fRight');
    
    $("#abrirBatePapo").click(function(){
        return abrirBatePapo();
    });
    
    $("#fecharBatePapo").click(function(){
        return fecharBatePapo();
    });
    
})

