/*
# 
#   =======[ ARTEX SLIDER ( jQuery Plugin Extention) ]========================================================+
#
#   Script         :  Artex Slider ( jquery.artexSlider.js )
#   Script Version :  0.5.8 BETA
#   Plugin For     :  JQuery version - 1.4.2
#   Script Library :  Artex Essentials 
#   Script URL     :  http://labs.artexstudios.com/freebees/jquery/artexslider/
#    
#   Developer(s)   :  James Gober ( JamesGober.com / ArtexStudios.com )
#
#   License        :  Dual licensed under the MIT and GPL Licenses. View License file included with this script
#                  :   or visit http://labs.artexstudios.com.
#
#   =========================================================================================================+
#   Copyright      :  (C) 2011, Artex Studios LLC. All Rights Reserved.


  
                                                   ARTEX LABS                                                                              
                                             -  Developers Network  -                                  
                                                       __                                          
                                                       )(                                  
                                                      (__)                              
                                           [ labs.artexstudios.com ]            
										 
										 
                                    - ARTEX LABS PURPOSE SMALL PARAGRAPH HERE-
										 
										 
										 
										 								 
										 
										 
										 
										       
+_____________________________________________________________________________________________________________+
_|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|¦
___|___|___|___|___|___|___|___|___|                                     __|___|___|___|___|___|___|___|___|__¦
_|___|___|___|___|___|___|___|___|    A R T E X    E S S E N T I A L S ™    _|___|___|___|___|___|___|___|___|¦
___|___|___|___|___|___|___|___|___|           dynamic library           __|___|___|___|___|___|___|___|___|__¦
_|___|___|___|___|___|___|___|___|___|__                               __|___|___|___|___|___|___|___|___|___|¦
___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|__¦
_|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|¦ 
_|+=======================================================================================================+|__¦
__¦                                                                                                       ¦|__¦
_|¦                                  ···+·  A R T E X   S L I D E R   ·+···                               ¦|__¦
__¦ ····································································································· ¦_|_¦
_|¦                                                                                                       ¦|__¦
__¦  > Script Name     :  Artex Slider                                                                    ¦__|¦
_|¦  > Script File     :  jquery.artexSlider.js                                                           ¦|__¦
__¦  > Script Version  :  0.5.8 BETA                                                                      ¦_|_¦
_|¦  > Script Library  :  Artex Essentials                                                                ¦___¦
__¦  > Script Website  :  http://labs.artexstudios.com                                                    ¦_|_¦
_|¦  > Functions With  :  JQuery version - 1.4.2 (required), easing (optionl)                             ¦___¦
__¦                                                                                                       ¦_|_¦
_|¦  > Developer(s)    :  James Gober ( jamesgober.com  / artexstudios.com )                              ¦|__¦
__¦                                                                                                       ¦_|_¦
_|¦                                                                                                       ¦_|_¦
__¦                                                                                                       ¦_|_¦
_|¦                                                                                                       ¦___¦
__¦  > Copyright (C)   :  2011 Artex Studios LLC. All Rights Reserved.                                    ¦|__¦
_|¦                    :  2011 Artex Labs. All Rights Reserved.                                           ¦___¦
__¦                                                                                                       ¦|__¦
_|¦ ····································································································· ¦__|¦
__¦  >  License        :  Dual licensed under the MIT and GPL Licenses.                                   ¦_|_¦
_|¦                    :  View License file included with this script or visit                            ¦___¦
__¦                    :  http://labs.artexstudios.com.                                                   ¦_|_¦
_|+=======================================================================================================+__|¦
___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|__¦
+-------------------------------------------------------------------------------------------------------------+
  _|_                                                                                                  _|_    ¦
   |			      =>  Copyright (C) 2011, Artex Studios LLC. All Rights Reserved. <=                |     ¦
______________________________________________________________________________________________________________¦



                       ________________________________________________________________
              ________|                  ·   +--     Artex Slider  --+                 |_______
              \       |                              ------------                      |      /
               /      |________________________________________________________________|     \
              /__________)                                                          (_________\
 
 
#   Script      : Artex Slider ( jquery.artex.slider.js ) version 1.0.0
#   Plugin      : JQuery version - 1.4.2
#   Script URL  : http://labs.artexstudios.com/freebees/jquery/artexslider/
#
#
#   --[ Script and Author Information ]-----------------------------------------------
#
#   Script      :   Artex Slider™ - jQuery plugin
#   Version     :   0.5.3 BETA
#   Author(s)   :   James Gober ( jamesgober.com )
#   Author Site :   http://artexstudios.com
#
#   ---------------------------------------------------------------------------------
 
#     ° 
#     __º Artex Labs 
#     )(  
#    (__) Http://labs.artexstudios.com
#
#
#   Sponsor Sites
#   ---------------------------------------------------------------------------------------------
#   >> Artex Studios :: Web Design Company ( http://artexstudios.com)
#   >> Artex Labs    :: Web Resource, Reseach and Development Network ( labs.artexstudios.com )
#   >> Artex Hosting :: Web Hosting // Business Hosting ( http://artexhosting.com )
#   ----------------------------------------------------------------------------------------------
#
#   Copyright (c) 2011 Artex Studios LLC (http://artexstudios.com)
#   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 for the jQuery library
#   http://jquery.com
*/

