function page_selector_set_page_count(ps_name, new_page_count)
{
    page_selector_clear(ps_name);
    document.getElementById(ps_name+"page_count").innerHTML=new_page_count;
    page_selector_draw(ps_name);
}

function page_selector_set_active_page(ps_name, page_number)
{
    page_selector_clear(ps_name);
    document.getElementById(ps_name+"active_page").innerHTML=page_number;
    page_selector_draw(ps_name);
}

function page_selector_draw(ps_name)
{
    page_selector_clear(ps_name);
    var page_count=parseInt(document.getElementById(ps_name+"page_count").innerHTML);

    if(page_count==1)
        document.getElementById(ps_name).style.display="none";
    else
        document.getElementById(ps_name).style.display="block";

    var count_buttons=parseInt(document.getElementById(ps_name+"count_buttons").innerHTML);
    var active_page=parseInt(document.getElementById(ps_name+"active_page").innerHTML);
    var min_visible=active_page-parseInt(count_buttons/2);
    var max_visible=active_page+parseInt(count_buttons/2);
    var hax_blank=0;
    for(var i=1;i<=page_count;i++)
    {
        if((i<min_visible && i>1) || (i>max_visible && i<page_count))
        {
            if(has_blank==0)
            {
                draw_spacer(ps_name, i);
                if(i<active_page)
                    page_selector_draw_blank(ps_name, 1);
                else
                    page_selector_draw_blank(ps_name, 2);
                has_blank=1;
            }
        }
        else
        {
            has_blank=0;
            if(i!=1 && has_blank==0)
                draw_spacer(ps_name, i);
            if(i==active_page)
                page_selector_draw_button(ps_name, i, 1);
            else
                page_selector_draw_button(ps_name, i, 0);
        }
    }
}

function draw_spacer(ps_name, i)
{
    var newSpacer=document.createElement("span");
    newSpacer.innerHTML="|";
    newSpacer.id=ps_name+"spacer"+i;
    newSpacer.style.cursor="default";
    newSpacer.style.fontSize="16px";
    document.getElementById(ps_name).insertBefore(newSpacer, document.getElementById(ps_name+"page_count"));
}

function page_selector_draw_button(ps_name, page_number, is_active)
{
    var newButton=document.createElement("input");
    newButton.type="button";
    newButton.id=ps_name+page_number;
    if(is_active==1)
        newButton.className="pageSelectorBtnActive";
    else
        newButton.className="pageSelectorBtn";
    newButton.value=page_number;
    newButton.onclick=function(){page_selector_button_click(ps_name, page_number)};
    document.getElementById(ps_name).insertBefore(newButton, document.getElementById(ps_name+"page_count"));
}

function page_selector_draw_blank(ps_name, id)
{
    var newButton=document.createElement("input");
    newButton.type="button";
    newButton.id=ps_name+"blank"+id;
    newButton.className="pageSelectorBlank";
    newButton.value="...";
    newButton.onclick=function(){page_selector_button_click(ps_name, page_number)};
    document.getElementById(ps_name).insertBefore(newButton, document.getElementById(ps_name+"page_count"));
}

function page_selector_clear(ps_name)
{
    var page_count=parseInt(document.getElementById(ps_name+"page_count").innerHTML);
    for(var i=1;i<=page_count;i++)
    {
        if(document.getElementById(ps_name+i))
            document.getElementById(ps_name+i).parentNode.removeChild(document.getElementById(ps_name+i));
        if(document.getElementById(ps_name+"spacer"+i))
            document.getElementById(ps_name+"spacer"+i).parentNode.removeChild(document.getElementById(ps_name+"spacer"+i));
    }
    if(document.getElementById(ps_name+"blank"+"1"))
       document.getElementById(ps_name+"blank"+"1").parentNode.removeChild(document.getElementById(ps_name+"blank"+"1"));
    if(document.getElementById(ps_name+"blank"+"2"))
       document.getElementById(ps_name+"blank"+"2").parentNode.removeChild(document.getElementById(ps_name+"blank"+"2"));
}

function page_selector_button_click(ps_name, page_number)
{
    page_selector_set_active_page(ps_name, page_number);
    eval(document.getElementById(ps_name+"jsFunction").innerHTML+"("+page_number+")");
}
