/*
 *  Author: Maycon de Mellos
 *  Project: BandaDanubioAzul
 *  Framework: jQuery.
 *  
 **/
/////*****************///
//Executa requisições assincronas retornando objetos json
$.ajaxSetup({
    'beforeSend' : function(xhr) {
        xhr.overrideMimeType('text/html; charset=ISO-8859-1;');
    }
});

var AjaxData = {
    executeQuery : function(query,callback){
        $.ajax({
            url: 'ajax.php?'+query,
            success: function(data){
                var json = eval(data);
                callback(json);
            }
        });
    }
}
/**** AUDIO PLAYER ****/
/* player para o ie... e browser não html 5 */
var FlashAudioPlayer = function(){
    var volume = 100;
    var e = $('#flashMp3Player').get(0);
    
    this.play = function(){
        e.SetVariable("method:play", "");
    }
    this.pause = function(){
        e.SetVariable("method:pause", "");
    }
    this.setFile = function(src){
        e.SetVariable("method:setUrl", src);
    }
    this.setVolume = function(v){
        volume = v;
        e.SetVariable("method:setVolume", v*100);
    }
    this.getVolume = function(){
        return volume;
    }
}
/* player para browsers html 5 */
var HTMLAudioPlayer = function(){
    var e = document.createElement('audio');
    this.play = function(){
        e.play();
    }
    this.pause = function(){
        e.pause();
    }
    this.setFile = function(src){
        e.src = src;
    }
    this.setVolume = function(v){
        e.volume = v;
    }
    this.getVolume = function(){
        return e.volume;
    }
}

/* Controller do player, com os links dynamicos para as músicas
 * 
 * */
var Player = {
    currentMusic : 0,
    musics : [],
    audio : null,
    playPressed : false,
    play : function(id){
        if(Player.musics.length == 0){
            Player.playPressed = true;
        }else{
            if(id){
                for(var m=0;m<this.musics.length;m++){
                    if(this.musics[m].id == id){
                        this.currentMusic = m;
                    }
                }
            }
        
            this.audio.setFile(Player.musics[Player.currentMusic].mp3);
            this.audio.play();
            $('#player .player-label').text(Player.musics[Player.currentMusic].titulo);
        }
    },
    init : function(){
         
        AjaxData.executeQuery('class=Musica&method=getAll',function(musics){
            
            Player.musics = musics;
            
            //procura uma tag de audio HTML 5
            if(window.HTMLAudioElement && !jQuery.browser.mozilla && !jQuery.browser.msie){
                Player.audio = new HTMLAudioPlayer();
            }else{
                Player.audio = new FlashAudioPlayer();
            }

            //procura um objeto embeded

            var _this = Player;
            //inicializa os botões do player
            $('#player button').click(function(){
                var buttonClass = $(this).attr('class');
                switch(buttonClass){
                    case 'player-play':{
                        _this.audio.play();
                        break;
                    }
                    case 'player-pause':{
                        _this.audio.pause();
                        break;
                    }
                    case 'player-mute':{
                        _this.audio.setVolume(_this.audio.getVolume() < 1 ? 1 : 0);

                        break;
                    }
                    case 'player-prev':{
                        if(_this.currentMusic > 0){
                            _this.currentMusic--;
                            _this.play();
                        }
                        break;
                    }
                    case 'player-next':{
                        if(_this.currentMusic < _this.musics.length-1){
                            _this.currentMusic++;
                            _this.play();
                        }
                        break;
                    }
                }

            });
            
            //Links de músicas redirect to player
            $('a.musica').live('click',function(){
                var expr = /#[-a-zA-Z]+/;
                var id =  $(this).attr('href').replace(expr,'');
                Player.play(id);
                return false;
            })

            if(Player.playPressed){
                Player.play();
            }
        });
    }

}
/**********/
/* scrolll bar usado nos recados
 * 
 *
 */
