MBS FileMaker Plugin debugging help

You may know already that MBS Plugin enhances the script editor on Mac with line numbers, script step colors, calculation colors and if enabled variable declaration check.

 

Typo suggestions

 

Now with version 5.0 we have some more enhancements. If you have a typo in your function name, you get a message. So the call MBS("ersio") returns now "[MBS] Unknown function: ersio. Did you mean Version?". Our plugin simply scans internal function list to find a function name which matches best to the given function name. You can of course use similar best match search for your own solutions with the List.BestMatch and QuickList.BestMatch functions.

 

Notifications

 

Next you can get notifications for script errors. Run Trace.EnableErrorNotifications function once to enable this feature on your Mac. Whenever a script error happens, you'll see this notification showing the error message and the function name:

 

 

Be sure to disable it when going into production so your users don't see the notifications. You should check in your scripts for errors and handle them gracefully.

 

Trace

 

Please also use Trace functions. The Trace function will make sure that for every function call to the plugin, you get a log entry with parameters and result. For version 5.0 we added logging of script triggers. Trace can either log to a file or to the system debug log. So pass a native path, e.g. on Mac "/tmp/test.txt". Or simply use Console.app on Mac or install DebugView app on Windows. DebugView on Windows can be run as administrator and enabled to capture global Win32 in order to see log messages from FileMaker server. Below a sample script to decide how to log for various cases:

 

If [Get ( SystemPlatform ) = 3]

#iOS, no plugin

Exit Script []

End If

If [MBS("IsServer")]

If [MBS( "SystemInfo.isMacOSX" )]

If [Get ( SystemPlatform ) = 4]

#Server on Mac for WebDirect

Set Variable [$r; Value:MBS("Trace"; "/tmp/TraceFMServerWebDirect.txt")]

Else

#Server on Mac 

Set Variable [$r; Value:MBS("Trace"; "/tmp/TraceFMServer.txt")]

End If

Else

#Server on Windows

Set Variable [$r; Value:MBS("Trace")]

#read via DebugView app running as admin with Global Win32 capture enabled

End If

Else

If [MBS( "SystemInfo.isMacOSX" )]

#Client on Mac

Set Variable [$r; Value:MBS("Trace")]

#read via Console.app

Else

#Client on Windows

Set Variable [$r; Value:MBS("Trace")]

#read via DebugView app

End If

End If

 

As you see we use two log files for Mac server, depending if the plugin is loaded for web direct or normal server.

 

Registration

 

A common problem we see with people is wrong registration. When you work with clients and servers, it can get confusing. While the plugin allows you to use a runtime or server license for one seat to develop, please don't use a server or runtime license regularly for clients. A registration script can go like this:

 

If [Get ( SystemPlatform ) = 3]

# iOS, no plugin to register

Exit Script []

End If

If [MBS("isRegistered")]

# already registered

Else

# register

If [MBS("IsServer")]

Set Variable [$r; Value:Evaluate("MBS(\"Register\"; " & MBSPlugin::LicenseKeyServer & ")")]

Else If [MBS("isRuntime")]

Set Variable [$r; Value:Evaluate("MBS(\"Register\"; " & MBSPlugin::LicenseKeyRuntime & ")")]

Else

Set Variable [$r; Value:Evaluate("MBS(\"Register\"; " & MBSPlugin::LicenseKeyClient & ")")]

End If

End If

 

So first we exit early for iOS as there is no plugin for iOS. Than we check if plugin is registered already and do nothing in that case. Else we check the platform and use the appropriated registration key. In our case with Evaluate as the registration key is in a text field.

 

Using isRegistered function is better than a global variable and certainly it is better to call such a script from various places where you need the plugin to make sure you are registered. With FileMaker Server the script engine may crash and restart. In that case the plugin is loaded again and registration needs to be applied again.

 

Or you use our StoreRegistration function and save the registration to preferences file (Mac) or registry (Windows).

Update: For FileMaker Server on Mac OS X you can see messages in /Library/FileMaker Server/Logs/stderr file.

MBS FileMaker Plugin 5.0 for OS X/Windows - More than 3000 Functions In One Plugin

Nickenich, Germany - (February 24th, 2015) -- MonkeyBread Software today is pleased to announce MBS FileMaker Plugin 5.0 for Mac OS X or Windows, the latest update to their product that is easily the most powerful plugin currently available for FileMaker Pro. As the leading database management solution for Windows, Mac, and the web, the FileMaker Pro Integrated Development Environment supports a plugin architecture that can easily extend the feature set of the application. MBS FileMaker Plugin 5.0 has been updated and now includes over 3000 different functions, and the versatile plugin has gained more new functions:

For our Mac users we have now hot keys. You can define a key combination to launch a FileMaker script, even if FileMaker is not the active application. Our MountNotification functions allow you to run a script when a drive mounts or unmounts.

The MBS Plugin now helps finding errors in scripts. If you call the MBS function with an unknown function name, the error message now includes a suggestion for the right function name. We hope this helps finding typos. If a script runs and a function returns an error, the plugin will show a notification. This way you don't miss an error in your scripts. Please enable this feature for development using Trace.EnableErrorNotifications.

For DynaPDF we have new functions to create, modify and delete annotations. You can now create much easier preview images for pages and render whole PDF files to a folder of images. New functions allow to place text as watermark across a page.

Our functions for menus allow you to query the current FileMaker menu. Using our plugin you can execute menu commands from a script, hide or change the shortcut. For the menu command to create a database design report, we got a function to create a report automatically from a script.

The barcode functions can now calculate checksums for EAN and ISBN. The function Files.DiskInfo queries the size of a drive and the free space. We improved the TAPI functions for Windows to make and receive phone calls.

For webviewer we got a few new functions to query selected text, formatted text and the favorite icon. You can control the scrollbars and manage cookies. Finally we got a new example showing how to use a SVG drawing tool in FileMaker.

We updated a couple of libraries: DynaPDF updated to version 3.0.38.112, LibXL to 3.6.1, CURL to 7.39.0, GraphicsMagick to 1.3.20, libJPEG to 9.1, libPNG to 1.6.14, OpenSSL to 1.0.1j and PCRE to 8.36.

FileMaker Magazin - MBS Artikel

For our Germans speaking users:

Wir haben die Artikel zum MBS Plugin aus dem FileMaker Magazin gesammelt hier online gestellt: FileMaker Magazin Artikel:

Wir empfehlen allen FileMaker Anwender ein Abo vom Magazin und den Kauf der alten Ausgaben. Das FileMaker Magazin ist eine excellente Quelle von Informationen, Anleitungen und Profitips.


Dash help archives updated

Just updated the archives for the Dash application. Does the auto update work for you?

So here you can click to launch Dash and install our plugin help:
MBS Xojo Plugins and MBS FileMaker Plugin

You find the docset links also on our reference websites where you can download archive manually if needed:
MBS FileMaker Plugin Documentation for Dash and MBS Xojo Plugins Documentation for Dash

Feedback is welcome.

MBS FileMaker Plugin, version 5.0fc1

New in this prerelease of the 5.0 plugins:
  • Fixed crash in Text.ReplaceNewline on Windows with empty text.
  • Updated DynaPDF to version 3.0.38.112.
Download at monkeybreadsoftware.de/filemaker/files/

MBS FileMaker Plugin, version 5.0pr12

New in this prerelease of the 5.0 plugins:
  • Added support to SendMail functions for encoding attachment file names.
  • Added MethodDraw SVG Editor example.
  • Fixed test mode for DynaPDF works again. Use Starter, Lite or Pro to test if functions are okay with given license type.
  • Fixed a possible problem with registration check.
  • Added new PDF Kit functions: PDFKit.AddEmptyPage, PDFKit.AddImagePage, PDFKit.AddImagePage and PDFKit.NewPDFDocument.
  • Optimized GraphicsMagick image loading in plugin to avoid trying several decoders.
  • Fixed bug in GraphicsMagick reading jpeg 2000 images.
  • Added GMImage.PurgeTemporaryFiles function.
Download at monkeybreadsoftware.de/filemaker/files/Prerelease/ or ask for being added to the dropbox shared folder.

MethodDraw

Method Draw is a fork of SVG Edit, a web based SVG editor. And we just got it working in FileMaker:



As you see we have script to initialize, load and save. So you can have a full featured drawing area in your FileMaker solution. Works fine here with FileMaker 11 on Mac, 13 on Mac and 13 on Windows. Other versions need to be tested.

Will be included as example with upcoming plugin release.

PS: We have also an example for Xojo to do similar.

FileMaker Magazin 2015/01

A new issue of the German FileMaker Magazine is published.

Das erwartet Sie in der neuen FileMaker Magazin Ausgabe:

20 Jahre FileMaker Magazin

  • Damals beim FileMaker Magazin
    Eine Verlagsgeschichte in Bildern | Klaus Kegebein

In eigener Sache

  • FMM Titelwahl 2014
    Spieglein, Spieglein an der Wand … | FMM Redaktion

Datenmodellierung

  • Modulare Konzepte
    FileMaker Module und neue Ansätze | Karsten Risseeuw

FileMaker Lieblinge

  • Platzhalter auf Komfortkurs
    Holger Darjus

Tipps & Tricks

  • SQL im Einsatz
    Tipps zur Funktion „SQLAusführen“ | Arnold Kegebein

Plugins

  • QuickList
    Schnelle Listen für FileMaker | Christian Schmitz

Gewusst wie

  • Mengenabgleich
    SQL-Abfragen mit IN SET-Syntax | Arnold Kegebein

FileMaker & Recht

  • Forderungsmanagement
    Inkasso leicht gemacht | Christoph Kluss

Gewusst wie

  • Stoppuhr
    Eine Eigene Funktion für die Zeitmessung | Arnold Kegebein

Neuigkeiten, Kleinanzeigen, aktuelle Versionen, Adressen, Stammtische


Blog split

Did you notice we now have four blog domains?

If you visit the blog here regularly or read the RSS feed, you can now filter to FileMaker and/or Xojo topics.

mbsplugins.de - all blog entries
mbsplugins.de/filemake - all FileMaker blog entries
mbsplugins.de/xojo - all Xojo blog entries

Maybe that helps some of our clients which don't use Xojo or FileMaker to filter out the other development tool.

MBS FileMaker Plugin, version 5.0pr11

New in this prerelease of the 5.0 plugins:
  • Added WebView.GetFormattedText for Mac and added formatted text parameter to WebView.SelectedText function.
  • Fixed problem with QuickLook feature in Open dialogs not working due to MBS plugin's code for QLPreviewPanel functions.
  • Fixed bug in Dialog buttons.
Download at monkeybreadsoftware.de/filemaker/files/Prerelease/ or ask for being added to the dropbox shared folder.

MBS FileMaker Plugin grows to 3000 functions

10th February 2015 - Monkeybread Software develops for years the MBS FileMaker Plugin. The current development version 5.0pr10 includes now over 3000 functions, a new record!

Shortly we release our Version 5.0. New in this version are global hotkeys for Mac and a lot of improvements for TAPI, WebView, DynaPDF, Barcode, GraphicsMagick, Excel, ListDialog, Audit and SystemInfo functions. Our Menubar functions allow you to run FileMaker menu commands by script. Using FM.RunDataDesignReport function you can even automate generating a database design report. If you have a typing mismatch in a function name our plugin will now suggest a correction. And if some error happens in a script, the plugin can show a notification on OS X with the error message, so you notice script problems easier.

Many FileMaker developers trust the MBS Plugin. Normally new developers find the MBS Plugin due to an interesting function. Often while researching for a client if a possible feature can be added to a solution in FileMaker. Once the developer knows how powerful our plugins is, they enjoy using it and find new functions regularly.

The development of MBS Plugin startet 2006 with early versions. Soon in 2010 we had version 2.0 with over 400 functions. End of 2012 we published version 3.0 with already 1375 functions. Early 2014 with version 4.0 we got 2298 functions. In the last year alone we added over 700 functions for you. No wonder, as we have a constant stream of feature requests coming in from our plugin users.

Especially our free extras like the line numbers and syntax highlighting in script editor brought us a lot of new clients in the last two years.

How to use XL functions with MBS FileMaker Plugin

First when you plan to use the XL functions, be aware that you will need the license for our MBS plugin. In addition you need licenses for the LibXL library. Our plugin uses this library to actually perform the functions. LibXL is sold separately for $199 per platform and you only buy one license for you as the developer, independent of the number of clients.

Initialize

Before using the XL functions, it is important to initialize the XL functions. Best practice is to check result of MBS("XL.IsInitialized") function. If result is not 1, you need to initialize. For that you first need to locate the libxl files. Our examples include library files for Mac and Windows. We have libxl.dylib on Mac for 32 and 64 bit in one file. For Windows libxl.dll is the 32bit and libxl64.dll is the 64bit file. On Windows you can pass path to libxl.dll and if FileMaker is running as 64bit application, the plugin will add the 64 automatically and find the 64bit library. The example databases find the library in the same folder as the example database automatically. On a Server you normally copy the libxl files to the server and hard code the native path, e.g. "/Libary/FileMaker Server/libxl.dylib". So the initialization can look like this:

