/*
 * CU xFader jQuery Plugin Version 1.2
 * (c) 2011 comunique GmbH & Co. KG: http://www.comunique.com
 *
 * $('div').cu_xFader({'fadetime' : 500,'waittime' : 4500});
 *
 */
 
(function( $ ){
    var methods = {
        init : function( opt ) { 
            return this.each(function(){
                var $this = $(this);
                $(this).children(":eq(0)").css({display: "inline"});
                if ($this.children().length == 1){return;}
                opt = $.extend({}, $.fn.cu_xFader.defaults, opt || {});
                $(this).children(":gt(0)").css({display: "none"})
                opt.intervalobj=window.setInterval(function(){$(this).cu_xFader('fader',$this);}, opt.waittime);
                opt.faderobj=$this;
                $(this).data('cu_xFader', opt);
                if (opt.prevobj!=''){
                    $(opt.prevobj+" IMG").data('cu_xFader', opt);
                    $(opt.prevobj+" IMG").mouseover(function(){ $("BODY").css('cursor','pointer')}).mouseleave(function(){ $("BODY").css('cursor','auto')});
                    $(opt.prevobj+" IMG").mousedown(function (){$(this).cu_xFader('jump',$this);});
                }
                if (opt.pointobj!=''){
                    var test=$(opt.pointobj);
                    for (var $i=0;$i<$this.children().length;$i++){
                        $(opt.pointobj+'').append("<A></A>");
                    }
                    $(opt.pointobj+" A:eq(0)").addClass('hpdotactive');
                    $(opt.pointobj).children().mouseover(function(){ $("BODY").css('cursor','pointer')}).mouseleave(function(){ $("BODY").css('cursor','auto')});
                    $(opt.pointobj).children().mousedown(function (){$(this).cu_xFader('jump',$this);});
                }
                
            });
        },
        jump : function( cont ) { 
            var opt=cont.data('cu_xFader');
            clearInterval(opt.intervalobj);
            $now=cont.children(":visible").index();
            $(this).cu_xFader('tofader',$now,this.index(),cont);
        },
        fader : function( cont ) { 
            return this.each(function(){
                var opt=cont.data('cu_xFader');
                $now=cont.children(":visible").index();
                $next=cont.children(":visible").next().index()
                if ($next == -1){$next = 0;}
                $(this).cu_xFader('tofader',$now,$next,cont);
            });
        },
        tofader:function ($now,$next,cont){
            var opt=cont.data('cu_xFader');
            cont.children(":not(:eq("+$next+"))").fadeOut(opt.fadetime);
            cont.children(":eq("+$next+")").fadeIn(opt.fadetime);
            if (opt.pointobj!=''){
                $(opt.pointobj+" A:eq("+$next+")").addClass(opt.pointcl);
                $(opt.pointobj+" A:not(:eq("+$next+"))").removeClass(opt.pointcl);
                if (cont.children(":eq("+$next+")").hasClass(opt.pointxicl)){
                    $(opt.pointobj).addClass(opt.pointxdcl);
                }else{
                    $(opt.pointobj).removeClass(opt.pointxdcl);
                }
            }
        }
    };
    
    $.fn.cu_xFader = function( method ) {
        if ( methods[method] ) {
            return methods[ method ].apply( this, Array.prototype.slice.call( arguments, 1 ));
        } else if ( typeof method === 'object' || ! method ) {
            return methods.init.apply( this, arguments );
        } else {
            $.error( 'Method ' +  method + ' does not exist on jQuery.cu_xFader' );
        }    
    };
    $.fn.cu_xFader.defaults = {
        'fadetime' : 500,
        'waittime' : 4500,
        'prevobj':'',
        'pointobj':'',
        'pointcl':'',
        'pointxicl':'',
        'pointxdcl':''
    }
    
})( jQuery );