var ScrollBars = {
    init : function(){
        $('.scrollBar button').live('mousedown.tooltip',function(){
            var button = $(this);
            var innerWraper = button.parent().parent().find('.innerWraper');
            var outerHeight = innerWraper.outerHeight();
            var buttonVal = button.hasClass('up') ? 8 : -8;
            var top = parseInt(innerWraper.css('top'));

            //var scroll =
            var scrollInterval = setInterval(function(){
                top += buttonVal;
                if(top < 0 && (top+outerHeight)>150){
                    innerWraper.css('top',top+'px');
                }else{
                    clearInterval(scrollInterval);
                }
            },50);

            button.mouseup(function(){
                clearInterval(scrollInterval);
            });
        });
    }
}
/* Painel 'A Banda', com a discografia e outras coisas mais.
 * Contém dois botões para a paginação.
 *
 */
var BandaInfo = {
    currentPage : 0,
    pageCount : 12,
    locked : false,
    init : function(){
        $('#bandaInfo a.white-arrow').click(function(){
            
            var $arrow = $(this);
            if(!BandaInfo.locked && $arrow.attr('href') != ''){
                var currentPage = BandaInfo.currentPage;
                var pageCount = BandaInfo.pageCount;
                BandaInfo.locked = true;

                var $container = $('#bandaInfo-slider');

                $('.bandaInfo-pages a.selected').removeClass('selected').attr('href','index.php?abandaPage='+currentPage);
                
                if($arrow.hasClass('right')){
                    currentPage++;
                }else{
                    currentPage--;
                }
                $container.animate({
                    'left':(currentPage*-660)+'px'
                },400,'easeOutQuad',function(){
                    BandaInfo.locked = false;
                });

                var href = $(this).attr('href');
                var key = "abandaPage=";
                var idx = href.indexOf(key,href);
                var pgNumber = parseInt(href.substr(idx+key.length,2));
                
                $('.bandaInfo-pages a:nth-child('+(currentPage+1)+')').addClass('selected').attr('href','');
                
                $('#bandaInfo a.white-arrow.left').attr('href',
                    (currentPage == 0) ? '' : 'index.php?abandaPage='+(currentPage-1));

                $('#bandaInfo a.white-arrow.right').attr('href',
                    currentPage == (pageCount - 1) ? '' : 'index.php?abandaPage='+(currentPage+1));
                    
                BandaInfo.currentPage = currentPage;

            }
            return false;
        })
        $('.bandaInfo-pages a').click(function(){
            if(!BandaInfo.locked){
                var currentPage = BandaInfo.currentPage;
                var pageCount = BandaInfo.pageCount;
                BandaInfo.locked = true;
                var $container = $('#bandaInfo-slider');
                var left = parseInt($container.css('left'));
                var href = $(this).attr('href');
                var key = "abandaPage=";
                var idx = href.indexOf(key,href);

                var pgNumber = parseInt(href.substr(idx+key.length,2));
                $('.bandaInfo-pages a.selected').removeClass('selected').attr('href','index.php?abandaPage='+currentPage);
                var oldPage = currentPage;
                currentPage = pgNumber;
                $('.bandaInfo-pages a:nth-child('+(currentPage+1)+')').addClass('selected').attr('href','');

                left = -currentPage * 660;
                $container.animate({
                    'left':left
                },800,'easeOutQuad',function(){
                    BandaInfo.locked = false;
                });

                $('#bandaInfo a.white-arrow.left').attr('href',
                    (currentPage == 0) ? '' : 'index.php?abandaPage='+(currentPage-1));

                $('#bandaInfo a.white-arrow.right').attr('href',
                    currentPage == (pageCount - 1) ? '' : 'index.php?abandaPage='+currentPage);
                    
                BandaInfo.currentPage = currentPage;
            }
            return false;
        })
    }
}
var Agenda = {
    currentPage : 1,
    numPages:0,
    init : function(){
        $('#agenda-pages a').click(function(){
            var href = $(this).attr('href');
            if(href != ''){
                
                if($(this).attr('id')=='agenda-pages-next')
                    Agenda.currentPage++;
                else
                    Agenda.currentPage--;
                $('#agenda-pages-prev').attr('href',Agenda.currentPage > 1 ? 'index.php?agendaPage='+(Agenda.currentPage-1) : '');
                if(Agenda.currentPage == 1)
                    $('#agenda-pages-prev').addClass('disabled');
                else
                    $('#agenda-pages-prev').removeClass('disabled');

                $('#agenda-pages-next').attr('href',Agenda.currentPage < Agenda.numPages ? 'index.php?agendaPage='+(Agenda.currentPage+1) : '');

                if(Agenda.currentPage == Agenda.numPages)
                    $('#agenda-pages-next').addClass('disabled');
                else
                    $('#agenda-pages-next').removeClass('disabled');

                $('#agenda ul').empty().append($('<img></img>').addClass('ajax-loader').attr('src','style/images/ajax-loader.gif'));

                
                var query = 'class=Agenda&method=getAll&pg='+Agenda.currentPage;
                AjaxData.executeQuery(query,Agenda.update);
                
            }
            return false;
        });
    },
    update : function(data){
        var $ul = $('#agenda ul');
        $ul.empty();
        var lis = new Array();
        for(var i=0;i<data.length;i++){
            var $li = $('<li></li>');
            var item = data[i];
            var meses = ['JAN','FEV','MAR','ABR','MAI','JUN','JUL','AGO','SET','OUT','NOV','DEZ'];
            var mes = parseInt(item.dataDoEvento.substr(3,2))-1;
            var dia = item.dataDoEvento.substr(0,2);
            var hoje = new Date();
            var stringDate = '';
            if(hoje.getDate()==dia && hoje.getMonth() == mes){
                stringDate = 'HOJE';
            }else{
                stringDate = dia+' '+meses[mes];
            }
            
            $li.html('<span class="agenda-item-date">'+stringDate+'</span>'+
                '<span class="agenda-item-locale"><b>'+item.cidade+' '+item.uf+'</b><i>'+item.localDoEvento+' / '+item.inicio+'</i></span>'
                ).appendTo($ul);
            $li.hide();
            $li.slideUp();
            lis.push($li);
            
            if(i % 2 == 1){
                $li.addClass('alt');
            }
        }
        for(i=0;i<lis.length;i++){
            lis[i].fadeIn(800);
        }
        
    }
}