If [MBS("XL.IsInitialized") ≠ 1]
    Set Variable [$r; Value:MBS( "XL.Initialize"; "/Library/FileMaker Server/libxl.dylib")]
End If

Create book

Next we have to create a new book. The plugin uses reference numbers to handle several books in memory at the same time. It is important you reference your book with a variable in the whole script and release it on the end. To create a workbook, please call XL.NewBook function. Here you need to decide if you plan to save later as XML based or binary excel file. We pass 0 for the normal xls file format:

Set Variable [$book; Value:MBS( "XL.NewBook"; 0 )]

After we got our book, we add a sheet labeled "Addresses". We get back the sheet reference number which is zero for first sheet:

Set Variable [$sheet; Value:MBS( "XL.Book.AddSheet"; $book; "Addresses")]

Write data

Our main loop here loops over the records in our test table. Starting with first record we move one row at a time and one record a time. Inside the loop we set cell text for each cell in current row and fill them with values from the record. As you see we have to pass book reference number, sheet number, row number and column indexes. We define the columns ourself here.

Go to Record/Request/Page [First]
Loop
    Set Variable [$r; Value:MBS( "XL.Sheet.CellWriteText"; $book; $sheet; $row; 0; Export records::First Name)]
    Set Variable [$r; Value:MBS( "XL.Sheet.CellWriteText"; $book; $sheet; $row; 1; Export records::Last Name)]
    Set Variable [$r; Value:MBS( "XL.Sheet.CellWriteText"; $book; $sheet; $row; 2; Export records::Street)]
    Set Variable [$r; Value:MBS( "XL.Sheet.CellWriteText"; $book; $sheet; $row; 3; Export records::Zip)]
    Set Variable [$r; Value:MBS( "XL.Sheet.CellWriteText"; $book; $sheet; $row; 4; Export records::City)]
    Set Variable [$r; Value:MBS( "XL.Sheet.CellWriteText"; $book; $sheet; $row; 5; Export records::Country)]
    Set Variable [$r; Value:MBS( "XL.Sheet.CellWriteText"; $book; $sheet; $row; 6; Export records::Phone)]
    Go to Record/Request/Page [Next; Exit after last]
    Set Variable [$row; Value:$row + 1]
End Loop

Finish

On the end, we save to a container. For that we use the Set Field script step. the plugin function XL.Book.Save returns the container value with the Excel file inside. We pass a file name for the container to give it a name which FileMaker uses to export the field content later.

Set Field [Export records::File; MBS("XL.Book.Save"; $book; "test.xls")]

Finally we have to release memory and close book. So the XL.Book.Release will clear memory:

Set Variable [$r; Value:MBS("XL.Book.Release"; $book)]

More?

This is of course a very easy example. It does not create fonts or formats. Maybe you want to check other example databases coming with plugin if you like to learn how to create formats, fonts and add images to Excel files.

Tip of the day: Splitting Browser usage

As all those social services (Facebook, Twitter, Google Plus) like to know where users surf. All the websites with like buttons create a log entry in their logs and include a reference to the profile, if you are logged in. This way they can track you surfing over the web.

One thing I do myself for a long time is to delete cookies automatically. With Cookies app from Russell Gray. I have 20 cookies on my white list like the Xojo and FileMaker forums auto login. But all others cookies are automatically deleted when I close the browser. This way I'm a new client each time when I visit google web search or browse amazon.

Now I have several browsers: Safari, Firefox and Google Chrome. For my normal surfing I use Safari while the social networks reside in Chrome. They can set their cookies and I have auto login, but they don't monitor me when I use Safari to surf the web.

Finally I disabled plugins. No flash security problems if Flash is disabled. And as YouTube now uses HTML5 by default, that's not even a problem for normal surfing. And of course plugins are just a few clicks away if needed. But with new plugin per website control in modern browsers, you should have plugins disabled for all websites by default. Only enable them where you need. It is amazing how many websites want to use Flash only to track you!

Tip of the day: Know which DynaPDF functions require Lite/Pro licenses

