diff --git a/blackberry/tibb/NativeContainerObject.cpp b/blackberry/tibb/NativeContainerObject.cpp
index 847b582..8f49fe3 100644
--- a/blackberry/tibb/NativeContainerObject.cpp
+++ b/blackberry/tibb/NativeContainerObject.cpp
@@ -12,6 +12,7 @@
 #include <bb/cascades/Button>
 #include <bb/cascades/Color>
 #include <bb/cascades/Container>
+#include <bb/cascades/DateTimePicker>
 #include <bb/cascades/DockLayout>
 #include <bb/cascades/DockLayoutProperties>
 #include <bb/cascades/ImageView>
@@ -164,6 +165,13 @@ int NativeContainerObject::addChildNativeObject(NativeObject* obj)
         return NATIVE_ERROR_OK;
     }
 
+    case N_TYPE_DATE_TIME_PICKER:
+    {
+       bb::cascades::DateTimePicker* dateTimePicker = (bb::cascades::DateTimePicker*) obj->getNativeHandle();
+       container_->add(dateTimePicker);
+       return NATIVE_ERROR_OK;
+    }
+
     }
 
     return NATIVE_ERROR_NOTSUPPORTED;
diff --git a/blackberry/tibb/NativeDateTimePickerObject.cpp b/blackberry/tibb/NativeDateTimePickerObject.cpp
new file mode 100644
index 0000000..da7cbdd
--- /dev/null
+++ b/blackberry/tibb/NativeDateTimePickerObject.cpp
@@ -0,0 +1,114 @@
+/**
+ * Appcelerator Titanium Mobile
+ * Copyright (c) 2009-2012 by Appcelerator, Inc. All Rights Reserved.
+ * Licensed under the terms of the Apache Public License
+ * Please see the LICENSE included with this distribution for details.
+ */
+
+#include <bb/cascades/AbsoluteLayoutProperties>
+#include <bb/cascades/DateTimePIcker>
+#include "NativeDateTimePickerObject.h"
+#include "TiEventContainerFactory.h"
+
+NativeDateTimePickerObject::NativeDateTimePickerObject()
+{
+    dateTimePicker_ = NULL;
+    top_ = 0;
+    left_ = 0;
+}
+
+NativeDateTimePickerObject::~NativeDateTimePickerObject()
+{
+}
+
+NativeDateTimePickerObject* NativeDateTimePickerObject::createDateTimePicker()
+{
+    return new NativeDateTimePickerObject;
+}
+
+int NativeDateTimePickerObject::initialize(TiEventContainerFactory* containerFactory)
+{
+    dateTimePicker_ = bb::cascades::DateTimePicker::create();
+    //eventClicked_ = containerFactory->createEventContainer();
+    //eventClicked_->setDataProperty("type", "click");
+    //eventHandler_ = new ListViewEventHandler(eventClicked_, this);
+    return NATIVE_ERROR_OK;
+}
+
+int NativeDateTimePickerObject::setWidth(TiObject* obj)
+{
+    float width;
+    int error = NativeControlObject::getFloat(obj, &width);
+    if (!N_SUCCEEDED(error))
+    {
+        return error;
+    }
+    dateTimePicker_->setMaxWidth(width);
+    dateTimePicker_->setMinWidth(width);
+    return NATIVE_ERROR_OK;
+}
+
+int NativeDateTimePickerObject::setLeft(TiObject* obj)
+{
+    bb::cascades::AbsoluteLayoutProperties* pProp = new bb::cascades::AbsoluteLayoutProperties;
+    float left;
+    int error = NativeControlObject::getFloat(obj, &left);
+    if (!N_SUCCEEDED(error))
+    {
+        return error;
+    }
+    left_ = left;
+    pProp->setPositionX(left_);
+    pProp->setPositionY(top_);
+    dateTimePicker_->setLayoutProperties(pProp);
+    return NATIVE_ERROR_OK;
+}
+
+int NativeDateTimePickerObject::setTop(TiObject* obj)
+{
+    bb::cascades::AbsoluteLayoutProperties* pProp = new bb::cascades::AbsoluteLayoutProperties;
+    float top;
+    int error = NativeControlObject::getFloat(obj, &top);
+    if (!N_SUCCEEDED(error))
+    {
+        return error;
+    }
+    top_ = top;
+    pProp->setPositionX(left_);
+    pProp->setPositionY(top_);
+    dateTimePicker_->setLayoutProperties(pProp);
+    return NATIVE_ERROR_OK;
+}
+
+int NativeDateTimePickerObject::setValue(TiObject* obj)
+{
+	//TODO we should pass JS Date type object
+    return NATIVE_ERROR_OK;
+}
+
+int NativeDateTimePickerObject::getObjectType() const
+{
+    return N_TYPE_DATE_TIME_PICKER;
+}
+
+NAHANDLE NativeDateTimePickerObject::getNativeHandle() const
+{
+    return dateTimePicker_;
+}
+
+void NativeDateTimePickerObject::completeInitialization()
+{
+    NativeControlObject::completeInitialization();
+    //TODO implement valueChanged signal
+    //QObject::connect(dateTimePicker, SIGNAL(valueChanged(QDateTime)), eventHandler_, SLOT(valueChanged(QDateTime)));
+}
+
+int NativeDateTimePickerObject::setEventHandler(const char* eventName, TiEvent* event)
+{
+    //TODO define const var instead of using string value
+    if (strcmp(eventName, "change") == 0)
+    {
+        eventClicked_->addListener(event);
+    }
+    return NATIVE_ERROR_OK;
+}
diff --git a/blackberry/tibb/NativeDateTimePickerObject.h b/blackberry/tibb/NativeDateTimePickerObject.h
new file mode 100644
index 0000000..3a19b87
--- /dev/null
+++ b/blackberry/tibb/NativeDateTimePickerObject.h
@@ -0,0 +1,82 @@
+/**
+ * Appcelerator Titanium Mobile
+ * Copyright (c) 2009-2012 by Appcelerator, Inc. All Rights Reserved.
+ * Licensed under the terms of the Apache Public License
+ * Please see the LICENSE included with this distribution for details.
+ */
+
+#ifndef NATIVEDATETIMEPICKER_H_
+#define NATIVEDATETIMEPICKER_H_
+
+#include "NativeControlObject.h"
+
+/*
+ * NativeDateTimePicker
+ *
+ * UI: DateTimePicker control
+ */
+
+namespace bb
+{
+namespace cascades
+{
+class DateTimePicker;
+};
+};
+
+class TiEventContainer;
+class TiCascadesEventHandler;
+class ListViewEventHandler;
+
+class NativeDateTimePickerObject : public NativeControlObject
+{
+public:
+    static NativeDateTimePickerObject* createDateTimePicker();
+    virtual int getObjectType() const;
+    virtual int setTop(TiObject* obj);
+    virtual int setLeft(TiObject* obj);
+    virtual int setWidth(TiObject* obj);
+    virtual int setValue(TiObject* obj);
+    virtual int initialize(TiEventContainerFactory* containerFactory);
+    virtual void completeInitialization();
+    virtual int setEventHandler(const char* eventName, TiEvent* event);
+    virtual NAHANDLE getNativeHandle() const;
+
+protected:
+    virtual ~NativeDateTimePickerObject();
+
+private:
+    explicit NativeDateTimePickerObject();
+    //Not copy-constructible; Not assignable.
+    NativeDateTimePickerObject(const NativeDateTimePickerObject& obj);
+    NativeDateTimePickerObject& operator=(const NativeDateTimePickerObject& obj);
+
+    bb::cascades::DateTimePicker* dateTimePicker_;
+    TiEventContainer* eventClicked_;
+    ListViewEventHandler* eventHandler_;
+    float left_;
+    float top_;
+};
+
+//Event handler for button object
+class DateTimePickerEventHandler : public QObject
+{
+    Q_OBJECT
+    //TODO add slots
+
+public:
+    explicit DateTimePickerEventHandler(TiEventContainer* eventContainer)
+    {
+        eventContainer_ = eventContainer;
+    }
+    virtual ~DateTimePickerEventHandler() {}
+
+private:
+    TiEventContainer* eventContainer_;
+
+    // Disable copy ctor & assignment operator
+    DateTimePickerEventHandler(const DateTimePickerEventHandler& eHandler);
+    DateTimePickerEventHandler& operator=(const DateTimePickerEventHandler& eHandler);
+};
+
+#endif /* NATIVEDATETIMEPICKER_H_ */
diff --git a/blackberry/tibb/NativeObject.h b/blackberry/tibb/NativeObject.h
index c792896..56d41da 100644
--- a/blackberry/tibb/NativeObject.h
+++ b/blackberry/tibb/NativeObject.h
@@ -31,6 +31,7 @@ enum NATIVE_TYPE
     , N_TYPE_TEXT_FIELD
     , N_TYPE_TOGGLEBUTTON
     , N_TYPE_WINDOW