(function($) {
     $.fn.artexSlider = function(options){
		 
        var defaults = {
			style:          'slide',    // toggle the style to display the slides ( slide / fade / overlap )	
			direction:      'left',     // direction the slides / overlap will travel to ( left / right / top / bottom )
			use_easing:      false,     // use easing effects from the easing jquery plugin: jQuery Easing v1.3 - http://gsgd.co.uk/sandbox/jquery/easing/   
			overlap_shadow:  false,     // use shadow effects with the overlap style
			auto:            false,     // toggle slideshow to start and run automatically
			speed:           1000,      // toggle the speed the slides / fades move in
			pause:           5000,      // toggle the pause / timeout between slide and fade transitions.
			continuous:      false,     // toggle the slideshow to run continuous ( seemlessly ) 
			slide_nav:       true,      // slideshow uses a numeric navigation to change slides
			custom_nav:      false,     // use a custom slide navigation
			nav_id:         'ATXS_NID', // slideshow navigation ID
			nav_numeric:     true,      // create numbers for navigation
			btn_next_id:    'ATXS_NXT',
			btn_prev_id:    'ATXS_PRV',
			use_nxt_prv:     true
			
        }; 
        var options = $.extend(defaults, options);
		
	 // init objects
	    var sObject   =  $(this);	
		var sObjID    = sObject.attr('id');
		var sOID      = "#" + sObjID;  // # parent
		var ssObj     = "ATXS_"+sObjID+"_slides";
		var ssObjID   = "#"+ssObj;     // # slide container
		var tsObj     = "ATXS_"+sObjID+"_slide_";
		var tsObjID   = "#"+tsObj;     // # slide
		var count     = 1;
		var zindex    = 1000;
		var arr_slide = new Array();
		var is_prev_1 = false;
		var is_first  = true;
		var nav_id    = options.nav_id;
		var nav_ol_id = nav_id + "_ol";
		var has_click = false;
		$(sOID + " .slides").attr("id", ssObj);
		var cnt_slides  = $(".slide", sObject).length; zindex = zindex+cnt_slides;
		
	 // create nav 
	    if((options.slide_nav == true) && (options.custom_nav == false)){
           $(sObject).after('<div id="'+nav_id+'"><ol id="'+nav_ol_id+'"></ol></div>');
		}
		
     // pre-config slides
        $(ssObjID + " .slide").each(function (i) { $(this).attr("id", tsObj+(count)); 
                                                   arr_slide[i] = tsObjID+(count); 
												   i = i+1; 
												   count = count + 1;  
												   if(options.style == 'fade'){
                                                      $(this).css("float", "left");
                                                      $(this).css("position", "absolute");
													  $(this).css("z-index", zindex);
													  if(is_first == false){ 
													     $(this).css("display", "none");
													  }
												   }
												   is_first = false;
												   zindex = zindex-1;
												 });
												 
      // get slide style
         if(options.style == 'fade'){
			 // if fade
		 } else {
			var direction = 'left';
            switch(options.direction){
                   case "left": direction = 'left'; break; 
                   case "right": direction = 'right'; break; 
                   case "top": direction = 'top'; break; 
                   case "bottom": direction = 'bottom'; break; 
                   default: direction = 'left'; break; 
            };
		 }
		
      // get slide style
		 this.each(function() {
		     var obj       = sObject; 
             var c_slides  = $(".slide", obj).length;   
             var s_width   = $(".slide", obj).width();  //obj.width(s_width); 
             var s_height  = $(".slide", obj).height(); //obj.height(s_height);
             if(c_slides == 1){ var t_click = false; } else { t_click = true; }
             var t_slides  = c_slides-1; 
             var s_current = 0;
			 var s_clast   = 0;
             var t_slidez  = t_slides+1;
             var is_flip   = false;
             var is_next   = false;
			 var is_prev   = false;
			 var flip_prev = 1;
             var c_obj     = "";
             var o_obj     = "";
			 var c_slide2  = c_slides+1;
			 var numberic  = 0; 
             var nxt_button = '#' + options.btn_next_id;
             var prv_button = '#' + options.btn_prev_id;
             if(direction == 'right' || direction == 'bottom'){ is_flip = true; s_current = 1; time_curr = 1; } else { time_curr = 0; }
			 if(options.style == 'fade'){time_curr = 1;}
			 
             if((options.slide_nav == true) && (options.custom_nav == false)){
				 if((is_flip==true) || (options.style == 'fade')){
                     for(var i=0;i<c_slides;i++){
						 if(options.nav_numeric==true) { numberic = (i+1); } else { numeric = '&nbsp;'; }
                         $(document.createElement("li"))
                                   .attr('id',nav_ol_id + (i+1))
								   .html('<a rel='+ (i+1) +' href=\"javascript:void(0);\">'+ numeric +'</a>')
								   .appendTo($("#"+ nav_ol_id))
                                   .click(function(){
                                          slide_animate($("a",$(this)).attr('rel'),false);
                                   });
				     }
				 } else {
                     for(var i=0;i<c_slides;i++){
						 if(options.nav_numeric==true) { numberic = (i); } else { numeric = '&nbsp;'; }
                         $(document.createElement("li"))
                                   .attr('id',nav_ol_id + (i+1))
								   .html('<a rel='+ (i) +' href=\"javascript:void(0);\">'+ numeric +'</a>')
								   .appendTo($("#"+ nav_ol_id))
                                   .click(function(){
                                          slide_animate($("a",$(this)).attr('rel'),false);
                                   });
				     } 
				 }
             }
			 if(options.use_nxt_prv == true){
				 $(nxt_button).click(function(){clearTimeout(timeout); slide_animate('next',false); return false; });
				 $(prv_button).click(function(){clearTimeout(timeout); slide_animate('prev',false); return false; });
			 }
			 
			 var slides_width = (s_width * c_slides);
			 var slides_height = (s_height * c_slides);
			 var slide_start  = 0;
			 
			 $(sObject).css("overflow","hidden");
			 $(sObject).css("width", s_width);
			 $(sObject).css("height",s_height);
			 
             if(options.style == 'fade'){
			 
             } else {
                 switch(direction){
                        case "left": 
						     $(ssObjID).css("width", slides_width + "px"); 
							 $(ssObjID).css("height", s_height + "px"); 
                             for(var i in arr_slide){
								 $(arr_slide[i]).css("float", "left");
								 $(arr_slide[i]).css("display", "inline-block");
                             }
							 slide_start = 0;
							 $(ssObjID).css("margin-left", slide_start + "px");
							 break; 
                        case "right": 
						     $(ssObjID).css("width", slides_width + "px"); 
							 $(ssObjID).css("height", s_height + "px"); 
                             for(var i in arr_slide){
								 $(arr_slide[i]).css("float", "right");
								 $(arr_slide[i]).css("display", "inline-block");
                             }
							 slide_start = (slides_width - s_width);
							 $(ssObjID).css("margin-left", "-" + slide_start + "px");
							 break; 
                        case "top": 
						     $(ssObjID).css("height", slides_height + "px"); 
							 $(ssObjID).css("width", s_width + "px");
                             for(var i in arr_slide){
								 $(arr_slide[i]).css("float", "none");
								 $(arr_slide[i]).css("display", "block");
                             }
							 slide_start = 0;
							 $(ssObjID).css("margin-top", slide_start + "px");
							 break; 
                        case "bottom": 
						     $(ssObjID).css("height", slides_height + "px"); 
							 $(ssObjID).css("width", s_width + "px");
							 var cnt = 1;
                             for(var i in arr_slide){
								 $(arr_slide[i]).css("float", "left");
								 $(arr_slide[i]).css("display", "block"); 
								 $(arr_slide[i]).css("margin-top", "-" + (cnt * s_height) + "px");
								 cnt = cnt + 1;
                             }
							 //$(ssObjID).css("margin-top",  "330px");
							 slide_start = (slides_height - s_height);
							 $(ssObjID).css("margin-top",  (s_height)+"px");
							 break;
                        default: 
						     direction = 'left'; 
						     $(ssObjID).css("width", slides_width + "px"); 
							 $(ssObjID).css("height", s_height + "px"); 
                             for(var i in arr_slide){
								 $(arr_slide[i]).css("float", "left");
								 $(arr_slide[i]).css("display", "inline-block");
                             }
							 slide_start = 0;
							 $(ssObjID).css("margin-left", slide_start + "px");
							 break;
                 }; // end switch
             }// end if
		 
             function set_current(i){
                  i = parseInt(i);
				  if((is_flip==true) || (options.style == 'fade')){
				  //i = i+1;
				     $("#this_fade").html(i);
                     $("li", "#" + nav_ol_id).removeClass("current");
                     $("li#" + nav_ol_id + "" + i).addClass("current");
				  } else {
				     i = i+1;
				     $("#this_fade").html(i);
                     $("li", "#" + nav_ol_id).removeClass("current");
                     $("li#" + nav_ol_id + "" + i).addClass("current");  
				  }
             };
			 
             function slide_adjust(){
                  t_click = true; 
				  if(options.style == 'fade'){
                     if(o_obj != c_obj){					  
                        $(o_obj).css("display", "none");
					 }
				  }
                  set_current(s_current);
             };
		 
		 
             function slide_animate(dir,click_toggle){ 
                  if (t_click){
                      t_click = false; 
                      var c_onslide = s_current;
					  var res = 0;
					  if(is_flip){ is_next = (c_onslide>=t_slidez); res = 1;} else {is_next = (c_onslide>=t_slides); res = 0;}
					  if(is_flip){ is_prev = (s_current<=1); flip_prev=0; } else { is_prev = (s_current<0); flip_prev=-1;}
                      switch(dir){
                            case "next":  if(options.style == 'fade'){
							                 s_current = (c_onslide>=t_slidez) ? 1 : parseInt(s_current) + 1;
							              } else {
											 s_current = (is_next) ? (options.continuous ? s_current + 1 : res) : parseInt(s_current) + 1;
										  }
							              has_click = false;
							              break; 
                            case "prev":  if(options.style == 'fade'){
								             s_current = (s_current==0) ? t_slidez : parseInt(s_current)-1;
											 if(s_clast == 0){  s_clast   = 1; }
											 if(s_current == 0){  s_current = t_slidez; } 
							              } else {
							                 if(is_flip == false){if(s_current==0){ s_current= (s_current -2);}}
							                 s_current = (is_prev) ? (options.continuous ? s_current-1 : flip_prev) : parseInt(s_current)-1; 
							                 if(is_flip && (s_current<=0)){s_current=t_slidez;} else { if(is_flip && (s_current>=t_slidez)){s_current=1;}} 
										     if((is_flip==false) && (s_current<0)){s_current=t_slides; } else { if((is_flip==false) && (s_current>=t_slides)){s_current=0;}}
										  }
										  has_click = false;
										  break; 
                            case "first": if(is_flip){ s_current = 1; } else { s_current = 0; } if(options.style == 'fade'){s_current = 1;} break;  
                            case "last":  if(is_flip){ s_current = t_slidez; } else { s_current = t_slides; } if(options.style == 'fade'){s_current = t_slidez;} break; 
                            default:      clearTimeout(timeout); has_click = true; s_current = dir; break; 
                      };
                      var diff  = Math.abs(c_onslide-s_current);
                      var speed = options.speed;	
                      if(options.style == 'fade'){ 
						 if((s_clast == 0) && (has_click == false)){ 
						   s_clast   = s_current;
						   s_current = (s_current + 1);
                           c_obj = tsObjID +""+ (s_current);
                           o_obj = tsObjID +""+ (s_clast);
                         } else if(s_clast>0) { 
                           c_obj = tsObjID +""+ (s_current); 
                           o_obj = tsObjID +""+ (s_clast);					 
						 }
						 if((has_click == true)){
							if(o_obj == ''){
							   s_clast   = 1;
							   o_obj = tsObjID +""+ (s_clast);
							   c_obj = tsObjID +""+ (s_current);
							}
                            $(o_obj).fadeOut(speed, function() { $(c_obj).fadeIn(speed, function() { slide_adjust(); }); });
						    s_clast = s_current;  //$("#this_fade").html(c_obj);
						 } else if(has_click == false){
                            $(o_obj).fadeOut(speed, function() { $(c_obj).fadeIn(speed, function() { slide_adjust(); }); });
						    s_clast = s_current;  //$("#this_fade").html(c_obj);
						 }
                      } else {
                         switch(options.direction){
                                case "left": 
								    s_distance = (s_current*s_width*-1); 
									if(options.use_easing){
									   $(ssObjID).animate({ marginLeft: s_distance }, { queue:false, duration:speed, complete:slide_adjust, easing: 'easeOutQuint' });
									} else {
									   $(ssObjID).animate({ marginLeft: s_distance }, { queue:false, duration:speed, complete:slide_adjust });	
									}
									break; 
                                case "right": 
									s_distance = (slides_width-(slides_width/c_slides*s_current));  
									if(options.use_easing){
									   $(ssObjID).animate({ marginLeft:   -s_distance }, { queue:false, duration:speed, complete:slide_adjust, easing: 'easeOutQuint' });
									} else {
									   $(ssObjID).animate({ marginLeft:  -s_distance }, { queue:false, duration:speed, complete:slide_adjust });	
									}
									break; 
                                case "top": 
									s_distance = (s_current*s_height*-1);
									if(options.use_easing){
									   $(ssObjID).animate({ marginTop:   s_distance }, { queue:false, duration:speed, complete:slide_adjust, easing: 'easeOutQuint' });
									} else {
									   $(ssObjID).animate({ marginTop:  s_distance }, { queue:false, duration:speed, complete:slide_adjust });	
									}
									break; 
                                case "bottom": 
                                    s_distance = ((slides_height/c_slides*s_current));
									if(options.use_easing){
									   $(ssObjID).animate({ marginTop:   s_distance }, { queue:false, duration:speed, complete:slide_adjust, easing: 'easeOutQuint' });
									} else { 
									   $(ssObjID).animate({ marginTop:  s_distance }, { queue:false, duration:speed, complete:slide_adjust });	
									}
									break; 
                                default: 
									s_distance = (s_current*s_width*-1);
									if(options.use_easing){
									   $(ssObjID).animate({ marginLeft:   s_distance }, { queue:false, duration:speed, complete:slide_adjust, easing: 'easeOutQuint' });
									} else {
									   $(ssObjID).animate({ marginLeft:  s_distance }, { queue:false, duration:speed, complete:slide_adjust });	
									}
									break; 
                         };
					  } 
                      if(click_toggle) { clearTimeout(timeout);}
                      if(options.auto && !click_toggle){
						  var timer = (options.speed)+(options.pause);
                         timeout = setTimeout(function(){ slide_animate("next",false); },timer); 
                      };
                  };
				
             };

              var timeout;
              if(options.auto){ timeout = setTimeout(function(){ slide_animate("next",false);},options.pause); };
              set_current(time_curr); 
		 });
		 
		 
		 
     }; // end of slider
})(jQuery);