Pro license is required for the following functions:
  • BeginTransparencyGroup
  • ConvertColors
  • Create3DAnnot
  • CreateSoftMask
  • FlattenForm
  • GetPageText
  • ImportPage and ImportPageEx
  • ParseContent
  • RenderAnnotOrField
  • RenderPage
  • SetCMapDir
  • SetExtColorSpace, SetExtFillColorSpace and SetExtStrokeColorSpace.
  • SetUseGlobalImpFiles
Lite is required for:
  • AddRenderingIntent and AddRenderingIntentEx
  • CreateFormFields
  • CloseFileEx
  • ConvertEMFSpool
  • CreateCollection
  • CreateExtGState
  • InsertMetafile and InsertMetafileEx
  • OpenImportBuffer, OpenImportFile and OpenImportStream
  • SetPDFVersion for PDF/A and PDF/X
And all functions relaying on those functions internally.

.fmp[x]Berlin 2015 opens registration

We just got notice about the upcoming dotfmp conference where you can meet me:

Berlin, Germany - 6 February 2015
We are pleased to announce the 3rd edition of THE pan-European Unconference for FileMaker Developer, .fmp[x]Berlin 2015.

Taking place from 4 − 6 June 2015 in the Hotel Upstalsboom Berlin, some of the finest brains of the European Software-Developer community will be meeting on a personal basis to exchange ideas and share knowledge.

This high-level content, all about the latest versions of the FileMaker Platform, will be accompanied by some special features that are not available elsewhere!

In terms of award-giving, unconference regulars will be pleased to know that the omnipresent 'dotfmp award for the longest journey’ will be better than ever. This not-to-be-taken-too-seriously event will continue to offer prizes and merriment. It will be joined by the "dotfmp Certification Exam for FileMaker Pro 2”, a nostalgic trip harking back to the beginning of software development. And, last but not least, the "Developer Passport” will honour the efforts of the most-dedicated developers in a very different way!

All this is framed by a very special supporting program. Starting on Wednesday 3rd, there will be the chance to hangout in one of the oldest beer gardens in Berlin. Delegates will be able to visit specialty restaurants on Friday 5th and to enjoy a Thuringian Barbecue on Saturday 6th. Closing, on Sunday, 7th is left free for sight-seeing to the many famous sights places and sights in Berlin.

.fmp[x]Berlin has been growing by 25% each year and has become an inherent part of the yearly schedule of the most important developers across the world. As such, this is the first time we have to limit the seats to a maximum of 80 attendees. In order to secure a place at this high-level event in one of the most exciting cities, register on the website now!

For more Information visit: www.dotfmp.com


MBS FileMaker Plugin, version 5.0pr10

New in this prerelease of the 5.0 plugins:
  • Added functions for SerialPort to get/set parity and stop bits.
  • Fixed bug in SerialPort.SetDataBits function.
  • Added 40 new DynaPDF functions.
  • More XL functions return proper error messages.
  • Added XL.Date.DoubleToTimeStamp, XL.Date.TimeStampToDouble, XL.Sheet.CellReadDate and XL.Sheet.CellWriteDate functions.
  • Updated DynaPDF to version 3.0.38.111.
  • Added HotKey functions for Mac.
  • GraphicsMagick functions taking color now also allows taking Random, RandomDark and RandomLight as parameter.
  • Added GMImage.FindColorInRow and GMImage.FindColorInColumn.
  • Added Files.DiskInfo function.
  • Fixed drop area image, so you can set an image again with DragDrop.SetImage function.
  • Fixed drop areas, so they don't move if you change window size.
  • Added GMImage.MultiplyChannel function.
  • Fixed problem with Text.TextToHTML not encoding all characters correctly.
  • Fixed problem in DynaPDF.InsertImage and DynaPDF.InsertImageFile.
Download at monkeybreadsoftware.de/filemaker/files/Prerelease/ or ask for being added to the dropbox shared folder.

Local FileMaker meeting for Koblenz, Germany

For our German users living near Koblenz, there came the announcement for the next meeting:

Ein herzliches Hallo an alle FileMaker Freunde,

es ist wieder soweit! Am Donnerstag, 5. Februar 2015, treffen wir uns zum Koblenzer Stammtisch ab 19:00 Uhr bei Thomas Jaeger.

Aktueller Ort:
Orthopädietechnik Jaeger
Hermsdorferstraße 3
56112 Lahnstein
Telefon: 0 26 21 / 6 23 40

Aktuelles Thema: Anbindung der Telefonanlage an das hausinterne FileMaker System

