/*
// JoomlaWorks "Simple Image Rotator" Module for Joomla! 1.5.x - Version 1.2
// License: http://www.gnu.org/copyleft/gpl.html
// Copyright (c) 2006 - 2008 JoomlaWorks, a Komrade LLC company.
// More info at http://www.joomlaworks.gr
// Developers: Fotis Evangelou
// ***Last update: May 20th, 2008***
*/

//var jwsirnum = 0;
var jwsirs = new Array();
var numimgs = 0;

//(function() {
    var jwsir = window.jwsir = new Class ({
        /*initialize: function (delay,transition,preloader,jwsirnum) {
            var item = jwsir.init(delay,transition,preloader,jwsirnum);
            jwsirs[jwsirnum] = item;
        //alert(item.jwsirnum);
            return item;
        }
    });

jwsir.extend({*/
    //which: 0,
    items: 0,
    imageContainer: 'jw-sir',
    d: document,
    imgs: null,
    zInterval: null,
    current: null,
    pause: false,
    delay: 5000,
    transition: 40,
    preloader: '',
    jswsirnum: 0,
    initialize: function(delay,transition,preloader,jwsirnum) {
        this.delay = delay;
        this.transition = transition;
        this.preloader = preloader;
        this.jwsirnum = jwsirnum;
        //var delay = 5000;
        //var transition = 40;
        //var imageContainer = 'jw-sir';
        if(jwsirnum>0) {
           this.imageContainer = 'jw-sir-'+jwsirnum;
        }
//alert(this.imageContainer);
        this.imgs = new Array();
        this.current = new Array();
        //var d=document, imgs = new Array(), zInterval = null, current= new Array(), pause=false;

        jwsirs[jwsirnum] = this;

        return this;
    },
    so_init: function () {
        var d = this.d;
        var imageContainer = this.imageContainer;
        
        if(!d.getElementById || !d.createElement)return;
//alert(imageContainer);
        // check for up to 8 images
        var elts = new Array(imageContainer+'-1',  imageContainer+'-2', imageContainer+'-3', imageContainer+'-4',
                        imageContainer+'-5',  imageContainer+'-6', imageContainer+'-7', imageContainer+'-8');
        this.items = 0;
        var elt, sel;
        for(var e=0;e<elts.length;e++) {
            elt = elts[e];
            //element = $$('.'+imageContainer+' .'.elt);
            //element = d.getElementById(elt);
            //if(element) {
                //imgs[e] = new Array();
                //this.items++;
//document.write('.'+imageContainer+'.'+elt+' img');
                //sel = '.'+imageContainer+'.'+elt+' img';
                sel = '.'+elt+' img';
                this.imgs[e] = $$(sel);
                if(this.imgs[e].length>0) {
                    this.items++;
                }
                //this.imgs[e] = $$('.'+imageContainer+' .'.elt+' img');
//alert(' '+sel+' => '+this.imgs[e].length);
                //this.imgs[e] = element.getElementsByTagName("img");
                for(i=1;i<this.imgs[e].length;i++) { // SKIP first one i.e. index zero
                    this.imgs[e][i].xOpacity = 0;
                }
            //alert(this.imgs[e]);
                if(this.imgs[e][0]) {
                    this.imgs[e][0].style.display = "block";
                    this.imgs[e][0].xOpacity = .99;
                }
                this.current[e] = 0;
            //}
        } // foreach
        //setTimeout(this.so_xfade,this.delay);
        if(this.items>0) {
            this.so_xfade.delay(this.delay, this);
        }
    },
    so_xfade: function() {
        //var imageContainer = this.imageContainer;
        //which++;
        //switch(this.which) {
        //case 0: elt = imageContainer; break;
        //case 1: elt = imageContainer+'-2'; break;
        //case 2: elt = imageContainer+'-3'; break;
        //case 3: elt = imageContainer+'-4'; break;
        //case 4: elt = imageContainer+'-5'; break;
        //case 5: elt = imageContainer+'-6'; break;
        //case 6: elt = imageContainer+'-7'; break;
        //case 7: elt = imageContainer+'-8'; break;
        //}
        //imgs = d.getElementById(elt).getElementsByTagName("img");
        //for(var img in this.imgs) {
        //var which = 0;
        //if(true) {
        for(var which=0;which<this.items;which++) {

//trace('which '+which);
        var img = this.imgs[which];
//trace('img '+img);
        var cur = this.current[which];

//       if(img/* && (img.length>0)*/) {
//trace('cur '+cur);
//console.debug(imageContainer+': '+cur+' => '+img[cur]);
//trace(cur+' => '+img[cur]);
        var cOpacity = img[cur].xOpacity;
        var nIndex = img[cur+1]?cur+1:0;
        var nOpacity = img[nIndex].xOpacity;
        cOpacity-=.05;
        nOpacity+=.05;
        img[nIndex].style.display = "block";
        //img[cur].style.display = "block";
        img[cur].xOpacity = cOpacity;
        img[nIndex].xOpacity = nOpacity;
        //this.imgs[which][cur].xOpacity = cOpacity;
        //this.imgs[which][nIndex].xOpacity = nOpacity;
        this.setOpacity(img[cur]);
        this.setOpacity(img[nIndex]);
//if(which==1) {
//console.debug('cur '+cOpacity+' next '+nOpacity);
//        }
        if(cOpacity<=0) {
            img[cur].style.display = "none";
            this.current[which] = nIndex;
            //this.so_xfade.delay(this.delay, this);
            //setTimeout(this.so_xfade,this.delay);
            //if(this.which==(this.items-1)) {
            //    this.which = 0;
            //} else {
            //    this.which++;
            //}
            /*switch(which) {
            case 0: which++; break;
            case 1: which++; break;
            case 2: which++; break;
            case 3: which++; break;
            case 4: which++; break;
            case 5: which++; break;
            case 6: which++; break;
            case 7: which = 0; break;
            }*/

        //} else {
        //    this.so_xfade.delay(this.transition, this);
            //setTimeout(this.so_xfade,this.transition);
        }
/*        } else {
            cOpacity = 0;
        } // if img.length */
        } // for which

        if(cOpacity<=0) {
            this.so_xfade.delay(this.delay, this);
        } else {
            this.so_xfade.delay(this.transition, this);
        }
    /*    switch(which) {
        case 0: which++; break;
        case 1: which++; break;
        case 2: which = 0; break;
        }*/
    },
    setOpacity: function(obj) {
        if(obj.xOpacity>.99) {
            obj.xOpacity = .99;
            return;
        }
        obj.style.opacity = obj.xOpacity;
        obj.style.MozOpacity = obj.xOpacity;
        obj.style.filter = "alpha(opacity=" + (obj.xOpacity*100) + ")";
    },
    hideLoading: function() {
        var cont = $$('.'+this.imageContainer);
        for(var i=0;i<this.items;i++) {
            var loader = 'preLoader';
            if(i>0) {
                loader = loader + '-'+(i+1);
            }
            cont.$$('.'+loader).style.display = 'none';
        }
        //$$('.'+imageContainer.' .'+preLoader).style.display = 'none';
        //$$('.'+imageContainer.' .'+preLoader+'-2').style.display = 'none';
        //$$('.'+imageContainer.' .'+preLoader+'-3').style.display = 'none';
    }
}
//})();
);

