var current_cover = 0;
var oldelement;
var newelement;
var cancel_feature=false;
var cancel_render = false;
var cover_rendering=false;
var user_entry_detected = false;
var auto_start_bible_cover = true;

var SlideShow = {
    init: function(container){
        this.slides = $$(container + ' > *');
    },
    play: function(){},
    pause: function(),
    prepNext: function(){},
    transition: function(){}    
}
document.observe("dom:loaded", function(){
    if($('user_bible_cover') != null){
        auto_start_bible_cover = false;
    }
	if(auto_start_bible_cover) {
		setTimeout('feature(false)',"4000");
	}
	var bible_covers = $('bible_covers_wrapper');
	Event.observe(bible_covers, 'mouseover', function(event) {
		cancel_feature = true;
		cancel_render = true;
	}); 
	Event.observe(bible_covers, 'mouseout', function(e) {
		
		if(!Position.within(bible_covers,Event.pointerX(e),Event.pointerY(e))) {
			cancel_feature = false;
			cancel_render = false;
		}
	});
	var next_button = $('bible_cover_next');
	Event.observe(next_button, 'click', function(event) {
		cover_next();
	});
	var previous_button = $('bible_cover_previous');
	Event.observe(previous_button, 'click', function(event) {
		cover_previous();
	});
});

function feature(previous){
	if(cover_rendering) {
 		setTimeout("feature(" + (previous ? "true" : "false") + ")", "4000")
		return;
	}
	if(cancel_feature) {
		setTimeout("feature(" + (previous ? "true" : "false") + ")", "4000")
		return;
	}
	
	features = $$('div.bible_cover')
	var currentactive = null;
	var tobeactive = null;
	if(features.length < 2) {
		return;
	}
	if(previous == false) {
		for(var i=0; i<features.length;i++) {
			if(currentactive != null) {
				tobeactive = features[i];
				break;
			}
			if($(features[i]).hasClassName('featuredfirst')) {
				currentactive = features[i]
				if(i == features.length -1)
				{
					i= -1;
				}
			}
		}
	} else {
	    for(var i=features.length-1; i>=0;i++) {
			if(currentactive != null) {
				tobeactive = features[i];
				break;
			}
			if($(features[i]).hasClassName('featuredfirst')) {
				currentactive = features[i]
				if(i == features.length -1) {
					i= -1;
				}
			}
		}
	}
	if(tobeactive == null) {
		tobeactive == features[0];
	}
	oldelement = currentactive;
	newelement = tobeactive;
	slidefeature(currentactive,tobeactive)
}
function cover_next() {
	if(user_entry_detected == true) {
		setTimeout("cover_next()", "100")
 		
		return;
	}
	user_entry_detected=true;
	features = $$('div.bible_cover')
	var currentactive = null;
	var tobeactive = null;
	if(features.length < 2) {
		return;
	}
	for(var i=0; i<features.length;i++) {
		if(currentactive != null) {
			tobeactive = features[i];
			break;
		}
		if($(features[i]).hasClassName('featuredfirst')) {
			currentactive = features[i]
			if(i == features.length -1) {
				i= -1;
			}
		}
	}
	if(tobeactive == null) {
		tobeactive == features[0];
	}
	oldelement = currentactive;
	newelement = tobeactive;
	slidefeature_force(currentactive,tobeactive)
}
function cover_previous() {
	if(user_entry_detected == true) {
	    setTimeout("cover_previous()", "100")
		return;
	}
	user_entry_detected=true;
	features = $$('div.bible_cover')
	var currentactive = null;
	var tobeactive = null;
	if(features.length < 2) {
		return;
	}

	for(var i=features.length-1; i>=0;i--) {
		if(currentactive != null) {
			tobeactive = features[i];
			break;
		}
		if($(features[i]).hasClassName('featuredfirst')) {
			currentactive = features[i]
			if(i == 0) {
				i= features.length;
			}
		}
	}
	if(tobeactive == null) {
		tobeactive == features[features.length -1];
	}
	oldelement = currentactive;
	newelement = tobeactive;
	slidefeature_force(currentactive,tobeactive);
}

function slidefeature(oldelement,newelement){		
		if(cancel_render == true) return;
		cover_rendering=true;
		$(newelement).addClassName('featuredfirst')
		new Effect.Appear(oldelement,{duration: 1,from: 1,to:0,afterFinish: fadeFinishedCover})
		new Effect.Appear(newelement,{duration: 1,from: 0,to:1})
}
function slidefeature_force(oldelement,newelement) {		
			cover_rendering=true;
			$(newelement).addClassName('featuredfirst')
			new Effect.Appear(oldelement,{duration: 1,from: 1,to:0,afterFinish: fadeFinishedforce})
			new Effect.Appear(newelement,{duration: 1,from: 0,to:1})
}
function fadeFinishedforce() {
	$(oldelement).removeClassName('featuredfirst')
	$(oldelement).hide();
	cover_rendering = false;
	user_entry_detected = false;
}
function fadeFinishedCover() {
	$(oldelement).removeClassName('featuredfirst')
	$(oldelement).hide();
	cover_rendering = false;
	setTimeout('feature(false)',"4000");
}