HippoGridInfo::HippoGridInfo(const std::string& gridNick) :
	mPlatform(PLATFORM_OPENSIM),
	mGridNick(gridNick),
	mGridName(LLStringUtil::null),
	mLoginUri(LLStringUtil::null),
	mLoginPage(LLStringUtil::null),
	mHelperUri(LLStringUtil::null),
	mWebSite(LLStringUtil::null),
	mSupportUrl(LLStringUtil::null),
	mRegisterUrl(LLStringUtil::null),
	mPasswordUrl(LLStringUtil::null),
	mSearchUrl(LLStringUtil::null),
	mFirstName(LLStringUtil::null),
	mLastName(LLStringUtil::null),
	mAvatarPassword(LLStringUtil::null),
	mXmlState(XML_VOID),
	mVoiceConnector("SLVoice"),
	mRenderCompat(true),
	mMaxAgentGroups(-1),
	mCurrencySymbol("OS$"),
	mRealCurrencySymbol("US$"),
	mDirectoryFee(30)
{
	std::string nick = gridNick;
	mGridNick = sanitizeGridNick( nick );
}
//static
void HippoGridInfo::onXmlCharacterData(void* userData, const XML_Char* s, int len)
{
	HippoGridInfo* self = (HippoGridInfo*)userData;
	switch (self->mXmlState) 
	{
		case XML_GRIDNICK:
		{
			if (self->mGridNick == "")
			{
			  self->mGridNick.assign(s, len);
			  self->mGridNick = sanitizeGridNick(self->mGridNick);
			}
			break;
		}

		case XML_PLATFORM:
		{
			std::string platform(s, len);
			self->setPlatform(platform); 
			break;
		}	

		case XML_LOGINURI:
		{
			self->setLoginUri(std::string(s, len));
			break;
		}

		case XML_HELPERURI:
		{
			self->setHelperUri(std::string(s, len));
			break;
		}

		case XML_SEARCH:
		{
			self->mSearchUrl.assign(s, len);
			//sanitizeQueryUrl(mSearchUrl);
			break;
		}

		case XML_GRIDNAME:
		{
		  if (self->mGridName == "")
		  {
			self->mGridName.assign(s, len);
		  }
		  break;
		}

		case XML_LOGINPAGE: self->mLoginPage.assign(s, len); break;
		case XML_WEBSITE: self->mWebSite.assign(s, len); break;
		case XML_SUPPORT: self->mSupportUrl.assign(s, len); break;
		case XML_REGISTER: self->mRegisterUrl.assign(s, len); break;
		case XML_PASSWORD: self->mPasswordUrl.assign(s, len); break;
		case XML_MESSAGE: self->mGridMessage.assign(s, len); break;

		case XML_VOID: break;
	}
}
std::string HippoGridInfo::getGridNick()
{
	if(!mGridNick.empty())
	{
		return mGridNick;
	}
	else
	{
		return sanitizeGridNick(mGridName);
	}
}
void HippoGridInfo::setGridNick(std::string gridNick)
{
	mGridNick = sanitizeGridNick(gridNick);
	if(mGridName.empty() && !gridNick.empty())
	{
		setGridName(gridNick);
	}
	if(gridNick == "secondlife")
	{
		mIsInProductionGrid = true;
	}
}