function init_ahr() { // Load everything up
    if (arguments.callee.done) return;
    arguments.callee.done = true;

    var cssImgs = ['nav-bar.jpg', 'bg.jpg'];
    cssImgs.each(function(url) {
        new Element('img', {src:'/templates/cpsl/images/'+url});
    });
//alert(jwsirs.length);
    var item, id, imgs;
    var ts = new Date().getTime();
    for(var i=0;i<jwsirs.length;i++) {
       item = jwsirs[i];
    //for(var item in jwsirs) {
        if(item) {
//alert(item.jwsirnum);
            id = item.imageContainer;
//console.debug('item '+i+' '+id);
//console.debug($$);
            imgs = $$('.'+id+' .preload');
//alert('images '+imgs.length);
//console.debug('item '+i+' '+id);
//console.debug($$);
            imgs.each(function(im) {
//trace(im.getProperty('rel'));
                //if(im.getProperty('rel')) {
                    numimgs++;
                    
                    //im.setProperty('rel','');
                    im.addEvent("load", imgDone, im);
                    im.addEvent("abort", imgDone, im);

                    // in IE need to attach event FIRST then set SRC
                    // see http://www.thefutureoftheweb.com/blog/image-onload-isnt-being-called
                    im.src = im.getProperty('rel')+'?'+ts;
                //}
            });
            //item.so_init();
            //item.hideLoading();
        }
    }
//console.debug('first check');

/*    if(Cookie.set('sir_init')) {
        alert('x');
        numimgs = 0;
    } //else {*/
        imgCheck(); // check now
    //}
}

function imgDone() {
    numimgs--;
    this.addClass('done');
    this.removeClass('preload');
//alert('done '+numimgs+' length '+($$('img.preload').length));
    if(numimgs==0) {
        imgCheck();
    }
}

function imgCheck() {
//console.debug('check '+numimgs);
//trace('check '+numimgs);
    if(numimgs==0) { // nothing to preload
      //Cookie.set('sir_init','yes');  //
//alert('go!');
        var item;
        for(var i=0;i<jwsirs.length;i++) {
           item = jwsirs[i];
        //for(var item in jwsirs) {
            if(item) {
                item.so_init();
            }
        }
    }
}

function trace(msg) {
    if(console) {
        if(console.debug) {
            console.debug(msg); // firefox
        } else if(console.log) {
            console.log(msg); // ie8
        }
    }
}

// mootools
if( typeof window.addEvent != "undefined" ) { window.addEvent( "load", init_ahr); }
// DOM2
else if ( typeof window.addEventListener != "undefined" ) { window.addEventListener( "load", init_ahr, false ); }
// IE
else if ( typeof window.attachEvent != "undefined" ) { window.attachEvent( "onload", init_ahr ); }
else {
	if ( window.onload != null ) {
		var oldOnload = window.onload;
		window.onload = function ( e ) {
			oldOnload( e );
			init_ahr();
		};
	}
	else
		window.onload = init_ahr;
}
