/*!
 * 
 * Copyright (c) 2010 Web@Work websolutions (http://www.web-atwork.nl)
 * Dual licensed under the MIT (http://www.opensource.org/licenses/mit-license.php)
 * and GPL (http://www.opensource.org/licenses/gpl-license.php) licenses.
 *
 * Built on top of the jQuery library
 *   http://jquery.com
 */
(function($){

    $.fn.WawSlideShow = function(o) {
    	
    	var className = 'WawSlideShow';
        if (typeof o == 'string') {
        	var instance = $(this).data(className), args = Array.prototype.slice.call(arguments, 1);
            return instance[o].apply(instance, args);
        } 
        else {
        	if( o == null || o == undefined ) o = {};
	    	return this.each(function() {
	            $(this).data(className, new $wi(this, o));
	        });
        }
    };
    
    var defaults = {
    		classimage : 'slide-image',
    		secs : 5000
    };
    
    $.WawSlideShow = function(e, o) {

    	var me = this;
    	this.options = $.extend({}, defaults, o || {});
    	this.timerSlider = null;
    	this.total = 0;
    	this.currentSlide = 1;
    	
    	this.resetLinkNumber = function(){
    		$('.fi-active').attr('class', 'fi');
    	}
    	
    	this.setActiveLinkNum = function(num){
    		$('#link-slide-id'+num).attr('class', 'fi-active');
    	}
    	
    	this.setActiveLinkId = function(elmId){
    		$('#'+elmId).attr('class', 'fi-active');
    	}    	

    	this.start = function(){
    		
			/**
			 * Set the timer
			 */
    		me.options.timerSlider = setInterval(function(){
    			
    			if( me.currentSlide >= me.total ) {

        			var slideId = 'slide-id'+me.currentSlide;
        			var slideId1b = 'slide-text'+me.currentSlide;
        			$('#'+slideId).fadeOut('slow');
        			$('#'+slideId1b).fadeOut('slow');
        			me.currentSlide = 1;
        			var slideId2 = 'slide-id'+me.currentSlide;
        			$('#'+slideId2).fadeIn('slow');

        			me.resetLinkNumber();
        			me.setActiveLinkNum(1);
        			
        			for(var i = 0; i <= me.total; i++) {
               			$('#slide-id'+i).fadeIn();
               			$('#slide-text'+i).fadeOut();
        			}
        			var slideId2b = 'slide-text'+me.currentSlide;
        			$('#'+slideId2b).fadeIn('slow');

    			}
    			else {

        			for(var i = 0; i <= me.total; i++) {
               			$('#slide-text'+i).fadeOut();
        			}

        			var slideId = 'slide-id'+me.currentSlide;
        			$('#'+slideId).fadeOut('slow');
        			me.currentSlide++;
        			me.resetLinkNumber();
        			me.setActiveLinkNum(me.currentSlide);

        			var slideId1b = 'slide-text'+me.currentSlide;
        			$('#'+slideId1b).fadeIn('slow');

    			}
        		
    		}, me.options.secs);    		
    	}
    	
    	this.stop = function(){
    		clearInterval(me.options.timerSlider);
    	}
    	
    	this.clickSlide = function(num){
    		
			for(var i = 0; i <= me.total; i++) {
				$('#slide-id'+i).fadeOut();
       			$('#slide-text'+i).fadeOut();
			}
			$('#slide-id'+num).fadeIn();
			$('#slide-text'+num).fadeIn();
			me.start();
    	}
    	
    	this.setup( e, this );
    };    
    
    var $wi = $.WawSlideShow;

    $wi.fn = $wi.prototype = {
    		WawSlideShow: '1.0'
    };
    
    $wi.fn.extend = $wi.extend = $.extend;
    
    $wi.fn.extend({
    	
    	setup: function( e, obj ) {
    		
    		var cnt = $(e);
    		
    		var elmF = $('.'+obj.options.classimage);

    		var z = 0;
    		elmF.each(function(indx){
    			z++;
    		});
    		obj.total = z;
    		
    		var slideId = 1;
    		elmF.each(function(indx){
    			
    			var lnk = $(this);
    			var url = lnk.attr('href');
    			var title = lnk.attr('title');
    			var divElm = document.createElement('div');
    			var eImg = document.createElement('img');
    			divElm.style.position = 'absolute';
    			divElm.style.left = 15+'px';
    			divElm.style.top = 14+'px';
    			divElm.style.zIndex = z;
    			divElm.id = 'slide-id' +slideId;
    			eImg.src = url;
    			eImg.alt = title;
    			eImg.id = 'slide-img-id' +slideId;
    			divElm.appendChild(eImg)
    			cnt.append(divElm);
    			lnk.remove();
    			z--;
    			slideId++;
    		});
    		
    		var elmsText = $('.slidetext');
    		var totalText = elmsText.size();
    		var z = totalText;
    		var txtId = 1;
    		elmsText.each(function(){
    			
    			if( txtId == 1) {
	 	   			$(this).attr('id', 'slide-text'+txtId).css('z-index', z);
    			}
    			else {
	 	   			$(this).attr('id', 'slide-text'+txtId).css('z-index', z).hide();
    			}
    			txtId++;
    			z--;
    		});
    		
			var divElm2 = document.createElement('div');
			divElm2.style.zIndex = obj.total+1;
			
			for(var i = 1; i <= obj.total; i++) {
				
				var lnkId = 'link-slide-id'+i;
				var elmLnk = document.createElement('a');
				elmLnk.id = lnkId;

				$(elmLnk).attr('class','fi').
				attr('num', i).
				attr('onclick', 'return false;').
				attr('href', '#').
				bind('click', function(){
					var elmNum = $(this);
					obj.stop();
					obj.currentSlide = elmNum.attr('num');
					obj.resetLinkNumber();
					obj.setActiveLinkId(elmNum.attr('id'));
					obj.clickSlide(obj.currentSlide);
				})
				;
				divElm2.appendChild(elmLnk);
			}
			$('#feature-indicator').append(divElm2);
			obj.setActiveLinkNum(1);
			
			if( obj.total > 1 ) {
				obj.start();	
			}
    		
    	}
    });
    
    $wi.extend({
        defaults: function(d) {
        	return $.extend(defaults, d || {});
    	}    	
    });
    
})(jQuery);


