/**
 * wSlide 0.1 - http://www.webinventif.fr/wslide-plugin/
 * 
 * Rendez vos sites glissant !
 *
 * Copyright (c) 2008 Julien Chauvin (webinventif.fr)
 * Licensed under the Creative Commons License:
 * http://creativecommons.org/licenses/by/3.0/
 *
 * Date: 2008-01-27
 */
(function($){
  $.fn.wslide = function(h){
    h = jQuery.extend({
      width: 150,
      height: 150,
      pos: 1,
      col: 1,
      effect: 'swing',
      fade: false,
      horiz: true,
      autolink: false,
      duration: 1500
    }, h);
    function gogogo(g){
      g.each(function(i){
        var a = $(this);
        var uniqid = a.attr('id');
        if(uniqid == undefined){
          uniqid = 'wslide'+i;
        }
        $(this).wrap('<div class="wslide-wrap" id="'+uniqid+'-wrap"></div>');
        a = $('#'+uniqid+'-wrap');
        var b = a.find('ul li');
        var effets = h.effect;
        if(jQuery.easing.easeInQuad == undefined && (effets!='swing' || effets!='normal')){
          effets = 'swing';
        }
        var typex = h.width;
        var typey = h.height;
        function resultante(prop){
          var tempcalc = prop;
          tempcalc = tempcalc.split('px');
          tempcalc = tempcalc[0];
          return Number(tempcalc);
        }
        var litypex = typex-(resultante(b.css('padding-left'))+resultante(b.css('padding-right')));
        var litypey = typey-(resultante(b.css('padding-top'))+resultante(b.css('padding-bottom')));
        var col = h.col;
        if(h.horiz){
          col =  Number(b.length+1);
        }
        var manip = '';
        var ligne = Math.ceil(Number(b.length)/col);
        a.css('overflow','hidden').css('position','relative').css('text-align','left').css('height',typey+'px').css('width',typex+'px').css('margin','0').css('padding','0');
        a.find('ul').css('position','absolute').css('margin','0').css('padding','0').css('width',Number((col+0)*typex)+'px').css('height',Number(ligne*typey)+'px');
        b.css('display','block').css('overflow','hidden').css('float','left').css('height',litypey+'px').css('width',litypex+'px');
        b.each(function (i) {
          var offset = a.offset();
          var thisoffset = $(this).offset();
          $(this).attr('id',uniqid+'-'+Number(i+1)).attr('rel', Number(thisoffset.left-offset.left)+':'+Number(thisoffset.top-offset.top));
          manip += ' <a href="#'+uniqid+'-'+Number(i+1)+'">'+Number(i+1)+'</a>';
        });

        if(typeof h.autolink == 'boolean'){
          if(h.autolink){
            a.after('<div class="wslide-menu" id="'+uniqid+'-menu">'+manip+'</div>');
          }
        }else if (typeof h.autolink == 'string'){
          if($('#'+h.autolink).length){
            $('#'+h.autolink).html(manip);
          }else{
            a.after('<div id="#'+h.autolink+'">'+manip+'</div>');
          }
        }
        var start = '#'+uniqid+'-';
        var stoccurent = "";
        $('a[href*="'+start+'"]').click(function () { 
          $('a[href*="'+stoccurent+'"]').removeClass("wactive");
          $(this).addClass("wactive");
          var tri = $(this).attr('href');
          tri=tri.split('#');
          tri='#'+tri[1];
          stoccurent = tri;
          var decal = $(tri).attr('rel');
          decal = decal.split(':');
          var decal2 = decal[1];
          decal2 = -decal2;
          decal = decal[0];
          decal = -decal;
          if(h.fade){
            a.find('ul').animate(
                { opacity: 0 },
                h.duration / 2, 
                effets, 
                function(){$(this).css('top',decal2+'px').css('left',decal+'px');$(this).animate({ opacity: 1 }, h.duration/2, effets)} 
              );
          }else{
            a.find('ul').animate({ top: decal2+'px',left: decal+'px' }, h.duration, effets );
          }
          return false;
        });
        if(h.pos <= 0){
          h.pos = 1;
        }
        $('a[href$="'+start+h.pos+'"]').addClass("wactive");
        var tri = $('a[href*="'+start+'1"]')[0].href;
        tri=tri.split('#');
        tri='#'+tri[1];
        stoccurent = tri;
        var decal = $(tri).attr('rel');
        decal = decal.split(':');
        var decal2 = decal[1];
        decal2 = -decal2;
        decal = decal[0];
        decal = -decal;
        a.find('ul').css('top',decal2+'px').css('left',decal+'px');

      })
    }
    gogogo(this);
    return this;
  }
})(jQuery);

