------------
***Parser***
------------
    If (line.IndexOf("categories.push") > 0) Then
                        bUsageData = True
                        m = RegularExpressions.Regex.Match(line, "push\(""([0-9]{2}\/[0-9]{2})""\)")
                        If m.Success Then
                            ReDim Preserve Graph_Day(month_counter)
                            Graph_Day(month_counter) = m.Groups(1).Value
                            If Graph_Day(month_counter) = Date.Today Then IndexToday = month_counter
                            month_counter = month_counter + 1
                        End If
                    ElseIf (line.IndexOf("basicValues.push") > 0) Then
                        m = RegularExpressions.Regex.Match(line, "push\(([0-9]+)\)")
                        If m.Success Then
                            ReDim Preserve Graph_Basic(basic_volume_counter)
                            Graph_Basic(basic_volume_counter) = CInt(m.Groups(1).Value)
                            If basic_volume_max < Int(Graph_Basic(basic_volume_counter)) Then
                                basic_volume_max = Int(Graph_Basic(basic_volume_counter))
                            End If
                            Usage_MBUsed = Usage_MBUsed + Int(m.Groups(1).Value)
                            If basic_volume_counter = IndexToday Then Usage_Today = Graph_Basic(basic_volume_counter)
                            basic_volume_counter = basic_volume_counter + 1
                        End If
                    ElseIf (line.IndexOf("extraValues.push") > 0) Then
                        m = RegularExpressions.Regex.Match(line, "push\(([0-9]+)\)")
                        If m.Success Then
                            ReDim Preserve Graph_Extra(extra_volume_counter)
                            Graph_Extra(extra_volume_counter) = CInt(m.Groups(1).Value)
                            If extra_volume_max < Int(Graph_Extra(extra_volume_counter)) Then
                                extra_volume_max = Int(Graph_Extra(extra_volume_counter))
                            End If
                            If extra_volume_counter = IndexToday Then Usage_Today += Graph_Extra(extra_volume_counter)
                            extra_volume_counter = extra_volume_counter + 1
                        End If
                    ElseIf (line.IndexOf("payAsYouGoValues.push") > 0) Then
                        m = RegularExpressions.Regex.Match(line, "push\(([0-9]+)\)")
                        If m.Success Then
                            ReDim Graph_Pay(payg_volume_counter)
                            Graph_Pay(payg_volume_counter) = CInt(m.Groups(1).Value)
                            If payg_volume_max < Int(Graph_Pay(payg_volume_counter)) Then
                                payg_volume_max = Int(Graph_Pay(payg_volume_counter))
                            End If
                            payg_volume_counter = payg_volume_counter + 1
                        End If
                    ElseIf (line.IndexOf("wiFreeValues.push") > 0) Then
                        m = RegularExpressions.Regex.Match(line, "push\(([0-9]+)\)")
                        If m.Success Then
                            ReDim Preserve Graph_WiFree(wifree_volume_counter)
                            Graph_WiFree(wifree_volume_counter) = CInt(m.Groups(1).Value)
                            If wifree_volume_max < Int(Graph_WiFree(wifree_volume_counter)) Then
                                wifree_volume_max = Int(Graph_WiFree(wifree_volume_counter))
                            End If
                            If wifree_volume_counter = IndexToday Then Usage_Today += Graph_WiFree(wifree_volume_counter)
                            wifree_volume_counter = wifree_volume_counter + 1
                        End If
                        '  ElseIf (line.IndexOf("End include period data") > 0) Then
                        '     Exit For

