/* browser stuff */
var ua = navigator.userAgent.toLowerCase();
var isOpera = (ua.indexOf('opera') > -1);
var isSafari = (ua.indexOf('safari') > -1);
var isIE = (window.ActiveXObject);

var IMGDIR = '/wp-content/themes/plus-one-defense/images/home/';
var SCRIPTDIR = '/wp-content/themes/plus-one-defense/';
var SCRIPTEXT = '.js';
var CSSDIR = CSS_ROOT;
var CSSEXT = '.css';

if (isIE) {
    //MSIE HACK
    document.execCommand("BackgroundImageCache", false, true);
}

/* slideshow stuff */





/**
 * Class Slideshow
 */
var Slideshow = function (data) {
	//this.box = new YAHOO.widget.Overlay(show.id);
    //this.box.cfg.setProperty("visible", true);
	
	this.slide_holder = HTML.p(null, {'class' : 'slide-holder'});
	this.slide_caption = HTML.p(null, {'class' : 'slide-caption'});
	
	if (data.className) {
		YAHOO.util.Dom.addClass(show.id, data.className);	
	}
	
	$(data.id).appendChild(this.slide_holder);
	$(data.id).appendChild(this.slide_caption);
	
	this.id = data.id;
	
	this.slides = data.slides;
	
    this.preloadImages();
};


//Seconds Timeout
Slideshow.prototype.timeOut = [5, 5];

//Current Slide
Slideshow.prototype.currentSlide = 0;

//zindex
Slideshow.prototype.currentZindex = 900;

//Timer Holder
Slideshow.prototype.timer = null;

//Effect Attrs
Slideshow.prototype.effects = { opacity: { from: 0, to: 1 } };

Slideshow.prototype.forceLoadNextSlide = function(evt) {
    clearTimeout(this.timer);
	this.loadNextSlide();
	YAHOO.util.Event.stopEvent(evt);
}

Slideshow.prototype.loadNextSlide = function() {
    var nextSlide = (this.currentSlide + 1);
    if (!this.slides[nextSlide]) {
        nextSlide = 0;
    }
    this.loadSlide(nextSlide);
    this.currentSlide = nextSlide;
}
Slideshow.prototype.loadSlide = function(slideID) {
    if (this.slides[slideID]) {
        var div = YAHOO.util.Dom.get(this.getSlideId(slideID));
        var nextImage = IMGDIR + this.slides[slideID].file;
        if (this.slides[slideID].caption) {
			YAHOO.util.Dom.get(this.slide_caption).innerHTML = this.slides[slideID].caption;
		}
        YAHOO.util.Dom.setStyle(div, 'opacity', 0);
		if (this.effects.width) {
            YAHOO.util.Dom.setStyle(div, 'width', 0);
        } 
        if (this.effects.height) {
            YAHOO.util.Dom.setStyle(div, 'height', 0);
        } 
        YAHOO.util.Dom.setStyle(div, 'z-index', this.currentZindex);
        var animSlide = new YAHOO.util.Anim(div, this.effects, 1, YAHOO.util.Easing.easeOut);
        animSlide.animate();
        this.currentZindex++;
        this.timer = setTimeout(this.loadNextSlide.bind(this), (this.timeOut[slideID%2] * 1000));
    }
}

Slideshow.prototype.getSlideId = function(i) {
	return 'slideshow[' + this.id + '][' + i + ']';
}

Slideshow.prototype.preloadImages = function() {
    for (var i = this.slides.length; i > -1; i-- ) {
        if (!YAHOO.util.Dom.get(this.getSlideId(i))) {
            if (this.slides[i]) {
                var div = document.createElement('div');
                div.id = this.getSlideId(i);
                this.slide_holder.appendChild(div);
                var nextImage = IMGDIR + this.slides[i].file;
                YAHOO.util.Dom.setStyle(div, 'background-image', 'url('+ nextImage + ')');
                YAHOO.util.Dom.setStyle(div, 'opacity', 0);
            }
        }
    }
    this.loadSlide(0);
}

YAHOO.namespace('slideshow');

YAHOO.slideshow.spawn = function(o) {
	console.log(o.responseText);
	show = YAHOO.lang.JSON.parse(o.responseText);
	
	new Slideshow(show);
	
    //this.loadSlide(0);
}

YAHOO.slideshow.init = function() {
   //this.box.cfg.setProperty("fixedcenter", true);
	
	shows = YAHOO.util.Dom.getElementsByClassName('slideshow');
	for (i in shows) {
		var callback = {
			'success' : YAHOO.slideshow.spawn
		}
		var sUrl = SCRIPTDIR + shows[i].id + SCRIPTEXT;
		var transaction = YAHOO.util.Connect.asyncRequest('GET', sUrl, callback, null); 
		YAHOO.util.Get.css(CSSDIR + shows[i].id + CSSEXT);
	}
	
    
}

				   
YAHOO.dankloader.add('animation', 'container', 'element', 'button', 'connection', 'json');
YAHOO.dankloader.add(YAHOO.slideshow.init);