/*
 * @ddpagination plugin for jguery
 * Author: Delio D'Anna
 * That Plugin take a list inside a div and split it in N lists
 * with max RpP rows each, then create a menu with slide effect.
 * params
 *      menuid = the id of the container for the numbers link
 *      containerid = the id of the container of the list
 *      RpP = number of Rows per Page
 */
function ddslide(selector,leftshift)
{
   $(selector).animate({
        left: leftshift
      }, 1500 );
}


jQuery.fn.ddpagination = function/*(menuid,containerid,RpP)*/(menuid,options) {
   settings = jQuery.extend({
     RpP: 10,
     prev: "prev",
     next: "next",
     lwidth: 0
  }, options);
    extcontainer=this;
   itemlist=$(this).find("ul");//$("#"+containerid+" ul");
   itemnumber = $(itemlist).find("li").length;
   hiddens = new Array();
   for (i=0; i<$(itemlist).find("li").length; i++)
   {

      if ($(itemlist).find("li").eq(i).css("display")=="none")
          {
              hiddens[hiddens.length] = $(itemlist).find("li").eq(i);
              itemnumber--;
          }
   }
   //alert(itemnumber);
   if (settings.lwidth==0)
   {
       listwidth=$(itemlist).width();
   }
   else listwidth = settings.lwidth;
   //alert(settings.lwidth);
   //alert(listwidth);
   pages =Math.ceil(itemnumber/settings.RpP);
   lastpage=pages;
   $(this).find("ul").remove();
   $(this).append('<div class="ddpagincontainer">');
   $(".ddpagincontainer").css("width",listwidth*pages);
   //$("#"+menuid).append('<a id="mlinkminus" href="#"></a> ');
   $("#"+menuid).html("");
   $("#"+menuid).append('<a id="mlinkprevious" href="#">'+settings.prev+'</a> ');
   $("#mlinkminus,#mlinkprevious").click(function (e)
                                                    {
                                                        e.preventDefault();
                                                        contposition=Number($(extcontainer).find(".ddpagincontainer").css("left").replace("px",""));
                                                        //alert(contposition+" "+listwidth+" "+Math.abs(contposition) % listwidth);
                                                        if ((contposition!=0) && (Math.abs(contposition) % Number(listwidth) == 0))
                                                        {
                                                            ddslide(".ddpagincontainer",contposition+listwidth);
                                                            activetobe=$("#"+menuid+" .active").prev();
                                                            $("#"+menuid+" .active").removeClass("active");
                                                            $(activetobe).addClass("active");
                                                            $("#"+menuid+" a").show();
                                                            if ($(activetobe).attr("id")==$("#"+menuid+" a").eq(1).attr("id")) $("#mlinkprevious").hide();
                                                        }
                                                    });
   for (i=1;i<=lastpage;i++)
   {
       start=(i-1)*settings. RpP;
       if (i==lastpage) {end=itemnumber-1;} else end=start+(settings.RpP-1);
       //alert(start+" "+end);
       $(this).find(".ddpagincontainer").append('<ul id="paglist'+i+'" class="ddlist">');
       for (j=start;j<=end;j++)
       {
           //alert(i+" "+$(itemlist).find("li").length);
           if ($(itemlist).find("li").eq(0).css("display")=="none") j--;
           $('#paglist'+i).append($(itemlist).find("li").eq(0));
           //alert($(itemlist).find("li").eq(j));
       }
     $("#"+menuid).append(' <a id="mlink'+i+'" href="#'+i+'">'+i+'</a>');
     $('#mlink'+i).click(function (e)
                                    {
                                        e.preventDefault();
                                        contposition=Number($(extcontainer).find(".ddpagincontainer").css("left").replace("px",""));
                                        listposition=contposition+ Number(listwidth*($(this).attr("id").substr(5,$(this).attr("id").length-1)-1));
                                        ddslide(".ddpagincontainer",contposition-listposition);
                                        $("#"+menuid).find(".active").removeClass("active");
                                        $(this).addClass("active");
                                        $("#"+menuid+" a").show();
                                        if ($(this).attr("id")==$("#"+menuid+" a").eq(1).attr("id")) $("#mlinkprevious").hide();
                                        if ($(this).attr("id")==$("#mlinknext").prev().attr("id")) $("#mlinknext").hide();
                                    }
                         );
   }
   $("#"+menuid).append(' <a id="mlinknext" href="#t">'+settings.next+'</a>');
   //$("#"+menuid).append(' <a id="mlinkplus" href="#">></a>');
    $("#mlinknext,#mlinkplus").click(function (e)
                                                    {
                                                        e.preventDefault();
                                                        contposition=Number($(extcontainer).find(".ddpagincontainer").css("left").replace("px",""));
                                                        //alert(Number($(".ddpagincontainer").css("width").replace("px",""))-listwidth+" "+contposition);
                                                        if ((contposition!=(0-(Number($(".ddpagincontainer").css("width").replace("px",""))-listwidth))) && (Math.abs(contposition) % Number(listwidth) == 0))
                                                        {
                                                            ddslide(".ddpagincontainer",contposition-listwidth);
                                                            activetobe=$("#"+menuid+" .active").next();
                                                            $("#"+menuid+" .active").removeClass("active");
                                                            $(activetobe).addClass("active");
                                                            $("#"+menuid+" a").show();
                                                            if ($(activetobe).attr("id")==$("#mlinknext").prev().attr("id")) $("#mlinknext").hide();
                                                        }
                                                    });
$("#"+menuid+" #mlink1").addClass("active");
$("#mlinkprevious").hide();
if (pages==1) $("#mlinknext").hide();
};


jQuery.fn.ddunpaginate = function() {
            lists = $(this).find('.ddlist');
            //alert(lists.length);
            $(this).find('.ddpagincontainer').remove();
            $(this).append('<ul></ul>');
            for (i=0;i<=lists.length;i++)
            {
                $(this).find('ul').append(lists.eq(i).find('li'));
            }

};

jQuery.fn.ddgotopage = function(page,menuid) {
        extcontainer=this;
   itemlist=$(this).find("ul");//$("#"+containerid+" ul");
   itemnumber = $(itemlist).find("li").length;
   //alert(itemnumber);
   listwidth=$(itemlist).width();
    contposition=Number($(this).find(".ddpagincontainer").css("left").replace("px",""));
    listposition=contposition+ Number(listwidth*(page-1));
    ddslide(".ddpagincontainer",contposition-listposition);
    $("#"+menuid).find(".active").removeClass("active");
    $("#mnlink"+page).addClass("active");
    $("#"+menuid+" a").show();
    if ($("#mnlink"+page).attr("id")==$("#"+menuid+" a").eq(1).attr("id")) $("#mlinkprevious").hide();
    if ($("#mnlink"+page).attr("id")==$("#mlinknext").prev().attr("id")) $("#mlinknext").hide();

};