/*
 * Controla a paginação do painel 'Ultimos Shows' com requisições assincronas.
 *
 */
var UltimosShows = {
    currentPage : 0,
    numPages:0,
    init : function(){
        $('#conteudo-pages a').click(function(){
            /*var href = $(this).attr('href');
           var key = 'index.php?albumPage=';
           var idx = href.indexOf(key,href);
           var pgNumber = parseInt(href.substr(idx+key.length,2));
           alert(pgNumber);
           return false;*/
            $('#conteudo #conteudo-center').empty();
            $('#conteudo #conteudo-center').load($(this).attr('href')+' #conteudo #conteudo-center > *');
            $('#conteudo-pages a.active').removeClass('active');
            $(this).addClass('active');
            return false;
        });
    }
}
//Modal dialog usado para as fotos e formulários
var ModalDialog = {
    init : function(){
        //seleciona os elementos a com atributo name="modal"
        $('a.modal').click(function(e) {
            //cancela o comportamento padrão do link
            e.preventDefault();
            var href = $(this).attr('href');
            $('#modal-dialog').css('display','block');
            //armazena a largura e a altura da tela
            var maskHeight = $(document).height();
            var maskWidth = $(window).width();

            //Define largura e altura do div#mask iguais ás dimensões da tela
            $('#modal-dialog-mask').css({
                'width':maskWidth,
                'height':maskHeight
            });

            //efeito de transição
            $('#modal-dialog-mask').fadeIn(1000);
            $('#modal-dialog-mask').fadeTo("slow",0.8);

            $('#modal-dialog-content').attr('src',href);

            var winH = $(window).height();
            var winW = $(window).width();
            //centraliza na tela a janela popup
            var content = $('#modal-dialog-content');
            content.css('top',  (winH/2)-(content.height()/2)+200);
            content.css('left', winW/2-content.width()/2);
            //efeito de transição
            content.fadeIn(2000);
            
        });
        $('#modal-dialog-mask').click(function(){
            $('#modal-dialog').css('display','none');
        })
        $('#modal-dialog button').click(function(){
            $('#modal-dialog').css('display','none');
        })

    },
    open : function(url,width,height){
        
        $('#modal-dialog').css('display','block');
        //armazena a largura e a altura da tela
        var maskHeight = $(document).height();
        var maskWidth = $(window).width();

        //Define largura e altura do div#mask iguais ás dimensões da tela
        $('#modal-dialog-mask').css({
            'width':maskWidth,
            'height':maskHeight
        });

        //efeito de transição
        $('#modal-dialog-mask').fadeIn(1000);
        $('#modal-dialog-mask').fadeTo("slow",0.8);

        $('#modal-dialog-content').attr('src',url);

        var winH = $(window).height();
        var winW = $(window).width();
        //centraliza na tela a janela popup
        var content = $('#modal-dialog-content-div');
        content.html('<img src="'+url+'"/>');
       

        //efeito de transição
        content.fadeIn(2000);
        $('#modal-dialog-mask').click(function(){
            $('#modal-dialog').css('display','none');
            content.css('display','none');
        })
        $('#modal-dialog button').click(function(){
            $('#modal-dialog').css('display','none');
            content.css('display','none');
        })
        content.css('top',  (winH/2)-(height/2)+200);
        content.css('left', (winW/2)-(width/2));
        content.css('display','block');
    },
    openImage : function($link){
        var url = $link.attr("href");
        var img = new Image();
        img.src = url;
        //$('#modal-dialog');
        $('#modal-dialog').css('display','block');
        //armazena a largura e a altura da tela
        var maskHeight = $(document).height();
        var maskWidth = $(window).width();

        //Define largura e altura do div#mask iguais ás dimensões da tela
        $('#modal-dialog-mask').css({
            'width':maskWidth,
            'height':maskHeight
        });
        $('#modal-dialog-mask').fadeIn(1000);
        $('#modal-dialog-mask').fadeTo("slow",0.8);
        var winH = $(window).height();
        var winW = $(window).width();
        var contentDiv = $('#modal-dialog-content-div');
        contentDiv.html("Carregando...").css('display','block').css({
            width:'80px',
            height:'18px',
            left:((winW/2)-60)+"px",
            top:((winH/2)-10)+"px",
            position:'fixed'
        });
        img.onload = function(){
            
            contentDiv.html('<img src="'+img.src+'" />');
            contentDiv.css('left', (winW/2)-(img.width/2));
            contentDiv.css('display','block');
            contentDiv.css('top',  (winH/2)-(img.height/2));
            contentDiv.animate({
                width:img.width+40+"px",
                height:img.height+"px"
            })

            //Flexas para passar a foto
            linkParent = $link.parent();

            nextLink = null;
            prevLink = null;
            if(linkParent.hasClass('shows-item')){
                nextLink = linkParent.next().find("a.foto");
                prevLink = linkParent.prev().find("a.foto");
            }else{
                nextLink = link.next('a.foto');
                prevLink = link.prev('a.foto');
            }
            if(nextLink.attr("href")){
                var btNext = $(document.createElement("button"));
                btNext.addClass("btNext");
                btNext.css({
                    top:(img.height/2)-15+"px"
                })
                contentDiv.append(btNext);
                btNext.click(function(){
                    nextLink.trigger("click");
                })
            }
            if(prevLink.attr("href")){
                var btPrev = $(document.createElement("button"));
                btPrev.addClass("btPrev");
                btPrev.css({
                    top:(img.height/2)-15+"px"
                })
                contentDiv.append(btPrev);
                btPrev.click(function(){
                    prevLink.trigger("click");
                })
            }

        }
       
        
    }
}

