al.load_jqueryplugins({
  easing:al.env.lib_path+"/jquery.easing.min.js",
  carouFredSel:al.env.lib_path+"/jquery.carouFredSel-5.4.0-packed.js",
  mousewheel:al.env.lib_path+"/jquery.mousewheel.min.js",
  preloader:al.env.lib_path+"/preloader.js"
});
var slider_defalut={slider_object:"slidepic-sliderobj",slider:".slidepic-slider",infinite:false,circular:false,scroll:{items:1,fx:"scroll",mousewheel:true,duration:1000},auto:{play:false},items:{visible:3},pagination:{},container:".item-list :eq(0)",group_num:0,group_class:"group-wrapper",group_item_class:"group-wrapper-item"};
var slider_config_map={width:"slidepic_width",height:"slidepic_height",thumbnail:"slidepic_thumbnail",fullscreen:"fullscreenslide",container:"container",circular:"circular",direction:"direction",scroll:{items:"scroll_items",duration:"duration",fx:"effect",mousewheel:"mousewheel"},auto:{play:"autoplay"},items:{visible:"items"},group_num:"slidepic_group_num"};
al.new_plugin({
  name:"slidepic",
  defaults:jQuery.extend(true,{},slider_defalut,{direction:"left",circular:true,scroll:{mousewheel:false},auto:{play:true},items:{visible:1}}),
  map:slider_config_map,
  fullscreen_hooked:false,
  fullscreen_class:"al-fullscreen-slide",
  fullscreen_itemclass:"al-fullscreen-item",
  fullscreen_itemwrapperclass:"al-fullscreen-item-wrapper",
  content_class:"al-slidepic-content",
  addfullscreenimg:function(dom,config){
    $(dom).addClass(al.$.slidepic.fullscreen_itemclass);
    al.$.fullscreen.fullscreen(al.$.fullscreen.preper_obj($(dom),al.$.slidepic.fullscreen_itemclass,al.$.slidepic.fullscreen_itemwrapperclass));
    al.$.fullscreen.fullscreen(dom);
  },
  makefullscreen:function(obj,config){
   if (config.fullscreen){
    obj.addClass(al.$.slidepic.fullscreen_class);
    config.width=$(window).width();config.height=$(window).height();
    config.fullscreenobj=$(config.container,obj)[0];
    if (! al.$.slidepic.fullscreen_hooked){al.$.slidepic.fullscreen_hooked=true;$(window).resize(al.$.slidepic.fullscreen_hook);}
    al.$.slidepic.fullscreen_hook();
    obj.ALdata("fullslider",config);
   }
  },
  fullscreen_hook:function(){
    var config,obj;
   $("."+ al.$.slidepic.fullscreen_itemclass).each(function(){al.$.fullscreen.fullscreen(this)});
    $("."+al.$.slidepic.fullscreen_class).each(function(){
      config=$(this).ALdata("fullslider");
      obj=this;
      if (config.fullscreenobj){
	$(config.fullscreenobj).trigger("configuration",{"width":$(window).width(),"height":$(window).height()},true);
	$(config.fullscreenobj).trigger("updateSizes");
      }
    });
    $(".caroufredsel_wrapper",obj).each(function(){al.$.fullscreen.fullscreen(this)});
  },
  func:function(obj,config){
    config.slideobj=$(config.container,obj); 
    config.next=jQuery(".next",obj);
    config.prev=jQuery(".prev",obj);
    config.pagination.container=jQuery(".pagination",obj);
    if (config.group_num){al.$.slidepic.makegroup(obj,config);}
    if (config.preload==true ||config.fullscreen){
      al.$.slidepic.preload(obj,config);
    }else{
      al.$.slidepic.exec(obj,config);
    }
  },
  backup_content:function(obj){
    $(obj).data(al.$.slidepic.content_class,$(obj).html());
    $(obj).html("");
  },
  restore_content:function(obj){
    $(obj).html($(obj).data(al.$.slidepic.content_class));
  },
  preload:function(obj,config){
    var items=$(config.container,obj).children().get();
    for (var i in items){$(items[i]).css({display:"none"})}
    $(items[0]).one("preloadfinish",{obj:obj,config:config},al.$.slidepic.firstloaded).preloader({cleancontent:true});
  },
  firstloaded:function(e){
    var config=e.data.config,obj=e.data.obj;
    var items=$(config.container,obj).children().get();
    al.load_js("fullscreen");
      if (config.fullscreen){    
	$("img",items[0]).each(function(){
	  al.$.slidepic.addfullscreenimg(this,config)
	});
      }
    $(config.container,obj).children().css({display:"block"});
    al.$.slidepic.makefullscreen(obj,config);
    $(config.container,obj).one("preloadfinish",{obj:obj,config:config},al.$.slidepic.preloadfinish).preloader();
  },
  preloadfinish:function(e){
    var config=e.data.config,obj=e.data.obj,i;
    if (config.fullscreen){
      var items=$(config.container,obj).children().get();
      for (i in items){
	if(i>0){
	  $("img",items[i]).each(function(){
	    al.$.slidepic.addfullscreenimg(this,config);
	  });
	}
      }
    }
    al.$.slidepic.exec(obj,config);
  },
  exec:function (obj,config){
    config.slideobj.carouFredSel(config);
    if (config.fullscreen){
      config.slideobj.data("cfs_origCssMargin",0);
      config.slideobj.bind("updateSizes",function(){$("caroufredsel_wrapper",this).each(function(){console.debug("reset");al.$.fullscreen.fullscreen(this)});});
      config.slideobj.triggerHandler("configuration",{"width":$(window).width(),"height":$(window).height()},true);
      config.slideobj.triggerHandler("updateSizes");
      $(".caroufredsel_wrapper",obj).each(function(){al.$.fullscreen.fullscreen(this)});      
    }  
    
/*     al.$.slidepic.slider(obj,config);*/
    al.$.slidepic.thumbnail(obj,config);
    if (config.direction=="left"||config.direction=="right"){$(".caroufredsel_wrapper :eq(0)",obj).css("height","100%");}
  },
  makegroup:function(obj,config){
    var items=config.slideobj.children().get();
    var groups=[];
    var count=config.group_num;
    var d,last_item,item;
    for (item in items){
      if (count>=config.group_num){
	last_item && last_item.addClass(config.group_item_class+"-last");
	groups.push(d=$("<div/>").addClass(config.group_class).addClass(config.group_class+"-"+groups.length).appendTo(config.slideobj));
	count=0;
      }
      count++;
      last_item=$(items[item]).addClass(config.group_item_class+"-"+count).addClass(config.group_item_class).appendTo(d);
    }
    last_item && last_item.addClass(config.group_item_class+"-last");
    groups.pop().addClass(config.group_class+"-last");
  },
  slider_change_hook:function(){
    var config=$(this).ALdata("sliderpic-slider");
    $(config.pic).trigger("slideTo",($(this).data("rangeinput").getValue()));
  },
  pic_change_hook:function(){
    var config=$(this).ALdata("sliderpic-slider");
    if(config.slider){
      $(config.slider).attr("disabled","true");
      var api=$(config.slider).data("rangeinput");
      api.setValue($(this).triggerHandler("currentPosition"));
    };
  },
  pic_change_end_hook:function(){
    var config=$(this).ALdata("sliderpic-slider");
    if(config.slider){
      $(config.slider).removeAttr("disabled");
    }
  },
    thumbnail:function(obj,config){
    if(config.thumbnail){
      if (config.pagination.container.length){
	paginations=config.pagination.container.children();
	var thumbnail,childnum,children=$(config.container,obj).children().eq(0).children().get();
	for (childnum in children){
	  if (paginations.eq(childnum).length){
	    if ((thumbnail=jQuery(config.thumbnail,children[childnum])).length){
// 	      paginations.eq(childnum).html(thumbnail.html());
	      thumbnail.appendTo(paginations.eq(childnum));
	    }
	  }
	}
      }
    }
  },
  slider:function(obj,config){
    if (config.slider){
      var slider=$(config.slider,obj);
      if (slider){
	pic=$(".caroufredsel_wrapper :eq(0)",obj);
	al.load_jqueryplugins({rangeinput:al.env.lib_path+"/jquery.tools.min.js"})
	slider.rangeinput({min:0,step:1,value:$(pic).triggerHandler("currentPosition"),max:(pic.triggerHandler("configuration", "circular")?(pic.children().length-1):(pic.children().length-pic.triggerHandler("configuration", "items.visible")))});
	slider=$(config.slider,obj);
 	slider.change(al.$.slidepic.slider_change_hook);
	sliderobj=$(config.sliderobj,obj);
	sliderobj.css({position:"relative",cursor:"pointer",float:"left"});
	$(".progress",sliderobj).css({display:"none"});
	$(".handle",sliderobj).css({position:"absolute",display:"block",cursor:"move"});
	$(".range",sliderobj).css({float:"left"});
	pic.ALdata("sliderpic-slider",{slider:slider[0]});
	slider.ALdata("sliderpic-slider",{pic:pic[0]});
	pic.trigger("configuration", {scroll:{onBefore:al.$.slidepic.pic_change_hook,onAfter:al.$.slidepic.pic_change_end_hook}});
      }
    }
  }
})
al.new_plugin({
  name:"xslider",
  defaults:jQuery.extend(true,{},slider_defalut,{direction:"left"}),
  map:slider_config_map,
  func:al.$.slidepic.func
})
al.new_plugin({
  name:"yslider",
  defaults:jQuery.extend(true,{},slider_defalut,{direction:"up",scroll:{},auto:{},items:{}}),
  map:slider_config_map,
  func:al.$.slidepic.func
})
al.new_plugin({
  name:"fullslider",
  defaults:jQuery.extend(true,{},slider_defalut,{direction:"left",fullscreen:true,circular:"true",scroll:{},auto:{play:true},items:{visible:1}}),
  map:slider_config_map,
  func:al.$.slidepic.func
})
