//News Fader version 1.1 written by Tim Gill on 11/03/2010, last edit 12/03/2010

//Please make sure /site_includes/xhr_news_fader.php is in place

Effect.NewsFade = function(element) {
    element = $(element);
    var oldOpacity = element.getInlineOpacity();
    var options = Object.extend({
        from: element.getOpacity() || 1.0,
        to:   0.0,
        afterFinishInternal: function(effect) {
            if (effect.options.to!=0) return;
        //effect.element.hide().setStyle({opacity: oldOpacity});
        }
    }, arguments[1] || { });
    return new Effect.Opacity(element,options);
};

var fader = {
    //**********************************************
    //*                                            *
    //*       Start of stuff you can change        *
    //*                                            *
    //**********************************************
	
    //db variables - shouldn't really need to change
    dbTable : '',
    dbDate : '',
    dbTitle : '',
    dbUrl : '',
    dbUrlPrefix : '',
    dbSummary : '',
    dbDisplay : '',
    dbPublish : '',
	
    dbSortField : '',
    dbSortDirection : '',
	
    //display settings
    numItems : '',
    fadeInSpeed : '',
    displayTime : '',
    fadeOutSpeed : '',
    faderHeight : '',
	
    //dom settings
    faderContainer : '',
    faderBackground : '',
	
    //make below variables blank if not shown on fader
    title : '',
    date : '',
    summary : '',
    readmore : '',
	
    linkInTitle : '',
    noNews : '',
	
	
    //**********************************************
    //*                                            *
    //*       End of stuff you can change          *
    //*                                            *
    //**********************************************

	
    //running settings
    count : 0,
	
    //caching variables
    titleArray : [],
    dateArray : [],
    summaryArray : [],
    readmoreArray : [],
	
    next : function(fader) {
        if(this.titleArray[this.count]) {
            this.changeFader(this.titleArray[this.count],this.dateArray[this.count],this.summaryArray[this.count],this.readmoreArray[this.count],fader);
        } else {
            new Ajax.Request('/site_includes/xhr_fader.php', {
                method:     'POST',
                parameters: 'count='+this.count+'&fader='+fader,
                onSuccess: function(t) {

                    var news = t.responseText.evalJSON();

                    if(this.numItems == '') {
                        this.numItems = news.numItems;
                    }

                    this.titleArray[this.count] = news.title;
                    this.dateArray[this.count] = news.date;
                    this.summaryArray[this.count] = news.summary;
                    this.readmoreArray[this.count] = news.url;
                    this.changeFader(news.title,news.date,news.summary,news.url,fader);
					
                }.bind(this)
            });
        }
    },
    changeFader : function(newsTitle,newsDate,newsSummary,newsUrl,fader) {
        if(this.title != "") {
            if(this.linkInTitle == 1) {
                $(this.title).update('<a href="'+newsUrl+'">'+newsTitle+'</a>');
            } else {
                $(this.title).update(newsTitle);
            }
        }

        if(this.date != "") {
            $(this.date).update(newsDate);
        }

        if(this.summary != "") {
            $(this.summary).update(newsSummary);
        }
		
        if(this.readmore != "") {
            $(this.readmore).href=newsUrl;
        }
		
        new Effect.Appear(this.faderContainer, {
            duration: this.fadeInSpeed,
            afterFinish: function() {
                setTimeout(function() {
                    new Effect.NewsFade(this.faderContainer, {
                        duration: this.fadeOutSpeed,
                        afterFinish: function() {
                            if(this.count+1 < this.numItems) {
                                this.count++;
                            } else {
                                this.count=0;
                            }
                            this.next(fader);
                        }.bind(this)
                    });
                }.bind(this),this.displayTime*1000);
				
            }.bind(this)
        });
    }
}

document.observe( "dom:loaded", function() {

    new Ajax.Request('/site_includes/xhr_fader_settings.php', {
        method:     'POST',
        parameters: 'fader=home_news_fader&echo=1&site=' + $("site_folder").value,
        onSuccess: function(t) {

            var faderSettings = t.responseText.evalJSON();

            fader.dbTable = faderSettings.dbTable;
            fader.dbDate = faderSettings.dbDate;
            fader.dbTitle = faderSettings.dbTitle;
            fader.dbUrl = faderSettings.dbUrl;
            fader.dbUrlPrefix = faderSettings.dbUrlPrefix;
            fader.dbSummary = faderSettings.dbSummary;
            fader.dbDisplay = faderSettings.dbDisplay;
            fader.dbPublish = faderSettings.dbPublish;
            fader.dbSortField = faderSettings.dbSortField;
            fader.dbSortDirection = faderSettings.dbSortDirection;

            //display settings
            fader.numItems = faderSettings.numItems;
            fader.fadeInSpeed = faderSettings.fadeInSpeed;
            fader.displayTime = faderSettings.displayTime;
            fader.fadeOutSpeed = faderSettings.fadeOutSpeed;
            fader.faderHeight = faderSettings.faderHeight;

            //dom settings
            fader.faderContainer = faderSettings.faderContainer;
            fader.faderBackground = faderSettings.faderBackground;

            //make below variables blank if not shown on fader
            fader.title = faderSettings.title;
            fader.date = faderSettings.date;
            fader.summary = faderSettings.summary;
            fader.readmore = faderSettings.readmore;
            fader.linkInTitle = faderSettings.linkInTitle;
            fader.noNews = faderSettings.noNews;

            if(fader.faderHeight > 0) {
                $(fader.faderContainer).setStyle({
                    'height':fader.faderHeight+'px'
                });
            }
            $(fader.faderContainer).setStyle({
                'zoom':1
            });
            $(fader.faderContainer).setStyle({
                'background':fader.faderBackground
            });
            $(fader.faderContainer).setStyle({
                'overflow':'hidden'
            });
            if(fader.numItems > 0) {
                fader.next('home_news_fader');
            } else {                
                $(fader.title).update(fader.noNews);
            }
        }
    });
    
    
});