/*
 * Animações do Site,
 * Controla o delay das animações para ser executadas no tempo desejado.
 *
 */
var Animation = {
    init : function(){
        //Animação da foto Principal
        var musicos = [
        '#rogerio','#ede','#vilmar','#junior','#coruja','#alexandre','#sidi'
        ];
        var topPositions = new Array();
        var temp;
        for(var i = 0;i<musicos.length;i++){
            temp = $(musicos[i]).css('left');
            topPositions[i] = temp;
            $(musicos[i]).css('left','-5000px');
        }
        var count = 0;
        var showMusico = function(){
            setTimeout(function(){
                $(musicos[count]).animate({
                    'left':topPositions[count++]
                },800,'easeOutCubic');
                if(count<topPositions.length){
                    showMusico();
                }
            },800);
        }
        showMusico();
        
        
        //Animação da logo
        var logoTop = $('#logo').css('top');
        $('#logo').css('top','-600px').animate({
            top : logoTop
        },500);

        //Animação do menu
        $('#menu a').live('mouseenter',function(){
            $(this).animate({
                opacity:0.5
            },'slow');
        }).live('mouseout',function(){
            $(this).animate({
                opacity:1
            },'slow');
        });
        
        
    }
}

/*
* Controla todos os links dynamicos dos sites, realizando requisições via ajax, além do mais controla o histórico do browser com
* as hash tags, para permitir uma navegação adequada.
*/

