Ti::TiValue TiUITabProxy::open(Ti::TiValue value)
{
	Ti::TiValue val;
	val.setUndefined();

	Ti::TiWindowProxy* windowProxy;
	if(value.isList())
	{
		QList<Ti::TiValue> vs = value.toList();
		Ti::TiValue v = vs.at(0);
		windowProxy = static_cast<TiUIWindowProxy*>(v.toProxy());
	}
	else if(value.isProxy())
	{
		windowProxy = static_cast<TiUIWindowProxy*>(value.toProxy());
	}
	else
	{
		return val;
	}

	windowProxy->clearWeak();
	windowProxy->getPane()->setParent(NULL);
	_windows.append(windowProxy);

	Ti::TiEventParameters _params;
	windowProxy->fireEvent(Ti::TiConstants::EventOpen, _params);

	_navigationPane->push(static_cast<bb::cascades::Page*>(windowProxy->getPane()));
	return val;
}
Ti::TiValue Ti::TiViewProxy::hide(Ti::TiValue)
{
	getView()->setVisible(false);
	Ti::TiValue val;
	val.setUndefined();
	return val;
}
Ti::TiValue Ti::TiViewProxy::remove(Ti::TiValue value)
{
	Ti::TiValue val;
	val.setUndefined();

	Ti::TiViewProxy *childProxy = static_cast<Ti::TiViewProxy*>(value.toProxy());
	if(!_childViewsProxies.contains(childProxy)) return val;

	Ti::TiView* childView = childProxy->getView();
	Ti::TiView* thisView = getView();
	childProxy->makeWeak();
	thisView->remove(childView);
	_childViewsProxies.removeOne(childProxy);

	childProxy->_parentProxy = NULL;
    Local<Value> children = _jsObject->Get(String::New("children"));
    if(!children.IsEmpty() && !children->IsUndefined())
    {
    	Local<Array> array = Local<Array>::Cast(children);
    	for(int i = 0, len = array->Length(); i < len; i++) {
    		if(array->Get(i) == value.toJSValue())
    		{
    	    	array->Delete(i);
    	    	break;
    		}
    	}
    }

	return val;
}
Ti::TiValue Ti::TiViewProxy::animate(Ti::TiValue val)
{
	Ti::TiCallback* callback = NULL;

	if(val.isList()) {
		QList<Ti::TiValue> array = val.toList();
		callback = new Ti::TiCallback(this, array.at(1));
		val = Ti::TiValue(array.at(0));
	}

	if(val.isProxy())
	{
		Ti::TiAnimationProxy *proxy = static_cast<Ti::TiAnimationProxy*>(val.toProxy());
		proxy->animate(this, callback);
	}
	else if(val.isMap())
	{
		TiUI::TiUIAnimationProxy *proxy = TiUI::TiUIAnimationProxy::CreateProxy();
		proxy->applyProperties(val);
		proxy->animate(this, callback);
	}
	Ti::TiValue result;
	result.setUndefined();
	return result;
}
Ti::TiValue ToastNotificationProxy::cancel(Ti::TiValue)
{
	_toast->cancel();
	Ti::TiValue val;
	val.setUndefined();
	return val;
}
Ti::TiValue ToastNotificationProxy::show(Ti::TiValue)
{
	_toast->show();
	Ti::TiValue val;
	val.setUndefined();
	return val;
}
Ti::TiValue TiUITabProxy::pop(Ti::TiValue value)
{
	_navigationPane->pop();
	_windows.removeLast();
	Ti::TiValue val;
	val.setUndefined();
	return val;
}
Ti::TiValue TiUITableViewSectionProxy::getRows()
{
	Ti::TiValue val;
	foreach(TiUITableViewRowProxy* rows, _tableViewRows)
	{

	}
	val.setUndefined();
	return val;
}
Ti::TiValue Ti::TiProxy::applyProperties(Ti::TiValue value)
{
	if(value.isMap())
	{
		initWithObject(value.toJSValue()->ToObject());
	}
	Ti::TiValue val;
	val.setUndefined();
	return val;
}
Ti::TiValue Ti::TiProxy::removeEventListener(Ti::TiValue value)
{
	Ti::TiValue nameValue = value.toList().at(0);
	QString eventName = nameValue.toString();

	Ti::TiValue functionValue = value.toList().at(1);
	Handle<Function> func = Handle<Function>::Cast(functionValue.toJSValue());

	Ti::TiEvent::RemoveEventFromObject(_jsObject, eventName, func);
	Ti::TiValue res;
	res.setUndefined();
	return res;
}
Ti::TiValue TiUITabGroupProxy::addTab(Ti::TiValue value)
{
	Ti::TiValue val;
	val.setUndefined();
	if(!value.isProxy())
	{
		return val;
	}

	TiUITabProxy *tabProxy = static_cast<TiUITabProxy*>(value.toProxy());
	tabProxy->clearWeak();
	getTabbedPane()->add(tabProxy->getTab());
	_allTabs.append(tabProxy);
	_activeTab = _allTabs.at(0);
	return val;
}
Ti::TiValue Ti::TiProxy::addEventListener(Ti::TiValue value)
{
	QString eventName;

	Ti::TiValue nameValue = value.toList().at(0);
	Ti::TiValue functionValue = value.toList().at(1);

	eventName = nameValue.toString();

	onEventAdded(eventName);

	Ti::TiEvent::AddEventToObject(_jsObject, eventName, Handle<Function>::Cast(functionValue.toJSValue()));

	Ti::TiValue res;
	res.setUndefined();
	return res;
}
Ti::TiValue TiUITabProxy::close(Ti::TiValue value)
{
	Ti::TiValue val;
	val.setUndefined();
	Ti::TiWindowProxy* windowProxy;
	bool animated = true;
	if(value.isList())
	{
		QList<Ti::TiValue> vs = value.toList();
		Ti::TiValue v = vs.at(0);
		windowProxy = static_cast<TiUIWindowProxy*>(v.toProxy());
		Ti::TiValue optionsValue = vs.at(1);
		if(optionsValue.isMap())
		{
			QMap<QString, Ti::TiValue> options = optionsValue.toMap();
			if(options.contains("animated"))
			{
				animated = options["animated"].toBool();
			}
		}
	}
	else if(value.isProxy())
	{
		windowProxy = static_cast<TiUIWindowProxy*>(value.toProxy());
	}
	else
	{
		return val;
	}
	if(_windows.last() == windowProxy && animated == true)
	{
		_navigationPane->pop();
	}
	else
	{
		_navigationPane->remove(static_cast<bb::cascades::Page*>(windowProxy->getPane()));
		Ti::TiEventParameters _params;
		windowProxy->fireEvent(Ti::TiConstants::EventClose, _params);
		windowProxy->makeWeak();
	}
	_windows.removeOne(windowProxy);

	return val;
}
Ti::TiValue Ti::TiViewProxy::add(Ti::TiValue value)
{
	if(value.isProxy())
	{
		Ti::TiViewProxy *childProxy = static_cast<Ti::TiViewProxy*>(value.toProxy());
		childProxy->clearWeak();
		_childViewsProxies.append(childProxy);
		Ti::TiView* childView = childProxy->getView();
		Ti::TiView* thisView = getView();
		thisView->add(childView);
		childProxy->_parentProxy = this;
	}
	else
	{
        TiObject* addObj = TiObject::getTiObjectFromJsObject(value.toJSValue());
        TiUIBase* uiObj = (TiUIBase*) addObj;
        NativeObject* childNO = uiObj->getNativeObject();
        getView()->addOldObject(childNO);

       Local<Value> children = _jsObject->Get(String::New("children"));
       Local<Array> array;
       if(children.IsEmpty() || children->IsUndefined())
       {
    	   array = Array::New();
    	   _jsObject->Set(String::New("children"), array);
       }
       else
       {
    	   array = Local<Array>::Cast(children);
       }
       array->Set(array->Length(), value.toJSValue());
       childNO->release();

	}

	Ti::TiValue val;
	val.setUndefined();
	return val;
}
Ti::TiValue TiUITableViewSectionProxy::add(Ti::TiValue value)
{
	TiUITableViewRowProxy* row = NULL;
	if(value.isMap())
	{
		row = TiUITableViewRowProxy::CreateProxy();
		row->initWithObject(value.toJSValue()->ToObject());
	}
	else
	if(value.isProxy())
	{
		row = static_cast<TiUITableViewRowProxy*>(value.toProxy());
	}
	row->setRowHeader("");
	row->clearWeak();

	_tableViewRows.append(row);

	Ti::TiValue val;
	val.setUndefined();
	return val;
}
Ti::TiValue TiUIScrollViewProxy::getContentWidth()
{
	Ti::TiValue val;
	val.setUndefined();
	return val;
}
Ti::TiValue TiUIScrollViewProxy::getDisableBounce()
{
	Ti::TiValue val;
	val.setUndefined();
	return val;
}
Ti::TiValue TiUIScrollViewProxy::getCanCancelEvents()
{
	Ti::TiValue val;
	val.setUndefined();
	return val;
}
Ti::TiValue TiUIScrollViewProxy::getOverScrollMode()
{
	Ti::TiValue val;
	val.setUndefined();
	return val;
}
Ti::TiValue TiUIScrollViewProxy::getScrollIndicatorStyle()
{
	Ti::TiValue val;
	val.setUndefined();
	return val;
}
Ti::TiValue TiUIScrollViewProxy::getShowVerticalScrollIndicator()
{
	Ti::TiValue val;
	val.setUndefined();
	return val;
}
Ti::TiValue TiUIScrollViewProxy::getZoomScale()
{
	Ti::TiValue val;
	val.setUndefined();
	return val;
}
Ti::TiValue TiUIScrollViewProxy::getScrollsToTop()
{
	Ti::TiValue val;
	val.setUndefined();
	return val;
}
Ti::TiValue TiUIWebViewProxy::getWillHandleTouches()
{
	Ti::TiValue val;
	val.setUndefined();
	return val;
}
Ti::TiValue TiUIScrollViewProxy::getScrollingEnabled()
{
	Ti::TiValue val;
	val.setUndefined();
	return val;
}
Ti::TiValue TiUIWebViewProxy::resume(Ti::TiValue)
{
	Ti::TiValue val;
	val.setUndefined();
	return val;
}
Ti::TiValue TiUIScrollViewProxy::getVerticalBounce()
{
	Ti::TiValue val;
	val.setUndefined();
	return val;
}
Ti::TiValue TiUIWebViewProxy::setBasicAuthentication(Ti::TiValue)
{
	Ti::TiValue val;
	val.setUndefined();
	return val;
}
Ti::TiValue TiUIScrollViewProxy::scrollToBottom(Ti::TiValue)
{
	Ti::TiValue val;
	val.setUndefined();
	return val;
}
Ti::TiValue TiUIWebViewProxy::stopLoading(Ti::TiValue)
{
	Ti::TiValue val;
	val.setUndefined();
	return val;
}