/*
bxCarousel v1.0
Plugin developed by: Steven Wanderski
http://bxcarousel.com
http://stevenwanderski.com

Released under the GPL license:
http://www.gnu.org/licenses/gpl.html
*/

(function($){
$.fn.bxCarousel=function(options){
var defaults={
move:4,display_num:4,speed:500,margin:0,auto:false,auto_interval:2000,auto_dir:'next',auto_hover:false,next_text:'next',next_image:'',prev_text:'prev',prev_image:'',controls:true};
var options=$.extend(defaults,options);
return this.each(function(){
var $this=$(this);
var li=$this.find('li');
var first=0;
var fe=0;
var last=options.display_num-1;
var le=options.display_num-1;
var is_working=false;
var j='';
var clicked=false;
li.css({
'float':'left','listStyle':'none','marginRight':options.margin}
);

var ow=li.outerWidth(true);
wrap_width=(ow*options.display_num)-options.margin;
var seg=ow*options.move;
$this.wrap('<div class="bx_container"></div>').width(999999);
if(options.controls){
	if(options.next_image!=''||options.prev_image!=''){
		var controls='<a href="" class="prev"><img src="'+options.prev_image+'"/></a><a href="" class="next"><img src="'+options.next_image+'"/></a>';
	} else{
		var controls='<div class="control_fotos"><a href="" class="prev">'+options.prev_text+'</a><a href="" class="next">'+options.next_text+'</a>';
	}
}
controls += '<div class="ayeli"></div></div>';
	

$this.parent('.bx_container').wrap('<div class="bx_wrap"></div>').css({'position':'relative','width':wrap_width,'overflow':'hidden'}).after(controls);
var w=li.slice(0,options.display_num).clone();
var last_appended=(options.display_num+options.move)-1;
$this.empty().append(w);
get_p();
get_a();
$this.css({
'position':'relative','left':-(seg)}

);

$('.next').click(function(){
	//$this.parent().siblings('.next').click(function(){
	slide_next();
	clearInterval(j);
	clicked=true;
	return false;
}

);

//$this.parent().siblings('.prev').click(function(){
$('.prev').click(function(){
	slide_prev();
	clearInterval(j);
	clicked=true;
	return false;
}

);
if(options.auto){
start_slide();
if(options.auto_hover&&clicked!=true){
$this.find('li').live('mouseenter',function(){
if(!clicked){
clearInterval(j);
}

}

);
$this.find('li').live('mouseleave',function(){
if(!clicked){
start_slide();
}

}

);
}

}


function start_slide(){
	if(options.auto_dir=='next'){
		j=setInterval(function(){
		slide_next()},options.auto_interval);
	} else{
		j=setInterval(function(){
		slide_prev()},options.auto_interval);
	}
}


function slide_next(){
	if(!is_working){
		is_working=true;
		set_pos('next');
		//Transición a la proxima imagen
		$this.animate({
			left:'-='+seg},options.speed,function(){
				$this.find('li').slice(0,options.move).remove();
				$this.css('left',-(seg));
				get_a();
				is_working=false;
			}
		);
	}
}


function slide_prev(){
if(!is_working){
is_working=true;
set_pos('prev');
$this.animate({
left:'+='+seg}

,options.speed,function(){
$this.find('li').slice(-options.move).remove();
$this.css('left',-(seg));
get_p();
is_working=false;
}

);
}

}


function get_a(){
var str=new Array();
var lix=li.clone();
le=last;
for(i=0;
i<options.move;
i++){
le++
if(lix[le]!=undefined){
str[i]=$(lix[le]);
}

else{
le=0;
str[i]=$(lix[le]);
}

}


$.each(str,function(index){
$this.append(str[index][0]);
}

);
}


function get_p(){
var str=new Array();
var lix=li.clone();
fe=first;
for(i=0;
i<options.move;
i++){
fe--
if(lix[fe]!=undefined){
str[i]=$(lix[fe]);
}

else{
fe=li.length-1;
str[i]=$(lix[fe]);
}

}


$.each(str,function(index){
$this.prepend(str[index][0]);
}

);
}


function set_pos(dir){
if(dir=='next'){
first+=options.move;
if(first>=li.length){
first=first%li.length;
}


last+=options.move;
if(last>=li.length){
last=last%li.length;
}

}

else if(dir=='prev'){
first-=options.move;
if(first<0){
first=li.length+first;
}


last-=options.move;
if(last<0){
last=li.length+last;
}

}

}

}

);
}

}

)(jQuery);