var DynamicLinks = {
    init : function(){
        $('a.dynamic').live('click',function(){
            document.location.hash = $(this).attr('href');
            return false;
        });
        $('a.foto').live('click',function(){
            ModalDialog.openImage($(this));
            return false;
        });
        $('#socialPanel a.pages').live('click',function(){
            var href = $(this).attr('href').split('?')[1];
            $('#socialPanel .innerWraper').load('components/socialPanel-recados.php?'+href,function(){
                $('#socialPanel .innerWraper').css('top','0px');
            });
            return false;
        });
        $(window).hashchange(function() {
            DynamicLinks.refreshPage();
        });
		
        DynamicLinks.refreshPage();

        //Links do twitter e recados
        $('#socialPanel .title a.link').click(function(){
            var href = $(this).attr('href');
            if(href){
                $(this).addClass('active').attr('href','');
                $('#socialPanel .innerWraper').empty().css('top','0px');
                if(href.indexOf('recados') > -1){
                    $('#socialPanel .innerWraper').load('components/socialPanel-recados.php');
                    $('#socialPanel .title a.link.twitter').removeClass('active').attr('href','index.php?socialPanel=twitter');
                    $('#socialPanel .title a.action').show();
                }else{
                    $('#socialPanel .innerWraper').load('components/socialPanel-twitter.php');
                    $('#socialPanel .title a.link.recados').removeClass('active').attr('href','index.php?socialPanel=recados');
                    $('#socialPanel .title a.action').hide();
                }
            }
            return false;
        });

        $('a.dynamic_abanda').live('click',function(){
            var href = $(this).attr('href');
            $('#bandaInfo-center').load(href+' #bandaInfo-center > *',function(){
                BandaInfo.init();
            });
            return false;
        });

        $('#conteudo form.contato').live('submit',function(){
            $.ajax({
                type: 'POST',
                url: 'contato.php',
                data: $('#form-contato').serialize,
                success: function(){
                    alert('Email Enviado');
                }
            });
            return false;
        });
    },
    refreshPage : function(){
        var hash = document.location.hash.replace("#","");
        if(hash){
            switch (hash){
                case 'index.php':{
                    $('#wrap-white #conteudo').hide();
                    $('#wrap-white').load(hash+' #wrap-white > *',function(){ 
                        $('#wrap-white #conteudo').show();
                        UltimosShows.init();
                    });
                    $('#wrap-foto').removeClass('shadow');
                    $('#panel-1').show();
                    $('#wrap-blue').show();
                    break;
                }
                case 'videos.php':{
                    $('#panel-1').hide();
                    $('#wrap-foto').addClass('shadow');

                    $('#wrap-white').css('min-height','500px');
                    $('#wrap-white #conteudo').hide();
                    $('#wrap-white').load(hash+' #wrap-white > *',function(){
                        $('video').each(function(key,item){
                            projekktor('#'+$(item).attr('id'), {
                                useYTIframeAPI: false,
                                plugin_display: {
                                    logoDelay: 5
                                }
                            });
                        })
                        $('#wrap-white #conteudo').show();
                        $('#wrap-white').css('min-height','0px');
                    });
                    break;
                }
                default:{
                    $('#panel-1').hide();
                    $('#wrap-foto').addClass('shadow');

                    $('#wrap-white').css('min-height','500px');
                    $('#wrap-white #conteudo').hide();

                    $('#wrap-white').load(hash+' #wrap-white > *',function(){
                        $('#wrap-white #conteudo').show();
                        $('#wrap-white').css('min-height','0px');
                    });

                }
            }
        }
    }
}

