void CriminalScreenInterface::ClearClick ( Button *button )
{

	CriminalScreenInterface *csi = (CriminalScreenInterface *) GetInterfaceScreen ( SCREEN_CRIMINALSCREEN );
	UplinkAssert (csi);

	if ( csi->recordindex != -1 ) {

		Computer *comp = game->GetWorld ()->GetComputer ( "Global Criminal Database" );
		UplinkAssert (comp);

		if ( comp->security.IsRunning_Proxy () ) {
			create_msgbox ( "Error", "Denied access by Proxy Server" );
			return;
		}

		Record *rec = comp->recordbank.GetRecord ( csi->recordindex );
		UplinkAssert (rec);
		rec->ChangeField ( "Convictions", "None" );

		csi->UpdateScreen ();

	}

}
void CriminalScreenInterface::AddConvictionClick ( Button *button )
{

	CriminalScreenInterface *csi = (CriminalScreenInterface *) GetInterfaceScreen ( SCREEN_CRIMINALSCREEN );
	UplinkAssert (csi);

	if ( csi->recordindex != -1 ) {

		char *newconviction = EclGetButton ( "criminal_newconvictiontext" )->caption;

		Computer *comp = game->GetWorld ()->GetComputer ( "Global Criminal Database" );
		UplinkAssert (comp);

		if ( comp->security.IsRunning_Proxy () ) {
			create_msgbox ( "Error", "Denied access by Proxy Server" );
			return;
		}

		Record *rec = comp->recordbank.GetRecord ( csi->recordindex );
		UplinkAssert (rec);

		char *existing = rec->GetField ( "Convictions" );
		//UplinkAssert (existing);
		
		if ( existing ) {

			std::ostrstream newconvictions;

			if ( strstr ( existing, "None" ) == NULL )
				newconvictions << existing << "\n";

			newconvictions << newconviction
						   << '\x0';

			rec->ChangeField ( "Convictions", newconvictions.str () );

			newconvictions.rdbuf()->freeze( 0 );
			//delete [] newconvictions.str ();

		}

		EclGetButton ( "criminal_newconvictiontext" )->SetCaption ( "" );

		csi->UpdateScreen ();

	}

}
bool Computer::ChangeSecurityCodes ()
{

	// Change our admin password

	bool changed = false;

    switch ( TYPE ) {

		case COMPUTER_TYPE_INTERNALSERVICESMACHINE :		
		{
			Record *admin = recordbank.GetRecordFromName ( RECORDBANK_ADMIN );
			UplinkAssert (admin);
			admin->ChangeField ( RECORDBANK_PASSWORD, NameGenerator::GenerateComplexPassword () );		
            changed = true;
			break;
		}
		
        case COMPUTER_TYPE_CENTRALMAINFRAME :
        {
			Record *admin = recordbank.GetRecordFromName ( RECORDBANK_ADMIN );
			UplinkAssert (admin);
			admin->ChangeField ( RECORDBANK_PASSWORD, NameGenerator::GenerateComplexPassword () );		
            changed = true;
			break;
        }

        case COMPUTER_TYPE_UNKNOWN :
        {

            if ( strcmp ( ip, IP_SOCIALSECURITYDATABASE ) == 0 ||
                 strcmp ( ip, IP_GLOBALCRIMINALDATABASE ) == 0 ||
                 strcmp ( ip, IP_ACADEMICDATABASE ) == 0 ) {

			    Record *admin = recordbank.GetRecordFromName ( RECORDBANK_ADMIN );
			    UplinkAssert (admin);
			    admin->ChangeField ( RECORDBANK_PASSWORD, NameGenerator::GenerateComplexPassword () );		
                
			    Record *readwrite = recordbank.GetRecordFromName ( RECORDBANK_READWRITE );
			    UplinkAssert (readwrite);
			    readwrite->ChangeField ( RECORDBANK_PASSWORD, NameGenerator::GenerateComplexPassword () );		

  			    Record *readonly = recordbank.GetRecordFromName ( RECORDBANK_READONLY );
			    UplinkAssert (readonly);
			    readonly->ChangeField ( RECORDBANK_PASSWORD, NameGenerator::GenerateComplexPassword () );		

                changed = true;

            }

        }

	}

	// Re-enable all our security

	for ( int i = 0; i < security.NumSystems (); ++i ) 
		if ( security.GetSystem (i) ) 
			security.GetSystem (i)->Enable ();

    return changed;

}