jQuery.extend( jQuery.easing,
    {
        easeInOutExpo: function (x, t, b, c, d) {
            if (t==0) return b;
            if (t==d) return b+c;
            if ((t/=d/2) < 1) return c/2 * Math.pow(2, 10 * (t - 1)) + b;
            return c/2 * (-Math.pow(2, -10 * --t) + 2) + b;
        },

        easeInExpo: function (x, t, b, c, d) {
            return (t==0) ? b : c * Math.pow(2, 10 * (t/d - 1)) + b;
        },
        easeOutExpo: function (x, t, b, c, d) {
            return (t==d) ? b+c : c * (-Math.pow(2, -10 * t/d) + 1) + b;
        }
    });

function JtagSlider() {
	
    this.init = function(a) {
        jQuery('.JtagSlider').fadeIn(500);
        jtagslider = a;
        curSlide = 0;
        this.setWidth();
        this.ctrlPos();
        this.control();
        if (jtagslider.autoslide) {
            this.autoslide();
        }
        jQuery('.JtagSlider .thumb_box:first').css('border','1px solid '+jtagslider.brd_Color);
       
        if (jtagslider.typo) {
            var slideDesc = jQuery('.JtagSlider .slide_desc:eq(0)').html();
            var slideTitle = jQuery('.JtagSlider .slide_desc:eq(0)').attr('title');
            jQuery('.JtagSlider .white-box').remove();
            var Desc = '<div class="white-box"><a href="'+jtagslider.contact+'" class="contact-btn"></a><h3>'+slideTitle+'</h3>'+slideDesc+'</div>'
            jQuery(Desc).hide().appendTo('.JtagSlider').show();
        } else {
            // Reposition Scroller
            if (jQuery(window).width() <= this.imgWidth() ) {
                jQuery('.JtagSlider .control').css({
                    left: jQuery(window).width() / 2 + "px"
                });
            } else {
                jQuery('.JtagSlider .control').css({
                    left: jQuery('.JtagSlider').width() / 2 + "px"
                });
            }
        }
        this.setWindowWidth();
    }
    
    this.setWindowWidth = function() {
        var setWidth = jQuery(window).width()
        var setMargin = Math.ceil(setWidth/2)*(-1);
        jQuery('.JtagSlider').width(setWidth).css('margin-left', setMargin+'px');
    }
	
    this.slidesNum = function() {
        return jQuery('.JtagSlider .slide').length;		
    }
	
    this.imgWidth = function() {
        return jQuery('.JtagSlider .slide:first img').width();	
    }
	
    this.setWidth = function() {
        jQuery('.JtagSlider').css( {
            width:this.imgWidth(), 
            marginLeft:Math.round(-this.imgWidth() / 2)
        });
        jQuery('.JtagSlider .slider_cont').css( 'width',Math.round( this.imgWidth() * this.slidesNum() ) + "px");
    }
	
    this.ctrlPos = function() {
        var ctrlWidth = jQuery('.JtagSlider .control').width();
        jQuery('.JtagSlider .control').css({
            marginLeft:Math.round(-ctrlWidth/2)
        });		
    }
	
    this.control = function() {
        var imgWidth     =   this.imgWidth();
        var totalSlides  = - this.imgWidth() * this.slidesNum();
				
        // Scroll Right
        jQuery('.JtagSlider .slideRight').click(function(){
            if ( jQuery('.JtagSlider .slider_cont').is(":animated") ) {/* Do nothing */} else {
                var curPos     = jQuery('.JtagSlider .slider_cont').position().left;
                //var transition = curPos - imgWidth + "px";
				
                if ( curSlide + 1 < -totalSlides / imgWidth ) {
					
                    if ( jQuery('.JtagSlider .thumb_box:eq('+(curSlide)+')').is(':nth-child(4n+1)') ) {
                        // Scroll Thumb
                        var thumbPos   = jQuery('.JtagSlider .thumb_box:eq('+(curSlide)+')').position().left;
                        var thumbWpos  = -jQuery('.JtagSlider .thumbs_wrapper').position().left;
						
                        if ( thumbPos == thumbWpos) { 
                            curSlide++	
                            jQuery('.JtagSlider .thumbs_wrapper .thumb_box:eq('+curSlide+')').trigger('click');
                        } else {
                            jQuery('.JtagSlider .thumbs_wrapper .thumb_box:eq('+curSlide+')').trigger('click');
                        }
                    } else {
                        curSlide++	
                        jQuery('.JtagSlider .thumbs_wrapper .thumb_box:eq('+curSlide+')').trigger('click');
                    }
				
                } else {
                    // SCROLL FROM BEGINNING
                    curSlide = 0;	
                    jQuery('.JtagSlider .thumbs_wrapper .thumb_box:eq('+curSlide+')').trigger('click');
                }
            }
        });
			
        // Scroll Left
        jQuery('.slideLeft').click(function(){
            if ( jQuery('.JtagSlider .slider_cont').is(":animated") ) {/* Do nothing */} else {
                var curPos     = jQuery('.slider_cont').position().left;
                var transition =  curPos + imgWidth + "px";
                if ( curPos != 0 ) {
					
                    if ( jQuery('.JtagSlider .thumb_box:eq('+(curSlide)+')').is(':nth-child(4n+1)') ) {
                        var thumbPos   = jQuery('.thumb_box:eq('+(curSlide)+')').position().left;
                        var thumbWpos  = -jQuery('.thumbs_wrapper').position().left;
						
                        if ( thumbPos != thumbWpos) { 
                            curSlide--	
                            jQuery('.JtagSlider .thumbs_wrapper .thumb_box:eq('+curSlide+')').trigger('click');
                        } else {
                            jQuery('.JtagSlider .thumbs_wrapper .thumb_box:eq('+curSlide+')').trigger('click');
                        }
						
                    } else {
                        curSlide--	
                        jQuery('.JtagSlider .thumbs_wrapper .thumb_box:eq('+curSlide+')').trigger('click');
                    }
                }
            }
        });	
		
        // Thumbs OnClick Control 
        jQuery('.JtagSlider .thumbs_cont .thumb_box').click(function(){
			
            jQuery('.JtagSlider .thumb_box').css('border','1px solid #ccc');
			
            var thumbNum   = jQuery(this).index();
			
            var thumbTrans = jQuery('.JtagSlider .thumbs_cont .thumb_box:eq(0)').position().left - jQuery('.JtagSlider .thumbs_cont .thumb_box:eq(1)').position().left;
						
            var transition = - (imgWidth * thumbNum);
            var slideDesc = jQuery('.JtagSlider .slide_desc:eq(' + thumbNum + ')').html();
            var slideTitle = jQuery('.JtagSlider .slide_desc:eq(' + thumbNum + ')').attr('title');
			
            jQuery('.JtagSlider .thumb_box:eq('+thumbNum+')').css('border','1px solid '+jtagslider.brd_Color);
            curSlide = thumbNum;
			
            // Slide Image
            jQuery('.JtagSlider .slider_cont').stop().animate({
                left:transition
            } , jtagslider.speed, jtagslider.easing);		
	 		
            // Thumbs Slide
            if (jQuery(this).is(':nth-child(4n + 1)')) {
                    
                if ((Math.round(jQuery('.JtagSlider .thumbs_cont .thumbs_wrapper').position().left) == Math.round(thumbTrans * thumbNum)) && thumbNum != 0) {
                    // Thumb Scroll backward
	         
                    jQuery('.JtagSlider .thumbs_cont .thumbs_wrapper').stop().animate({
                        left:thumbTrans * thumbNum - thumbTrans * 4
                    }, jtagslider.speed, jtagslider.easing);
					
                } else {
                    // Thumb Scroll forward
                    jQuery('.JtagSlider .thumbs_cont .thumbs_wrapper').stop().animate({
                        left:thumbTrans * thumbNum
                    }, jtagslider.speed, jtagslider.easing);
                }
            }
				
            if (jtagslider.typo && (jQuery('.JtagSlider .slider_cont').position().left !=  -thumbNum * imgWidth ) ) {
                               
                jQuery('.JtagSlider .white-box').remove();
                var Desc = '<div class="white-box"><a href="'+jtagslider.contact+'" class="contact-btn"></a><h3>'+slideTitle+'</h3>'+slideDesc+'</div>'
                jQuery(Desc).hide().appendTo('.JtagSlider').delay(400).fadeIn(500);
            }
        });
    }
	
    this.autoslide = function() {
        setInterval(function() {
            jQuery('.JtagSlider .slideRight').trigger('click');
        }, jtagslider.timer);
    }
}
jQuery.extend( jQuery.easing,
    {
        easeInOutExpo: function (x, t, b, c, d) {
            if (t==0) return b;
            if (t==d) return b+c;
            if ((t/=d/2) < 1) return c/2 * Math.pow(2, 10 * (t - 1)) + b;
            return c/2 * (-Math.pow(2, -10 * --t) + 2) + b;
        },

        easeInExpo: function (x, t, b, c, d) {
            return (t==0) ? b : c * Math.pow(2, 10 * (t/d - 1)) + b;
        },
        easeOutExpo: function (x, t, b, c, d) {
            return (t==d) ? b+c : c * (-Math.pow(2, -10 * t/d) + 1) + b;
        }
    });

