
$.fn.jsBanner = function(bannersUrl, menuUrl) {

	$.get(bannersUrl, handleBanners);
    $.get(menuUrl, handleMenu);

    var url = 'http://www.telecom.pt';

    var currentIndex;
    var timer;
    var banners;
    var pageBtns;
    var paused;

    $('.pause_btn').live('click', pause);
    $('.play_btn').live('click', play);

    function pause(event) {
        paused = true;
        $('.pause_btn').removeClass('pause_btn').addClass('play_btn');
        clearInterval(timer);
    }

    function play(event) {
        paused = false;
        $('.play_btn').removeClass('play_btn').addClass('pause_btn');
        timer = setInterval(nextBanner, parseInt(banners.eq(currentIndex).attr('timer')) * 1000);
    }

    function goToBanner(event) {
        var ci = pageBtns.index(this);
        if (ci != currentIndex) {
            try { banners.eq(currentIndex).animate({ opacity: 0 }, 300).css({ zIndex: 0 }); } catch (error) { }
            pageBtns.eq(currentIndex).removeClass('active');
            currentIndex = ci;
            banners.eq(currentIndex).animate({ opacity: 1 }, 300).css({ zIndex: 10 });
            pageBtns.eq(currentIndex).addClass('active');
            changeBGImage(banners.eq(currentIndex).attr("bg"));
            if (!paused) {
                clearInterval(timer);
                timer = setInterval(nextBanner, parseInt(banners.eq(currentIndex).attr('timer')) * 1000);
            }
        }
    }

    function nextBanner(event) {
        try {banners.eq(currentIndex).animate({ opacity: 0 }, 300).css({ zIndex: 0 }); } catch (error) { }
        pageBtns.eq(currentIndex).removeClass('active');
        currentIndex = circularIndex(currentIndex + 1);
        banners.eq(currentIndex).animate({ opacity: 1 }, 300).css({ zIndex: 10 });
        pageBtns.eq(currentIndex).addClass('active');
        changeBGImage(banners.eq(currentIndex).attr("bg"));
    }

    function circularIndex(i) {
        if (i >= banners.length)
            return 0;
        else if (i < 0)
            return banners.length - 1;
        else
            return i;
    }

    function handleBanners(result) {
        //$.get('images/pause_play_btn.png');
        var pagArea = $('#homeBanner .pag_area');
        var bannerArea = $('#homeBanner .banners');
        xmlDoc = $.parseXML(result);
        $xml = $(xmlDoc);
        
        $xml.find("Banner").each(function (i) {
            var backgroundImg = $(this).find("ImgBack").text();
            var banner = $(this).find("ImgFallBack").text();
            var timer = $(this).attr('timer');
            var window = $(this).attr('window');
            var link = $(this).attr('link');
            pagArea.append('<a class="page_btn">' + (i + 1) + '</a>');
            bannerArea.append('<a href="' + link + '" target="' + window + '" timer="' + timer + '" bg="' + backgroundImg + '"><img src="' + banner + '"></a>');
        });
        pagArea.prepend('<a class="pause_btn"></a>');
        banners = $('#homeBanner .banners a');
        pageBtns = $('#homeBanner .page_btn');
        banners.css({ opacity: 0 });
        currentIndex = 0;
        banners.eq(currentIndex).animate({ opacity: 1 }, 300).css({ zIndex: 10 }); ;
        pageBtns.eq(currentIndex).addClass('active');
        changeBGImage(banners.eq(currentIndex).attr("bg"));
        pageBtns.bind('click', goToBanner);
        play();
    }

    function handleMenu(result) {
        var menuArea = $('#homeBanner .banner_menu');
        $(result).find("item").each(function (i) {
            var label = $(this).attr("label");
            var url = $(this).attr("url");
            var desc = $(this).text();
            menuArea.append('<a target="_blank" href="' + url + '" class="banner_menu_item"><span class="label">'+ label +'</span><span class="banner_menu_item_desc">'+ desc +'</span></a>');
        });
    }

    var menuItems = $('#homeBanner .banner_menu_item');
    var lastItem;

    menuItems.live('mouseenter', openItem);
    menuItems.live('mouseleave', closeItem);

    function openItem(event) {
        var item = $(this);
        item.addClass('banner_menu_item_opened');
        item.stop().animate({ height: 50 });
        lastItem = item;
    }

    function closeItem(event) {
        
        var item = $(this);
        item.removeClass('banner_menu_item_opened');
        item.stop().animate({ height: 18 });
        lastItem = item;
    }
}