Eigene Ideen, Konzepte oder gar Lösungen beleben lockeren Erfahrungsaustausch und erquickendes Fachsimpeln. Genießen Sie den Abend und machen Sie mit! Bitte benutzen Sie den vorderen Eingang. Gerne kommt der Stammtisch auch zu Ihnen und Ihrer FileMaker Entwicklung :)

Fragen sowie Anregungen einfach an filemaker@interact.de senden. Freunde und Kollegen sind wie immer gern gesehen und werden auf Wunsch in den Verteiler aufgenommen.


MBS FileMaker Plugin, version 5.0pr9

New in this prerelease of the 5.0 plugins:
  • Added Path.FileURLToFilePath and Path.FilePathToFileURL functions.
  • Added parameters to DynaPDF.GeneratePreview to query image.
  • Trace command now also logs Audit results. Also SQL/Evaluate errors while Audit are written to Console/DebugView.
  • Updated DynaPDF to version 3.0.38.109.
  • Added Webview.SelectedText function.
  • Added Barcode.EANChecksum and Barcode.ISBNChecksum functions.
Download at monkeybreadsoftware.de/filemaker/files/Prerelease/ or ask for being added to the dropbox shared folder.

Archives

Jul 2024
Jun 2024
May 2024
Apr 2024
Mar 2024
Feb 2024
Jan 2024
Dec 2023
Nov 2023
Oct 2023
Sep 2023
Aug 2023
Jul 2023
Jun 2023
May 2023
Apr 2023
Mar 2023
Feb 2023
Jan 2023
Dec 2022
Nov 2022
Oct 2022
Sep 2022
Aug 2022
Jul 2022
Jun 2022
May 2022
Apr 2022
Mar 2022
Feb 2022
Jan 2022
Dec 2021
Nov 2021
Oct 2021
Sep 2021
Aug 2021
Jul 2021
Jun 2021
May 2021
Apr 2021
Mar 2021
Feb 2021
Jan 2021
Dec 2020
Nov 2020
Oct 2020
Sep 2020
Aug 2020
Jul 2020
Jun 2020
May 2020
Apr 2020
Mar 2020
Feb 2020
Jan 2020
Dec 2019
Nov 2019
Oct 2019
Sep 2019
Aug 2019
Jul 2019
Jun 2019
May 2019
Apr 2019
Mar 2019
Feb 2019
Jan 2019
Dec 2018
Nov 2018
Oct 2018
Sep 2018
Aug 2018
Jul 2018
Jun 2018
May 2018
Apr 2018
Mar 2018
Feb 2018
Jan 2018
Dec 2017
Nov 2017
Oct 2017
Sep 2017
Aug 2017
Jul 2017
Jun 2017
May 2017
Apr 2017
Mar 2017
Feb 2017
Jan 2017
Dec 2016
Nov 2016
Oct 2016
Sep 2016
Aug 2016
Jul 2016
Jun 2016
May 2016
Apr 2016
Mar 2016
Feb 2016
Jan 2016
Dec 2015
Nov 2015
Oct 2015
Sep 2015
Aug 2015
Jul 2015
Jun 2015
May 2015
Apr 2015
Mar 2015
Feb 2015
Jan 2015
Dec 2014
Nov 2014
Oct 2014
Sep 2014
Aug 2014
Jul 2014
Jun 2014
May 2014
Apr 2014
Mar 2014
Feb 2014
Jan 2014
Dec 2013
Nov 2013
Oct 2013
Sep 2013
Aug 2013
Jul 2013
Jun 2013
May 2013
Apr 2013
Mar 2013
Feb 2013
Jan 2013
Dec 2012
Nov 2012
Oct 2012
Sep 2012
Aug 2012
Jul 2012
Jun 2012
May 2012
Apr 2012
Mar 2012
Feb 2012
Jan 2012
Dec 2011
Nov 2011
Oct 2011
Sep 2011
Aug 2011
Jul 2011
Jun 2011
May 2011
Apr 2011
Mar 2011
Feb 2011
Jan 2011
Dec 2010
Nov 2010
Oct 2010
Sep 2010
Aug 2010
Jul 2010
Jun 2010
May 2010
Apr 2010
Mar 2010
Feb 2010
Jan 2010
Dec 2009
Nov 2009
Oct 2009
Sep 2009
Aug 2009
Jul 2009
Apr 2009
Mar 2009
Feb 2009
Dec 2008
Nov 2008
Oct 2008
Aug 2008
May 2008
Apr 2008
Mar 2008
Feb 2008