/*
 * @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 showall(container,menuid,options)
{
  jQuery(container).ddunpaginate();
  number = $(container).find("ul li").length;
  settings =  jQuery.extend(options, {RpP: number});
  jQuery(container).ddpagination(menuid,settings);
}
function ddslide(selector,leftshift)
{
   jQuery(selector).animate({
        left: leftshift
      }, 1500 );
}


jQuery.fn.ddpagination = function(menuid,options) {
   settings = jQuery.extend({
     RpP: 10,
     prev: "prev",
     next: "next",
     lwidth: 0,
     sep_count: 0,
     sep_class: ""
  }, options);
    extcontainer=this;
   itemlist=jQuery(this).find("ul");//jQuery("#"+containerid+" ul");
   itemnumber = jQuery(itemlist).find("li").length;
   hiddens = new Array();
   for (i=0; i<jQuery(itemlist).find("li").length; i++)
   {

      if (jQuery(itemlist).find("li").eq(i).css("display")=="none")
          {
              hiddens[hiddens.length] = jQuery(itemlist).find("li").eq(i);
              itemnumber--;
          }
   }
   //alert(itemnumber);
   if (settings.lwidth==0)
   {
       listwidth=jQuery(itemlist).width();
   }
   else listwidth = settings.lwidth;
   //alert(settings.lwidth);
   //alert(listwidth);
   pages =Math.ceil(itemnumber/settings.RpP);
   jQuery(".pagenum").html(pages);
   lastpage=pages;
   jQuery(this).find("ul").remove();
   jQuery(this).append('<div class="ddpagincontainer">');
   jQuery(".ddpagincontainer").css("width",listwidth*pages);
   //jQuery("."+menuid).append('<a id="mlinkminus" href="#"></a> ');
   jQuery("."+menuid).html("");
   jQuery("."+menuid).append('<a class="mlinkprevious" href="#">'+settings.prev+'</a> ');
   jQuery(".mlinkminus,.mlinkprevious").click(function (e)
                                                    {
                                                        e.preventDefault();
                                                        contposition=Number(jQuery(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=jQuery("."+menuid+" .active").prev();
                                                            jQuery("."+menuid+" .active").removeClass("active");
                                                            jQuery(activetobe).addClass("active");
                                                            jQuery("."+menuid+" a").css("visibility","visible");//.show();
                                                            if (jQuery(activetobe).attr("class")==jQuery("."+menuid+" a").eq(1).attr("class")) jQuery(".mlinkprevious").css("visibility","hidden");//.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);
       jQuery(this).find(".ddpagincontainer").append('<ul id="paglist'+i+'" class="ddlist">');
       ibord = 0;
       for (j=start;j<=end;j++)
       {
           //alert(i+" "+jQuery(itemlist).find("li").length);
           if (jQuery(itemlist).find("li").eq(0).css("display")=="none") j--;
           locallist = jQuery(itemlist).find("li").eq(0);
           if ((settings.sep_count != 0) && (ibord == settings.sep_count-1) )
           {
               $(locallist).addClass(settings.sep_class);
               ibord = 0;
           }
           else ibord++;
           jQuery('#paglist'+i).append(locallist);
           //alert(jQuery(itemlist).find("li").eq(j));
       }
     jQuery("."+menuid).append(' <a class="mlink'+i+'" href="#'+i+'">'+i+'</a>');
     jQuery('.mlink'+i).click(function (e)
                                    {
                                        e.preventDefault();
                                        contposition=Number(jQuery(extcontainer).find(".ddpagincontainer").css("left").replace("px",""));
                                        listposition=contposition+ Number(listwidth*(jQuery(this).attr("class").substr(5,jQuery(this).attr("class").length-1)-1));
                                        ddslide(".ddpagincontainer",contposition-listposition);
                                        jQuery("."+menuid).find(".active").removeClass("active");
                                        var active_el_class = jQuery(this).attr("class");
                                        active_el_class = active_el_class.split(" ");
                                        jQuery("."+active_el_class[0]).addClass("active");
                                        jQuery("."+menuid+" a").css("visibility","visible");//.show();
                                        if (jQuery(this).attr("class")==jQuery("."+menuid+" a").eq(1).attr("class")) jQuery(".mlinkprevious").css("visibility","hidden");//.hide();
                                        if (jQuery(this).attr("class")==jQuery(".mlinknext").prev().attr("class")) jQuery(".mlinknext").css("visibility","hidden");//.hide();
                                    }
                         );
   }
   jQuery("."+menuid).append(' <a class="mlinknext" href="#t">'+settings.next+'</a>');
   //jQuery("."+menuid).append(' <a id="mlinkplus" href="#">></a>');
    jQuery(".mlinknext,.mlinkplus").click(function (e)
                                                    {
                                                        e.preventDefault();
                                                        contposition=Number(jQuery(extcontainer).find(".ddpagincontainer").css("left").replace("px",""));
                                                        //alert(Number(jQuery(".ddpagincontainer").css("width").replace("px",""))-listwidth+" "+contposition);
                                                        if ((contposition!=(0-(Number(jQuery(".ddpagincontainer").css("width").replace("px",""))-listwidth))) && (Math.abs(contposition) % Number(listwidth) == 0))
                                                        {
                                                            ddslide(".ddpagincontainer",contposition-listwidth);
                                                            activetobe=jQuery("."+menuid+" .active").next();
                                                            jQuery("."+menuid+" .active").removeClass("active");
                                                            jQuery(activetobe).addClass("active");
                                                            jQuery("."+menuid+" a").css("visibility","visible");//.show();
                                                            if (jQuery(activetobe).attr("class")==jQuery(".mlinknext").prev().attr("class")) jQuery(".mlinknext").css("visibility","hidden");//.hide();
                                                        }
                                                    });
jQuery("."+menuid+" .mlink1").addClass("active");
jQuery(".mlinkprevious").css("visibility","hidden");//.hide();
jQuery(".activepage").html(1);
if (pages==1) jQuery(".mlinknext").css("visibility","hidden");//.hide();
    activepageid=jQuery("."+menuid+" a").click
    (
       function ()
        {
            activepageid=jQuery("."+menuid+" .active").attr("class");
            activepageid = activepageid.split(" ");
            activepageid = activepageid[0];
            activepagenumber = activepageid.substr(5);
            jQuery(".activepage").html(activepagenumber);
        }
    );
    $("#showall").click(function(e)
    {
        e.preventDefault();
        showall(extcontainer,menuid,settings);
    })
};


jQuery.fn.ddunpaginate = function() {
            lists = jQuery(this).find('.ddlist');
            //alert(lists.length);
            jQuery(this).find('.ddpagincontainer').remove();
            jQuery(this).append('<ul></ul>');
            var listlength = $(lists).length;
            for (i=0; i < listlength; i++)
            {
                alert(listlength);
                jQuery(this).find('ul').append($(lists).eq(i).find('li'));
            }
            //Query(this).find('ul').append(lists.eq(i).find('li'));

};

jQuery.fn.ddgotopage = function(page,menuid) {
        extcontainer=this;
   itemlist=jQuery(this).find("ul");//jQuery("#"+containerid+" ul");
   itemnumber = jQuery(itemlist).find("li").length;
   //alert(itemnumber);
   listwidth=jQuery(itemlist).width();
    contposition=Number(jQuery(this).find(".ddpagincontainer").css("left").replace("px",""));
    listposition=contposition+ Number(listwidth*(page-1));
    ddslide(".ddpagincontainer",contposition-listposition);
    jQuery("."+menuid).find(".active").removeClass("active");
    jQuery(".mnlink"+page).addClass("active");
    jQuery("."+menuid+" a").css("visibility","visible");//.show();
    if (jQuery(".mnlink"+page).attr("class")==jQuery("."+menuid+" a").eq(1).attr("class")) jQuery(".mlinkprevious").css("visibility","hidden");//.hide();
    if (jQuery(".mnlink"+page).attr("class")==jQuery(".mlinknext").prev().attr("class")) jQuery(".mlinknext").css("visibility","hidden");//.hide();

};
