LLWearable* LLWearableList::createNewWearable( LLWearableType::EType type )
{
	lldebugs << "LLWearableList::createNewWearable()" << llendl;

	LLWearable *wearable = generateNewWearable();
	wearable->setType( type );
	
	std::string name = LLWearableType::getTypeDefaultNewName(wearable->getType());
	wearable->setName( name );

	LLPermissions perm;
	perm.init(gAgent.getID(), gAgent.getID(), LLUUID::null, LLUUID::null);
	perm.initMasks(PERM_ALL, PERM_ALL, PERM_NONE, PERM_NONE, PERM_MOVE | PERM_TRANSFER);
	wearable->setPermissions(perm);

	// Description and sale info have default values.
	wearable->setParamsToDefaults();
	wearable->setTexturesToDefaults();

	//mark all values (params & images) as saved
	wearable->saveValues();

	// Send to the dataserver
	wearable->saveNewAsset();


	return wearable;
}
LLWearable* LLWearableList::createCopy(const LLWearable* old_wearable, const std::string& new_name)
{
	lldebugs << "LLWearableList::createCopy()" << llendl;

	LLWearable *wearable = generateNewWearable();
	wearable->copyDataFrom(old_wearable);

	LLPermissions perm(old_wearable->getPermissions());
	perm.setOwnerAndGroup(LLUUID::null, gAgent.getID(), LLUUID::null, true);
	wearable->setPermissions(perm);

	if (!new_name.empty()) wearable->setName(new_name);

	// Send to the dataserver
	wearable->saveNewAsset();

	return wearable;
}