function JtagSlider() {
	
    this.init = function(a) {
        
        jQuery('.JtagSlider').fadeIn(500);
        jtagslider = a;
        curSlide = 0;
        this.setWidth();
        this.ctrlPos();
        this.control();
        if (jtagslider.autoslide) {
            this.autoslide();
        }
        jQuery('.JtagSlider .thumb_box:first').css('border','1px solid '+jtagslider.brd_Color);
       
        if (jtagslider.typo) {
            var slideDesc = jQuery('.JtagSlider .slide_desc:eq(0)').html();
            var slideTitle = jQuery('.JtagSlider .slide_desc:eq(0)').attr('title');
            jQuery('.JtagSlider .white-box').remove();
            var Desc = '<div class="white-box"><a href="'+jtagslider.contact+'" class="contact-btn"></a><h3>'+slideTitle+'</h3>'+slideDesc+'</div>'
            jQuery(Desc).hide().appendTo('.JtagSlider').show();
        } else {
            // Reposition Scroller
            if (jQuery(window).width() <= this.imgWidth() ) {
                jQuery('.JtagSlider .control').css({
                    left: jQuery(window).width() / 2 + "px"
                });
            } else {
                jQuery('.JtagSlider .control').css({
                    left: jQuery('.JtagSlider').width() / 2 + "px"
                });
            }
        }
        
        this.setWindowWidth(); 
        th = this;
        
        jQuery(window).resize(function() {
                 th.setWindowWidth();
        });
    }
    
    this.setWindowWidth = function() {
        var setWidth = jQuery(window).width()
        if (setWidth > this.imgWidth()) { setWidth = this.imgWidth(); }
        var setMargin = Math.ceil(setWidth/2)*(-1);
        jQuery('.JtagSlider').width(setWidth).css('margin-left', setMargin+'px');
    }
	
    this.slidesNum = function() {
        return jQuery('.JtagSlider .slide').length;		
    }
	
    this.imgWidth = function() {
        return jQuery('.JtagSlider .slide:first img').width();	
    }
	
    this.setWidth = function() {
        jQuery('.JtagSlider').css( {
            width:this.imgWidth(), 
            marginLeft:Math.round(-this.imgWidth() / 2)
        });
        jQuery('.JtagSlider .slider_cont').css( 'width',Math.round( this.imgWidth() * this.slidesNum() ) + "px");
    }
	
    this.ctrlPos = function() {
        var ctrlWidth = jQuery('.JtagSlider .control').width();
        jQuery('.JtagSlider .control').css({
            marginLeft:Math.round(-ctrlWidth/2)
        });		
    }
	
    this.control = function() {
        var imgWidth     =   this.imgWidth();
        var totalSlides  = - this.imgWidth() * this.slidesNum();
				
        // Scroll Right
        jQuery('.JtagSlider .slideRight').click(function(){
            if ( jQuery('.JtagSlider .slider_cont').is(":animated") ) {/* Do nothing */} else {
                var curPos     = jQuery('.JtagSlider .slider_cont').position().left;
                //var transition = curPos - imgWidth + "px";
				
                if ( curSlide + 1 < -totalSlides / imgWidth ) {
					
                    if ( jQuery('.JtagSlider .thumb_box:eq('+(curSlide)+')').is(':nth-child(4n+1)') ) {
                        // Scroll Thumb
                        var thumbPos   = jQuery('.JtagSlider .thumb_box:eq('+(curSlide)+')').position().left;
                        var thumbWpos  = -jQuery('.JtagSlider .thumbs_wrapper').position().left;
						
                        if ( thumbPos == thumbWpos) { 
                            curSlide++	
                            jQuery('.JtagSlider .thumbs_wrapper .thumb_box:eq('+curSlide+')').trigger('click');
                        } else {
                            jQuery('.JtagSlider .thumbs_wrapper .thumb_box:eq('+curSlide+')').trigger('click');
                        }
                    } else {
                        curSlide++	
                        jQuery('.JtagSlider .thumbs_wrapper .thumb_box:eq('+curSlide+')').trigger('click');
                    }
				
                } else {
                    // SCROLL FROM BEGINNING
                    curSlide = 0;	
                    jQuery('.JtagSlider .thumbs_wrapper .thumb_box:eq('+curSlide+')').trigger('click');
                }
            }
        });
			
        // Scroll Left
        jQuery('.slideLeft').click(function(){
            if ( jQuery('.JtagSlider .slider_cont').is(":animated") ) {/* Do nothing */} else {
                var curPos     = jQuery('.slider_cont').position().left;
                var transition =  curPos + imgWidth + "px";
                if ( curPos != 0 ) {
					
                    if ( jQuery('.JtagSlider .thumb_box:eq('+(curSlide)+')').is(':nth-child(4n+1)') ) {
                        var thumbPos   = jQuery('.thumb_box:eq('+(curSlide)+')').position().left;
                        var thumbWpos  = -jQuery('.thumbs_wrapper').position().left;
						
                        if ( thumbPos != thumbWpos) { 
                            curSlide--	
                            jQuery('.JtagSlider .thumbs_wrapper .thumb_box:eq('+curSlide+')').trigger('click');
                        } else {
                            jQuery('.JtagSlider .thumbs_wrapper .thumb_box:eq('+curSlide+')').trigger('click');
                        }
						
                    } else {
                        curSlide--	
                        jQuery('.JtagSlider .thumbs_wrapper .thumb_box:eq('+curSlide+')').trigger('click');
                    }
                }
            }
        });	
		
        // Thumbs OnClick Control 
        jQuery('.JtagSlider .thumbs_cont .thumb_box').click(function(){
	    jQuery('.JtagSlider .thumb_box').css('border','1px solid #ccc');
	    var thumbNum   = jQuery(this).index();
	    var thumbTrans = jQuery('.JtagSlider .thumbs_cont .thumb_box:eq(0)').position().left - jQuery('.JtagSlider .thumbs_cont .thumb_box:eq(1)').position().left;
	    var transition = - (imgWidth * thumbNum);
            var slideDesc = jQuery('.JtagSlider .slide_desc:eq(' + thumbNum + ')').html();
            var slideTitle = jQuery('.JtagSlider .slide_desc:eq(' + thumbNum + ')').attr('title');
			
            jQuery('.JtagSlider .thumb_box:eq('+thumbNum+')').css('border','1px solid '+jtagslider.brd_Color);
            curSlide = thumbNum;
			
            // Slide Image
            jQuery('.JtagSlider .slider_cont').stop().animate({
                left:transition
            } , jtagslider.speed, jtagslider.easing);		
	 		
            // Thumbs Slide
            if (jQuery(this).is(':nth-child(4n + 1)')) {
				
                if ((Math.round(jQuery('.JtagSlider .thumbs_cont .thumbs_wrapper').position().left) == Math.round(thumbTrans * thumbNum)) && thumbNum != 0) {
                    // Thumb Scroll backward
					
                    jQuery('.JtagSlider .thumbs_cont .thumbs_wrapper').stop().animate({
                        left:thumbTrans*thumbNum - thumbTrans*4
                    }, jtagslider.speed, jtagslider.easing);
					
                } else {
                    // Thumb Scroll forward
                    jQuery('.JtagSlider .thumbs_cont .thumbs_wrapper').stop().animate({
                        left:thumbTrans*thumbNum
                    }, jtagslider.speed, jtagslider.easing);
                }
            }
				
            if (jtagslider.typo && (jQuery('.JtagSlider .slider_cont').position().left !=  -thumbNum * imgWidth ) ) {
                               
                jQuery('.JtagSlider .white-box').remove();
                var Desc = '<div class="white-box"><a href="'+jtagslider.contact+'" class="contact-btn"></a><h3>'+slideTitle+'</h3>'+slideDesc+'</div>'
                jQuery(Desc).hide().appendTo('.JtagSlider').delay(400).fadeIn(500);
            }
        });
    }
	
    this.autoslide = function() {
        setInterval(function() {
            jQuery('.JtagSlider .slideRight').trigger('click');
        }, jtagslider.timer);
    }
}