+    , N_TYPE_DATE_TIME_PICKER
 
 };
 
diff --git a/blackberry/tibb/NativeObjectFactory.cpp b/blackberry/tibb/NativeObjectFactory.cpp
index aabfe21..697ec48 100644
--- a/blackberry/tibb/NativeObjectFactory.cpp
+++ b/blackberry/tibb/NativeObjectFactory.cpp
@@ -10,6 +10,7 @@
 #include "NativeContainerObject.h"
 #include "NativeLabelObject.h"
 #include "NativeButtonObject.h"
+#include "NativeDateTimePickerObject.h"
 #include "NativeSliderObject.h"
 #include "NativeProgressBarObject.h"
 #include "NativeTextFieldObject.h"
@@ -91,6 +92,10 @@ NativeObject* NativeObjectFactory::createNativeObject(int type)
         obj = NativeListViewObject::createListView();
         break;
 
+    case N_TYPE_DATE_TIME_PICKER:
+        obj = NativeDateTimePickerObject::createDateTimePicker();
+        break;
+
     }
     if (obj != NULL)
     {
diff --git a/blackberry/tibb/TiUIObject.cpp b/blackberry/tibb/TiUIObject.cpp
index fb3e548..211b993 100644
--- a/blackberry/tibb/TiUIObject.cpp
+++ b/blackberry/tibb/TiUIObject.cpp
@@ -14,6 +14,7 @@
 #include "TiUISlider.h"
 #include "TiUIProgressBar.h"
 #include "TiUIImageView.h"
+#include "TiUIPicker.h"
 #include "TiUITextField.h"
 #include "TiUIActivityIndicator.h"
 #include "TiUITableView.h"
@@ -60,6 +61,7 @@ void TiUIObject::onCreateStaticMembers()
     TiGenericFunctionObject::addGenericFunctionToParent(this, "createActivityIndicator", this, _createActivityIndicator);
     TiGenericFunctionObject::addGenericFunctionToParent(this, "createSwitch", this, _createSwitch);
     TiGenericFunctionObject::addGenericFunctionToParent(this, "createOptionDialog", this, _createOptionDialog);
+    TiGenericFunctionObject::addGenericFunctionToParent(this, "createPicker", this, _createPicker);
 }
 
 Handle<Value> TiUIObject::_createTabGroup(void* userContext, TiObject* caller, const Arguments& args)
