/**
 * AsyncSlider
 * JQuery plugin
 *
 * Created by: Arlind Nushi
 * Author email: arlindd@gmail.com
 */


(function($){var ct;var p=this;var callback=function(){};var bg_mask;var bg_mask_2;var slides=[];var min_time=500;var max_time=1000;var direction='horizontal';var easing='easeInOutSine';var easing_in='';var easing_out='';var keyboard_navigate=false;var prev_next_nav=true;var center_prev_next_nav=true;var prev_next_nav_margin=5;var slides_nav=true;var random=true;var autoswitch=false;var autoswitch_interval=5000;var autoswitch_interval_func=null;var current_index=0;var total_slides=0;var timeout;var horizontal_direction='';var vertical_direction='';var base_zindex=1000;var busy=false;var _next_a,_prev_a;var slides_nav_el;function sliderPrepare(el,options){if(typeof ct=='undefined'){ct=$(el);ct.css({position:'relative'});if(typeof options=='object'){if(typeof options.direction=='string'){if(options.direction.toLowerCase()=='vertical'){direction='vertical';}
else{direction='horizontal';}}
if(typeof options.random!='undefined'){random=options.random;}
if(typeof options.minTime!='undefined'){min_time=options.minTime;}
if(typeof options.maxTime!='undefined'){max_time=options.maxTime;}
if(typeof options.easing=='string'){easing=options.easing;}
if(typeof options.easingIn=='string'){easing_in=options.easingIn;}
if(typeof options.easingOut=='string'){easing_out=options.easingOut;}
if(typeof options.keyboardNavigate!='undefined'){keyboard_navigate=options.keyboardNavigate?true:false;}
if(typeof options.prevNextNav!='undefined'){prev_next_nav=options.prevNextNav;}
if(typeof options.centerPrevNextNav!='undefined'){center_prev_next_nav=true;prev_next_nav_margin=parseInt(options.centerPrevNextNav,10);}
if(typeof options.slidesNav!='undefined'){slides_nav=options.slidesNav;}
if(typeof options.autoswitch=='number'&&options.autoswitch>0){autoswitch=true;autoswitch_interval=options.autoswitch;_autoSwitch("on");}}
else{options={};}
ct.children().each(function(i){var slide=$(this);var slide_elements=slide.find('*');slide.hide().css({zIndex:base_zindex+10,position:'relative'});slide.height=slide.outerHeight();slide.width=slide.outerWidth();slide.background=false;var sbg="";var _bg_color=slide.css("background-color");var _bg_image=slide.css("background-image");var _bg_repeat=slide.css("background-repeat");var _bg_position=slide.css("background-position");var _bg_property=_bg_color+' '+(_bg_image=='none'?'':_bg_image)+' '+_bg_position+' '+_bg_repeat;if(_bg_image!='none'||_bg_color){sbg=_bg_property;slide.css("background","none");}
if(sbg||slide.attr("data-background")){slide.background=sbg;if(slide.attr("data-background")){slide.background=slide.attr("data-background");}
var img_url=[];img_url=slide.background.match(/url\((.*?)\)/);if(img_url&&img_url.length>0){var img=new Image();img.src=img_url[1];}}
slide.elements=[];slide_elements.each(function(){var $this=$(this);var def_left=parseInt($this.css("left"),10);var def_top=parseInt($this.css("top"),10);$this.def_left=0;$this.def_top=0;if(def_left){$this.def_left=def_left;}
if(def_top){$this.def_top=def_top;}
if($this.css('position')!='absolute'){$this.css({position:'relative'});}
$this.css({zIndex:base_zindex+10});if($this.get(0).tagName!="BR"){slide.elements.push($this);}});slide.index=parseInt(i,10);slides.push(slide);if(i===0){slide.show();ct.height(slide.height).css({overflow:'hidden'});bg_mask=$('<div id="asyncslider_background_mask"></div>');bg_mask_2=$('<div id="asyncslider_background_mask_2"></div>');slide.before(bg_mask);slide.before(bg_mask_2);bg_mask.css({position:'absolute',top:0,left:0,zIndex:base_zindex+1,padding:0,margin:0,width:ct.outerWidth(),height:ct.outerHeight()});bg_mask_2.css({position:'absolute',top:0,left:0,zIndex:base_zindex+2,padding:0,margin:0,width:ct.outerWidth(),height:ct.outerHeight()});$(window).resize(function(){bg_mask.width(ct.outerWidth());bg_mask_2.width(ct.outerWidth());});if(slide.background){bg_mask.css("background",slide.background);}}});total_slides=slides.length;if(typeof options!='undefined'&&typeof options.firstSlide!='undefined'){var fs_index=options.firstSlide-1;if(fs_index>=0&&fs_index<total_slides){var tmp_min_time=min_time,tmp_max_time=max_time,tmp_callback=callback;min_time=max_time=0;callback=function(){};current_index=fs_index;switchSlide(current_index,0);min_time=tmp_min_time;max_time=tmp_max_time;callback=tmp_callback;}}
if(ct.children().length<2){return;}
$(window).keydown(function(e){if(keyboard_navigate){switch(e.keyCode){case 37:prevSlide();break;case 39:nextSlide();break;}}});if(prev_next_nav&&total_slides>1){var next_prev_nav_el=$('<ul id="asyncslider_next_prev_nav" />');next_prev_nav_el.css({zIndex:base_zindex+100});var prev_li=$('<li class="prev" />');var next_li=$('<li class="next" />');var prev_a=$('<a href="#">Previous</a>');var next_a=$('<a href="#">Next</a>');next_prev_nav_el.append(prev_li);next_prev_nav_el.append(next_li);prev_li.append(prev_a);next_li.append(next_a);prev_li.click(function(ev){ev.preventDefault();prevSlide();});next_li.click(function(ev){ev.preventDefault();nextSlide();});if(typeof prev_next_nav=='object'){prev_next_nav.append(next_prev_nav_el);}
else{ct.append(next_prev_nav_el);if(center_prev_next_nav){var margin_h=prev_next_nav_margin;var current_slide=getSlide(current_index);next_prev_nav_el.css({position:'absolute',left:"50%",margin:0,padding:0,listStyle:'none',marginLeft:-parseInt(current_slide.outerWidth()/2,10),top:0});next_prev_nav_el.find('*').css({margin:0,padding:0});var next=next_prev_nav_el.find('.next');var prev=next_prev_nav_el.find('.prev');_next_a=next.children();_prev_a=prev.children().css({left:-prev_a.width()-margin_h});prev.add(next).css({position:'relative'});prev.width(_prev_a.width());next.width(_next_a.width());_next_a.add(_prev_a).css({position:'absolute'});_next_a.css({left:current_slide.outerWidth()+margin_h,top:parseInt(current_slide.outerHeight()/2-_prev_a.outerHeight()/2,10)});_prev_a.css({top:parseInt(current_slide.outerHeight()/2-_prev_a.outerHeight()/2,10)});}}}
if(slides_nav){slides_nav_el=$('<ul id="asyncslider_slides_nav" />');slides_nav_el.css({zIndex:base_zindex+100});for(var i=0;i<slides.length;i++){var slide=slides[i];var slide_button_li=$('<li id="asyncslider_slide_'+(parseInt(i,10)+1)+'" />');var slide_button_a=$('<a href="#" rel="'+(i)+'">'+(parseInt(i,10)+1)+'</a>');if(i===0&&typeof options.firstSlide=='undefined'){slide_button_li.addClass('active');}
else if(typeof options.firstSlide!='undefined'&&i==parseInt(options.firstSlide,10)-1){slide_button_li.addClass('active');}
slides_nav_el.append(slide_button_li);slide_button_li.append(slide_button_a);index=parseInt(i,10);var btn_click_a=slide_button_a.click(function(ev){ev.preventDefault();if(busy){return false;}
slides_nav_el.find('li').removeClass('active');$(this).parent().addClass('active');var i=parseInt($(this).attr("rel"),10);var old_index=current_index;current_index=i;switchSlide(current_index,old_index);});}
if(typeof slides_nav=='object'){slides_nav.append(slides_nav_el);}
else{ct.append(slides_nav_el);}}}}
function setIndex(index){if(index>=0&&index<total_slides){current_index=index;}}
function getSlide(index){if(index>=0&&index<total_slides){return slides[index];}
return null;}
function nextSlide(_direction){if(busy){return false;}
var old_index=current_index;current_index++;current_index=current_index%total_slides;horizontal_direction='left';vertical_direction='bottom';if(_direction){horizontal_direction=_direction=='right'?'right':'left';}
if(_direction){vertical_direction=_direction=='bottom'?'top':'bottom';}
switchSlide(current_index,old_index);}
function prevSlide(_direction){if(busy){return false;}
var old_index=current_index;current_index--;current_index=current_index<0?(total_slides-1):current_index;horizontal_direction='right';vertical_direction='top';if(_direction){horizontal_direction=_direction=='left'?'left':'right';}
if(_direction){vertical_direction=_direction=='top'?'bottom':'top';}
switchSlide(current_index,old_index);}
function switchSlide(_in,_out){var current_slide=getSlide(_out);var next_slide=getSlide(_in);if((!current_slide||!next_slide)||_in==_out){return false;}
if(busy){return false;}
busy=true;var half_m=parseInt((max_time+min_time)/2,10);max_time=min_time>max_time?min_time:max_time;min_time=min_time>max_time?max_time:min_time;if(next_slide.background){if(!current_slide.background){bg_mask.css({background:next_slide.background}).hide().fadeTo(half_m,1);}
else{bg_mask.css({background:next_slide.background}).show();bg_mask_2.stop().fadeTo(half_m,0,function(){bg_mask.hide();bg_mask_2.css({background:next_slide.background}).fadeTo(0,1);});}}
else{bg_mask_2.stop().fadeTo(half_m,0);bg_mask.stop().fadeTo(half_m,0);}
if(center_prev_next_nav&&_next_a&&_prev_a){_next_a.stop().animate({top:parseInt(next_slide.outerHeight()/2-_next_a.outerHeight()/2,10)},half_m);_prev_a.stop().animate({top:parseInt(next_slide.outerHeight()/2-_prev_a.outerHeight()/2,10)},half_m);}
bg_mask.stop().animate({height:next_slide.height},half_m);bg_mask_2.height(next_slide.height);if(slides_nav_el){slides_nav_el.find('li').removeClass('active').filter(':nth-child('+(next_slide.index+1)+')').addClass('active');}
var turn=1,i,el,time_seq,time_seq_step,def_left,def_top,animation_length,move_top,move_left;if(direction=='horizontal'){var win=$(window);var win_ct_gap_size=win.width()-next_slide.width;ct.css({overflow:"hidden"}).stop().animate({height:next_slide.height},half_m);var move_left_1=parseInt(current_slide.width/2+win_ct_gap_size/2,10);if(_in>_out){move_top=current_slide.height;if(move_top<next_slide.height){move_top=next_slide.height-(next_slide.height-current_slide.height);}
current_slide.css({position:'relative',zIndex:base_zindex+3});next_slide.css({position:'relative',zIndex:base_zindex+4,top:-move_top}).show();turn=1;}
else{move_top=current_slide.height;if(move_top<next_slide.height){move_top=next_slide.height;}
else{move_top-=(current_slide.height-next_slide.height);}
current_slide.css({position:'relative',zIndex:base_zindex+3,top:-move_top});next_slide.css({position:'relative',zIndex:base_zindex+4}).show();turn=-1;}
if(horizontal_direction){if(horizontal_direction=='right'){turn=-1;}
else{turn=1;}}
if(!easing_in){easing_in=easing;}
if(!easing_out){easing_out=easing;}
time_seq=min_time;time_seq_step=parseInt((max_time-min_time)/current_slide.elements.length,10);move_left=current_slide.width+win_ct_gap_size;for(i=0;i<current_slide.elements.length;i++){el=current_slide.elements[i];def_left=el.def_left;def_top=el.def_top;animation_length=randomFromTo(min_time,max_time);move_left_1=move_left;if(!random){time_seq+=time_seq_step;animation_length=time_seq;}
el.stop().animate({left:-turn*move_left_1+def_left,top:def_top+0},animation_length,easing_in);}
time_seq=min_time;time_seq_step=parseInt((max_time-min_time)/next_slide.elements.length,10);move_left=next_slide.width+win_ct_gap_size;var next_slide_total_elements=next_slide.elements.length;for(i=0;i<next_slide.elements.length;i++){el=next_slide.elements[i];def_left=el.def_left;def_top=el.def_top;animation_length=randomFromTo(min_time,max_time);move_left_1=move_left+randomFromTo(0,el.outerWidth());if(!random){time_seq+=time_seq_step;animation_length=time_seq;}
var _index=parseInt(i,10);el.css({left:turn*move_left_1+def_left,top:def_top+0}).stop().animate({left:0+def_left},animation_length,easing_out);}}
else{ct.css({overflow:"hidden"}).stop().animate({height:next_slide.height},half_m);var move_top_1=ct.height();if(_in>_out){current_slide.css({position:'relative',zIndex:base_zindex+3});next_slide.css({position:'relative',zIndex:base_zindex+4,top:-current_slide.height}).show();turn=1;}
else{current_slide.css({position:'relative',zIndex:base_zindex+3,top:-current_slide.height});next_slide.css({position:'relative',zIndex:base_zindex+4}).show();turn=-1;}
if(vertical_direction){if(vertical_direction=='top'){turn=-1;}
else{turn=1;}}
if(!easing_in){easing_in=easing;}
if(!easing_out){easing_out=easing;}
current_slide.animate({top:-turn*move_top_1},half_m);time_seq=min_time;time_seq_step=parseInt((max_time-min_time)/current_slide.elements.length,10);for(i=0;i<current_slide.elements.length;i++){el=current_slide.elements[i];def_left=el.def_left;def_top=el.def_top;animation_length=randomFromTo(min_time,max_time);move_top=move_top_1;if(!random){time_seq+=time_seq_step;animation_length=time_seq;}
el.stop().animate({top:-turn*move_top+def_top},animation_length,easing_in);}
time_seq=min_time;time_seq_step=parseInt((max_time-min_time)/next_slide.elements.length,10);for(i=0;i<next_slide.elements.length;i++){el=next_slide.elements[i];def_left=el.def_left;def_top=el.def_top;animation_length=randomFromTo(min_time,max_time);move_top=move_top_1;if(!random){time_seq+=time_seq_step;animation_length=time_seq;}
el.css({top:turn*move_top,left:0+def_left}).stop().animate({top:0+def_top},animation_length,easing_out);}}
timeout=window.setTimeout(function(){current_slide.css({position:'relative',top:0,left:0}).hide();next_slide.css({position:'relative',top:0,left:0});for(i=0;i<current_slide.elements.length;i++){el=current_slide.elements[i];def_left=el.def_left;def_top=el.def_top;el.css({left:def_left});el.css({top:def_top});}
for(i=0;i<next_slide.elements.length;i++){el=next_slide.elements[i];def_left=el.def_left;def_top=el.def_top;el.css({left:def_left});el.css({top:def_top});}
horizontal_direction='';callback(next_slide.index+1);window.clearTimeout(timeout);timeout=null;busy=false;if(typeof autoswitch_interval_func!='undefined'){window.clearTimeout(autoswitch_interval_func);autoswitch_interval_func=null;_autoSwitch("on");}},max_time);return true;}
function randomFromTo(from,to){return Math.floor(Math.random()*(to-from+1)+from);}
function setOption(_var,_val){switch(_var.toLowerCase()){case"direction":if(_val=="vertical"){direction='vertical';}
else{direction='horizontal';}
break;case"callback":if(typeof _val=='function'){callback=_val;}
break;case"minTime":min_time=parseInt(_val,10);break;case"maxTime":max_time=parseInt(_val,10);break;case"easing":easing_in='';easing_out='';easing=_val;break;case"easingin":easing_in=_val;break;case"easingout":easing_out=_val;break;case"keyboardnavigate":keyboard_navigate=_val?true:false;break;case"random":random=_val?true:false;break;case"autoswitch":if(typeof _val=='number'&&_val>0){_autoSwitch("update_interval",_val);}
else if(typeof _val=='string'&&(_val.toLowerCase()=='play'||_val.toLowerCase()=='on'||_val.toLowerCase()=='off'||_val.toLowerCase()=='pause')){_autoSwitch(_val.toLowerCase());}
else if(typeof _val=='string'&&_val.toLowerCase()=='pause'){_autoSwitch("pause");}
break;}}
function _autoSwitch(type,new_value){switch(type){case"off":autoswitch=false;if(typeof autoswitch_interval_func!='undefined'){window.clearInterval(autoswitch_interval_func);autoswitch_interval_func=null;}
break;case"on":_autoSwitch("update_interval",autoswitch_interval);break;case"update_interval":autoswitch=true;autoswitch_interval=new_value;if(typeof autoswitch_interval_func!='undefined'){window.clearInterval(autoswitch_interval_func);autoswitch_interval_func=null;}
autoswitch_interval_func=setInterval(function(){if(autoswitch){nextSlide();}},autoswitch_interval);break;case"play":autoswitch=true;if(typeof autoswitch_interval_func=='undefined'){_autoSwitch("on");}
break;case"pause":autoswitch=false;break;}}
$.fn.extend({asyncSlider:function(options,_var,_val){if(typeof options=='string'){switch(options.toLowerCase()){case"movetoslide":var move_to_slide=parseInt(_var,10);if(move_to_slide>0&&move_to_slide<=total_slides){var old_index=current_index;current_index=move_to_slide-1;if(_val){horizontal_direction=_val=='right'?'right':'left';}
if(_val){vertical_direction=_val=='bottom'?'top':'bottom';}
switchSlide(current_index,old_index);}
break;case"set":setOption(_var,_val);break;case"next":nextSlide(_var);break;case"prev":prevSlide(_var);break;}}
sliderPrepare(this,options);if(typeof _var=='function'){callback=_var;}}});})(jQuery);