/**
* ToolTip dos músicos 
*
*
*/
var toolTip = {
    init : function(){
        var bgImage = new Image();
        bgImage.src = '../style/tooltip/tooltip-bg.png';
        var arrowImage = new Image();
        arrowImage.src = '../style/tooltip/tooltip-arrow.png';
        
        var tooltip = $('.tooltip');
        var tooltipHover = false;
        var toolTipShow = false;
        var divHover = false;
        tooltip.hover(function(){
            tooltipHover = true;
        },function(){
            tooltipHover = false;
            setTimeout(function(){
                if(!divHover){
                    $('.foto-container .musico').css('opacity',1);
                    tooltip.hide();
                    toolTipShow = false;
                }
            }, 500);
        });
        var mouseX,mouseY;
        $('.foto-container .musico-div').hover(function(evt){
            
            divHover = true;
            var div = $(this);
            
            var showToolTip = function(){
                // mouseX = div.poition().left-(div.width()/2);
                //Exibe o tooltip
                xPos = mouseX-60;//div.position().left-(div.width()/2);
                yPos = 350;//div.position().top-(height()/2);


                tooltip.slideDown();

                //Carrega o tool tip
                var tooltipText = tooltip.find('.tooltip-text');
                if(mouseX > 750){
                    xPos -= 270;
                    tooltip.addClass('right');
                }else{
                    tooltip.removeClass('right');
                }

                tooltip.css({
                    left : (xPos)+'px',
                    top : (yPos)+'px'
                });
                //Add Ajax Loader
                var parent = tooltipText;
                var ajaxLoader = $('<img src="style/images/ajax-loader-blue.gif" width="30"/>');
                ajaxLoader.css({
                    position:'relative',
                    top:'140px',
                    left:'200px'
                });
                parent.html(ajaxLoader);
                //******************
                tooltipText.load('components/tooltip.php?nome='+div.attr('id').replace('-div',''),function(){
                    tooltipText.find('img').fadeOut(1).delay(1000).fadeIn('slow')
                });

                //##############
                toolTipShow = true;
                $('.foto-container .musico').css('opacity',0.2);
                var id = '#'+div.attr('id').replace('-div','');
                $(id).css('opacity',1);
            }

            //Controle para abrir o tooltip apos 500ms
            var showTimeout = setTimeout(showToolTip,500);
            $(this).mouseout(function(){
                clearTimeout(showTimeout);
            })
        },function(){
            divHover = false;
            setTimeout(function(){
                if(!tooltipHover){
                    $('.foto-container .musico').css('opacity',1);
                    tooltip.slideUp(1);
                    toolTipShow = false;
                }
            }, 500);

        }).mousemove(function(evt){
            mouseX = evt.screenX;
            mouseY = evt.screenY;
        })

    /*$('.foto-container .musico-div').hover(function(){
            $('.foto-container .musico').css('opacity',0.5);
            var id = '#'+$(this).attr('id').replace('-div','');
            $(id).css('opacity',1);
        },function(){
            if(!toolTipShow && !divHover){
                $('.foto-container .musico').css('opacity',1);
            }
        });*/
    }
}
//Cotnrole para uma abertura mais amigavel da página;
var initPage = function(){
    Player.init();
    
    ScrollBars.init();
    BandaInfo.init();
    Agenda.init();
    UltimosShows.init();
    ModalDialog.init();
    DynamicLinks.init();
    toolTip.init();
    window.onload = function(){
        Player.play();
    }
    /*var img = new Image();
    img.src = 'style/images/bg_top.jpg';
    img.onload = function(){
        Animation.init();
        
        

    }*/


// }

}