----------------
***FrmGraphic***
----------------
   Public Sub DrawRoundedRectangle(ByVal objGraphics As Graphics, _
                                    ByVal m_color As Pen, _
                                ByVal m_intxAxis As Integer, _
                                ByVal m_intyAxis As Integer, _
                                ByVal m_intWidth As Integer, _
                                ByVal m_intHeight As Integer, _
                                ByVal m_diameter As Integer)

        '* by Karthikeyan Muthurajan http://www.codeproject.com/script/Membership/View.aspx?mid=944018

        'Dim g As Graphics
        Dim BaseRect As New RectangleF(m_intxAxis, m_intyAxis, m_intWidth,
                                      m_intHeight)
        Dim ArcRect As New RectangleF(BaseRect.Location,
                                  New SizeF(m_diameter, m_diameter))
        'top left Arc
        objGraphics.DrawArc(m_color, ArcRect, 180, 90)
        objGraphics.DrawLine(m_color, m_intxAxis + cint(m_diameter / 2),
                             m_intyAxis,
                             m_intxAxis + m_intWidth - cint(m_diameter / 2),
                             m_intyAxis)

        ' top right arc
        ArcRect.X = BaseRect.Right - m_diameter
        objGraphics.DrawArc(m_color, ArcRect, 270, 90)
        objGraphics.DrawLine(m_color, m_intxAxis + m_intWidth,
                             m_intyAxis + cint(m_diameter / 2),
                             m_intxAxis + m_intWidth,
                             m_intyAxis + m_intHeight - cint(m_diameter / 2))

        ' bottom right arc
        ArcRect.Y = BaseRect.Bottom - m_diameter
        objGraphics.DrawArc(m_color, ArcRect, 0, 90)
        objGraphics.DrawLine(m_color, m_intxAxis + cint(m_diameter / 2),
                             m_intyAxis + m_intHeight,
                             m_intxAxis + m_intWidth - cint(m_diameter / 2),
                             m_intyAxis + m_intHeight)

        ' bottom left arc
        ArcRect.X = BaseRect.Left
        objGraphics.DrawArc(m_color, ArcRect, 90, 90)
        objGraphics.DrawLine(m_color,
                             m_intxAxis, m_intyAxis + cint(m_diameter / 2),
                             m_intxAxis,
                             m_intyAxis + m_intHeight - cint(m_diameter / 2))

    End Sub

 '-draw legend
        Dim BasisSize As SizeF = e.Graphics.MeasureString(IIf(frmSettings.bFUP, GraphText(4), GraphText(0)), graphTextFont)
        Dim ExtraSize As SizeF = e.Graphics.MeasureString(IIf(frmSettings.bFUP, GraphText(5), GraphText(1)), graphTextFont)
        Dim WifiSize As SizeF = e.Graphics.MeasureString(GraphText(2), graphTextFont)
        Dim PaySize As SizeF = e.Graphics.MeasureString(GraphText(3), graphTextFont)
        Dim TotalStrLength As Integer = BasisSize.Width + BasisSize.Height + IIf(mnuShowExtra.Checked, (BasisSize.Height + ExtraSize.Width + 8), 0) + IIf(mnuShowWifi.Checked, (BasisSize.Height + WifiSize.Width + 8), 0) '+ IIf(mnuShowPay.Checked, (BasisSize.Height + PaySize.Width + 8), 0) ' + IIf((mnuShowExtra.Checked Or mnuShowPay.Checked Or mnuShowWifi.Checked), 3, 0)
        Dim WhereToPutHght As Integer = (StartHght / 2) - (BasisSize.Height / 2)
        Dim LastWidth As Integer = 0
        DrawRoundedRectangle(e.Graphics, color_line, CInt((graphWdth / 2) - (TotalStrLength / 2) - BasisSize.Height), WhereToPutHght - (BasisSize.Height / 2), CInt(TotalStrLength + 2 * BasisSize.Height), (BasisSize.Height * 2), 10)
        rect = New Rectangle((graphWdth / 2) - (TotalStrLength / 2), WhereToPutHght, BasisSize.Height, BasisSize.Height)
        e.Graphics.FillRectangle(color_basis, rect)
        e.Graphics.DrawString(IIf(frmSettings.bFUP, GraphText(4), GraphText(0)), graphTextFont, color_text_legend, rect.X + rect.Width + 3, WhereToPutHght)
        LastWidth = BasisSize.Width
        If mnuShowExtra.Checked Or frmSettings.bFUP Then
            rect = New Rectangle(rect.X + rect.Width + 8 + LastWidth, WhereToPutHght, BasisSize.Height, BasisSize.Height)
            e.Graphics.FillRectangle(color_extra, rect)
            e.Graphics.DrawString(IIf(frmSettings.bFUP, GraphText(5), GraphText(1)), graphTextFont, color_text_legend, rect.X + rect.Width + 3, WhereToPutHght)
            LastWidth = ExtraSize.Width
        End If
        '  If mnuShowPay.Checked Then
        'rect = New Rectangle(rect.X + rect.Width + 8 + LastWidth, WhereToPutHght, BasisSize.Height, BasisSize.Height)
        '  e.Graphics.FillRectangle(color_pay, rect)
        '  e.Graphics.DrawString(GraphText(3), graphTextFont, color_text_legend, rect.X + rect.Width + 3, WhereToPutHght)
        '  LastWidth = PaySize.Width
        '  End If
        If mnuShowWifi.Checked Then
            rect = New Rectangle(rect.X + rect.Width + 8 + LastWidth, WhereToPutHght, BasisSize.Height, BasisSize.Height)
            e.Graphics.FillRectangle(color_wifi, rect)
            e.Graphics.DrawString(GraphText(2), graphTextFont, color_text_legend, rect.X + rect.Width + 3, WhereToPutHght)
        End If
        LastWidth = Nothing

'-draw pay bar
                   If (gGraph_Pay(NextMarker) > 0) And mnuShowPay.Checked And Not frmSettings.bFUP Then
                
                rect = New Rectangle(BasicStart, i - (stringSize.Height / 3), (gGraph_Pay(NextMarker) / FillProcent), stringSize.Height)
                  e.Graphics.FillRectangle(color_pay, rect)
                   BasicValue -= gGraph_Pay(NextMarker)
                  BasicStart += (gGraph_Pay(NextMarker) / FillProcent)
                 End If