@@ -265,3 +267,21 @@ Handle<Value> TiUIObject::_createSwitch(void* userContext, TiObject* caller, con
     setTiObjectToJsObject(result, switchObj);
     return handleScope.Close(result);
 }
+
+Handle<Value> TiUIObject::_createPicker(void* userContext, TiObject* caller, const Arguments& args)
+{
+    HandleScope handleScope;
+    TiUIObject* obj = (TiUIObject*) userContext;
+    Handle<ObjectTemplate> global = getObjectTemplateFromJsObject(args.Holder());
+    Handle<Object> result;
+    result = global->NewInstance();
+    TiUIPicker* pickerObj = TiUIPicker::createPicker(obj->objectFactory_);
+    pickerObj->setValue(result);
+    if ((args.Length() > 0) && (args[0]->IsObject()))
+    {
+        Local<Object> settingsObj = Local<Object>::Cast(args[0]);
+        pickerObj->setParametersFromObject(settingsObj);
+    }
+    setTiObjectToJsObject(result, pickerObj);
+    return handleScope.Close(result);
+}
diff --git a/blackberry/tibb/TiUIObject.h b/blackberry/tibb/TiUIObject.h
index 488c1ee..96d66ab 100644
--- a/blackberry/tibb/TiUIObject.h
+++ b/blackberry/tibb/TiUIObject.h
@@ -41,6 +41,7 @@ private:
     static Handle<Value> _createSwitch(void* userContext, TiObject* caller, const Arguments& args);
     static Handle<Value> _createOptionDialog(void* userContext, TiObject* caller, const Arguments& args);
     static Handle<Value> _createTableView(void* userContext, TiObject* caller, const Arguments& args);
