//==============================================================================
var _Pager = null;
var _XML = null;
//==============================================================================
function Pager()
{
    //==============================================================================
    //OBJECT Properties.
    //==============================================================================        
    Pager.prototype.pageNumber          = arguments[0];
    Pager.prototype.totalItems          = arguments[1];  
    Pager.prototype.numItemsOnPage      = arguments[2];
    Pager.prototype.pagerID             = arguments[3];
    Pager.prototype.numberOfPages       = Math.min(99, Math.ceil(Pager.prototype.totalItems/Pager.prototype.numItemsOnPage));
    Pager.prototype.maxPagesInNavBar    = 10;
    Pager.prototype.placeHolder         = $("pager");
    Pager.prototype.numberOfBulks       = 0;
    
    //==============================================================================
    //Build pager HTML
    //==============================================================================  
    this.setPagerHTML = function()
    {
        try
        {
			var firstPage = 1;
			var lastPage = this.numberOfPages;
			                
            if (this.maxPagesInNavBar > -1)
		    {
			    if (this.maxPagesInNavBar > this.numberOfPages)
			    {
				    firstPage = 1;
				    lastPage = this.numberOfPages;
			    }
			    else
			    {
				    firstPage = this.pageNumber - Math.floor(this.maxPagesInNavBar / 2);
				    lastPage = firstPage + this.maxPagesInNavBar - 1;
    				
				    if (firstPage < 1)
				    {
					    firstPage = 1;
					    lastPage = firstPage + this.maxPagesInNavBar - 1;
				    }
    				
				    if (lastPage > this.numberOfPages)
				    {
					    lastPage = this.numberOfPages;
					    firstPage = lastPage - this.maxPagesInNavBar + 1;
				    }
			    }
		    }
		    
            var firstItemNumberInPage = (this.pageNumber - 1) * this.numItemsOnPage + 1;
            var lastItemNumberInPage = firstItemNumberInPage + this.numItemsOnPage - 1;
            if (lastItemNumberInPage > this.totalItems)
                lastItemNumberInPage = this.totalItems;
            
            //===============================================================
            //Draw the counter text: Results 1 - 12 of 21...
            //===============================================================                                                                                                                                                                                                                                                                                                 
            _XML = new XMLWriter();
            _XML.beginNode("div");
            _XML.attrib("class", "inner_text");
            _XML.writeString("Results " + firstItemNumberInPage + " - " + lastItemNumberInPage + " of " + this.totalItems);
            _XML.endNode(); 
            
            //===============================================================
            // Prev
            //=============================================================== 
            _XML.beginNode("div");
            _XML.attrib("class", "inner");  
            _XML.beginNode("a");

            if (this.pageNumber > 1)
            {
                _XML.attrib("class", "left"); 
                _XML.attrib("onmouseover", "this.className=\"left_over\"");
                _XML.attrib("onmouseout", "this.className=\"left\"");   
                _XML.attrib("id", "p_" + (this.pageNumber - 1));
                _XML.attrib("style", "CURSOR: pointer");
                _XML.attrib("onclick", "Pager.prototype.pagerPaging(this)");
            }
            else
            {
                _XML.attrib("class", "edge"); 
                _XML.attrib("style", "CURSOR: default"); 
                _XML.attrib("onclick", "");
            }

            _XML.writeStringNoFormat("&nbsp;");
            _XML.endNode();                                                                                                                          
            
            //===============================================================
            // Pages
            //===============================================================                          
            for (var currentPageNumber = firstPage; currentPageNumber <= lastPage; currentPageNumber++)
            {
                _XML.beginNode("a");
                _XML.attrib("id", "p_" + currentPageNumber);

                if(parseInt(this.pageNumber) != currentPageNumber)
                {
                    _XML.attrib("style", "CURSOR: pointer");
                    _XML.attrib("onclick", "Pager.prototype.pagerPaging(this)");
                    _XML.attrib("onmouseover", "this.className=\"over\"");
                    _XML.attrib("onmouseout", "this.className=\"\"");
                }
                else
                {
                    _XML.attrib("style", "CURSOR: default;");
                    _XML.attrib("onclick", "");
                    _XML.attrib("class", "active");
                }
                
                _XML.writeString(currentPageNumber.toString());
                _XML.endNode();
            }
            
            //===============================================================
            // Next
            //===============================================================                                       
            _XML.beginNode("a");
            if (this.pageNumber < this.numberOfPages)
            {
                _XML.attrib("class", "right");
                _XML.attrib("onmouseover", "this.className=\"right_over\"");
                _XML.attrib("onmouseout", "this.className=\"right\"");  
                _XML.attrib("id", "p_" + (parseInt(this.pageNumber) + 1));
                _XML.attrib("style", "CURSOR: pointer");
                _XML.attrib("onclick", "Pager.prototype.pagerPaging(this)");
            }
            else
            {
                _XML.attrib("class", "edge");
                _XML.attrib("onclick", "");
                _XML.attrib("style", "CURSOR: default");
            }
            
            _XML.writeStringNoFormat("&nbsp;");
            _XML.endNode();
            _XML.endNode();  

            this.placeHolder.innerHTML = _XML.toString();
        }
        catch(e)
        {
            alert("***Error in Pager.setPagerHTML**" + e.description);
        }
    }
	//========================================================================= 
    Pager.prototype.pagerPaging = function(evt)
    {
        if(evt && (evt.id.substr(2).ParseInt() != 0) && evt.id != "")
        {
            this.pageNumber = evt.id.substr(2).ParseInt();
            this.getPageData();
        }
    }
    //=========================================================================       
    Pager.prototype.getPageData = function()
    {
        buildFilterString();
    }
    //========================================================================= 
    Pager.prototype.clearPager = function()
    {
        this.placeHolder.innerHTML = "";
    }
    //========================================================================= 
}