﻿var newsrotator_frontNewsFrame; //primeiro frame
var newsrotator_backNewsFrame; //segundo frame
var newsrotator_newsList = []; // array de noticias
var newsrotator_curNews = -1; //posicao da noticia atual
var newsrotator_fadeNewsSpeed; // fade settings
var newsrotator_newsTimeout;
var newsrotator_newsTimeoutThumb;
var newsrotator_timeout; // js timeout function

function newsrotator_newsItem(position, guid, titulo, imagem, link, timeout) {
    this.position = position;
    this.guid = guid;
    this.titulo = titulo;
    this.imagem = imagem;
    this.link = link;
    this.timeout = timeout;
}

jQuery.fn.newsrotator = function(xmlFile, settings) {
    var newsContainer = this;
    settings = jQuery.extend({
        fade: 750,
        timeout: 7000,
        timeout_thumb: 7200
    }, settings);

    newsrotator_fadeNewsSpeed = settings.fade;
    newsrotator_newsTimeout = settings.timeout;
    newsrotator_newsTimeoutThumb = settings.timeout_thumb;

    // navegacao
    var nav = jQuery('#banner-paginacao');

    // carrega dados do XML
    jQuery.get(xmlFile, function(xml) {
        var i = 0;
        jQuery(xml).find('item').each(function() {
            var itm = jQuery(this);
            newsrotator_newsList[i] = new newsrotator_newsItem(
				itm.attr('order'),
				itm.find('id').text(),
				itm.find('titulo').text(),
				itm.find('imagem').text(),
				itm.find('link').text(),
				itm.find('timeout').text()
            );

            // navegacao
            var content = "<a rel=" + i + ">" + (i + 1) + "</a>";
            nav.append(content);

            i++;
        });

        // only create element if it's not already there
        var div_absolute = document.createElement('div');
        div_absolute.className = "absolute";
        if (newsContainer.length == 1) newsContainer.append(div_absolute);

        // get array of div elements to swap
        var divs = jQuery('#banner-container div');
        newsrotator_frontNewsFrame = divs[1];
        newsrotator_backNewsFrame = divs[0];

        // ao clicar no link para troca de noticia
        nav.find('a').click(function() {
            clearTimeout(newsrotator_timeout);

            //Noticia atual
            newsrotator_curNews = parseInt(this.rel);
            newsrotator_selectThumb(newsrotator_curNews);

            //imagem
            var img = document.createElement('div');
            img.innerHTML = "<img src='" + newsrotator_newsList[newsrotator_curNews].imagem + "' alt='" + newsrotator_newsList[newsrotator_curNews].titulo + "'/>";

            var div = newsrotator_getDiv(img);

            // swap frames
            var temp = newsrotator_frontNewsFrame;
            newsrotator_frontNewsFrame = newsrotator_backNewsFrame;
            newsrotator_backNewsFrame = temp;

            // set current image to hide next
            newsrotator_frontNewsFrame.className = "absolute";
            newsrotator_frontNewsFrame.removeAttribute('style');

            // prepare to swap image
            newsrotator_backNewsFrame.className = "hide absolute";
            jQuery(newsrotator_backNewsFrame).html(jQuery(div).html());

            //Fade in e gera novo timeout para trocar a noticia
            jQuery(newsrotator_backNewsFrame).fadeIn(newsrotator_fadeNewsSpeed);
            newsrotator_timeout = setTimeout(function() { newsrotator_fadeNews(); }, newsrotator_newsTimeout);

            return false;
        });

        //Exibe a primeira noticia
        newsrotator_curNews = 0;
        newsrotator_frontNewsFrame.className = "absolute";
        newsrotator_frontNewsFrame.removeAttribute('style');
        newsrotator_backNewsFrame.className = "hide absolute";

        var img = new Image();
        img.alt = newsrotator_newsList[newsrotator_curNews].titulo;
        img.src = newsrotator_newsList[newsrotator_curNews].imagem;
        var div = newsrotator_getDiv(img);
        jQuery(newsrotator_backNewsFrame).html(jQuery(div).html());

        newsrotator_selectThumb(newsrotator_curNews);

        // start toggling!
        newsrotator_toggleNews();
    });
};

function newsrotator_toggleNews() {
    // move to next image	
    if (++newsrotator_curNews >= newsrotator_newsList.length) {
        newsrotator_curNews = 0;
    }

    //Carrega proxima imagem
    var img = document.createElement('div');
    img.innerHTML = "<img src='" + newsrotator_newsList[newsrotator_curNews].imagem + "' alt='" + newsrotator_newsList[newsrotator_curNews].titulo + "'/>";

    var div = newsrotator_getDiv(img);

    // swap frames
    var temp = newsrotator_frontNewsFrame;
    newsrotator_frontNewsFrame = newsrotator_backNewsFrame;
    newsrotator_backNewsFrame = temp;

    // set current image to hide next
    newsrotator_frontNewsFrame.className = "absolute";
    newsrotator_frontNewsFrame.removeAttribute('style');

    // prepare to swap image
    newsrotator_backNewsFrame.className = "hide absolute";
    jQuery(newsrotator_backNewsFrame).html(jQuery(div).html());

    // fade in next image and repeat
    newsrotator_timeout = setTimeout(function() { newsrotator_fadeNews(); }, newsrotator_newsTimeout);
    setTimeout(function() { newsrotator_selectThumb(newsrotator_curNews); }, newsrotator_newsTimeoutThumb);
}

function newsrotator_fadeNews() {
    // fade in news and repeat
    jQuery(newsrotator_backNewsFrame).fadeIn(newsrotator_fadeNewsSpeed, newsrotator_toggleNews);
}

// seleciona thumbnail - navegacao
function newsrotator_selectThumb(current) {
    var nav = jQuery('#banner-paginacao');
    var divs = nav.find('a');

    for (i = 0; i < divs.length; i++) {
        if (current == i) {
            divs[i].className = "item_on";
        } else {
            divs[i].className = "";
        }
    }

    // timeout dinamico
    newsrotator_newsTimeout = parseInt(newsrotator_newsList[newsrotator_curNews].timeout) * 1000;
    newsrotator_newsTimeoutThumb = newsrotator_newsTimeout + 200;
}

function newsrotator_getDiv(img) {
    var div = document.createElement('div');
    
    // imagem
    var div_img = document.createElement('div');

    // link sobre a imagem
    if (newsrotator_newsList[newsrotator_curNews].link.length > 0) {
        var link = document.createElement('a');
        link.href = newsrotator_newsList[newsrotator_curNews].link;
        jQuery(link).append(img);
        jQuery(div_img).append(link);
    } else {
        jQuery(div_img).append(img);
    }

    jQuery(div).append(div_img);

    return div;
}
