﻿/**
* 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: false,
            autolink: true,
            duration: 1500,
            VisibleNum: true,
            ImgNext: '',
            ImgPrev: ''
        }, 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');

                if (h.ImgPrev == '') {
                    manip += ' <a href="#" id="Crea_Img_btnPrev" onclick="javascript:bouger(\'gauche\');">Prev</a>';
                } else {    
                manip += ' <a href="#" id="Crea_Img_btnPrev" onclick="javascript:bouger(\'gauche\');"><img src="' + h.ImgPrev + '"></a>';
                
                }

                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));
                    if (h.VisibleNum) {
                        manip += ' <a href="#' + uniqid + '-' + Number(i + 1) + '" onclick="javascript:position=' + Number(i + 1) + '">' + Number(i + 1) + '</a>';

                    } else {
                        manip += ' <a href="#' + uniqid + '-' + Number(i + 1) + '" ></a>';

                    }
                });
                
                
                if (h.ImgNext == '') {
                    manip += ' <a href="#" id="Crea_Img_btnNext" onclick="javascript:bouger(\'droite\');">Next</a>';
                } else {
                manip += ' <a href="#" id="Crea_Img_btnNext" onclick="javascript:bouger(\'droite\');"><img src="' + h.ImgNext + '"></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 + '"]:eq(' + Number(h.pos - 1) + ')').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;
                a.find('ul').css('top', decal2 + 'px').css('left', decal + 'px');

            })
        }

        gogogo(this);
        return this;
    }
})(jQuery);