/****f* LCD.SDK/RemovePage(INT.pageNumber)
* NAME
*  INT RemovePage(INT pageNumber) -- Call this method to remove a page
*  from the pages you've created to be displayed on the LCD.
* INPUTS
*  pageNumber - The number for the page that is to be removed.
* RETURN VALUE
*  Current number of pages, after the page is removed.
******
*/
INT CEzLcd::RemovePage(INT pageNumber)
{
    LCD_PAGE_LIST& PageList = GetPageList();

    // Do we have this page, if not return error
    if (pageNumber >= (INT)(PageList.size()))
    {
        return -1;
    }

    // find the next active screen
    LCD_PAGE_LIST::iterator it = PageList.begin();
    PageList.erase(it + pageNumber);

    // If there are any pages, the first one is the active page
    if (PageList.size())
    {
        SetActivePage(*PageList.begin());
    }
    else
    {
        SetActivePage(NULL);
    }

    return (INT)PageList.size();
}
/****f* LCD.SDK/ModifyControlsOnPage(INT.pageNumber)
* NAME
*  HRESULT ModifyControlsOnPage(INT pageNumber) -- Call this method in
*  order to modify the controls on specified page.
* NOTES
*  This method must be called first prior to any modifications on that
*  page.
* INPUTS
*  pageNumber - The page number that the controls will be modified on.
* RETURN VALUE
*  S_OK if succeeded.
*  E_FAIL otherwise.
******
*/
HRESULT CEzLcd::ModifyControlsOnPage(INT pageNumber)
{
    LCD_PAGE_LIST& PageList = GetPageList();

    // Do we have this page, if not return error
    if (pageNumber >= (INT)(PageList.size()))
    {
        return E_FAIL;
    }

    LCD_PAGE_LIST::iterator it = PageList.begin();
    SetActivePage(*(it + pageNumber));

    return S_OK;
}
/****f* LCD.SDK/ShowPage(INT.pageNumber)
* NAME
*  HRESULT ShowPage(INT pageNumber) -- Call this method in order to
*  make the page shown on the LCD.
* INPUTS
*  pageNumber - The page that will be shown among your pages on the
*  LCD.
* RETURN VALUE
*  S_OK if succeeded.
*  E_FAIL otherwise.
******
*/
HRESULT CEzLcd::ShowPage(INT pageNumber)
{
    LCD_PAGE_LIST& PageList = GetPageList();

    // Do we have this page, if not return error
    if (pageNumber >= (INT)(PageList.size()))
    {
        return E_FAIL;
    }

    LCD_PAGE_LIST::iterator it = PageList.begin();
    SetActivePage(*(it + pageNumber));

    m_pCurrentOutput->ShowPage(GetActivePage());

    SetCurrentPageNumberShown(pageNumber);

    return S_OK;
}
/****f* LCD.SDK/AddNewPage()
* NAME
*  INT AddNewPage() -- Call this method to create a new page to be
*  displayed on the LCD.
* RETURN VALUE
*  Current number of pages, after the page is added.
******
*/
INT CEzLcd::AddNewPage()
{
    CEzLcdPage*	page_ = NULL;

    // Create a new page and add it in
    page_ = new CEzLcdPage(this);
    page_->Initialize();
    page_->SetExpiration(INFINITE);

    if( m_pCurrentOutput == m_connection.ColorOutput() )
    {
        page_->SetSize(320,240);
    }

    LCD_PAGE_LIST& PageList = GetPageList();
    PageList.push_back(page_);

    return (INT)PageList.size();
}
void CDCTrafficHistoryWebParser::ParseWeb()
{
	GetPageList();
	ParseDCTraffic();
}
/****f* LCD.SDK/GetPageCount()
* NAME
*  INT GetPageCount() -- Returns the current number of pages.
* RETURN VALUE
*  Current number of pages.
******
*/
INT CEzLcd::GetPageCount()
{
    return (INT)GetPageList().size();
}