+    static Handle<Value> _createPicker(void* userContext, TiObject* caller, const Arguments& args);
     NativeObjectFactory* objectFactory_;
     NativeObject* contentContainer_;
 };
diff --git a/blackberry/tibb/TiUIPicker.cpp b/blackberry/tibb/TiUIPicker.cpp
new file mode 100644
index 0000000..c8b9d96
--- /dev/null
+++ b/blackberry/tibb/TiUIPicker.cpp
@@ -0,0 +1,43 @@
+/**
+ * Appcelerator Titanium Mobile
+ * Copyright (c) 2009-2012 by Appcelerator, Inc. All Rights Reserved.
+ * Licensed under the terms of the Apache Public License
+ * Please see the LICENSE included with this distribution for details.
+ */
+
+#include "TiUIPicker.h"
+#include "TiGenericFunctionObject.h"
+
+TiUIPicker::TiUIPicker(NativeObjectFactory* nativeObjectFactory)
+    : TiUIBase(nativeObjectFactory, "")
+{
+}
+
+TiUIPicker::~TiUIPicker()
+{
+}
+
+TiUIPicker* TiUIPicker::createPicker(NativeObjectFactory* nativeObjectFactory)
+{
+    TiUIPicker* obj = new TiUIPicker(nativeObjectFactory);
+    obj->initializeTiObject(NULL);
+    return obj;
+}
+
+void TiUIPicker::initializeTiObject(TiObject* parentContext)
+{
+    if (!isInitialized())
+    {
+        TiUIBase::initializeTiObject(parentContext);
+        //currently cascades only supports date/time picker that is why we should create native DateTimePicker object here
+        NativeObject* obj = getNativeObjectFactory()->createNativeObject(N_TYPE_DATE_TIME_PICKER);
+        setNativeObject(obj);
+        obj->release();
+    }
+}
+
+void TiUIPicker::onCreateStaticMembers()
+{
+    TiUIBase::onCreateStaticMembers();
+}
+
diff --git a/blackberry/tibb/TiUIPicker.h b/blackberry/tibb/TiUIPicker.h
new file mode 100644
index 0000000..125ac1a
--- /dev/null
+++ b/blackberry/tibb/TiUIPicker.h
@@ -0,0 +1,39 @@
+/**
+ * Appcelerator Titanium Mobile
+ * Copyright (c) 2009-2012 by Appcelerator, Inc. All Rights Reserved.
+ * Licensed under the terms of the Apache Public License
+ * Please see the LICENSE included with this distribution for details.
+ */
+
+#ifndef TIUIPICKER_H_
+#define TIUIPICKER_H_
+
+#include "TiUIBase.h"
+
+/*
+ * TiUIPicker
+ *
+ * Represents a Titanium Picker object
+ *
+ * This object can be created by:
+ * Titanium.UI.createPicker({...});
+ */
+class TiUIPicker : public TiUIBase
+{
+public:
+    static TiUIPicker* createPicker(NativeObjectFactory* nativeObjectFactory);
+
+protected:
+    virtual ~TiUIPicker();
+    virtual void initializeTiObject(TiObject* parentContext);
+    virtual void onCreateStaticMembers();
+
+private:
+    explicit TiUIPicker(NativeObjectFactory* nativeObjectFactory);
+
+    // Disable copy ctor & assignment operator
+    TiUIPicker(const TiUIPicker& obj);
+    TiUIPicker& operator=(const TiUIPicker& obj);
+};
+
+#endif /* TIUIPICKER_H_ */
